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
>>

Reply via email to