All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Fu, Qi" <qi.fu@intel.com>
To: "Zhao1, Wei" <wei.zhao1@intel.com>, "dev@dpdk.org" <dev@dpdk.org>
Cc: "Zhang, Qi Z" <qi.z.zhang@intel.com>
Subject: Re: [dpdk-dev] [PATCH] net/ice/base: fix bm mask set and find switch recipe method
Date: Wed, 29 Apr 2020 10:16:13 +0000	[thread overview]
Message-ID: <MN2PR11MB3566CEE75822304DBB064777EAAD0@MN2PR11MB3566.namprd11.prod.outlook.com> (raw)
In-Reply-To: <MWHPR11MB1391DF568955CFA3802EA3D3B7AC0@MWHPR11MB1391.namprd11.prod.outlook.com>

Tested-by: Fu, Qi <qi.fu@intel.com>

> -----Original Message-----
> From: Zhao1, Wei <wei.zhao1@intel.com>
> Sent: Tuesday, April 28, 2020 2:50 PM
> To: dev@dpdk.org
> Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Fu, Qi <qi.fu@intel.com>
> Subject: RE: [PATCH] net/ice/base: fix bm mask set and find switch recipe
> method
> 
> Add fuqi
> 
> > -----Original Message-----
> > From: Zhao1, Wei <wei.zhao1@intel.com>
> > Sent: Tuesday, April 28, 2020 2:22 PM
> > To: dev@dpdk.org
> > Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Zhao1, Wei
> > <wei.zhao1@intel.com>
> > Subject: [PATCH] net/ice/base: fix bm mask set and find switch recipe
> > method
> >
> > When we download a switch rule for ipv6 with esp payload "eth / ipv6 /
> > esp spi is 1 / end actions queue index 2 / end"
> >
> > if we don't add bm bit set check for tun_type, then a packet of
> > ipv4 with esp payload
> >
> > "sendp([Ether(dst="00:00:00:00:01:00")/IP(proto=50)/ESP(spi=1)/
> > ("X"*480)], iface="ens5f0", count=10)"
> >
> > will also go to queue index 2. And also, we need to do tun_type check,
> > or the second rule of following can not be download because of
> > rejection from switch rule download function ice_aq_sw_rules().
> >
> > "eth / ipv4 / esp spi is 1 / end actions queue index 5 / end"
> >
> > "eth / ipv6 / esp spi is 1 / end actions queue index 2 / end"
> >
> > Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
> > ---
> >  drivers/net/ice/base/ice_switch.c | 15 ++++++++++-----
> > drivers/net/ice/base/ice_switch.h |  2 ++
> >  2 files changed, 12 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/net/ice/base/ice_switch.c
> > b/drivers/net/ice/base/ice_switch.c
> > index e64b03136..7d5d57938 100644
> > --- a/drivers/net/ice/base/ice_switch.c
> > +++ b/drivers/net/ice/base/ice_switch.c
> > @@ -5278,11 +5278,8 @@ static u16 ice_find_recp(struct ice_hw *hw,
> > struct ice_prot_lkup_ext *lkup_exts,
> >  			/* If for "i"th recipe the found was never set to false
> >  			 * then it means we found our match
> >  			 */
> > -			if (ice_is_prof_rule(tun_type) &&
> > -			    tun_type == recp[i].tun_type && found)
> > -				return i; /* Return the recipe ID */
> > -			else if (!ice_is_prof_rule(tun_type) && found)
> > -				return i; /* Return the recipe ID */
> > +			if (tun_type == recp[i].tun_type && found)
> > +				return i;
> >  		}
> >  	}
> >  	return ICE_MAX_NUM_RECIPES;
> > @@ -5998,9 +5995,11 @@ ice_get_compat_fv_bitmap(struct ice_hw *hw,
> > struct ice_adv_rule_info *rinfo,
> >  		prof_type = ICE_PROF_TUN_PPPOE;
> >  		break;
> >  	case ICE_SW_TUN_PROFID_IPV6_ESP:
> > +	case ICE_SW_TUN_IPV6_ESP:
> >  		ice_set_bit(ICE_PROFID_IPV6_ESP, bm);
> >  		return;
> >  	case ICE_SW_TUN_PROFID_IPV6_AH:
> > +	case ICE_SW_TUN_IPV6_AH:
> >  		ice_set_bit(ICE_PROFID_IPV6_AH, bm);
> >  		return;
> >  	case ICE_SW_TUN_PROFID_MAC_IPV6_L2TPV3:
> > @@ -6029,6 +6028,12 @@ ice_get_compat_fv_bitmap(struct ice_hw *hw,
> > struct ice_adv_rule_info *rinfo,
> >  	case ICE_SW_TUN_IPV4_L2TPV3:
> >  		ice_set_bit(ICE_PROFID_MAC_IPV4_L2TPV3, bm);
> >  		return;
> > +	case ICE_SW_TUN_IPV4_ESP:
> > +		ice_set_bit(ICE_PROFID_IPV4_ESP, bm);
> > +		return;
> > +	case ICE_SW_TUN_IPV4_AH:
> > +		ice_set_bit(ICE_PROFID_IPV4_AH, bm);
> > +		return;
> >  	case ICE_SW_TUN_AND_NON_TUN:
> >  	default:
> >  		prof_type = ICE_PROF_ALL;
> > diff --git a/drivers/net/ice/base/ice_switch.h
> > b/drivers/net/ice/base/ice_switch.h
> > index 09dc1f236..6bb742d2f 100644
> > --- a/drivers/net/ice/base/ice_switch.h
> > +++ b/drivers/net/ice/base/ice_switch.h
> > @@ -16,7 +16,9 @@
> >  #define ICE_FLTR_TX_RX (ICE_FLTR_RX | ICE_FLTR_TX)
> >
> >  /* Switch Profile IDs for Profile related switch rules */
> > +#define ICE_PROFID_IPV4_ESP		71
> >  #define ICE_PROFID_IPV6_ESP		72
> > +#define ICE_PROFID_IPV4_AH		73
> >  #define ICE_PROFID_IPV6_AH		74
> >  #define ICE_PROFID_IPV4_NAT_T		75
> >  #define ICE_PROFID_IPV6_NAT_T		76
> > --
> > 2.19.1


  reply	other threads:[~2020-04-29 10:16 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-28  6:22 [dpdk-dev] [PATCH] net/ice/base: fix bm mask set and find switch recipe method Wei Zhao
2020-04-28  6:49 ` Zhao1, Wei
2020-04-29 10:16   ` Fu, Qi [this message]
2020-04-30  2:17     ` Zhang, Qi Z
2020-04-29  8:42 ` [dpdk-dev] [PATCH v2] " Wei Zhao
2020-05-06  5:17   ` Ye Xiaolong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=MN2PR11MB3566CEE75822304DBB064777EAAD0@MN2PR11MB3566.namprd11.prod.outlook.com \
    --to=qi.fu@intel.com \
    --cc=dev@dpdk.org \
    --cc=qi.z.zhang@intel.com \
    --cc=wei.zhao1@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.