Unable to set LRO (large receive offload) on interfaces connected to a bridge in Red Hat Enterprise Linux
Issue
It is not possible to enable Large Receive Offload (LRO) on bonds or devices which are attached to a Linux bridge.
Without a bridge, everything works fine:
[root@baremetal ~]# ethtool -k bond10 | grep large
large-receive-offload: on
[root@baremetal ~]# ethtool -K bond10 lro off
[root@baremetal ~]# ethtool -k bond10 | grep large
large-receive-offload: off
[root@baremetal ~]# ethtool -K bond10 lro on
[root@baremetal ~]# ethtool -k bond10 | grep large
large-receive-offload: on
[root@baremetal ~]#
After adding the interface to a bridge, LRO cannot be enabled:
[root@baremetal ~]# brctl addbr test
[root@baremetal ~]# brctl addif test bond10
[root@baremetal ~]# brctl show
bridge name bridge id STP enabled interfaces
test 8000.a0369fe5e2c0 no bond10
[root@baremetal ~]# ethtool -k bond10 | grep large
large-receive-offload: off
[root@baremetal ~]# ethtool -K bond10 lro on
Could not change any device features
[root@baremetal ~]# ethtool -k bond10 | grep large
large-receive-offload: off [requested on]
[root@baremetal ~]# ethtool -K p2p1 lro on
Could not change any device features
[root@baremetal ~]# ethtool -k p2p1 | grep large
large-receive-offload: off
[root@baremetal ~]#
Switching on IP forwarding for the entire system or for a specific interface also disables LRO on the interface.
Environment
Red Hat Enterprise Linux
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
