]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
UBUNTU: SAUCE: {topost} net: hns3: RX BD information valid only in last BD except...
authorPeng Li <lipeng321@huawei.com>
Fri, 30 Mar 2018 08:26:22 +0000 (16:26 +0800)
committerKhalid Elmously <khalid.elmously@canonical.com>
Wed, 6 Jun 2018 18:41:35 +0000 (14:41 -0400)
BugLink: https://bugs.launchpad.net/bugs/1768670
This patch will change the use of BD to support multi Hi162X NIC
system.

For the next generation Hi162X NIC system, Only VLD bit and current
data size valid in each BD, the other information valid only the last
BD for a packet.

Signed-off-by: Peng Li <lipeng321@huawei.com>
Reviewed-by: Yisen Zhuang <yisen.zhuang@huawei.com>
Signed-off-by: dann frazier <dann.frazier@canonical.com>
Acked-by: Stefan Bader <stefan.bader@canonical.com>
Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c

index f2b31d278bc9b9bb45080e6a044d304472f86e81..50750adad193b6fdf3a96556b09c7f61fb192334 100644 (file)
@@ -2240,6 +2240,23 @@ static int hns3_handle_rx_bd(struct hns3_enet_ring *ring,
        }
 
        *out_bnum = bnum;
+       /* Based on hw strategy, the tag offloaded will be stored at
+        * ot_vlan_tag in two layer tag case, and stored at vlan_tag
+        * in one layer tag case.
+        */
+       if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX) {
+               u16 vlan_tag;
+
+               vlan_tag = le16_to_cpu(desc->rx.ot_vlan_tag);
+               if (!(vlan_tag & VLAN_VID_MASK))
+                       vlan_tag = le16_to_cpu(desc->rx.vlan_tag);
+               if (vlan_tag & VLAN_VID_MASK)
+                       __vlan_hwaccel_put_tag(skb,
+                                              htons(ETH_P_8021Q),
+                                              vlan_tag);
+       }
+
+       l234info = le32_to_cpu(desc->rx.l234_info);
 
        l234info = le32_to_cpu(desc->rx.l234_info);