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, tools, and much more.