#define pr_fmt(fmt) …
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/pci.h>
#include <linux/netdevice.h>
#include <linux/delay.h>
#include <linux/ethtool.h>
#include <linux/mutex.h>
#include "bnx2x.h"
#include "bnx2x_cmn.h"
read_sfp_module_eeprom_func_p;
#define MDIO_ACCESS_TIMEOUT …
#define WC_LANE_MAX …
#define I2C_SWITCH_WIDTH …
#define I2C_BSC0 …
#define I2C_BSC1 …
#define I2C_WA_RETRY_CNT …
#define I2C_WA_PWR_ITER …
#define MCPR_IMC_COMMAND_READ_OP …
#define MCPR_IMC_COMMAND_WRITE_OP …
#define LED_BLINK_RATE_VAL_E3 …
#define LED_BLINK_RATE_VAL_E1X_E2 …
#define NIG_LATCH_BC_ENABLE_MI_INT …
#define NIG_STATUS_EMAC0_MI_INT …
#define NIG_STATUS_XGXS0_LINK10G …
#define NIG_STATUS_XGXS0_LINK_STATUS …
#define NIG_STATUS_XGXS0_LINK_STATUS_SIZE …
#define NIG_STATUS_SERDES0_LINK_STATUS …
#define NIG_MASK_MI_INT …
#define NIG_MASK_XGXS0_LINK10G …
#define NIG_MASK_XGXS0_LINK_STATUS …
#define NIG_MASK_SERDES0_LINK_STATUS …
#define MDIO_AN_CL73_OR_37_COMPLETE …
#define XGXS_RESET_BITS …
#define SERDES_RESET_BITS …
#define AUTONEG_CL37 …
#define AUTONEG_CL73 …
#define AUTONEG_BAM …
#define AUTONEG_PARALLEL …
#define AUTONEG_SGMII_FIBER_AUTODET …
#define AUTONEG_REMOTE_PHY …
#define GP_STATUS_PAUSE_RSOLUTION_TXSIDE …
#define GP_STATUS_PAUSE_RSOLUTION_RXSIDE …
#define GP_STATUS_SPEED_MASK …
#define GP_STATUS_10M …
#define GP_STATUS_100M …
#define GP_STATUS_1G …
#define GP_STATUS_2_5G …
#define GP_STATUS_5G …
#define GP_STATUS_6G …
#define GP_STATUS_10G_HIG …
#define GP_STATUS_10G_CX4 …
#define GP_STATUS_1G_KX …
#define GP_STATUS_10G_KX4 …
#define GP_STATUS_10G_KR …
#define GP_STATUS_10G_XFI …
#define GP_STATUS_20G_DXGXS …
#define GP_STATUS_10G_SFI …
#define GP_STATUS_20G_KR2 …
#define LINK_10THD …
#define LINK_10TFD …
#define LINK_100TXHD …
#define LINK_100T4 …
#define LINK_100TXFD …
#define LINK_1000THD …
#define LINK_1000TFD …
#define LINK_1000XFD …
#define LINK_2500THD …
#define LINK_2500TFD …
#define LINK_2500XFD …
#define LINK_10GTFD …
#define LINK_10GXFD …
#define LINK_20GTFD …
#define LINK_20GXFD …
#define LINK_UPDATE_MASK …
#define SFP_EEPROM_CON_TYPE_ADDR …
#define SFP_EEPROM_CON_TYPE_VAL_UNKNOWN …
#define SFP_EEPROM_CON_TYPE_VAL_LC …
#define SFP_EEPROM_CON_TYPE_VAL_COPPER …
#define SFP_EEPROM_CON_TYPE_VAL_RJ45 …
#define SFP_EEPROM_10G_COMP_CODE_ADDR …
#define SFP_EEPROM_10G_COMP_CODE_SR_MASK …
#define SFP_EEPROM_10G_COMP_CODE_LR_MASK …
#define SFP_EEPROM_10G_COMP_CODE_LRM_MASK …
#define SFP_EEPROM_1G_COMP_CODE_ADDR …
#define SFP_EEPROM_1G_COMP_CODE_SX …
#define SFP_EEPROM_1G_COMP_CODE_LX …
#define SFP_EEPROM_1G_COMP_CODE_CX …
#define SFP_EEPROM_1G_COMP_CODE_BASE_T …
#define SFP_EEPROM_FC_TX_TECH_ADDR …
#define SFP_EEPROM_FC_TX_TECH_BITMASK_COPPER_PASSIVE …
#define SFP_EEPROM_FC_TX_TECH_BITMASK_COPPER_ACTIVE …
#define SFP_EEPROM_OPTIONS_ADDR …
#define SFP_EEPROM_OPTIONS_LINEAR_RX_OUT_MASK …
#define SFP_EEPROM_OPTIONS_SIZE …
#define EDC_MODE_LINEAR …
#define EDC_MODE_LIMITING …
#define EDC_MODE_PASSIVE_DAC …
#define EDC_MODE_ACTIVE_DAC …
#define DCBX_INVALID_COS …
#define ETS_BW_LIMIT_CREDIT_UPPER_BOUND …
#define ETS_BW_LIMIT_CREDIT_WEIGHT …
#define ETS_E3B0_NIG_MIN_W_VAL_UP_TO_10GBPS …
#define ETS_E3B0_NIG_MIN_W_VAL_20GBPS …
#define ETS_E3B0_PBF_MIN_W_VAL …
#define MAX_PACKET_SIZE …
#define MAX_KR_LINK_RETRY …
#define DEFAULT_TX_DRV_BRDCT …
#define DEFAULT_TX_DRV_IFIR …
#define DEFAULT_TX_DRV_POST2 …
#define DEFAULT_TX_DRV_IPRE_DRIVER …
#define CL22_WR_OVER_CL45(_bp, _phy, _bank, _addr, _val) …
#define CL22_RD_OVER_CL45(_bp, _phy, _bank, _addr, _val) …
static int bnx2x_check_half_open_conn(struct link_params *params,
struct link_vars *vars, u8 notify);
static int bnx2x_sfp_module_detection(struct bnx2x_phy *phy,
struct link_params *params);
static u32 bnx2x_bits_en(struct bnx2x *bp, u32 reg, u32 bits)
{ … }
static u32 bnx2x_bits_dis(struct bnx2x *bp, u32 reg, u32 bits)
{ … }
static int bnx2x_check_lfa(struct link_params *params)
{ … }
static void bnx2x_get_epio(struct bnx2x *bp, u32 epio_pin, u32 *en)
{ … }
static void bnx2x_set_epio(struct bnx2x *bp, u32 epio_pin, u32 en)
{ … }
static void bnx2x_set_cfg_pin(struct bnx2x *bp, u32 pin_cfg, u32 val)
{ … }
static u32 bnx2x_get_cfg_pin(struct bnx2x *bp, u32 pin_cfg, u32 *val)
{ … }
static void bnx2x_ets_e2e3a0_disabled(struct link_params *params)
{ … }
static u32 bnx2x_ets_get_min_w_val_nig(const struct link_vars *vars)
{ … }
static u32 bnx2x_ets_get_credit_upper_bound(const u32 min_w_val)
{ … }
static void bnx2x_ets_e3b0_set_credit_upper_bound_nig(
const struct link_params *params,
const u32 min_w_val)
{ … }
static void bnx2x_ets_e3b0_nig_disabled(const struct link_params *params,
const struct link_vars *vars)
{ … }
static void bnx2x_ets_e3b0_set_credit_upper_bound_pbf(
const struct link_params *params,
const u32 min_w_val)
{ … }
static void bnx2x_ets_e3b0_pbf_disabled(const struct link_params *params)
{ … }
static int bnx2x_ets_e3b0_disabled(const struct link_params *params,
const struct link_vars *vars)
{ … }
int bnx2x_ets_disabled(struct link_params *params,
struct link_vars *vars)
{ … }
static int bnx2x_ets_e3b0_cli_map(const struct link_params *params,
const struct bnx2x_ets_params *ets_params,
const u8 cos_sp_bitmap,
const u8 cos_bw_bitmap)
{ … }
static int bnx2x_ets_e3b0_set_cos_bw(struct bnx2x *bp,
const u8 cos_entry,
const u32 min_w_val_nig,
const u32 min_w_val_pbf,
const u16 total_bw,
const u8 bw,
const u8 port)
{ … }
static int bnx2x_ets_e3b0_get_total_bw(
const struct link_params *params,
struct bnx2x_ets_params *ets_params,
u16 *total_bw)
{ … }
static void bnx2x_ets_e3b0_sp_pri_to_cos_init(u8 *sp_pri_to_cos)
{ … }
static int bnx2x_ets_e3b0_sp_pri_to_cos_set(const struct link_params *params,
u8 *sp_pri_to_cos, const u8 pri,
const u8 cos_entry)
{ … }
static u64 bnx2x_e3b0_sp_get_pri_cli_reg(const u8 cos, const u8 cos_offset,
const u8 pri_set,
const u8 pri_offset,
const u8 entry_size)
{ … }
static u64 bnx2x_e3b0_sp_get_pri_cli_reg_nig(const u8 cos, const u8 pri_set)
{ … }
static u64 bnx2x_e3b0_sp_get_pri_cli_reg_pbf(const u8 cos, const u8 pri_set)
{ … }
static int bnx2x_ets_e3b0_sp_set_pri_cli_reg(const struct link_params *params,
u8 *sp_pri_to_cos)
{ … }
int bnx2x_ets_e3b0_config(const struct link_params *params,
const struct link_vars *vars,
struct bnx2x_ets_params *ets_params)
{ … }
static void bnx2x_ets_bw_limit_common(const struct link_params *params)
{ … }
void bnx2x_ets_bw_limit(const struct link_params *params, const u32 cos0_bw,
const u32 cos1_bw)
{ … }
int bnx2x_ets_strict(const struct link_params *params, const u8 strict_cos)
{ … }
static void bnx2x_update_pfc_xmac(struct link_params *params,
struct link_vars *vars,
u8 is_lb)
{ … }
static void bnx2x_set_mdio_clk(struct bnx2x *bp, u32 chip_id,
u32 emac_base)
{ … }
static void bnx2x_set_mdio_emac_per_phy(struct bnx2x *bp,
struct link_params *params)
{ … }
static u8 bnx2x_is_4_port_mode(struct bnx2x *bp)
{ … }
static void bnx2x_emac_init(struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_set_xumac_nig(struct link_params *params,
u16 tx_pause_en,
u8 enable)
{ … }
static void bnx2x_set_umac_rxtx(struct link_params *params, u8 en)
{ … }
static void bnx2x_umac_enable(struct link_params *params,
struct link_vars *vars, u8 lb)
{ … }
static void bnx2x_xmac_init(struct link_params *params, u32 max_speed)
{ … }
static void bnx2x_set_xmac_rxtx(struct link_params *params, u8 en)
{ … }
static int bnx2x_xmac_enable(struct link_params *params,
struct link_vars *vars, u8 lb)
{ … }
static int bnx2x_emac_enable(struct link_params *params,
struct link_vars *vars, u8 lb)
{ … }
static void bnx2x_update_pfc_bmac1(struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_update_pfc_bmac2(struct link_params *params,
struct link_vars *vars,
u8 is_lb)
{ … }
static int bnx2x_pfc_nig_rx_priority_mask(struct bnx2x *bp,
u8 cos_entry,
u32 priority_mask, u8 port)
{ … }
static void bnx2x_update_mng(struct link_params *params, u32 link_status)
{ … }
static void bnx2x_update_link_attr(struct link_params *params, u32 link_attr)
{ … }
static void bnx2x_update_pfc_nig(struct link_params *params,
struct link_vars *vars,
struct bnx2x_nig_brb_pfc_port_params *nig_params)
{ … }
int bnx2x_update_pfc(struct link_params *params,
struct link_vars *vars,
struct bnx2x_nig_brb_pfc_port_params *pfc_params)
{ … }
static int bnx2x_bmac1_enable(struct link_params *params,
struct link_vars *vars,
u8 is_lb)
{ … }
static int bnx2x_bmac2_enable(struct link_params *params,
struct link_vars *vars,
u8 is_lb)
{ … }
static int bnx2x_bmac_enable(struct link_params *params,
struct link_vars *vars,
u8 is_lb, u8 reset_bmac)
{ … }
static void bnx2x_set_bmac_rx(struct bnx2x *bp, u32 chip_id, u8 port, u8 en)
{ … }
static int bnx2x_pbf_update(struct link_params *params, u32 flow_ctrl,
u32 line_speed)
{ … }
static u32 bnx2x_get_emac_base(struct bnx2x *bp,
u32 mdc_mdio_access, u8 port)
{ … }
static int bnx2x_cl22_write(struct bnx2x *bp,
struct bnx2x_phy *phy,
u16 reg, u16 val)
{ … }
static int bnx2x_cl22_read(struct bnx2x *bp,
struct bnx2x_phy *phy,
u16 reg, u16 *ret_val)
{ … }
static int bnx2x_cl45_read(struct bnx2x *bp, struct bnx2x_phy *phy,
u8 devad, u16 reg, u16 *ret_val)
{ … }
static int bnx2x_cl45_write(struct bnx2x *bp, struct bnx2x_phy *phy,
u8 devad, u16 reg, u16 val)
{ … }
static u8 bnx2x_eee_has_cap(struct link_params *params)
{ … }
static int bnx2x_eee_nvram_to_time(u32 nvram_mode, u32 *idle_timer)
{ … }
static int bnx2x_eee_time_to_nvram(u32 idle_timer, u32 *nvram_mode)
{ … }
static u32 bnx2x_eee_calc_timer(struct link_params *params)
{ … }
static int bnx2x_eee_set_timers(struct link_params *params,
struct link_vars *vars)
{ … }
static int bnx2x_eee_initial_config(struct link_params *params,
struct link_vars *vars, u8 mode)
{ … }
static int bnx2x_eee_disable(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static int bnx2x_eee_advertise(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars, u8 modes)
{ … }
static void bnx2x_update_mng_eee(struct link_params *params, u32 eee_status)
{ … }
static void bnx2x_eee_an_resolve(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_bsc_module_sel(struct link_params *params)
{ … }
static int bnx2x_bsc_read(struct link_params *params,
struct bnx2x *bp,
u8 sl_devid,
u16 sl_addr,
u8 lc_addr,
u8 xfer_cnt,
u32 *data_array)
{ … }
static void bnx2x_cl45_read_or_write(struct bnx2x *bp, struct bnx2x_phy *phy,
u8 devad, u16 reg, u16 or_val)
{ … }
static void bnx2x_cl45_read_and_write(struct bnx2x *bp,
struct bnx2x_phy *phy,
u8 devad, u16 reg, u16 and_val)
{ … }
int bnx2x_phy_read(struct link_params *params, u8 phy_addr,
u8 devad, u16 reg, u16 *ret_val)
{ … }
int bnx2x_phy_write(struct link_params *params, u8 phy_addr,
u8 devad, u16 reg, u16 val)
{ … }
static u8 bnx2x_get_warpcore_lane(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_set_aer_mmd(struct link_params *params,
struct bnx2x_phy *phy)
{ … }
static void bnx2x_set_serdes_access(struct bnx2x *bp, u8 port)
{ … }
static void bnx2x_serdes_deassert(struct bnx2x *bp, u8 port)
{ … }
static void bnx2x_xgxs_specific_func(struct bnx2x_phy *phy,
struct link_params *params,
u32 action)
{ … }
static void bnx2x_xgxs_deassert(struct link_params *params)
{ … }
static void bnx2x_calc_ieee_aneg_adv(struct bnx2x_phy *phy,
struct link_params *params, u16 *ieee_fc)
{ … }
static void set_phy_vars(struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_ext_phy_set_pause(struct link_params *params,
struct bnx2x_phy *phy,
struct link_vars *vars)
{ … }
static void bnx2x_pause_resolve(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars,
u32 pause_result)
{ … }
static void bnx2x_ext_phy_update_adv_fc(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static u8 bnx2x_ext_phy_resolve_fc(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
#define WC_TX_DRIVER(post2, idriver, ipre, ifir) …
#define WC_TX_FIR(post, main, pre) …
static void bnx2x_warpcore_enable_AN_KR2(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_disable_kr2(struct link_params *params,
struct link_vars *vars,
struct bnx2x_phy *phy)
{ … }
static void bnx2x_warpcore_set_lpi_passthrough(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_warpcore_restart_AN_KR(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_warpcore_enable_AN_KR(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars) { … }
static void bnx2x_warpcore_set_10G_KR(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_warpcore_set_10G_XFI(struct bnx2x_phy *phy,
struct link_params *params,
u8 is_xfi)
{ … }
static void bnx2x_warpcore_set_20G_force_KR2(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_warpcore_set_20G_DXGXS(struct bnx2x *bp,
struct bnx2x_phy *phy,
u16 lane)
{ … }
static void bnx2x_warpcore_set_sgmii_speed(struct bnx2x_phy *phy,
struct link_params *params,
u8 fiber_mode,
u8 always_autoneg)
{ … }
static void bnx2x_warpcore_reset_lane(struct bnx2x *bp,
struct bnx2x_phy *phy,
u8 reset)
{ … }
static void bnx2x_warpcore_clear_regs(struct bnx2x_phy *phy,
struct link_params *params,
u16 lane)
{ … }
static int bnx2x_get_mod_abs_int_cfg(struct bnx2x *bp,
u32 chip_id,
u32 shmem_base, u8 port,
u8 *gpio_num, u8 *gpio_port)
{ … }
static int bnx2x_is_sfp_module_plugged(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static int bnx2x_warpcore_get_sigdet(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_warpcore_config_runtime(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_warpcore_config_sfi(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_sfp_e3_set_transmitter(struct link_params *params,
struct bnx2x_phy *phy,
u8 tx_en)
{ … }
static void bnx2x_warpcore_config_init(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_warpcore_link_reset(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_set_warpcore_loopback(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_sync_link(struct link_params *params,
struct link_vars *vars)
{ … }
void bnx2x_link_status_update(struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_set_master_ln(struct link_params *params,
struct bnx2x_phy *phy)
{ … }
static int bnx2x_reset_unicore(struct link_params *params,
struct bnx2x_phy *phy,
u8 set_serdes)
{ … }
static void bnx2x_set_swap_lanes(struct link_params *params,
struct bnx2x_phy *phy)
{ … }
static void bnx2x_set_parallel_detection(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_set_autoneg(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars,
u8 enable_cl73)
{ … }
static void bnx2x_program_serdes(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_set_brcm_cl37_advertisement(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_set_ieee_aneg_advertisement(struct bnx2x_phy *phy,
struct link_params *params,
u16 ieee_fc)
{ … }
static void bnx2x_restart_autoneg(struct bnx2x_phy *phy,
struct link_params *params,
u8 enable_cl73)
{ … }
static void bnx2x_initialize_sgmii_process(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static int bnx2x_direct_parallel_detect_used(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_update_adv_fc(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars,
u32 gp_status)
{ … }
static void bnx2x_flow_ctrl_resolve(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars,
u32 gp_status)
{ … }
static void bnx2x_check_fallback_to_cl37(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_xgxs_an_resolve(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars,
u32 gp_status)
{ … }
static int bnx2x_get_link_speed_duplex(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars,
u16 is_link_up,
u16 speed_mask,
u16 is_duplex)
{ … }
static u8 bnx2x_link_settings_status(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static u8 bnx2x_warpcore_read_status(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_set_gmii_tx_driver(struct link_params *params)
{ … }
static int bnx2x_emac_program(struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_set_preemphasis(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_xgxs_config_init(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static int bnx2x_prepare_xgxs(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static u16 bnx2x_wait_reset_complete(struct bnx2x *bp,
struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_link_int_enable(struct link_params *params)
{ … }
static void bnx2x_rearm_latch_signal(struct bnx2x *bp, u8 port,
u8 exp_mi_int)
{ … }
static void bnx2x_link_int_ack(struct link_params *params,
struct link_vars *vars, u8 is_10g_plus)
{ … }
static int bnx2x_null_format_ver(u32 spirom_ver, u8 *str, u16 *len)
{ … }
static int bnx2x_format_ver(u32 num, u8 *str, u16 *len)
{ … }
static int bnx2x_3_seq_format_ver(u32 num, u8 *str, u16 *len)
{ … }
int bnx2x_get_ext_phy_fw_version(struct link_params *params, u8 *version,
u16 len)
{ … }
static void bnx2x_set_xgxs_loopback(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
int bnx2x_set_led(struct link_params *params,
struct link_vars *vars, u8 mode, u32 speed)
{ … }
int bnx2x_test_link(struct link_params *params, struct link_vars *vars,
u8 is_serdes)
{ … }
static int bnx2x_link_initialize(struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_int_link_reset(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_common_ext_link_reset(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static int bnx2x_update_link_down(struct link_params *params,
struct link_vars *vars)
{ … }
static int bnx2x_update_link_up(struct link_params *params,
struct link_vars *vars,
u8 link_10g)
{ … }
static void bnx2x_chng_link_count(struct link_params *params, bool clear)
{ … }
int bnx2x_link_update(struct link_params *params, struct link_vars *vars)
{ … }
void bnx2x_ext_phy_hw_reset(struct bnx2x *bp, u8 port)
{ … }
static void bnx2x_save_spirom_version(struct bnx2x *bp, u8 port,
u32 spirom_ver, u32 ver_addr)
{ … }
static void bnx2x_save_bcm_spirom_ver(struct bnx2x *bp,
struct bnx2x_phy *phy,
u8 port)
{ … }
static void bnx2x_ext_phy_10G_an_resolve(struct bnx2x *bp,
struct bnx2x_phy *phy,
struct link_vars *vars)
{ … }
static void bnx2x_8073_resolve_fc(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static int bnx2x_8073_8727_external_rom_boot(struct bnx2x *bp,
struct bnx2x_phy *phy,
u8 port)
{ … }
static int bnx2x_8073_is_snr_needed(struct bnx2x *bp, struct bnx2x_phy *phy)
{ … }
static int bnx2x_8073_xaui_wa(struct bnx2x *bp, struct bnx2x_phy *phy)
{ … }
static void bnx2x_807x_force_10G(struct bnx2x *bp, struct bnx2x_phy *phy)
{ … }
static void bnx2x_8073_set_pause_cl37(struct link_params *params,
struct bnx2x_phy *phy,
struct link_vars *vars)
{ … }
static void bnx2x_8073_specific_func(struct bnx2x_phy *phy,
struct link_params *params,
u32 action)
{ … }
static void bnx2x_8073_config_init(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static u8 bnx2x_8073_read_status(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_8073_link_reset(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_8705_config_init(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static u8 bnx2x_8705_read_status(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_set_disable_pmd_transmit(struct link_params *params,
struct bnx2x_phy *phy,
u8 pmd_dis)
{ … }
static u8 bnx2x_get_gpio_port(struct link_params *params)
{ … }
static void bnx2x_sfp_e1e2_set_transmitter(struct link_params *params,
struct bnx2x_phy *phy,
u8 tx_en)
{ … }
static void bnx2x_sfp_set_transmitter(struct link_params *params,
struct bnx2x_phy *phy,
u8 tx_en)
{ … }
static int bnx2x_8726_read_sfp_module_eeprom(struct bnx2x_phy *phy,
struct link_params *params,
u8 dev_addr, u16 addr, u8 byte_cnt,
u8 *o_buf, u8 is_init)
{ … }
static void bnx2x_warpcore_power_module(struct link_params *params,
u8 power)
{ … }
static int bnx2x_warpcore_read_sfp_module_eeprom(struct bnx2x_phy *phy,
struct link_params *params,
u8 dev_addr,
u16 addr, u8 byte_cnt,
u8 *o_buf, u8 is_init)
{ … }
static int bnx2x_8727_read_sfp_module_eeprom(struct bnx2x_phy *phy,
struct link_params *params,
u8 dev_addr, u16 addr, u8 byte_cnt,
u8 *o_buf, u8 is_init)
{ … }
int bnx2x_read_sfp_module_eeprom(struct bnx2x_phy *phy,
struct link_params *params, u8 dev_addr,
u16 addr, u16 byte_cnt, u8 *o_buf)
{ … }
static int bnx2x_get_edc_mode(struct bnx2x_phy *phy,
struct link_params *params,
u16 *edc_mode)
{ … }
static int bnx2x_verify_sfp_module(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static int bnx2x_wait_for_sfp_module_initialized(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_8727_power_module(struct bnx2x *bp,
struct bnx2x_phy *phy,
u8 is_power_up) { … }
static int bnx2x_8726_set_limiting_mode(struct bnx2x *bp,
struct bnx2x_phy *phy,
u16 edc_mode)
{ … }
static int bnx2x_8727_set_limiting_mode(struct bnx2x *bp,
struct bnx2x_phy *phy,
u16 edc_mode)
{ … }
static void bnx2x_8727_specific_func(struct bnx2x_phy *phy,
struct link_params *params,
u32 action)
{ … }
static void bnx2x_set_e1e2_module_fault_led(struct link_params *params,
u8 gpio_mode)
{ … }
static void bnx2x_set_e3_module_fault_led(struct link_params *params,
u8 gpio_mode)
{ … }
static void bnx2x_set_sfp_module_fault_led(struct link_params *params,
u8 gpio_mode)
{ … }
static void bnx2x_warpcore_hw_reset(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_power_sfp_module(struct link_params *params,
struct bnx2x_phy *phy,
u8 power)
{ … }
static void bnx2x_warpcore_set_limiting_mode(struct link_params *params,
struct bnx2x_phy *phy,
u16 edc_mode)
{ … }
static void bnx2x_set_limiting_mode(struct link_params *params,
struct bnx2x_phy *phy,
u16 edc_mode)
{ … }
static int bnx2x_sfp_module_detection(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
void bnx2x_handle_module_detect_int(struct link_params *params)
{ … }
static void bnx2x_sfp_mask_fault(struct bnx2x *bp,
struct bnx2x_phy *phy,
u16 alarm_status_offset,
u16 alarm_ctrl_offset)
{ … }
static u8 bnx2x_8706_8726_read_status(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_8706_config_init(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static u8 bnx2x_8706_read_status(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_8726_config_loopback(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_8726_external_rom_boot(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static u8 bnx2x_8726_read_status(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_8726_config_init(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_8726_link_reset(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_8727_set_link_led(struct bnx2x_phy *phy,
struct link_params *params, u8 mode)
{ … }
static void bnx2x_8727_hw_reset(struct bnx2x_phy *phy,
struct link_params *params) { … }
static void bnx2x_8727_config_speed(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_8727_config_init(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_8727_handle_mod_abs(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static u8 bnx2x_8727_read_status(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_8727_link_reset(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static int bnx2x_is_8483x_8485x(struct bnx2x_phy *phy)
{ … }
static void bnx2x_save_848xx_spirom_version(struct bnx2x_phy *phy,
struct bnx2x *bp,
u8 port)
{ … }
static void bnx2x_848xx_set_led(struct bnx2x *bp,
struct bnx2x_phy *phy)
{ … }
static void bnx2x_848xx_specific_func(struct bnx2x_phy *phy,
struct link_params *params,
u32 action)
{ … }
static int bnx2x_848xx_cmn_config_init(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_8481_config_init(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
#define PHY848xx_CMDHDLR_WAIT …
#define PHY848xx_CMDHDLR_MAX_ARGS …
static int bnx2x_84858_cmd_hdlr(struct bnx2x_phy *phy,
struct link_params *params,
u16 fw_cmd,
u16 cmd_args[], int argc)
{ … }
static int bnx2x_84833_cmd_hdlr(struct bnx2x_phy *phy,
struct link_params *params, u16 fw_cmd,
u16 cmd_args[], int argc, int process)
{ … }
static int bnx2x_848xx_cmd_hdlr(struct bnx2x_phy *phy,
struct link_params *params,
u16 fw_cmd,
u16 cmd_args[], int argc,
int process)
{ … }
static int bnx2x_848xx_pair_swap_cfg(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static u8 bnx2x_84833_get_reset_gpios(struct bnx2x *bp,
u32 shmem_base_path[],
u32 chip_id)
{ … }
static void bnx2x_84833_hw_reset_phy(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static int bnx2x_8483x_disable_eee(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static int bnx2x_8483x_enable_eee(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
#define PHY84833_CONSTANT_LATENCY …
static void bnx2x_848x3_config_init(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static u8 bnx2x_848xx_read_status(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static int bnx2x_8485x_format_ver(u32 raw_ver, u8 *str, u16 *len)
{ … }
static int bnx2x_848xx_format_ver(u32 raw_ver, u8 *str, u16 *len)
{ … }
static void bnx2x_8481_hw_reset(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_8481_link_reset(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_848x3_link_reset(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_848xx_set_link_led(struct bnx2x_phy *phy,
struct link_params *params, u8 mode)
{ … }
static void bnx2x_54618se_specific_func(struct bnx2x_phy *phy,
struct link_params *params,
u32 action)
{ … }
static void bnx2x_54618se_config_init(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_5461x_set_link_led(struct bnx2x_phy *phy,
struct link_params *params, u8 mode)
{ … }
static void bnx2x_54618se_link_reset(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static u8 bnx2x_54618se_read_status(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_54618se_config_loopback(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_7101_config_loopback(struct bnx2x_phy *phy,
struct link_params *params)
{ … }
static void bnx2x_7101_config_init(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static u8 bnx2x_7101_read_status(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static int bnx2x_7101_format_ver(u32 spirom_ver, u8 *str, u16 *len)
{ … }
void bnx2x_sfx7101_sp_sw_reset(struct bnx2x *bp, struct bnx2x_phy *phy)
{ … }
static void bnx2x_7101_hw_reset(struct bnx2x_phy *phy,
struct link_params *params) { … }
static void bnx2x_7101_set_link_led(struct bnx2x_phy *phy,
struct link_params *params, u8 mode)
{ … }
static const struct bnx2x_phy phy_null = …;
static const struct bnx2x_phy phy_serdes = …;
static const struct bnx2x_phy phy_xgxs = …;
static const struct bnx2x_phy phy_warpcore = …;
static const struct bnx2x_phy phy_7101 = …;
static const struct bnx2x_phy phy_8073 = …;
static const struct bnx2x_phy phy_8705 = …;
static const struct bnx2x_phy phy_8706 = …;
static const struct bnx2x_phy phy_8726 = …;
static const struct bnx2x_phy phy_8727 = …;
static const struct bnx2x_phy phy_8481 = …;
static const struct bnx2x_phy phy_84823 = …;
static const struct bnx2x_phy phy_84833 = …;
static const struct bnx2x_phy phy_84834 = …;
static const struct bnx2x_phy phy_84858 = …;
static const struct bnx2x_phy phy_54618se = …;
static void bnx2x_populate_preemphasis(struct bnx2x *bp, u32 shmem_base,
struct bnx2x_phy *phy, u8 port,
u8 phy_index)
{ … }
static u32 bnx2x_get_ext_phy_config(struct bnx2x *bp, u32 shmem_base,
u8 phy_index, u8 port)
{ … }
static int bnx2x_populate_int_phy(struct bnx2x *bp, u32 shmem_base, u8 port,
struct bnx2x_phy *phy)
{ … }
static int bnx2x_populate_ext_phy(struct bnx2x *bp,
u8 phy_index,
u32 shmem_base,
u32 shmem2_base,
u8 port,
struct bnx2x_phy *phy)
{ … }
static int bnx2x_populate_phy(struct bnx2x *bp, u8 phy_index, u32 shmem_base,
u32 shmem2_base, u8 port, struct bnx2x_phy *phy)
{ … }
static void bnx2x_phy_def_cfg(struct link_params *params,
struct bnx2x_phy *phy,
u8 phy_index)
{ … }
u32 bnx2x_phy_selection(struct link_params *params)
{ … }
int bnx2x_phy_probe(struct link_params *params)
{ … }
static void bnx2x_init_bmac_loopback(struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_init_emac_loopback(struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_init_xmac_loopback(struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_init_umac_loopback(struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_init_xgxs_loopback(struct link_params *params,
struct link_vars *vars)
{ … }
void bnx2x_set_rx_filter(struct link_params *params, u8 en)
{ … }
static int bnx2x_avoid_link_flap(struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_cannot_avoid_link_flap(struct link_params *params,
struct link_vars *vars,
int lfa_status)
{ … }
int bnx2x_phy_init(struct link_params *params, struct link_vars *vars)
{ … }
int bnx2x_link_reset(struct link_params *params, struct link_vars *vars,
u8 reset_ext_phy)
{ … }
int bnx2x_lfa_reset(struct link_params *params,
struct link_vars *vars)
{ … }
static int bnx2x_8073_common_init_phy(struct bnx2x *bp,
u32 shmem_base_path[],
u32 shmem2_base_path[], u8 phy_index,
u32 chip_id)
{ … }
static int bnx2x_8726_common_init_phy(struct bnx2x *bp,
u32 shmem_base_path[],
u32 shmem2_base_path[], u8 phy_index,
u32 chip_id)
{ … }
static void bnx2x_get_ext_phy_reset_gpio(struct bnx2x *bp, u32 shmem_base,
u8 *io_gpio, u8 *io_port)
{ … }
static int bnx2x_8727_common_init_phy(struct bnx2x *bp,
u32 shmem_base_path[],
u32 shmem2_base_path[], u8 phy_index,
u32 chip_id)
{ … }
static int bnx2x_84833_common_init_phy(struct bnx2x *bp,
u32 shmem_base_path[],
u32 shmem2_base_path[],
u8 phy_index,
u32 chip_id)
{ … }
static int bnx2x_ext_phy_common_init(struct bnx2x *bp, u32 shmem_base_path[],
u32 shmem2_base_path[], u8 phy_index,
u32 ext_phy_type, u32 chip_id)
{ … }
int bnx2x_common_init_phy(struct bnx2x *bp, u32 shmem_base_path[],
u32 shmem2_base_path[], u32 chip_id)
{ … }
static void bnx2x_check_over_curr(struct link_params *params,
struct link_vars *vars)
{ … }
static u8 bnx2x_analyze_link_error(struct link_params *params,
struct link_vars *vars, u32 status,
u32 phy_flag, u32 link_flag, u8 notify)
{ … }
static int bnx2x_check_half_open_conn(struct link_params *params,
struct link_vars *vars,
u8 notify)
{ … }
static void bnx2x_sfp_tx_fault_detection(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{ … }
static void bnx2x_kr2_recovery(struct link_params *params,
struct link_vars *vars,
struct bnx2x_phy *phy)
{ … }
static void bnx2x_check_kr2_wa(struct link_params *params,
struct link_vars *vars,
struct bnx2x_phy *phy)
{ … }
void bnx2x_period_func(struct link_params *params, struct link_vars *vars)
{ … }
u8 bnx2x_fan_failure_det_req(struct bnx2x *bp,
u32 shmem_base,
u32 shmem2_base,
u8 port)
{ … }
void bnx2x_hw_reset_phy(struct link_params *params)
{ … }
void bnx2x_init_mod_abs_int(struct bnx2x *bp, struct link_vars *vars,
u32 chip_id, u32 shmem_base, u32 shmem2_base,
u8 port)
{ … }