OSDN Git Service

benet: use __vlan_hwaccel helpers
authorMichał Mirosław <mirq-linux@rere.qmqm.pl>
Thu, 8 Nov 2018 23:18:04 +0000 (00:18 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 9 Nov 2018 04:45:04 +0000 (20:45 -0800)
Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/emulex/benet/be_main.c

index c5ad7a4..80b2bd3 100644 (file)
@@ -1049,30 +1049,35 @@ static struct sk_buff *be_insert_vlan_in_pkt(struct be_adapter *adapter,
                                             struct be_wrb_params
                                             *wrb_params)
 {
+       bool insert_vlan = false;
        u16 vlan_tag = 0;
 
        skb = skb_share_check(skb, GFP_ATOMIC);
        if (unlikely(!skb))
                return skb;
 
-       if (skb_vlan_tag_present(skb))
+       if (skb_vlan_tag_present(skb)) {
                vlan_tag = be_get_tx_vlan_tag(adapter, skb);
+               insert_vlan = true;
+       }
 
        if (qnq_async_evt_rcvd(adapter) && adapter->pvid) {
-               if (!vlan_tag)
+               if (!insert_vlan) {
                        vlan_tag = adapter->pvid;
+                       insert_vlan = true;
+               }
                /* f/w workaround to set skip_hw_vlan = 1, informs the F/W to
                 * skip VLAN insertion
                 */
                BE_WRB_F_SET(wrb_params->features, VLAN_SKIP_HW, 1);
        }
 
-       if (vlan_tag) {
+       if (insert_vlan) {
                skb = vlan_insert_tag_set_proto(skb, htons(ETH_P_8021Q),
                                                vlan_tag);
                if (unlikely(!skb))
                        return skb;
-               skb->vlan_tci = 0;
+               __vlan_hwaccel_clear_tag(skb);
        }
 
        /* Insert the outer VLAN, if any */