Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: bonding, dummy, ifb, team: advertise NETIF_F_GSO_SOFTWARE

Virtual netdevs should use NETIF_F_GSO_SOFTWARE to forward GSO skbs
as-is and let the final drivers deal with them when supported.
Also remove NETIF_F_GSO_UDP_L4 from bonding and team drivers as it's
now included in the "software" list.

Suggested-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: Alexander Lobakin <alobakin@pm.me>
Acked-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Alexander Lobakin and committed by
Jakub Kicinski
ecb8fed4 2e4ef10f

+11 -14
+5 -6
drivers/net/bonding/bond_main.c
··· 1228 1228 } 1229 1229 1230 1230 #define BOND_VLAN_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \ 1231 - NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \ 1231 + NETIF_F_FRAGLIST | NETIF_F_GSO_SOFTWARE | \ 1232 1232 NETIF_F_HIGHDMA | NETIF_F_LRO) 1233 1233 1234 1234 #define BOND_ENC_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \ 1235 - NETIF_F_RXCSUM | NETIF_F_ALL_TSO) 1235 + NETIF_F_RXCSUM | NETIF_F_GSO_SOFTWARE) 1236 1236 1237 1237 #define BOND_MPLS_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \ 1238 - NETIF_F_ALL_TSO) 1238 + NETIF_F_GSO_SOFTWARE) 1239 1239 1240 1240 1241 1241 static void bond_compute_features(struct bonding *bond) ··· 1291 1291 bond_dev->vlan_features = vlan_features; 1292 1292 bond_dev->hw_enc_features = enc_features | NETIF_F_GSO_ENCAP_ALL | 1293 1293 NETIF_F_HW_VLAN_CTAG_TX | 1294 - NETIF_F_HW_VLAN_STAG_TX | 1295 - NETIF_F_GSO_UDP_L4; 1294 + NETIF_F_HW_VLAN_STAG_TX; 1296 1295 #ifdef CONFIG_XFRM_OFFLOAD 1297 1296 bond_dev->hw_enc_features |= xfrm_features; 1298 1297 #endif /* CONFIG_XFRM_OFFLOAD */ ··· 4720 4721 NETIF_F_HW_VLAN_CTAG_RX | 4721 4722 NETIF_F_HW_VLAN_CTAG_FILTER; 4722 4723 4723 - bond_dev->hw_features |= NETIF_F_GSO_ENCAP_ALL | NETIF_F_GSO_UDP_L4; 4724 + bond_dev->hw_features |= NETIF_F_GSO_ENCAP_ALL; 4724 4725 #ifdef CONFIG_XFRM_OFFLOAD 4725 4726 bond_dev->hw_features |= BOND_XFRM_FEATURES; 4726 4727 #endif /* CONFIG_XFRM_OFFLOAD */
+1 -1
drivers/net/dummy.c
··· 124 124 dev->flags &= ~IFF_MULTICAST; 125 125 dev->priv_flags |= IFF_LIVE_ADDR_CHANGE | IFF_NO_QUEUE; 126 126 dev->features |= NETIF_F_SG | NETIF_F_FRAGLIST; 127 - dev->features |= NETIF_F_ALL_TSO; 127 + dev->features |= NETIF_F_GSO_SOFTWARE; 128 128 dev->features |= NETIF_F_HW_CSUM | NETIF_F_HIGHDMA | NETIF_F_LLTX; 129 129 dev->features |= NETIF_F_GSO_ENCAP_ALL; 130 130 dev->hw_features |= dev->features;
+1 -2
drivers/net/ifb.c
··· 187 187 }; 188 188 189 189 #define IFB_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | NETIF_F_FRAGLIST | \ 190 - NETIF_F_TSO_ECN | NETIF_F_TSO | NETIF_F_TSO6 | \ 191 - NETIF_F_GSO_ENCAP_ALL | \ 190 + NETIF_F_GSO_SOFTWARE | NETIF_F_GSO_ENCAP_ALL | \ 192 191 NETIF_F_HIGHDMA | NETIF_F_HW_VLAN_CTAG_TX | \ 193 192 NETIF_F_HW_VLAN_STAG_TX) 194 193
+4 -5
drivers/net/team/team.c
··· 975 975 } 976 976 977 977 #define TEAM_VLAN_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \ 978 - NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \ 978 + NETIF_F_FRAGLIST | NETIF_F_GSO_SOFTWARE | \ 979 979 NETIF_F_HIGHDMA | NETIF_F_LRO) 980 980 981 981 #define TEAM_ENC_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \ 982 - NETIF_F_RXCSUM | NETIF_F_ALL_TSO) 982 + NETIF_F_RXCSUM | NETIF_F_GSO_SOFTWARE) 983 983 984 984 static void __team_compute_features(struct team *team) 985 985 { ··· 1009 1009 team->dev->vlan_features = vlan_features; 1010 1010 team->dev->hw_enc_features = enc_features | NETIF_F_GSO_ENCAP_ALL | 1011 1011 NETIF_F_HW_VLAN_CTAG_TX | 1012 - NETIF_F_HW_VLAN_STAG_TX | 1013 - NETIF_F_GSO_UDP_L4; 1012 + NETIF_F_HW_VLAN_STAG_TX; 1014 1013 team->dev->hard_header_len = max_hard_header_len; 1015 1014 1016 1015 team->dev->priv_flags &= ~IFF_XMIT_DST_RELEASE; ··· 2174 2175 NETIF_F_HW_VLAN_CTAG_RX | 2175 2176 NETIF_F_HW_VLAN_CTAG_FILTER; 2176 2177 2177 - dev->hw_features |= NETIF_F_GSO_ENCAP_ALL | NETIF_F_GSO_UDP_L4; 2178 + dev->hw_features |= NETIF_F_GSO_ENCAP_ALL; 2178 2179 dev->features |= dev->hw_features; 2179 2180 dev->features |= NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_STAG_TX; 2180 2181 }