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

bonding: add ESP offload features when slaves support

Add NETIF_F_GSO_ESP bit to bond's gso_partial_features if all slaves
support it, such that ESP segmentation is handled by hardware if possible.

Signed-off-by: Jianbo Liu <jianbol@nvidia.com>
Reviewed-by: Boris Pismenny <borisp@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/20241105192721.584822-1-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Jianbo Liu and committed by
Jakub Kicinski
4861333b 4592de83

+9
+9
drivers/net/bonding/bond_main.c
··· 1545 1545 { 1546 1546 unsigned int dst_release_flag = IFF_XMIT_DST_RELEASE | 1547 1547 IFF_XMIT_DST_RELEASE_PERM; 1548 + netdev_features_t gso_partial_features = NETIF_F_GSO_ESP; 1548 1549 netdev_features_t vlan_features = BOND_VLAN_FEATURES; 1549 1550 netdev_features_t enc_features = BOND_ENC_FEATURES; 1550 1551 #ifdef CONFIG_XFRM_OFFLOAD ··· 1578 1577 BOND_XFRM_FEATURES); 1579 1578 #endif /* CONFIG_XFRM_OFFLOAD */ 1580 1579 1580 + if (slave->dev->hw_enc_features & NETIF_F_GSO_PARTIAL) 1581 + gso_partial_features &= slave->dev->gso_partial_features; 1582 + 1581 1583 mpls_features = netdev_increment_features(mpls_features, 1582 1584 slave->dev->mpls_features, 1583 1585 BOND_MPLS_FEATURES); ··· 1593 1589 tso_max_segs = min(tso_max_segs, slave->dev->tso_max_segs); 1594 1590 } 1595 1591 bond_dev->hard_header_len = max_hard_header_len; 1592 + 1593 + if (gso_partial_features & NETIF_F_GSO_ESP) 1594 + bond_dev->gso_partial_features |= NETIF_F_GSO_ESP; 1595 + else 1596 + bond_dev->gso_partial_features &= ~NETIF_F_GSO_ESP; 1596 1597 1597 1598 done: 1598 1599 bond_dev->vlan_features = vlan_features;