mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-02 13:23:35 -04:00
Merge branch 'i40e-deadcoding'
Dr. David Alan Gilbert says: ==================== i40e deadcoding This is a bunch of deadcoding of functions that are entirely uncalled in the i40e driver. Build tested only. ==================== Link: https://patch.msgid.link/20250102173717.200359-1-linux@treblig.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -1189,7 +1189,6 @@ int i40e_add_del_fdir(struct i40e_vsi *vsi,
|
||||
struct i40e_fdir_filter *input, bool add);
|
||||
void i40e_fdir_check_and_reenable(struct i40e_pf *pf);
|
||||
u32 i40e_get_current_fd_count(struct i40e_pf *pf);
|
||||
u32 i40e_get_cur_guaranteed_fd_count(struct i40e_pf *pf);
|
||||
u32 i40e_get_current_atr_cnt(struct i40e_pf *pf);
|
||||
u32 i40e_get_global_fd_count(struct i40e_pf *pf);
|
||||
bool i40e_set_ntuple(struct i40e_pf *pf, netdev_features_t features);
|
||||
@@ -1197,7 +1196,6 @@ void i40e_set_ethtool_ops(struct net_device *netdev);
|
||||
struct i40e_mac_filter *i40e_add_filter(struct i40e_vsi *vsi,
|
||||
const u8 *macaddr, s16 vlan);
|
||||
void __i40e_del_filter(struct i40e_vsi *vsi, struct i40e_mac_filter *f);
|
||||
void i40e_del_filter(struct i40e_vsi *vsi, const u8 *macaddr, s16 vlan);
|
||||
int i40e_sync_vsi_filters(struct i40e_vsi *vsi);
|
||||
struct i40e_vsi *i40e_vsi_setup(struct i40e_pf *pf, u8 type,
|
||||
u16 uplink, u32 param1);
|
||||
@@ -1313,7 +1311,6 @@ int i40e_update_adq_vsi_queues(struct i40e_vsi *vsi, int vsi_offset);
|
||||
int i40e_is_vsi_uplink_mode_veb(struct i40e_vsi *vsi);
|
||||
int i40e_get_partition_bw_setting(struct i40e_pf *pf);
|
||||
int i40e_set_partition_bw_setting(struct i40e_pf *pf);
|
||||
int i40e_commit_partition_bw_setting(struct i40e_pf *pf);
|
||||
void i40e_print_link_message(struct i40e_vsi *vsi, bool isup);
|
||||
|
||||
void i40e_set_fec_in_flags(u8 fec_cfg, unsigned long *flags);
|
||||
|
||||
@@ -1016,16 +1016,6 @@ i40e_asq_send_command_atomic_v2(struct i40e_hw *hw,
|
||||
return status;
|
||||
}
|
||||
|
||||
int
|
||||
i40e_asq_send_command_v2(struct i40e_hw *hw, struct i40e_aq_desc *desc,
|
||||
void *buff, /* can be NULL */ u16 buff_size,
|
||||
struct i40e_asq_cmd_details *cmd_details,
|
||||
enum i40e_admin_queue_err *aq_status)
|
||||
{
|
||||
return i40e_asq_send_command_atomic_v2(hw, desc, buff, buff_size,
|
||||
cmd_details, true, aq_status);
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_fill_default_direct_cmd_desc - AQ descriptor helper function
|
||||
* @desc: pointer to the temp descriptor (non DMA mem)
|
||||
|
||||
@@ -1804,37 +1804,6 @@ int i40e_aq_set_vsi_broadcast(struct i40e_hw *hw,
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_aq_set_vsi_vlan_promisc - control the VLAN promiscuous setting
|
||||
* @hw: pointer to the hw struct
|
||||
* @seid: vsi number
|
||||
* @enable: set MAC L2 layer unicast promiscuous enable/disable for a given VLAN
|
||||
* @cmd_details: pointer to command details structure or NULL
|
||||
**/
|
||||
int i40e_aq_set_vsi_vlan_promisc(struct i40e_hw *hw,
|
||||
u16 seid, bool enable,
|
||||
struct i40e_asq_cmd_details *cmd_details)
|
||||
{
|
||||
struct i40e_aq_desc desc;
|
||||
struct i40e_aqc_set_vsi_promiscuous_modes *cmd =
|
||||
(struct i40e_aqc_set_vsi_promiscuous_modes *)&desc.params.raw;
|
||||
u16 flags = 0;
|
||||
int status;
|
||||
|
||||
i40e_fill_default_direct_cmd_desc(&desc,
|
||||
i40e_aqc_opc_set_vsi_promiscuous_modes);
|
||||
if (enable)
|
||||
flags |= I40E_AQC_SET_VSI_PROMISC_VLAN;
|
||||
|
||||
cmd->promiscuous_flags = cpu_to_le16(flags);
|
||||
cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_VLAN);
|
||||
cmd->seid = cpu_to_le16(seid);
|
||||
|
||||
status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_aq_get_vsi_params - get VSI configuration info
|
||||
* @hw: pointer to the hw struct
|
||||
@@ -2435,136 +2404,6 @@ i40e_aq_remove_macvlan_v2(struct i40e_hw *hw, u16 seid,
|
||||
cmd_details, true, aq_status);
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_mirrorrule_op - Internal helper function to add/delete mirror rule
|
||||
* @hw: pointer to the hw struct
|
||||
* @opcode: AQ opcode for add or delete mirror rule
|
||||
* @sw_seid: Switch SEID (to which rule refers)
|
||||
* @rule_type: Rule Type (ingress/egress/VLAN)
|
||||
* @id: Destination VSI SEID or Rule ID
|
||||
* @count: length of the list
|
||||
* @mr_list: list of mirrored VSI SEIDs or VLAN IDs
|
||||
* @cmd_details: pointer to command details structure or NULL
|
||||
* @rule_id: Rule ID returned from FW
|
||||
* @rules_used: Number of rules used in internal switch
|
||||
* @rules_free: Number of rules free in internal switch
|
||||
*
|
||||
* Add/Delete a mirror rule to a specific switch. Mirror rules are supported for
|
||||
* VEBs/VEPA elements only
|
||||
**/
|
||||
static int i40e_mirrorrule_op(struct i40e_hw *hw,
|
||||
u16 opcode, u16 sw_seid, u16 rule_type, u16 id,
|
||||
u16 count, __le16 *mr_list,
|
||||
struct i40e_asq_cmd_details *cmd_details,
|
||||
u16 *rule_id, u16 *rules_used, u16 *rules_free)
|
||||
{
|
||||
struct i40e_aq_desc desc;
|
||||
struct i40e_aqc_add_delete_mirror_rule *cmd =
|
||||
(struct i40e_aqc_add_delete_mirror_rule *)&desc.params.raw;
|
||||
struct i40e_aqc_add_delete_mirror_rule_completion *resp =
|
||||
(struct i40e_aqc_add_delete_mirror_rule_completion *)&desc.params.raw;
|
||||
u16 buf_size;
|
||||
int status;
|
||||
|
||||
buf_size = count * sizeof(*mr_list);
|
||||
|
||||
/* prep the rest of the request */
|
||||
i40e_fill_default_direct_cmd_desc(&desc, opcode);
|
||||
cmd->seid = cpu_to_le16(sw_seid);
|
||||
cmd->rule_type = cpu_to_le16(rule_type &
|
||||
I40E_AQC_MIRROR_RULE_TYPE_MASK);
|
||||
cmd->num_entries = cpu_to_le16(count);
|
||||
/* Dest VSI for add, rule_id for delete */
|
||||
cmd->destination = cpu_to_le16(id);
|
||||
if (mr_list) {
|
||||
desc.flags |= cpu_to_le16((u16)(I40E_AQ_FLAG_BUF |
|
||||
I40E_AQ_FLAG_RD));
|
||||
if (buf_size > I40E_AQ_LARGE_BUF)
|
||||
desc.flags |= cpu_to_le16((u16)I40E_AQ_FLAG_LB);
|
||||
}
|
||||
|
||||
status = i40e_asq_send_command(hw, &desc, mr_list, buf_size,
|
||||
cmd_details);
|
||||
if (!status ||
|
||||
hw->aq.asq_last_status == I40E_AQ_RC_ENOSPC) {
|
||||
if (rule_id)
|
||||
*rule_id = le16_to_cpu(resp->rule_id);
|
||||
if (rules_used)
|
||||
*rules_used = le16_to_cpu(resp->mirror_rules_used);
|
||||
if (rules_free)
|
||||
*rules_free = le16_to_cpu(resp->mirror_rules_free);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_aq_add_mirrorrule - add a mirror rule
|
||||
* @hw: pointer to the hw struct
|
||||
* @sw_seid: Switch SEID (to which rule refers)
|
||||
* @rule_type: Rule Type (ingress/egress/VLAN)
|
||||
* @dest_vsi: SEID of VSI to which packets will be mirrored
|
||||
* @count: length of the list
|
||||
* @mr_list: list of mirrored VSI SEIDs or VLAN IDs
|
||||
* @cmd_details: pointer to command details structure or NULL
|
||||
* @rule_id: Rule ID returned from FW
|
||||
* @rules_used: Number of rules used in internal switch
|
||||
* @rules_free: Number of rules free in internal switch
|
||||
*
|
||||
* Add mirror rule. Mirror rules are supported for VEBs or VEPA elements only
|
||||
**/
|
||||
int i40e_aq_add_mirrorrule(struct i40e_hw *hw, u16 sw_seid,
|
||||
u16 rule_type, u16 dest_vsi, u16 count,
|
||||
__le16 *mr_list,
|
||||
struct i40e_asq_cmd_details *cmd_details,
|
||||
u16 *rule_id, u16 *rules_used, u16 *rules_free)
|
||||
{
|
||||
if (!(rule_type == I40E_AQC_MIRROR_RULE_TYPE_ALL_INGRESS ||
|
||||
rule_type == I40E_AQC_MIRROR_RULE_TYPE_ALL_EGRESS)) {
|
||||
if (count == 0 || !mr_list)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return i40e_mirrorrule_op(hw, i40e_aqc_opc_add_mirror_rule, sw_seid,
|
||||
rule_type, dest_vsi, count, mr_list,
|
||||
cmd_details, rule_id, rules_used, rules_free);
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_aq_delete_mirrorrule - delete a mirror rule
|
||||
* @hw: pointer to the hw struct
|
||||
* @sw_seid: Switch SEID (to which rule refers)
|
||||
* @rule_type: Rule Type (ingress/egress/VLAN)
|
||||
* @count: length of the list
|
||||
* @rule_id: Rule ID that is returned in the receive desc as part of
|
||||
* add_mirrorrule.
|
||||
* @mr_list: list of mirrored VLAN IDs to be removed
|
||||
* @cmd_details: pointer to command details structure or NULL
|
||||
* @rules_used: Number of rules used in internal switch
|
||||
* @rules_free: Number of rules free in internal switch
|
||||
*
|
||||
* Delete a mirror rule. Mirror rules are supported for VEBs/VEPA elements only
|
||||
**/
|
||||
int i40e_aq_delete_mirrorrule(struct i40e_hw *hw, u16 sw_seid,
|
||||
u16 rule_type, u16 rule_id, u16 count,
|
||||
__le16 *mr_list,
|
||||
struct i40e_asq_cmd_details *cmd_details,
|
||||
u16 *rules_used, u16 *rules_free)
|
||||
{
|
||||
/* Rule ID has to be valid except rule_type: INGRESS VLAN mirroring */
|
||||
if (rule_type == I40E_AQC_MIRROR_RULE_TYPE_VLAN) {
|
||||
/* count and mr_list shall be valid for rule_type INGRESS VLAN
|
||||
* mirroring. For other rule_type, count and rule_type should
|
||||
* not matter.
|
||||
*/
|
||||
if (count == 0 || !mr_list)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return i40e_mirrorrule_op(hw, i40e_aqc_opc_delete_mirror_rule, sw_seid,
|
||||
rule_type, rule_id, count, mr_list,
|
||||
cmd_details, NULL, rules_used, rules_free);
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_aq_send_msg_to_vf
|
||||
* @hw: pointer to the hardware structure
|
||||
@@ -3179,41 +3018,6 @@ int i40e_aq_update_nvm(struct i40e_hw *hw, u8 module_pointer,
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_aq_rearrange_nvm
|
||||
* @hw: pointer to the hw struct
|
||||
* @rearrange_nvm: defines direction of rearrangement
|
||||
* @cmd_details: pointer to command details structure or NULL
|
||||
*
|
||||
* Rearrange NVM structure, available only for transition FW
|
||||
**/
|
||||
int i40e_aq_rearrange_nvm(struct i40e_hw *hw,
|
||||
u8 rearrange_nvm,
|
||||
struct i40e_asq_cmd_details *cmd_details)
|
||||
{
|
||||
struct i40e_aqc_nvm_update *cmd;
|
||||
struct i40e_aq_desc desc;
|
||||
int status;
|
||||
|
||||
cmd = (struct i40e_aqc_nvm_update *)&desc.params.raw;
|
||||
|
||||
i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_nvm_update);
|
||||
|
||||
rearrange_nvm &= (I40E_AQ_NVM_REARRANGE_TO_FLAT |
|
||||
I40E_AQ_NVM_REARRANGE_TO_STRUCT);
|
||||
|
||||
if (!rearrange_nvm) {
|
||||
status = -EINVAL;
|
||||
goto i40e_aq_rearrange_nvm_exit;
|
||||
}
|
||||
|
||||
cmd->command_flags |= rearrange_nvm;
|
||||
status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details);
|
||||
|
||||
i40e_aq_rearrange_nvm_exit:
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_aq_get_lldp_mib
|
||||
* @hw: pointer to the hw struct
|
||||
@@ -3334,44 +3138,6 @@ int i40e_aq_cfg_lldp_mib_change_event(struct i40e_hw *hw,
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_aq_restore_lldp
|
||||
* @hw: pointer to the hw struct
|
||||
* @setting: pointer to factory setting variable or NULL
|
||||
* @restore: True if factory settings should be restored
|
||||
* @cmd_details: pointer to command details structure or NULL
|
||||
*
|
||||
* Restore LLDP Agent factory settings if @restore set to True. In other case
|
||||
* only returns factory setting in AQ response.
|
||||
**/
|
||||
int
|
||||
i40e_aq_restore_lldp(struct i40e_hw *hw, u8 *setting, bool restore,
|
||||
struct i40e_asq_cmd_details *cmd_details)
|
||||
{
|
||||
struct i40e_aq_desc desc;
|
||||
struct i40e_aqc_lldp_restore *cmd =
|
||||
(struct i40e_aqc_lldp_restore *)&desc.params.raw;
|
||||
int status;
|
||||
|
||||
if (!test_bit(I40E_HW_CAP_FW_LLDP_PERSISTENT, hw->caps)) {
|
||||
i40e_debug(hw, I40E_DEBUG_ALL,
|
||||
"Restore LLDP not supported by current FW version.\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_lldp_restore);
|
||||
|
||||
if (restore)
|
||||
cmd->command |= I40E_AQ_LLDP_AGENT_RESTORE;
|
||||
|
||||
status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details);
|
||||
|
||||
if (setting)
|
||||
*setting = cmd->command & 1;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_aq_stop_lldp
|
||||
* @hw: pointer to the hw struct
|
||||
@@ -4569,84 +4335,6 @@ int i40e_write_phy_register_clause45(struct i40e_hw *hw,
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_write_phy_register
|
||||
* @hw: pointer to the HW structure
|
||||
* @page: registers page number
|
||||
* @reg: register address in the page
|
||||
* @phy_addr: PHY address on MDIO interface
|
||||
* @value: PHY register value
|
||||
*
|
||||
* Writes value to specified PHY register
|
||||
**/
|
||||
int i40e_write_phy_register(struct i40e_hw *hw,
|
||||
u8 page, u16 reg, u8 phy_addr, u16 value)
|
||||
{
|
||||
int status;
|
||||
|
||||
switch (hw->device_id) {
|
||||
case I40E_DEV_ID_1G_BASE_T_X722:
|
||||
status = i40e_write_phy_register_clause22(hw, reg, phy_addr,
|
||||
value);
|
||||
break;
|
||||
case I40E_DEV_ID_1G_BASE_T_BC:
|
||||
case I40E_DEV_ID_5G_BASE_T_BC:
|
||||
case I40E_DEV_ID_10G_BASE_T:
|
||||
case I40E_DEV_ID_10G_BASE_T4:
|
||||
case I40E_DEV_ID_10G_BASE_T_BC:
|
||||
case I40E_DEV_ID_10G_BASE_T_X722:
|
||||
case I40E_DEV_ID_25G_B:
|
||||
case I40E_DEV_ID_25G_SFP28:
|
||||
status = i40e_write_phy_register_clause45(hw, page, reg,
|
||||
phy_addr, value);
|
||||
break;
|
||||
default:
|
||||
status = -EIO;
|
||||
break;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_read_phy_register
|
||||
* @hw: pointer to the HW structure
|
||||
* @page: registers page number
|
||||
* @reg: register address in the page
|
||||
* @phy_addr: PHY address on MDIO interface
|
||||
* @value: PHY register value
|
||||
*
|
||||
* Reads specified PHY register value
|
||||
**/
|
||||
int i40e_read_phy_register(struct i40e_hw *hw,
|
||||
u8 page, u16 reg, u8 phy_addr, u16 *value)
|
||||
{
|
||||
int status;
|
||||
|
||||
switch (hw->device_id) {
|
||||
case I40E_DEV_ID_1G_BASE_T_X722:
|
||||
status = i40e_read_phy_register_clause22(hw, reg, phy_addr,
|
||||
value);
|
||||
break;
|
||||
case I40E_DEV_ID_1G_BASE_T_BC:
|
||||
case I40E_DEV_ID_5G_BASE_T_BC:
|
||||
case I40E_DEV_ID_10G_BASE_T:
|
||||
case I40E_DEV_ID_10G_BASE_T4:
|
||||
case I40E_DEV_ID_10G_BASE_T_BC:
|
||||
case I40E_DEV_ID_10G_BASE_T_X722:
|
||||
case I40E_DEV_ID_25G_B:
|
||||
case I40E_DEV_ID_25G_SFP28:
|
||||
status = i40e_read_phy_register_clause45(hw, page, reg,
|
||||
phy_addr, value);
|
||||
break;
|
||||
default:
|
||||
status = -EIO;
|
||||
break;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_get_phy_address
|
||||
* @hw: pointer to the HW structure
|
||||
@@ -4662,80 +4350,6 @@ u8 i40e_get_phy_address(struct i40e_hw *hw, u8 dev_num)
|
||||
return (u8)(reg_val >> ((dev_num + 1) * 5)) & 0x1f;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_blink_phy_link_led
|
||||
* @hw: pointer to the HW structure
|
||||
* @time: time how long led will blinks in secs
|
||||
* @interval: gap between LED on and off in msecs
|
||||
*
|
||||
* Blinks PHY link LED
|
||||
**/
|
||||
int i40e_blink_phy_link_led(struct i40e_hw *hw,
|
||||
u32 time, u32 interval)
|
||||
{
|
||||
u16 led_addr = I40E_PHY_LED_PROV_REG_1;
|
||||
u16 gpio_led_port;
|
||||
u8 phy_addr = 0;
|
||||
int status = 0;
|
||||
u16 led_ctl;
|
||||
u8 port_num;
|
||||
u16 led_reg;
|
||||
u32 i;
|
||||
|
||||
i = rd32(hw, I40E_PFGEN_PORTNUM);
|
||||
port_num = (u8)(i & I40E_PFGEN_PORTNUM_PORT_NUM_MASK);
|
||||
phy_addr = i40e_get_phy_address(hw, port_num);
|
||||
|
||||
for (gpio_led_port = 0; gpio_led_port < 3; gpio_led_port++,
|
||||
led_addr++) {
|
||||
status = i40e_read_phy_register_clause45(hw,
|
||||
I40E_PHY_COM_REG_PAGE,
|
||||
led_addr, phy_addr,
|
||||
&led_reg);
|
||||
if (status)
|
||||
goto phy_blinking_end;
|
||||
led_ctl = led_reg;
|
||||
if (led_reg & I40E_PHY_LED_LINK_MODE_MASK) {
|
||||
led_reg = 0;
|
||||
status = i40e_write_phy_register_clause45(hw,
|
||||
I40E_PHY_COM_REG_PAGE,
|
||||
led_addr, phy_addr,
|
||||
led_reg);
|
||||
if (status)
|
||||
goto phy_blinking_end;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (time > 0 && interval > 0) {
|
||||
for (i = 0; i < time * 1000; i += interval) {
|
||||
status = i40e_read_phy_register_clause45(hw,
|
||||
I40E_PHY_COM_REG_PAGE,
|
||||
led_addr, phy_addr, &led_reg);
|
||||
if (status)
|
||||
goto restore_config;
|
||||
if (led_reg & I40E_PHY_LED_MANUAL_ON)
|
||||
led_reg = 0;
|
||||
else
|
||||
led_reg = I40E_PHY_LED_MANUAL_ON;
|
||||
status = i40e_write_phy_register_clause45(hw,
|
||||
I40E_PHY_COM_REG_PAGE,
|
||||
led_addr, phy_addr, led_reg);
|
||||
if (status)
|
||||
goto restore_config;
|
||||
msleep(interval);
|
||||
}
|
||||
}
|
||||
|
||||
restore_config:
|
||||
status = i40e_write_phy_register_clause45(hw,
|
||||
I40E_PHY_COM_REG_PAGE,
|
||||
led_addr, phy_addr, led_ctl);
|
||||
|
||||
phy_blinking_end:
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_led_get_reg - read LED register
|
||||
* @hw: pointer to the HW structure
|
||||
@@ -5268,39 +4882,6 @@ i40e_find_segment_in_package(u32 segment_type,
|
||||
#define I40E_SECTION_HEADER(profile, offset) \
|
||||
(struct i40e_profile_section_header *)((u8 *)(profile) + (offset))
|
||||
|
||||
/**
|
||||
* i40e_find_section_in_profile
|
||||
* @section_type: the section type to search for (i.e., SECTION_TYPE_NOTE)
|
||||
* @profile: pointer to the i40e segment header to be searched
|
||||
*
|
||||
* This function searches i40e segment for a particular section type. On
|
||||
* success it returns a pointer to the section header, otherwise it will
|
||||
* return NULL.
|
||||
**/
|
||||
struct i40e_profile_section_header *
|
||||
i40e_find_section_in_profile(u32 section_type,
|
||||
struct i40e_profile_segment *profile)
|
||||
{
|
||||
struct i40e_profile_section_header *sec;
|
||||
struct i40e_section_table *sec_tbl;
|
||||
u32 sec_off;
|
||||
u32 i;
|
||||
|
||||
if (profile->header.type != SEGMENT_TYPE_I40E)
|
||||
return NULL;
|
||||
|
||||
I40E_SECTION_TABLE(profile, sec_tbl);
|
||||
|
||||
for (i = 0; i < sec_tbl->section_count; i++) {
|
||||
sec_off = sec_tbl->section_offset[i];
|
||||
sec = I40E_SECTION_HEADER(profile, sec_off);
|
||||
if (sec->section.type == section_type)
|
||||
return sec;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_ddp_exec_aq_section - Execute generic AQ for DDP
|
||||
* @hw: pointer to the hw struct
|
||||
@@ -5523,45 +5104,6 @@ i40e_rollback_profile(struct i40e_hw *hw, struct i40e_profile_segment *profile,
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_add_pinfo_to_list
|
||||
* @hw: pointer to the hardware structure
|
||||
* @profile: pointer to the profile segment of the package
|
||||
* @profile_info_sec: buffer for information section
|
||||
* @track_id: package tracking id
|
||||
*
|
||||
* Register a profile to the list of loaded profiles.
|
||||
*/
|
||||
int
|
||||
i40e_add_pinfo_to_list(struct i40e_hw *hw,
|
||||
struct i40e_profile_segment *profile,
|
||||
u8 *profile_info_sec, u32 track_id)
|
||||
{
|
||||
struct i40e_profile_section_header *sec = NULL;
|
||||
struct i40e_profile_info *pinfo;
|
||||
u32 offset = 0, info = 0;
|
||||
int status = 0;
|
||||
|
||||
sec = (struct i40e_profile_section_header *)profile_info_sec;
|
||||
sec->tbl_size = 1;
|
||||
sec->data_end = sizeof(struct i40e_profile_section_header) +
|
||||
sizeof(struct i40e_profile_info);
|
||||
sec->section.type = SECTION_TYPE_INFO;
|
||||
sec->section.offset = sizeof(struct i40e_profile_section_header);
|
||||
sec->section.size = sizeof(struct i40e_profile_info);
|
||||
pinfo = (struct i40e_profile_info *)(profile_info_sec +
|
||||
sec->section.offset);
|
||||
pinfo->track_id = track_id;
|
||||
pinfo->version = profile->version;
|
||||
pinfo->op = I40E_DDP_ADD_TRACKID;
|
||||
memcpy(pinfo->name, profile->name, I40E_DDP_NAME_SIZE);
|
||||
|
||||
status = i40e_aq_write_ddp(hw, (void *)sec, sec->data_end,
|
||||
track_id, &offset, &info, NULL);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_aq_add_cloud_filters
|
||||
* @hw: pointer to the hardware structure
|
||||
|
||||
@@ -1490,19 +1490,6 @@ void i40e_dcb_hw_set_num_tc(struct i40e_hw *hw, u8 num_tc)
|
||||
wr32(hw, I40E_PRTDCB_GENC, reg);
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_dcb_hw_get_num_tc
|
||||
* @hw: pointer to the hw struct
|
||||
*
|
||||
* Returns number of traffic classes configured in HW
|
||||
**/
|
||||
u8 i40e_dcb_hw_get_num_tc(struct i40e_hw *hw)
|
||||
{
|
||||
u32 reg = rd32(hw, I40E_PRTDCB_GENC);
|
||||
|
||||
return FIELD_GET(I40E_PRTDCB_GENC_NUMTC_MASK, reg);
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_dcb_hw_rx_ets_bw_config
|
||||
* @hw: pointer to the hw struct
|
||||
|
||||
@@ -253,7 +253,6 @@ void i40e_dcb_hw_rx_cmd_monitor_config(struct i40e_hw *hw,
|
||||
void i40e_dcb_hw_pfc_config(struct i40e_hw *hw,
|
||||
u8 pfc_en, u8 *prio_tc);
|
||||
void i40e_dcb_hw_set_num_tc(struct i40e_hw *hw, u8 num_tc);
|
||||
u8 i40e_dcb_hw_get_num_tc(struct i40e_hw *hw);
|
||||
void i40e_dcb_hw_rx_ets_bw_config(struct i40e_hw *hw, u8 *bw_share,
|
||||
u8 *mode, u8 *prio_type);
|
||||
void i40e_dcb_hw_rx_up2tc_config(struct i40e_hw *hw, u8 *prio_tc);
|
||||
|
||||
@@ -1666,9 +1666,8 @@ struct i40e_mac_filter *i40e_add_filter(struct i40e_vsi *vsi,
|
||||
* @vsi: VSI to remove from
|
||||
* @f: the filter to remove from the list
|
||||
*
|
||||
* This function should be called instead of i40e_del_filter only if you know
|
||||
* the exact filter you will remove already, such as via i40e_find_filter or
|
||||
* i40e_find_mac.
|
||||
* This function requires you've found * the exact filter you will remove
|
||||
* already, such as via i40e_find_filter or i40e_find_mac.
|
||||
*
|
||||
* NOTE: This function is expected to be called with mac_filter_hash_lock
|
||||
* being held.
|
||||
@@ -1697,29 +1696,6 @@ void __i40e_del_filter(struct i40e_vsi *vsi, struct i40e_mac_filter *f)
|
||||
set_bit(__I40E_MACVLAN_SYNC_PENDING, vsi->back->state);
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_del_filter - Remove a MAC/VLAN filter from the VSI
|
||||
* @vsi: the VSI to be searched
|
||||
* @macaddr: the MAC address
|
||||
* @vlan: the VLAN
|
||||
*
|
||||
* NOTE: This function is expected to be called with mac_filter_hash_lock
|
||||
* being held.
|
||||
* ANOTHER NOTE: This function MUST be called from within the context of
|
||||
* the "safe" variants of any list iterators, e.g. list_for_each_entry_safe()
|
||||
* instead of list_for_each_entry().
|
||||
**/
|
||||
void i40e_del_filter(struct i40e_vsi *vsi, const u8 *macaddr, s16 vlan)
|
||||
{
|
||||
struct i40e_mac_filter *f;
|
||||
|
||||
if (!vsi || !macaddr)
|
||||
return;
|
||||
|
||||
f = i40e_find_filter(vsi, macaddr, vlan);
|
||||
__i40e_del_filter(vsi, f);
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_add_mac_filter - Add a MAC filter for all active VLANs
|
||||
* @vsi: the VSI to be searched
|
||||
@@ -9628,19 +9604,6 @@ static void i40e_handle_lan_overflow_event(struct i40e_pf *pf,
|
||||
i40e_reset_vf(vf, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_get_cur_guaranteed_fd_count - Get the consumed guaranteed FD filters
|
||||
* @pf: board private structure
|
||||
**/
|
||||
u32 i40e_get_cur_guaranteed_fd_count(struct i40e_pf *pf)
|
||||
{
|
||||
u32 val, fcnt_prog;
|
||||
|
||||
val = rd32(&pf->hw, I40E_PFQF_FDSTAT);
|
||||
fcnt_prog = (val & I40E_PFQF_FDSTAT_GUARANT_CNT_MASK);
|
||||
return fcnt_prog;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_get_current_fd_count - Get total FD filters programmed for this PF
|
||||
* @pf: board private structure
|
||||
@@ -12613,89 +12576,6 @@ int i40e_set_partition_bw_setting(struct i40e_pf *pf)
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_commit_partition_bw_setting - Commit BW settings for this PF partition
|
||||
* @pf: board private structure
|
||||
**/
|
||||
int i40e_commit_partition_bw_setting(struct i40e_pf *pf)
|
||||
{
|
||||
/* Commit temporary BW setting to permanent NVM image */
|
||||
enum i40e_admin_queue_err last_aq_status;
|
||||
u16 nvm_word;
|
||||
int ret;
|
||||
|
||||
if (pf->hw.partition_id != 1) {
|
||||
dev_info(&pf->pdev->dev,
|
||||
"Commit BW only works on partition 1! This is partition %d",
|
||||
pf->hw.partition_id);
|
||||
ret = -EOPNOTSUPP;
|
||||
goto bw_commit_out;
|
||||
}
|
||||
|
||||
/* Acquire NVM for read access */
|
||||
ret = i40e_acquire_nvm(&pf->hw, I40E_RESOURCE_READ);
|
||||
last_aq_status = pf->hw.aq.asq_last_status;
|
||||
if (ret) {
|
||||
dev_info(&pf->pdev->dev,
|
||||
"Cannot acquire NVM for read access, err %pe aq_err %s\n",
|
||||
ERR_PTR(ret),
|
||||
i40e_aq_str(&pf->hw, last_aq_status));
|
||||
goto bw_commit_out;
|
||||
}
|
||||
|
||||
/* Read word 0x10 of NVM - SW compatibility word 1 */
|
||||
ret = i40e_aq_read_nvm(&pf->hw,
|
||||
I40E_SR_NVM_CONTROL_WORD,
|
||||
0x10, sizeof(nvm_word), &nvm_word,
|
||||
false, NULL);
|
||||
/* Save off last admin queue command status before releasing
|
||||
* the NVM
|
||||
*/
|
||||
last_aq_status = pf->hw.aq.asq_last_status;
|
||||
i40e_release_nvm(&pf->hw);
|
||||
if (ret) {
|
||||
dev_info(&pf->pdev->dev, "NVM read error, err %pe aq_err %s\n",
|
||||
ERR_PTR(ret),
|
||||
i40e_aq_str(&pf->hw, last_aq_status));
|
||||
goto bw_commit_out;
|
||||
}
|
||||
|
||||
/* Wait a bit for NVM release to complete */
|
||||
msleep(50);
|
||||
|
||||
/* Acquire NVM for write access */
|
||||
ret = i40e_acquire_nvm(&pf->hw, I40E_RESOURCE_WRITE);
|
||||
last_aq_status = pf->hw.aq.asq_last_status;
|
||||
if (ret) {
|
||||
dev_info(&pf->pdev->dev,
|
||||
"Cannot acquire NVM for write access, err %pe aq_err %s\n",
|
||||
ERR_PTR(ret),
|
||||
i40e_aq_str(&pf->hw, last_aq_status));
|
||||
goto bw_commit_out;
|
||||
}
|
||||
/* Write it back out unchanged to initiate update NVM,
|
||||
* which will force a write of the shadow (alt) RAM to
|
||||
* the NVM - thus storing the bandwidth values permanently.
|
||||
*/
|
||||
ret = i40e_aq_update_nvm(&pf->hw,
|
||||
I40E_SR_NVM_CONTROL_WORD,
|
||||
0x10, sizeof(nvm_word),
|
||||
&nvm_word, true, 0, NULL);
|
||||
/* Save off last admin queue command status before releasing
|
||||
* the NVM
|
||||
*/
|
||||
last_aq_status = pf->hw.aq.asq_last_status;
|
||||
i40e_release_nvm(&pf->hw);
|
||||
if (ret)
|
||||
dev_info(&pf->pdev->dev,
|
||||
"BW settings NOT SAVED, err %pe aq_err %s\n",
|
||||
ERR_PTR(ret),
|
||||
i40e_aq_str(&pf->hw, last_aq_status));
|
||||
bw_commit_out:
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_is_total_port_shutdown_enabled - read NVM and return value
|
||||
* if total port shutdown feature is enabled for this PF
|
||||
|
||||
@@ -27,13 +27,6 @@ i40e_asq_send_command(struct i40e_hw *hw, struct i40e_aq_desc *desc,
|
||||
void *buff, /* can be NULL */ u16 buff_size,
|
||||
struct i40e_asq_cmd_details *cmd_details);
|
||||
int
|
||||
i40e_asq_send_command_v2(struct i40e_hw *hw,
|
||||
struct i40e_aq_desc *desc,
|
||||
void *buff, /* can be NULL */
|
||||
u16 buff_size,
|
||||
struct i40e_asq_cmd_details *cmd_details,
|
||||
enum i40e_admin_queue_err *aq_status);
|
||||
int
|
||||
i40e_asq_send_command_atomic(struct i40e_hw *hw, struct i40e_aq_desc *desc,
|
||||
void *buff, /* can be NULL */ u16 buff_size,
|
||||
struct i40e_asq_cmd_details *cmd_details,
|
||||
@@ -72,8 +65,6 @@ int i40e_led_set_phy(struct i40e_hw *hw, bool on,
|
||||
u16 led_addr, u32 mode);
|
||||
int i40e_led_get_phy(struct i40e_hw *hw, u16 *led_addr,
|
||||
u16 *val);
|
||||
int i40e_blink_phy_link_led(struct i40e_hw *hw,
|
||||
u32 time, u32 interval);
|
||||
|
||||
/* admin send queue commands */
|
||||
|
||||
@@ -141,9 +132,6 @@ int i40e_aq_set_vsi_uc_promisc_on_vlan(struct i40e_hw *hw,
|
||||
int i40e_aq_set_vsi_bc_promisc_on_vlan(struct i40e_hw *hw,
|
||||
u16 seid, bool enable, u16 vid,
|
||||
struct i40e_asq_cmd_details *cmd_details);
|
||||
int i40e_aq_set_vsi_vlan_promisc(struct i40e_hw *hw,
|
||||
u16 seid, bool enable,
|
||||
struct i40e_asq_cmd_details *cmd_details);
|
||||
int i40e_aq_get_vsi_params(struct i40e_hw *hw,
|
||||
struct i40e_vsi_context *vsi_ctx,
|
||||
struct i40e_asq_cmd_details *cmd_details);
|
||||
@@ -176,14 +164,6 @@ i40e_aq_remove_macvlan_v2(struct i40e_hw *hw, u16 seid,
|
||||
struct i40e_aqc_remove_macvlan_element_data *mv_list,
|
||||
u16 count, struct i40e_asq_cmd_details *cmd_details,
|
||||
enum i40e_admin_queue_err *aq_status);
|
||||
int i40e_aq_add_mirrorrule(struct i40e_hw *hw, u16 sw_seid,
|
||||
u16 rule_type, u16 dest_vsi, u16 count, __le16 *mr_list,
|
||||
struct i40e_asq_cmd_details *cmd_details,
|
||||
u16 *rule_id, u16 *rules_used, u16 *rules_free);
|
||||
int i40e_aq_delete_mirrorrule(struct i40e_hw *hw, u16 sw_seid,
|
||||
u16 rule_type, u16 rule_id, u16 count, __le16 *mr_list,
|
||||
struct i40e_asq_cmd_details *cmd_details,
|
||||
u16 *rules_used, u16 *rules_free);
|
||||
|
||||
int i40e_aq_send_msg_to_vf(struct i40e_hw *hw, u16 vfid,
|
||||
u32 v_opcode, u32 v_retval, u8 *msg, u16 msglen,
|
||||
@@ -220,9 +200,6 @@ int i40e_aq_update_nvm(struct i40e_hw *hw, u8 module_pointer,
|
||||
u32 offset, u16 length, void *data,
|
||||
bool last_command, u8 preservation_flags,
|
||||
struct i40e_asq_cmd_details *cmd_details);
|
||||
int i40e_aq_rearrange_nvm(struct i40e_hw *hw,
|
||||
u8 rearrange_nvm,
|
||||
struct i40e_asq_cmd_details *cmd_details);
|
||||
int i40e_aq_get_lldp_mib(struct i40e_hw *hw, u8 bridge_type,
|
||||
u8 mib_type, void *buff, u16 buff_size,
|
||||
u16 *local_len, u16 *remote_len,
|
||||
@@ -234,9 +211,6 @@ i40e_aq_set_lldp_mib(struct i40e_hw *hw,
|
||||
int i40e_aq_cfg_lldp_mib_change_event(struct i40e_hw *hw,
|
||||
bool enable_update,
|
||||
struct i40e_asq_cmd_details *cmd_details);
|
||||
int
|
||||
i40e_aq_restore_lldp(struct i40e_hw *hw, u8 *setting, bool restore,
|
||||
struct i40e_asq_cmd_details *cmd_details);
|
||||
int i40e_aq_stop_lldp(struct i40e_hw *hw, bool shutdown_agent,
|
||||
bool persist,
|
||||
struct i40e_asq_cmd_details *cmd_details);
|
||||
@@ -458,13 +432,7 @@ int i40e_read_phy_register_clause45(struct i40e_hw *hw,
|
||||
u8 page, u16 reg, u8 phy_addr, u16 *value);
|
||||
int i40e_write_phy_register_clause45(struct i40e_hw *hw,
|
||||
u8 page, u16 reg, u8 phy_addr, u16 value);
|
||||
int i40e_read_phy_register(struct i40e_hw *hw, u8 page, u16 reg,
|
||||
u8 phy_addr, u16 *value);
|
||||
int i40e_write_phy_register(struct i40e_hw *hw, u8 page, u16 reg,
|
||||
u8 phy_addr, u16 value);
|
||||
u8 i40e_get_phy_address(struct i40e_hw *hw, u8 dev_num);
|
||||
int i40e_blink_phy_link_led(struct i40e_hw *hw,
|
||||
u32 time, u32 interval);
|
||||
int i40e_aq_write_ddp(struct i40e_hw *hw, void *buff,
|
||||
u16 buff_size, u32 track_id,
|
||||
u32 *error_offset, u32 *error_info,
|
||||
@@ -477,20 +445,12 @@ int i40e_aq_get_ddp_list(struct i40e_hw *hw, void *buff,
|
||||
struct i40e_generic_seg_header *
|
||||
i40e_find_segment_in_package(u32 segment_type,
|
||||
struct i40e_package_header *pkg_header);
|
||||
struct i40e_profile_section_header *
|
||||
i40e_find_section_in_profile(u32 section_type,
|
||||
struct i40e_profile_segment *profile);
|
||||
int
|
||||
i40e_write_profile(struct i40e_hw *hw, struct i40e_profile_segment *i40e_seg,
|
||||
u32 track_id);
|
||||
int
|
||||
i40e_rollback_profile(struct i40e_hw *hw, struct i40e_profile_segment *i40e_seg,
|
||||
u32 track_id);
|
||||
int
|
||||
i40e_add_pinfo_to_list(struct i40e_hw *hw,
|
||||
struct i40e_profile_segment *profile,
|
||||
u8 *profile_info_sec, u32 track_id);
|
||||
|
||||
/* i40e_ddp */
|
||||
int i40e_ddp_flash(struct net_device *netdev, struct ethtool_flash *flash);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user