net/cxgbe: check Rx config before doing VLAN strip offload
authorRahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Fri, 9 Nov 2018 07:56:24 +0000 (13:26 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 13 Nov 2018 23:35:53 +0000 (00:35 +0100)
Fixes: 436125e64174 ("net/cxgbe: update to Rx/Tx offload API")
Cc: stable@dpdk.org
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
drivers/net/cxgbe/cxgbe_main.c

index 88dc851..409c9f8 100644 (file)
@@ -1339,18 +1339,22 @@ inline bool force_linkup(struct adapter *adap)
 int link_start(struct port_info *pi)
 {
        struct adapter *adapter = pi->adapter;
-       int ret;
+       u64 conf_offloads;
        unsigned int mtu;
+       int ret;
 
        mtu = pi->eth_dev->data->dev_conf.rxmode.max_rx_pkt_len -
              (ETHER_HDR_LEN + ETHER_CRC_LEN);
 
+       conf_offloads = pi->eth_dev->data->dev_conf.rxmode.offloads;
+
        /*
         * We do not set address filters and promiscuity here, the stack does
         * that step explicitly.
         */
-       ret = t4_set_rxmode(adapter, adapter->mbox, pi->viid, mtu, -1, -1,
-                           -1, 1, true);
+       ret = t4_set_rxmode(adapter, adapter->mbox, pi->viid, mtu, -1, -1, -1,
+                           !!(conf_offloads & DEV_RX_OFFLOAD_VLAN_STRIP),
+                           true);
        if (ret == 0) {
                ret = cxgbe_mpstcam_modify(pi, (int)pi->xact_addr_filt,
                                (u8 *)&pi->eth_dev->data->mac_addrs[0]);