Currently, all bonding devices come up, and claim to have LRO support, which ethtool will let you toggle on and off, even if none of the underlying hardware devices actually support it. While the bonding driver takes precautions for slaves that don't support all features, this is at least a little bit misleading to users.
If we add NETIF_F_LRO to the NETIF_F_ONE_FOR_ALL flags in netdev_features.h, then netdev_features_increment() will only enable LRO if 1) its listed in the device's feature mask and 2) if there's actually a slave present that supports the feature. Note that this is going to require some follow-up patches, as not all LRO capable device drivers are currently properly reporting LRO support in their vlan_features, which is where the bonding driver picks up device-specific features. CC: "David S. Miller" <da...@davemloft.net> CC: Jiri Pirko <j...@resnulli.us> CC: Tom Herbert <therb...@google.com> CC: Scott Feldman <sfel...@gmail.com> CC: net...@vger.kernel.org Signed-off-by: Jarod Wilson <ja...@redhat.com> --- include/linux/netdev_features.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h index 9672781..6440bf1 100644 --- a/include/linux/netdev_features.h +++ b/include/linux/netdev_features.h @@ -159,7 +159,8 @@ enum { */ #define NETIF_F_ONE_FOR_ALL (NETIF_F_GSO_SOFTWARE | NETIF_F_GSO_ROBUST | \ NETIF_F_SG | NETIF_F_HIGHDMA | \ - NETIF_F_FRAGLIST | NETIF_F_VLAN_CHALLENGED) + NETIF_F_FRAGLIST | NETIF_F_VLAN_CHALLENGED | \ + NETIF_F_LRO) /* * If one device doesn't support one of these features, then disable it -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/