* [dpdk-dev] [PATCH 1/2] net/ice/base: fix tunnel type check for PPPoE
2020-07-07 9:40 [dpdk-dev] [PATCH 0/2] update base code batch 4 Wei Zhao
@ 2020-07-07 9:40 ` Wei Zhao
2020-07-07 9:40 ` [dpdk-dev] [PATCH 2/2] net/ice/base: fix add special words for tunnel rule Wei Zhao
2020-07-08 0:39 ` [dpdk-dev] [PATCH 0/2] update base code batch 4 Zhang, Qi Z
2 siblings, 0 replies; 4+ messages in thread
From: Wei Zhao @ 2020-07-07 9:40 UTC (permalink / raw)
To: dev; +Cc: qi.z.zhang, nannan.lu, Wei Zhao
This patch fix tunnel type check for PPPoE type of recipe
when search for recipe which has been created before, and
also fix a bug of typo.
Fixes: 418d2563d10b ("net/ice/base: get tunnel type for recipe")
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
---
drivers/net/ice/base/ice_switch.c | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c
index 0e220580a..caa080da2 100644
--- a/drivers/net/ice/base/ice_switch.c
+++ b/drivers/net/ice/base/ice_switch.c
@@ -1086,15 +1086,11 @@ static enum ice_sw_tunnel_type ice_get_tun_type_for_recipe(u8 rid)
tun_type = ICE_SW_TUN_PPPOE;
else if (!non_tun_valid && gtp_valid)
tun_type = ICE_SW_TUN_GTP;
- else if ((non_tun_valid && vxlan_valid) ||
- (non_tun_valid && gre_valid) ||
- (non_tun_valid && gtp_valid) ||
- (non_tun_valid && pppoe_valid))
+ else if (non_tun_valid &&
+ (vxlan_valid || gre_valid || gtp_valid || pppoe_valid))
tun_type = ICE_SW_TUN_AND_NON_TUN;
- else if ((non_tun_valid && !vxlan_valid) ||
- (non_tun_valid && !gre_valid) ||
- (non_tun_valid && !gtp_valid) ||
- (non_tun_valid && !pppoe_valid))
+ else if (non_tun_valid && !vxlan_valid && !gre_valid && !gtp_valid &&
+ !pppoe_valid)
tun_type = ICE_NON_TUN;
if (profile_num > 1 && tun_type == ICE_SW_TUN_PPPOE) {
@@ -1108,7 +1104,7 @@ static enum ice_sw_tunnel_type ice_get_tun_type_for_recipe(u8 rid)
tun_type = ICE_SW_TUN_PPPOE_IPV6;
}
- if (profile_num == 1 && (flag_valid || non_tun_valid)) {
+ if (profile_num == 1 && (flag_valid || non_tun_valid || pppoe_valid)) {
for (j = 0; j < ICE_MAX_NUM_PROFILES; j++) {
if (ice_is_bit_set(recipe_to_profile[rid], j)) {
switch (j) {
--
2.19.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [dpdk-dev] [PATCH 2/2] net/ice/base: fix add special words for tunnel rule
2020-07-07 9:40 [dpdk-dev] [PATCH 0/2] update base code batch 4 Wei Zhao
2020-07-07 9:40 ` [dpdk-dev] [PATCH 1/2] net/ice/base: fix tunnel type check for PPPoE Wei Zhao
@ 2020-07-07 9:40 ` Wei Zhao
2020-07-08 0:39 ` [dpdk-dev] [PATCH 0/2] update base code batch 4 Zhang, Qi Z
2 siblings, 0 replies; 4+ messages in thread
From: Wei Zhao @ 2020-07-07 9:40 UTC (permalink / raw)
To: dev; +Cc: qi.z.zhang, nannan.lu, stable, Wei Zhao
if we download a NVGRE rule like "eth / ipv4 / nvgre / eth / ipv4 src
is 192.168.1.2 dst is 192.168.1.3 / end actions queue index 3 / end"
the special word will not be added because of rm->n_grp_count = 1,
so we have to change the ice_add_special_words() function before
ice_create_recipe_group(), then the special words will be add
into rm->rg_list, btw the flag match_tun_mask is useless now
and no need to add special words in function
ice_add_sw_recipe() duplicatly.
Fixes: eda40e22b858 ("net/ice/base: improve switch chained recipe")
Cc: stable@dpdk.org
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
---
drivers/net/ice/base/ice_switch.c | 38 ++++++++-----------------------
1 file changed, 9 insertions(+), 29 deletions(-)
diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c
index caa080da2..296aa5484 100644
--- a/drivers/net/ice/base/ice_switch.c
+++ b/drivers/net/ice/base/ice_switch.c
@@ -5993,12 +5993,11 @@ ice_find_free_recp_res_idx(struct ice_hw *hw, const ice_bitmap_t *profiles,
* ice_add_sw_recipe - function to call AQ calls to create switch recipe
* @hw: pointer to hardware structure
* @rm: recipe management list entry
- * @match_tun_mask: tunnel mask that needs to be programmed
* @profiles: bitmap of profiles that will be associated.
*/
static enum ice_status
ice_add_sw_recipe(struct ice_hw *hw, struct ice_sw_recipe *rm,
- u16 match_tun_mask, ice_bitmap_t *profiles)
+ ice_bitmap_t *profiles)
{
ice_declare_bitmap(result_idx_bm, ICE_MAX_FV_WORDS);
struct ice_aqc_recipe_data_elem *tmp;
@@ -6213,15 +6212,6 @@ ice_add_sw_recipe(struct ice_hw *hw, struct ice_sw_recipe *rm,
}
buf[recps].content.act_ctrl_fwd_priority = rm->priority;
- /* To differentiate among different UDP tunnels, a meta data ID
- * flag is used.
- */
- if (match_tun_mask) {
- buf[recps].content.lkup_indx[i] = ICE_TUN_FLAG_FV_IND;
- buf[recps].content.mask[i] =
- CPU_TO_LE16(match_tun_mask);
- }
-
recps++;
rm->root_rid = (u8)rid;
}
@@ -6596,8 +6586,6 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
struct ice_sw_fv_list_entry *tmp;
enum ice_status status = ICE_SUCCESS;
struct ice_sw_recipe *rm;
- u16 match_tun_mask = 0;
- u16 mask;
u8 i;
if (!ice_is_prof_rule(rinfo->tun_type) && !lkups_cnt)
@@ -6648,6 +6636,13 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
if (status)
goto err_unroll;
+ /* Create any special protocol/offset pairs, such as looking at tunnel
+ * bits by extracting metadata
+ */
+ status = ice_add_special_words(rinfo, lkup_exts);
+ if (status)
+ goto err_free_lkup_exts;
+
/* Group match words into recipes using preferred recipe grouping
* criteria.
*/
@@ -6655,14 +6650,6 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
if (status)
goto err_unroll;
- /* For certain tunnel types it is necessary to use a metadata ID flag to
- * differentiate different tunnel types. A separate recipe needs to be
- * used for the metadata.
- */
- if (ice_tun_type_match_word(rinfo->tun_type, &mask) &&
- rm->n_grp_count > 1)
- match_tun_mask = mask;
-
/* set the recipe priority if specified */
rm->priority = (u8)rinfo->priority;
@@ -6701,13 +6688,6 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
ice_set_bit((u16)fvit->profile_id, profiles);
}
- /* Create any special protocol/offset pairs, such as looking at tunnel
- * bits by extracting metadata
- */
- status = ice_add_special_words(rinfo, lkup_exts);
- if (status)
- goto err_free_lkup_exts;
-
/* Look for a recipe which matches our requested fv / mask list */
*rid = ice_find_recp(hw, lkup_exts, rinfo->tun_type);
if (*rid < ICE_MAX_NUM_RECIPES)
@@ -6716,7 +6696,7 @@ ice_add_adv_recipe(struct ice_hw *hw, struct ice_adv_lkup_elem *lkups,
rm->tun_type = rinfo->tun_type;
/* Recipe we need does not exist, add a recipe */
- status = ice_add_sw_recipe(hw, rm, match_tun_mask, profiles);
+ status = ice_add_sw_recipe(hw, rm, profiles);
if (status)
goto err_unroll;
--
2.19.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [dpdk-dev] [PATCH 0/2] update base code batch 4
2020-07-07 9:40 [dpdk-dev] [PATCH 0/2] update base code batch 4 Wei Zhao
2020-07-07 9:40 ` [dpdk-dev] [PATCH 1/2] net/ice/base: fix tunnel type check for PPPoE Wei Zhao
2020-07-07 9:40 ` [dpdk-dev] [PATCH 2/2] net/ice/base: fix add special words for tunnel rule Wei Zhao
@ 2020-07-08 0:39 ` Zhang, Qi Z
2 siblings, 0 replies; 4+ messages in thread
From: Zhang, Qi Z @ 2020-07-08 0:39 UTC (permalink / raw)
To: Zhao1, Wei, dev; +Cc: Lu, Nannan
> -----Original Message-----
> From: Zhao1, Wei <wei.zhao1@intel.com>
> Sent: Tuesday, July 7, 2020 5:41 PM
> To: dev@dpdk.org
> Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Lu, Nannan <nannan.lu@intel.com>
> Subject: [PATCH 0/2] update base code batch 4
>
> The patchset include 2 bug fixes for base code.
>
> Wei Zhao (2):
> ice-shared: Fix tunnel type check for PPPoE
> ice-shared: Fix add special words for tunnel rule
>
> drivers/net/ice/base/ice_switch.c | 52 +++++++++----------------------
> 1 file changed, 14 insertions(+), 38 deletions(-)
>
> --
> 2.19.1
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Applied to dpdk-next-net-intel.
Thanks
Qi
^ permalink raw reply [flat|nested] 4+ messages in thread