[dpdk-dev] [PATCH v2 1/4] net/i40e: rework tunnel filter functions

Xing, Beilei beilei.xing at intel.com
Mon Mar 27 12:33:56 CEST 2017



> -----Original Message-----
> From: Wu, Jingjing
> Sent: Monday, March 27, 2017 5:47 PM
> To: Xing, Beilei <beilei.xing at intel.com>
> Cc: Zhang, Helin <helin.zhang at intel.com>; dev at dpdk.org; Iremonger,
> Bernard <bernard.iremonger at intel.com>
> Subject: RE: [PATCH v2 1/4] net/i40e: rework tunnel filter functions
> 
> 
> 
> > -----Original Message-----
> > From: Xing, Beilei
> > Sent: Thursday, March 23, 2017 6:46 PM
> > To: Wu, Jingjing <jingjing.wu at intel.com>
> > Cc: Zhang, Helin <helin.zhang at intel.com>; dev at dpdk.org
> > Subject: [PATCH v2 1/4] net/i40e: rework tunnel filter functions
> >
> > Rework tunnel filter functions to align with the new command buffer
> > for add/remove cloud filter.
> >
> > Signed-off-by: Beilei Xing <beilei.xing at intel.com>
> > ---
> >  drivers/net/i40e/i40e_ethdev.c | 100
> > +++++++++++++++++++++++++++----------
> > ----
> >  drivers/net/i40e/i40e_ethdev.h |   1 +
> >  drivers/net/i40e/i40e_flow.c   |  28 +++++++-----
> >  3 files changed, 86 insertions(+), 43 deletions(-)
> >
> 
> 
> > @@ -10289,13 +10307,29 @@ i40e_tunnel_filter_restore(struct i40e_pf *pf)
> >  	struct i40e_tunnel_filter_list
> >  		*tunnel_list = &pf->tunnel.tunnel_list;
> >  	struct i40e_tunnel_filter *f;
> > -	struct i40e_aqc_add_remove_cloud_filters_element_data cld_filter;
> > +	struct i40e_aqc_add_rm_cloud_filt_elem_ext cld_filter;
> > +	bool big_buffer = 0;
> >
> >  	TAILQ_FOREACH(f, tunnel_list, rules) {
> >  		memset(&cld_filter, 0, sizeof(cld_filter));
> > -		rte_memcpy(&cld_filter, &f->input, sizeof(f->input));
> > -		cld_filter.queue_number = f->queue;
> > -		i40e_aq_add_cloud_filters(hw, vsi->seid, &cld_filter, 1);
> > +		ether_addr_copy((struct ether_addr *)&f->input.outer_mac,
> > +			(struct ether_addr *)&cld_filter.element.outer_mac);
> > +		ether_addr_copy((struct ether_addr *)&f->input.inner_mac,
> > +			(struct ether_addr *)&cld_filter.element.inner_mac);
> > +		cld_filter.element.inner_vlan = f->input.inner_vlan;
> > +		cld_filter.element.flags = f->input.flags;
> > +		cld_filter.element.tenant_id = f->input.tenant_id;
> > +		cld_filter.element.queue_number = f->queue;
> > +		rte_memcpy(cld_filter.general_fields,
> > +			   f->input.general_fields,
> > +			   sizeof(f->input.general_fields));
> > +
> > +		if (big_buffer)
> > +			i40e_aq_add_cloud_filters_big_buffer(hw, vsi->seid,
> > +							     &cld_filter, 1);
> > +		else
> > +			i40e_aq_add_cloud_filters(hw, vsi->seid,
> > +						  &cld_filter.element, 1);
> >  	}
> 
> Big_buffer is always 0, why we need to check it?

Big_buffer will be 1 if the filter_type is MPLSoGRE/MPLSoUDP. But MPLS enabling in the next patchset. Will update in next version.


More information about the dev mailing list