i40e/base: support proxy config for X722
Adds admin q functions for "Set Proxying Configuration Command" and "Set NS Proxy Table Entry Command". Signed-off-by: Jingjing Wu <jingjing.wu@intel.com> Acked-by: Helin Zhang <helin.zhang@intel.com> Tested-by: Huilong Xu <huilongx.xu@intel.com>
This commit is contained in:
parent
4000d1d0cc
commit
788fc17b2d
@ -272,6 +272,10 @@ enum i40e_admin_queue_opc {
|
||||
i40e_aqc_opc_get_rss_lut = 0x0B05,
|
||||
#endif
|
||||
|
||||
/* Proxy commands */
|
||||
i40e_aqc_opc_set_proxy_config = 0x0104,
|
||||
i40e_aqc_opc_set_ns_proxy_table_entry = 0x0105,
|
||||
|
||||
/* Async Events */
|
||||
i40e_aqc_opc_event_lan_overflow = 0x1001,
|
||||
|
||||
@ -2418,4 +2422,41 @@ struct i40e_aqc_debug_modify_internals {
|
||||
|
||||
I40E_CHECK_CMD_LENGTH(i40e_aqc_debug_modify_internals);
|
||||
|
||||
#ifdef X722_SUPPORT
|
||||
struct i40e_aqc_set_proxy_config {
|
||||
u8 reserved_1[4];
|
||||
u8 reserved_2[4];
|
||||
__le32 address_high;
|
||||
__le32 address_low;
|
||||
};
|
||||
|
||||
I40E_CHECK_CMD_LENGTH(i40e_aqc_set_proxy_config);
|
||||
|
||||
struct i40e_aqc_set_proxy_config_resp {
|
||||
u8 reserved[8];
|
||||
__le32 address_high;
|
||||
__le32 address_low;
|
||||
};
|
||||
|
||||
I40E_CHECK_CMD_LENGTH(i40e_aqc_set_proxy_config_resp);
|
||||
|
||||
struct i40e_aqc_set_ns_proxy_table_entry {
|
||||
u8 reserved_1[4];
|
||||
u8 reserved_2[4];
|
||||
__le32 address_high;
|
||||
__le32 address_low;
|
||||
};
|
||||
|
||||
I40E_CHECK_CMD_LENGTH(i40e_aqc_set_ns_proxy_table_entry);
|
||||
|
||||
struct i40e_aqc_set_ns_proxy_table_entry_resp {
|
||||
u8 reserved_1[4];
|
||||
u8 reserved_2[4];
|
||||
__le32 address_high;
|
||||
__le32 address_low;
|
||||
};
|
||||
|
||||
I40E_CHECK_CMD_LENGTH(i40e_aqc_set_ns_proxy_table_entry_resp);
|
||||
|
||||
#endif
|
||||
#endif /* _I40E_ADMINQ_CMD_H_ */
|
||||
|
@ -5768,3 +5768,75 @@ enum i40e_status_code i40e_vf_reset(struct i40e_hw *hw)
|
||||
I40E_SUCCESS, NULL, 0, NULL);
|
||||
}
|
||||
#endif /* VF_DRIVER */
|
||||
#ifdef X722_SUPPORT
|
||||
|
||||
/**
|
||||
* i40e_aq_set_arp_proxy_config
|
||||
* @hw: pointer to the HW structure
|
||||
* @proxy_config - pointer to proxy config command table struct
|
||||
* @cmd_details: pointer to command details
|
||||
*
|
||||
* Set ARP offload parameters from pre-populated
|
||||
* i40e_aqc_arp_proxy_data struct
|
||||
**/
|
||||
enum i40e_status_code i40e_aq_set_arp_proxy_config(struct i40e_hw *hw,
|
||||
struct i40e_aqc_arp_proxy_data *proxy_config,
|
||||
struct i40e_asq_cmd_details *cmd_details)
|
||||
{
|
||||
struct i40e_aq_desc desc;
|
||||
struct i40e_aqc_set_proxy_config *cmd =
|
||||
(struct i40e_aqc_set_proxy_config *) &desc.params.raw;
|
||||
enum i40e_status_code status;
|
||||
|
||||
if (!proxy_config)
|
||||
return I40E_ERR_PARAM;
|
||||
|
||||
i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_set_proxy_config);
|
||||
|
||||
cmd->address_high = CPU_TO_LE32(I40E_HI_DWORD((u64)proxy_config));
|
||||
cmd->address_low = CPU_TO_LE32(I40E_LO_DWORD((u64)proxy_config));
|
||||
|
||||
status = i40e_asq_send_command(hw, &desc, proxy_config,
|
||||
sizeof(struct i40e_aqc_arp_proxy_data),
|
||||
cmd_details);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_aq_opc_set_ns_proxy_table_entry
|
||||
* @hw: pointer to the HW structure
|
||||
* @ns_proxy_table_entry: pointer to NS table entry command struct
|
||||
* @cmd_details: pointer to command details
|
||||
*
|
||||
* Set IPv6 Neighbor Solicitation (NS) protocol offload parameters
|
||||
* from pre-populated i40e_aqc_ns_proxy_data struct
|
||||
**/
|
||||
enum i40e_status_code i40e_aq_set_ns_proxy_table_entry(struct i40e_hw *hw,
|
||||
struct i40e_aqc_ns_proxy_data *ns_proxy_table_entry,
|
||||
struct i40e_asq_cmd_details *cmd_details)
|
||||
{
|
||||
struct i40e_aq_desc desc;
|
||||
struct i40e_aqc_set_ns_proxy_table_entry *cmd =
|
||||
(struct i40e_aqc_set_ns_proxy_table_entry *) &desc.params.raw;
|
||||
enum i40e_status_code status;
|
||||
|
||||
if (!ns_proxy_table_entry)
|
||||
return I40E_ERR_PARAM;
|
||||
|
||||
i40e_fill_default_direct_cmd_desc(&desc,
|
||||
i40e_aqc_opc_set_ns_proxy_table_entry);
|
||||
|
||||
cmd->address_high =
|
||||
CPU_TO_LE32(I40E_HI_DWORD((u64)ns_proxy_table_entry));
|
||||
cmd->address_low =
|
||||
CPU_TO_LE32(I40E_LO_DWORD((u64)ns_proxy_table_entry));
|
||||
|
||||
status = i40e_asq_send_command(hw, &desc, ns_proxy_table_entry,
|
||||
sizeof(struct i40e_aqc_ns_proxy_data),
|
||||
cmd_details);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
#endif /* X722_SUPPORT */
|
||||
|
@ -491,4 +491,12 @@ enum i40e_status_code i40e_aq_debug_dump(struct i40e_hw *hw, u8 cluster_id,
|
||||
struct i40e_asq_cmd_details *cmd_details);
|
||||
void i40e_add_filter_to_drop_tx_flow_control_frames(struct i40e_hw *hw,
|
||||
u16 vsi_seid);
|
||||
#ifdef X722_SUPPORT
|
||||
enum i40e_status_code i40e_aq_set_arp_proxy_config(struct i40e_hw *hw,
|
||||
struct i40e_aqc_arp_proxy_data *proxy_config,
|
||||
struct i40e_asq_cmd_details *cmd_details);
|
||||
enum i40e_status_code i40e_aq_set_ns_proxy_table_entry(struct i40e_hw *hw,
|
||||
struct i40e_aqc_ns_proxy_data *ns_proxy_table_entry,
|
||||
struct i40e_asq_cmd_details *cmd_details);
|
||||
#endif
|
||||
#endif /* _I40E_PROTOTYPE_H_ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user