lkml.org 
[lkml]   [2020]   [Sep]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH net-next 3/7] net: hns3: add UDP segmentation offload support
    Date
    Add support for UDP segmentation offload to the HNS3 driver
    when the device can do it.

    Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
    ---
    drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 20 +++++++++++++++++---
    1 file changed, 17 insertions(+), 3 deletions(-)

    diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
    index df52abb..a362516 100644
    --- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
    +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
    @@ -696,12 +696,19 @@ static int hns3_set_tso(struct sk_buff *skb, u32 *paylen,

    /* normal or tunnel packet */
    l4_offset = l4.hdr - skb->data;
    - hdr_len = (l4.tcp->doff << 2) + l4_offset;

    /* remove payload length from inner pseudo checksum when tso */
    l4_paylen = skb->len - l4_offset;
    - csum_replace_by_diff(&l4.tcp->check,
    - (__force __wsum)htonl(l4_paylen));
    +
    + if (skb_shinfo(skb)->gso_type & SKB_GSO_UDP_L4) {
    + hdr_len = sizeof(*l4.udp) + l4_offset;
    + csum_replace_by_diff(&l4.udp->check,
    + (__force __wsum)htonl(l4_paylen));
    + } else {
    + hdr_len = (l4.tcp->doff << 2) + l4_offset;
    + csum_replace_by_diff(&l4.tcp->check,
    + (__force __wsum)htonl(l4_paylen));
    + }

    /* find the txbd field values */
    *paylen = skb->len - hdr_len;
    @@ -2311,6 +2318,13 @@ static void hns3_set_default_feature(struct net_device *netdev)
    netdev->features |= NETIF_F_NTUPLE;
    }
    }
    +
    + if (test_bit(HNAE3_DEV_SUPPORT_UDP_GSO_B, ae_dev->caps)) {
    + netdev->hw_features |= NETIF_F_GSO_UDP_L4;
    + netdev->features |= NETIF_F_GSO_UDP_L4;
    + netdev->vlan_features |= NETIF_F_GSO_UDP_L4;
    + netdev->hw_enc_features |= NETIF_F_GSO_UDP_L4;
    + }
    }

    static int hns3_alloc_buffer(struct hns3_enet_ring *ring,
    --
    2.7.4
    \
     
     \ /
      Last update: 2020-09-29 11:36    [W:2.408 / U:0.176 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site