On 10/11/2017 4:30 PM, Shannon Nelson wrote: > On 10/10/2017 5:24 PM, Amritha Nambiar wrote: >> Add definitions for L4 filters and switch modes based on cloud filters >> modes and extend the set switch config command to include the >> additional cloud filter mode. >> >> Signed-off-by: Amritha Nambiar <amritha.namb...@intel.com> >> Signed-off-by: Kiran Patil <kiran.pa...@intel.com> >> --- >> drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h | 30 >> ++++++++++++++++++++- >> drivers/net/ethernet/intel/i40e/i40e_common.c | 4 ++- >> drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 2 + >> drivers/net/ethernet/intel/i40e/i40e_main.c | 2 + >> drivers/net/ethernet/intel/i40e/i40e_prototype.h | 2 + >> drivers/net/ethernet/intel/i40e/i40e_type.h | 9 ++++++ >> 6 files changed, 44 insertions(+), 5 deletions(-) >> >> diff --git a/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h >> b/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h >> index 6a5db1b..729976b 100644 >> --- a/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h >> +++ b/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h >> @@ -790,7 +790,35 @@ struct i40e_aqc_set_switch_config { >> */ >> __le16 first_tag; >> __le16 second_tag; >> - u8 reserved[6]; >> + /* Next byte is split into following: >> + * Bit 7 : 0: No action, 1: Switch to mode defined by bits 6:0 >> + * Bit 6: 0 : Destination Port, 1: source port >> + * Bit 5..4: L4 type > > Can you tweak the formatting on these comments to line up the first > couple of ':'s? > >> + * 0: rsvd >> + * 1: TCP >> + * 2: UDP >> + * 3: Both TCP and UDP >> + * Bits 3:0 Mode >> + * 0: default mode >> + * 1: L4 port only mode >> + * 2: non-tunneled mode >> + * 3: tunneled mode >> + */ >> +#define I40E_AQ_SET_SWITCH_BIT7_VALID 0x80 >> + >> +#define I40E_AQ_SET_SWITCH_L4_SRC_PORT 0x40 >> + >> +#define I40E_AQ_SET_SWITCH_L4_TYPE_RSVD 0x00 >> +#define I40E_AQ_SET_SWITCH_L4_TYPE_TCP 0x10 >> +#define I40E_AQ_SET_SWITCH_L4_TYPE_UDP 0x20 >> +#define I40E_AQ_SET_SWITCH_L4_TYPE_BOTH 0x30 >> + >> +#define I40E_AQ_SET_SWITCH_MODE_DEFAULT 0x00 >> +#define I40E_AQ_SET_SWITCH_MODE_L4_PORT 0x01 >> +#define I40E_AQ_SET_SWITCH_MODE_NON_TUNNEL 0x02 >> +#define I40E_AQ_SET_SWITCH_MODE_TUNNEL 0x03 >> + u8 mode; >> + u8 rsvd5[5]; >> }; >> >> I40E_CHECK_CMD_LENGTH(i40e_aqc_set_switch_config); >> diff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c >> b/drivers/net/ethernet/intel/i40e/i40e_common.c >> index 1b85eb3..0b3c5b7 100644 >> --- a/drivers/net/ethernet/intel/i40e/i40e_common.c >> +++ b/drivers/net/ethernet/intel/i40e/i40e_common.c >> @@ -2402,13 +2402,14 @@ i40e_status i40e_aq_get_switch_config(struct i40e_hw >> *hw, >> * @hw: pointer to the hardware structure >> * @flags: bit flag values to set >> * @valid_flags: which bit flags to set >> + * @mode: cloud filter mode >> * @cmd_details: pointer to command details structure or NULL >> * >> * Set switch configuration bits >> **/ >> enum i40e_status_code i40e_aq_set_switch_config(struct i40e_hw *hw, >> u16 flags, >> - u16 valid_flags, >> + u16 valid_flags, u8 mode, >> struct i40e_asq_cmd_details *cmd_details) >> { >> struct i40e_aq_desc desc; >> @@ -2420,6 +2421,7 @@ enum i40e_status_code i40e_aq_set_switch_config(struct >> i40e_hw *hw, >> i40e_aqc_opc_set_switch_config); >> scfg->flags = cpu_to_le16(flags); >> scfg->valid_flags = cpu_to_le16(valid_flags); >> + scfg->mode = mode; >> if (hw->flags & I40E_HW_FLAG_802_1AD_CAPABLE) { >> scfg->switch_tag = cpu_to_le16(hw->switch_tag); >> scfg->first_tag = cpu_to_le16(hw->first_tag); >> diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c >> b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c >> index a760d75..37ca294 100644 >> --- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c >> +++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c >> @@ -4341,7 +4341,7 @@ static int i40e_set_priv_flags(struct net_device *dev, >> u32 flags) >> sw_flags = I40E_AQ_SET_SWITCH_CFG_PROMISC; >> valid_flags = I40E_AQ_SET_SWITCH_CFG_PROMISC; >> ret = i40e_aq_set_switch_config(&pf->hw, sw_flags, valid_flags, >> - NULL); >> + 0, NULL); >> if (ret && pf->hw.aq.asq_last_status != I40E_AQ_RC_ESRCH) { >> dev_info(&pf->pdev->dev, >> "couldn't set switch config bits, err %s >> aq_err %s\n", >> diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c >> b/drivers/net/ethernet/intel/i40e/i40e_main.c >> index 33a8f429..0539d43 100644 >> --- a/drivers/net/ethernet/intel/i40e/i40e_main.c >> +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c >> @@ -12165,7 +12165,7 @@ static int i40e_setup_pf_switch(struct i40e_pf *pf, >> bool reinit) >> u16 valid_flags; >> >> valid_flags = I40E_AQ_SET_SWITCH_CFG_PROMISC; >> - ret = i40e_aq_set_switch_config(&pf->hw, flags, valid_flags, >> + ret = i40e_aq_set_switch_config(&pf->hw, flags, valid_flags, 0, >> NULL); >> if (ret && pf->hw.aq.asq_last_status != I40E_AQ_RC_ESRCH) { >> dev_info(&pf->pdev->dev, >> diff --git a/drivers/net/ethernet/intel/i40e/i40e_prototype.h >> b/drivers/net/ethernet/intel/i40e/i40e_prototype.h >> index 0150256..92869f5 100644 >> --- a/drivers/net/ethernet/intel/i40e/i40e_prototype.h >> +++ b/drivers/net/ethernet/intel/i40e/i40e_prototype.h >> @@ -190,7 +190,7 @@ i40e_status i40e_aq_get_switch_config(struct i40e_hw *hw, >> struct i40e_asq_cmd_details *cmd_details); >> enum i40e_status_code i40e_aq_set_switch_config(struct i40e_hw *hw, >> u16 flags, >> - u16 valid_flags, >> + u16 valid_flags, u8 mode, >> struct i40e_asq_cmd_details *cmd_details); >> i40e_status i40e_aq_request_resource(struct i40e_hw *hw, >> enum i40e_aq_resources_ids resource, >> diff --git a/drivers/net/ethernet/intel/i40e/i40e_type.h >> b/drivers/net/ethernet/intel/i40e/i40e_type.h >> index 17a99b5..24589a4 100644 >> --- a/drivers/net/ethernet/intel/i40e/i40e_type.h >> +++ b/drivers/net/ethernet/intel/i40e/i40e_type.h >> @@ -283,6 +283,15 @@ struct i40e_hw_capabilities { >> #define I40E_NVM_IMAGE_TYPE_CLOUD 0x2 >> #define I40E_NVM_IMAGE_TYPE_UDP_CLOUD 0x3 >> >> + /* Cloud filter modes: >> + * Mode1: Filter on L4 port only >> + * Mode2: Filter for non-tunneled traffic >> + * Mode3: Filter for tunnel traffic >> + */ >> +#define I40E_NVM_IMAGE_TYPE_MODE1 0x6 >> +#define I40E_NVM_IMAGE_TYPE_MODE2 0x7 >> +#define I40E_NVM_IMAGE_TYPE_MODE3 0x8 > > These names aren't very descriptive... out of context these look like > they are describing NVM image types, not message filter types.
I will address all your comments in v5. I'm thinking of changing these names to I40E_CLOUD_FILTER_MODEX. > >> + >> u32 management_mode; >> u32 mng_protocols_over_mctp; >> #define I40E_MNG_PROTOCOL_PLDM 0x2 >> >> _______________________________________________ >> Intel-wired-lan mailing list >> intel-wired-...@osuosl.org >> https://lists.osuosl.org/mailman/listinfo/intel-wired-lan >>