i40e: Cloud filter mode for set_switch_config command
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.nambiar@intel.com> Signed-off-by: Kiran Patil <kiran.patil@intel.com> Acked-by: Shannon Nelson <shannon.nelson@oracle.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
aa5cb02ae9
commit
5efe0c6c2c
|
@ -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
|
||||
* 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);
|
||||
|
|
|
@ -2407,13 +2407,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;
|
||||
|
@ -2425,6 +2426,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);
|
||||
|
|
|
@ -4343,7 +4343,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",
|
||||
|
|
|
@ -12166,7 +12166,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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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_CLOUD_FILTER_MODE1 0x6
|
||||
#define I40E_CLOUD_FILTER_MODE2 0x7
|
||||
#define I40E_CLOUD_FILTER_MODE3 0x8
|
||||
|
||||
u32 management_mode;
|
||||
u32 mng_protocols_over_mctp;
|
||||
#define I40E_MNG_PROTOCOL_PLDM 0x2
|
||||
|
|
Loading…
Reference in New Issue