net/ice/base: init marker group table for parser
[dpdk.git] / drivers / net / octeontx2 / otx2_vlan.c
index 2be7671..f5161e1 100644 (file)
@@ -300,28 +300,32 @@ nix_vlan_mcam_config(struct rte_eth_dev *eth_dev,
 
        /* Adds vlan_id & LB CTAG flag to MCAM KW */
        if (flags & VLAN_ID_MATCH) {
-               entry.kw[kwi] |= NPC_LT_LB_CTAG << mkex->lb_lt_offset;
-               entry.kw_mask[kwi] |= 0xFULL << mkex->lb_lt_offset;
+               entry.kw[kwi] |= (NPC_LT_LB_CTAG | NPC_LT_LB_STAG_QINQ)
+                                                       << mkex->lb_lt_offset;
+               entry.kw_mask[kwi] |=
+                       (0xF & ~(NPC_LT_LB_CTAG ^ NPC_LT_LB_STAG_QINQ))
+                                                       << mkex->lb_lt_offset;
 
-               mcam_data = ((uint32_t)vlan_id << 16);
-               mcam_mask = (BIT_ULL(16) - 1) << 16;
+               mcam_data = (uint16_t)vlan_id;
+               mcam_mask = (BIT_ULL(16) - 1);
                otx2_mbox_memcpy(key_data + mkex->lb_xtract.key_off,
-                                    &mcam_data, mkex->lb_xtract.len + 1);
+                                    &mcam_data, mkex->lb_xtract.len);
                otx2_mbox_memcpy(key_mask + mkex->lb_xtract.key_off,
-                                    &mcam_mask, mkex->lb_xtract.len + 1);
+                                    &mcam_mask, mkex->lb_xtract.len);
        }
 
        /* Adds LB STAG flag to MCAM KW */
        if (flags & QINQ_F_MATCH) {
-               entry.kw[kwi] |= NPC_LT_LB_STAG << mkex->lb_lt_offset;
+               entry.kw[kwi] |= NPC_LT_LB_STAG_QINQ << mkex->lb_lt_offset;
                entry.kw_mask[kwi] |= 0xFULL << mkex->lb_lt_offset;
        }
 
        /* Adds LB CTAG & LB STAG flags to MCAM KW */
        if (flags & VTAG_F_MATCH) {
-               entry.kw[kwi] |= (NPC_LT_LB_CTAG | NPC_LT_LB_STAG)
+               entry.kw[kwi] |= (NPC_LT_LB_CTAG | NPC_LT_LB_STAG_QINQ)
                                                        << mkex->lb_lt_offset;
-               entry.kw_mask[kwi] |= (NPC_LT_LB_CTAG & NPC_LT_LB_STAG)
+               entry.kw_mask[kwi] |=
+                       (0xF & ~(NPC_LT_LB_CTAG ^ NPC_LT_LB_STAG_QINQ))
                                                        << mkex->lb_lt_offset;
        }
 
@@ -713,11 +717,6 @@ otx2_nix_vlan_offload_set(struct rte_eth_dev *eth_dev, int mask)
 
        rxmode = &eth_dev->data->dev_conf.rxmode;
 
-       if (mask & ETH_VLAN_EXTEND_MASK) {
-               otx2_err("Extend offload not supported");
-               return -ENOTSUP;
-       }
-
        if (mask & ETH_VLAN_STRIP_MASK) {
                if (rxmode->offloads & DEV_RX_OFFLOAD_VLAN_STRIP) {
                        offloads |= DEV_RX_OFFLOAD_VLAN_STRIP;