From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 11D3CA0524; Tue, 13 Apr 2021 07:34:05 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 78A3D160B69; Tue, 13 Apr 2021 07:34:05 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 5550A160B61 for ; Tue, 13 Apr 2021 07:34:04 +0200 (CEST) IronPort-SDR: YaWWGbtRcwLOcqRKeJBOdX/1LMWqfLooV2mh+FJSTZGhHslUsLiCUqDi4cUJVjFOFn1M/dcnlq g9svVwSkkZyQ== X-IronPort-AV: E=McAfee;i="6200,9189,9952"; a="258318340" X-IronPort-AV: E=Sophos;i="5.82,218,1613462400"; d="scan'208";a="258318340" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2021 22:34:02 -0700 IronPort-SDR: Z9e1JTgQrpxGSeQwHq7ReRQgoflZ/rtcPPWVcgjsSbnyOTapVYznKpa8zaPWa91AnxDPidVvso mJlahvsFazlg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,218,1613462400"; d="scan'208";a="424105182" Received: from npg-dpdk-haiyue-1.sh.intel.com ([10.67.118.220]) by orsmga008.jf.intel.com with ESMTP; 12 Apr 2021 22:34:01 -0700 From: Haiyue Wang To: dev@dpdk.org Cc: qi.z.zhang@intel.com, Yuying.Zhang@intel.com, Haiyue Wang , Qiming Yang Date: Tue, 13 Apr 2021 13:14:59 +0800 Message-Id: <20210413051459.4195-1-haiyue.wang@intel.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v1] net/ice: update QinQ switch filter handling X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The hardware oueter/inner VLAN protocol types are now updated to map to new interface VLAN protocol types, so update the application to use new VLAN protocol types when the rte_flow is QinQ filter type. Signed-off-by: Haiyue Wang --- Depends-on: series-16315 ("base code update batch 2") --- drivers/net/ice/ice_switch_filter.c | 36 ++++++++++++++++++----------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/drivers/net/ice/ice_switch_filter.c b/drivers/net/ice/ice_switch_filter.c index 6f9e861d08..0bf3660677 100644 --- a/drivers/net/ice/ice_switch_filter.c +++ b/drivers/net/ice/ice_switch_filter.c @@ -389,12 +389,17 @@ ice_switch_inset_get(const struct rte_flow_item pattern[], bool profile_rule = 0; bool nvgre_valid = 0; bool vxlan_valid = 0; + bool qinq_valid = 0; bool ipv6_valid = 0; bool ipv4_valid = 0; bool udp_valid = 0; bool tcp_valid = 0; uint16_t j, t = 0; + if (*tun_type == ICE_SW_TUN_AND_NON_TUN_QINQ || + *tun_type == ICE_NON_TUN_QINQ) + qinq_valid = 1; + for (item = pattern; item->type != RTE_FLOW_ITEM_TYPE_END; item++) { if (item->last) { @@ -932,22 +937,25 @@ ice_switch_inset_get(const struct rte_flow_item pattern[], return 0; } - if (!outer_vlan_valid && - (*tun_type == ICE_SW_TUN_AND_NON_TUN_QINQ || - *tun_type == ICE_NON_TUN_QINQ)) - outer_vlan_valid = 1; - else if (!inner_vlan_valid && - (*tun_type == ICE_SW_TUN_AND_NON_TUN_QINQ || - *tun_type == ICE_NON_TUN_QINQ)) - inner_vlan_valid = 1; - else if (!inner_vlan_valid) - inner_vlan_valid = 1; + if (qinq_valid) { + if (!outer_vlan_valid) + outer_vlan_valid = 1; + else + inner_vlan_valid = 1; + } if (vlan_spec && vlan_mask) { - if (outer_vlan_valid && !inner_vlan_valid) { - list[t].type = ICE_VLAN_EX; - input_set |= ICE_INSET_VLAN_OUTER; - } else if (inner_vlan_valid) { + if (qinq_valid) { + if (!inner_vlan_valid) { + list[t].type = ICE_VLAN_EX; + input_set |= + ICE_INSET_VLAN_OUTER; + } else { + list[t].type = ICE_VLAN_IN; + input_set |= + ICE_INSET_VLAN_INNER; + } + } else { list[t].type = ICE_VLAN_OFOS; input_set |= ICE_INSET_VLAN_INNER; } -- 2.31.1