X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Focteontx2%2Fotx2_vlan.c;h=f5161e17a16dae0b36544158cb3e8c1855a4bedc;hb=90bbd7d9545f88ac11f8b89449ad7fd799adbfba;hp=2be7671d3e0120a62ec3a6438597b387357aea2c;hpb=d373fa9f2cda8bf78bba9bf559845aca4507d911;p=dpdk.git diff --git a/drivers/net/octeontx2/otx2_vlan.c b/drivers/net/octeontx2/otx2_vlan.c index 2be7671d3e..f5161e17a1 100644 --- a/drivers/net/octeontx2/otx2_vlan.c +++ b/drivers/net/octeontx2/otx2_vlan.c @@ -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 = ð_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;