> -----Original Message----- > From: Yigit, Ferruh > Sent: Thursday, March 9, 2017 6:02 PM > To: Xing, Beilei <beilei.x...@intel.com>; Wu, Jingjing <jingjing...@intel.com> > Cc: Zhang, Helin <helin.zh...@intel.com>; dev@dpdk.org; Iremonger, > Bernard <bernard.iremon...@intel.com>; Stroe, Laura > <laura.st...@intel.com> > Subject: Re: [dpdk-dev] [PATCH 1/4] net/i40e: support replace filter type > > On 3/9/2017 5:59 AM, Xing, Beilei wrote: > > > > > >> -----Original Message----- > >> From: Yigit, Ferruh > >> Sent: Wednesday, March 8, 2017 11:50 PM > >> To: Xing, Beilei <beilei.x...@intel.com>; Wu, Jingjing > >> <jingjing...@intel.com> > >> Cc: Zhang, Helin <helin.zh...@intel.com>; dev@dpdk.org; Iremonger, > >> Bernard <bernard.iremon...@intel.com>; Stroe, Laura > >> <laura.st...@intel.com> > >> Subject: Re: [dpdk-dev] [PATCH 1/4] net/i40e: support replace filter > >> type > >> > >> On 3/3/2017 9:31 AM, Beilei Xing wrote: > >>> Add new admin queue function and extended fields in DCR 288: > >>> - Add admin queue function for Replace filter > >>> command (Opcode: 0x025F) > >>> - Add General fields for Add/Remove Cloud filters > >>> command > >>> > >>> This patch will be removed to base driver in future. > >>> > >>> Signed-off-by: Bernard Iremonger <bernard.iremon...@intel.com> > >>> Signed-off-by: Stroe Laura <laura.st...@intel.com> > >>> Signed-off-by: Jingjing Wu <jingjing...@intel.com> > >>> Signed-off-by: Beilei Xing <beilei.x...@intel.com> > >>> --- > >>> drivers/net/i40e/i40e_ethdev.h | 106 > ++++++++++++++++++++++++++++ > >>> drivers/net/i40e/i40e_flow.c | 152 > >> +++++++++++++++++++++++++++++++++++++++++ > >>> 2 files changed, 258 insertions(+) > >>> > >>> diff --git a/drivers/net/i40e/i40e_ethdev.h > >>> b/drivers/net/i40e/i40e_ethdev.h index f545850..3a49865 100644 > >>> --- a/drivers/net/i40e/i40e_ethdev.h > >>> +++ b/drivers/net/i40e/i40e_ethdev.h > >>> @@ -729,6 +729,100 @@ struct i40e_valid_pattern { > >>> parse_filter_t parse_filter; > >>> }; > >>> > >>> +/* Support replace filter */ > >>> + > >>> +/* i40e_aqc_add_remove_cloud_filters_element_big_data is used > when > >>> + * I40E_AQC_ADD_REM_CLOUD_CMD_BIG_BUFFER flag is set. refer to > >>> + * DCR288 > >> > >> Please do not refer to DCR, unless you can provide a public link for it. > > OK, got it. > > > >> > >>> + */ > >>> +struct i40e_aqc_add_remove_cloud_filters_element_big_data { > >>> + struct i40e_aqc_add_remove_cloud_filters_element_data element; > >> > >> What is the difference between > >> "i40e_aqc_add_remove_cloud_filters_element_big_data" and > >> "i40e_aqc_add_remove_cloud_filters_element_data", why need > big_data > >> one? > > > > As ' Add/Remove Cloud filters -command buffer ' is changed in the DCR288, > 'general fields' exists only when big_buffer is set. > > What does it mean having "big_buffer" set? What changes functionally being > big_buffer set or not?
According to DCR288, "Add/Remove Cloud Filter Command" should add 'Big Buffer' in byte20, but we can't change ' struct i40e_aqc_add_remove_cloud_filters ' in base code, struct i40e_aqc_add_remove_cloud_filters { u8 num_filters; u8 reserved; __le16 seid; #define I40E_AQC_ADD_CLOUD_CMD_SEID_NUM_SHIFT 0 #define I40E_AQC_ADD_CLOUD_CMD_SEID_NUM_MASK (0x3FF << \ I40E_AQC_ADD_CLOUD_CMD_SEID_NUM_SHIFT) u8 reserved2[4]; __le32 addr_high; __le32 addr_low; }; So we use reserverd[0] for 'Big Buffer' here, in the patch for ND, we changed above structure with following: struct i40e_aqc_add_remove_cloud_filters { u8 num_filters; u8 reserved; __le16 seid; #define I40E_AQC_ADD_CLOUD_CMD_SEID_NUM_SHIFT 0 #define I40E_AQC_ADD_CLOUD_CMD_SEID_NUM_MASK (0x3FF << \ I40E_AQC_ADD_CLOUD_CMD_SEID_NUM_SHIFT) u8 big_buffer; u8 reserved2[3]; __le32 addr_high; __le32 addr_low; }; > > > But we don't want to change the " > i40e_aqc_add_remove_cloud_filters_element_data " as it will cause ABI/API > change in kernel driver. > > > <...>