FreeBSD kernel IXGBE device code
ixgbe_82599.c File Reference
#include "ixgbe_type.h"
#include "ixgbe_82599.h"
#include "ixgbe_api.h"
#include "ixgbe_common.h"
#include "ixgbe_phy.h"
Include dependency graph for ixgbe_82599.c:

Go to the source code of this file.

Macros

#define IXGBE_82599_MAX_TX_QUEUES   128
 
#define IXGBE_82599_MAX_RX_QUEUES   128
 
#define IXGBE_82599_RAR_ENTRIES   128
 
#define IXGBE_82599_MC_TBL_SIZE   128
 
#define IXGBE_82599_VFT_TBL_SIZE   128
 
#define IXGBE_82599_RX_PB_SIZE   512
 
#define IXGBE_ATR_COMMON_HASH_KEY    (IXGBE_ATR_BUCKET_HASH_KEY & IXGBE_ATR_SIGNATURE_HASH_KEY)
 
#define IXGBE_COMPUTE_SIG_HASH_ITERATION(_n)
 
#define IXGBE_COMPUTE_BKT_HASH_ITERATION(_n)
 
#define IXGBE_STORE_AS_BE32(_value)
 
#define IXGBE_WRITE_REG_BE32(a, reg, value)    IXGBE_WRITE_REG((a), (reg), IXGBE_STORE_AS_BE32(IXGBE_NTOHL(value)))
 
#define IXGBE_STORE_AS_BE16(_value)    IXGBE_NTOHS(((u16)(_value) >> 8) | ((u16)(_value) << 8))
 

Functions

static s32 ixgbe_setup_copper_link_82599 (struct ixgbe_hw *hw, ixgbe_link_speed speed, bool autoneg_wait_to_complete)
 
static s32 ixgbe_verify_fw_version_82599 (struct ixgbe_hw *hw)
 
static s32 ixgbe_read_eeprom_82599 (struct ixgbe_hw *hw, u16 offset, u16 *data)
 
static s32 ixgbe_read_eeprom_buffer_82599 (struct ixgbe_hw *hw, u16 offset, u16 words, u16 *data)
 
static s32 ixgbe_read_i2c_byte_82599 (struct ixgbe_hw *hw, u8 byte_offset, u8 dev_addr, u8 *data)
 
static s32 ixgbe_write_i2c_byte_82599 (struct ixgbe_hw *hw, u8 byte_offset, u8 dev_addr, u8 data)
 
void ixgbe_init_mac_link_ops_82599 (struct ixgbe_hw *hw)
 
s32 ixgbe_init_phy_ops_82599 (struct ixgbe_hw *hw)
 
s32 ixgbe_setup_sfp_modules_82599 (struct ixgbe_hw *hw)
 
s32 prot_autoc_read_82599 (struct ixgbe_hw *hw, bool *locked, u32 *reg_val)
 
s32 prot_autoc_write_82599 (struct ixgbe_hw *hw, u32 autoc, bool locked)
 
s32 ixgbe_init_ops_82599 (struct ixgbe_hw *hw)
 
s32 ixgbe_get_link_capabilities_82599 (struct ixgbe_hw *hw, ixgbe_link_speed *speed, bool *autoneg)
 
enum ixgbe_media_type ixgbe_get_media_type_82599 (struct ixgbe_hw *hw)
 
void ixgbe_stop_mac_link_on_d3_82599 (struct ixgbe_hw *hw)
 
s32 ixgbe_start_mac_link_82599 (struct ixgbe_hw *hw, bool autoneg_wait_to_complete)
 
void ixgbe_disable_tx_laser_multispeed_fiber (struct ixgbe_hw *hw)
 
void ixgbe_enable_tx_laser_multispeed_fiber (struct ixgbe_hw *hw)
 
void ixgbe_flap_tx_laser_multispeed_fiber (struct ixgbe_hw *hw)
 
void ixgbe_set_hard_rate_select_speed (struct ixgbe_hw *hw, ixgbe_link_speed speed)
 
s32 ixgbe_setup_mac_link_smartspeed (struct ixgbe_hw *hw, ixgbe_link_speed speed, bool autoneg_wait_to_complete)
 
s32 ixgbe_setup_mac_link_82599 (struct ixgbe_hw *hw, ixgbe_link_speed speed, bool autoneg_wait_to_complete)
 
s32 ixgbe_reset_hw_82599 (struct ixgbe_hw *hw)
 
static s32 ixgbe_fdir_check_cmd_complete (struct ixgbe_hw *hw, u32 *fdircmd)
 
s32 ixgbe_reinit_fdir_tables_82599 (struct ixgbe_hw *hw)
 
static void ixgbe_fdir_enable_82599 (struct ixgbe_hw *hw, u32 fdirctrl)
 
s32 ixgbe_init_fdir_signature_82599 (struct ixgbe_hw *hw, u32 fdirctrl)
 
s32 ixgbe_init_fdir_perfect_82599 (struct ixgbe_hw *hw, u32 fdirctrl, bool cloud_mode)
 
void ixgbe_set_fdir_drop_queue_82599 (struct ixgbe_hw *hw, u8 dropqueue)
 
u32 ixgbe_atr_compute_sig_hash_82599 (union ixgbe_atr_hash_dword input, union ixgbe_atr_hash_dword common)
 
void ixgbe_fdir_add_signature_filter_82599 (struct ixgbe_hw *hw, union ixgbe_atr_hash_dword input, union ixgbe_atr_hash_dword common, u8 queue)
 
void ixgbe_atr_compute_perfect_hash_82599 (union ixgbe_atr_input *input, union ixgbe_atr_input *input_mask)
 
static u32 ixgbe_get_fdirtcpm_82599 (union ixgbe_atr_input *input_mask)
 
s32 ixgbe_fdir_set_input_mask_82599 (struct ixgbe_hw *hw, union ixgbe_atr_input *input_mask, bool cloud_mode)
 
s32 ixgbe_fdir_write_perfect_filter_82599 (struct ixgbe_hw *hw, union ixgbe_atr_input *input, u16 soft_id, u8 queue, bool cloud_mode)
 
s32 ixgbe_fdir_erase_perfect_filter_82599 (struct ixgbe_hw *hw, union ixgbe_atr_input *input, u16 soft_id)
 
s32 ixgbe_fdir_add_perfect_filter_82599 (struct ixgbe_hw *hw, union ixgbe_atr_input *input, union ixgbe_atr_input *input_mask, u16 soft_id, u8 queue, bool cloud_mode)
 
s32 ixgbe_read_analog_reg8_82599 (struct ixgbe_hw *hw, u32 reg, u8 *val)
 
s32 ixgbe_write_analog_reg8_82599 (struct ixgbe_hw *hw, u32 reg, u8 val)
 
s32 ixgbe_start_hw_82599 (struct ixgbe_hw *hw)
 
s32 ixgbe_identify_phy_82599 (struct ixgbe_hw *hw)
 
u64 ixgbe_get_supported_physical_layer_82599 (struct ixgbe_hw *hw)
 
s32 ixgbe_enable_rx_dma_82599 (struct ixgbe_hw *hw, u32 regval)
 
bool ixgbe_verify_lesm_fw_enabled_82599 (struct ixgbe_hw *hw)
 
s32 ixgbe_reset_pipeline_82599 (struct ixgbe_hw *hw)
 

Macro Definition Documentation

◆ IXGBE_82599_MAX_RX_QUEUES

#define IXGBE_82599_MAX_RX_QUEUES   128

Definition at line 43 of file ixgbe_82599.c.

◆ IXGBE_82599_MAX_TX_QUEUES

#define IXGBE_82599_MAX_TX_QUEUES   128

Definition at line 42 of file ixgbe_82599.c.

◆ IXGBE_82599_MC_TBL_SIZE

#define IXGBE_82599_MC_TBL_SIZE   128

Definition at line 45 of file ixgbe_82599.c.

◆ IXGBE_82599_RAR_ENTRIES

#define IXGBE_82599_RAR_ENTRIES   128

Definition at line 44 of file ixgbe_82599.c.

◆ IXGBE_82599_RX_PB_SIZE

#define IXGBE_82599_RX_PB_SIZE   512

Definition at line 47 of file ixgbe_82599.c.

◆ IXGBE_82599_VFT_TBL_SIZE

#define IXGBE_82599_VFT_TBL_SIZE   128

Definition at line 46 of file ixgbe_82599.c.

◆ IXGBE_ATR_COMMON_HASH_KEY

#define IXGBE_ATR_COMMON_HASH_KEY    (IXGBE_ATR_BUCKET_HASH_KEY & IXGBE_ATR_SIGNATURE_HASH_KEY)

Definition at line 1449 of file ixgbe_82599.c.

◆ IXGBE_COMPUTE_BKT_HASH_ITERATION

#define IXGBE_COMPUTE_BKT_HASH_ITERATION (   _n)
Value:
do { \
u32 n = (_n); \
if (IXGBE_ATR_BUCKET_HASH_KEY & (0x01 << n)) \
bucket_hash ^= lo_hash_dword >> n; \
if (IXGBE_ATR_BUCKET_HASH_KEY & (0x01 << (n + 16))) \
bucket_hash ^= hi_hash_dword >> n; \
} while (0)
#define IXGBE_ATR_BUCKET_HASH_KEY
Definition: ixgbe_type.h:3541

Definition at line 1599 of file ixgbe_82599.c.

◆ IXGBE_COMPUTE_SIG_HASH_ITERATION

#define IXGBE_COMPUTE_SIG_HASH_ITERATION (   _n)
Value:
do { \
u32 n = (_n); \
if (IXGBE_ATR_COMMON_HASH_KEY & (0x01 << n)) \
common_hash ^= lo_hash_dword >> n; \
else if (IXGBE_ATR_BUCKET_HASH_KEY & (0x01 << n)) \
bucket_hash ^= lo_hash_dword >> n; \
else if (IXGBE_ATR_SIGNATURE_HASH_KEY & (0x01 << n)) \
sig_hash ^= lo_hash_dword << (16 - n); \
if (IXGBE_ATR_COMMON_HASH_KEY & (0x01 << (n + 16))) \
common_hash ^= hi_hash_dword >> n; \
else if (IXGBE_ATR_BUCKET_HASH_KEY & (0x01 << (n + 16))) \
bucket_hash ^= hi_hash_dword >> n; \
else if (IXGBE_ATR_SIGNATURE_HASH_KEY & (0x01 << (n + 16))) \
sig_hash ^= hi_hash_dword << (16 - n); \
} while (0)
#define IXGBE_ATR_COMMON_HASH_KEY
Definition: ixgbe_82599.c:1449
#define IXGBE_ATR_SIGNATURE_HASH_KEY
Definition: ixgbe_type.h:3542

Definition at line 1451 of file ixgbe_82599.c.

◆ IXGBE_STORE_AS_BE16

#define IXGBE_STORE_AS_BE16 (   _value)     IXGBE_NTOHS(((u16)(_value) >> 8) | ((u16)(_value) << 8))

Definition at line 1701 of file ixgbe_82599.c.

◆ IXGBE_STORE_AS_BE32

#define IXGBE_STORE_AS_BE32 (   _value)
Value:
(((u32)(_value) >> 24) | (((u32)(_value) & 0x00FF0000) >> 8) | \
(((u32)(_value) & 0x0000FF00) << 8) | ((u32)(_value) << 24))
uint32_t u32
Definition: ixgbe_osdep.h:147

Definition at line 1694 of file ixgbe_82599.c.

◆ IXGBE_WRITE_REG_BE32

#define IXGBE_WRITE_REG_BE32 (   a,
  reg,
  value 
)     IXGBE_WRITE_REG((a), (reg), IXGBE_STORE_AS_BE32(IXGBE_NTOHL(value)))

Definition at line 1698 of file ixgbe_82599.c.

Function Documentation

◆ ixgbe_atr_compute_perfect_hash_82599()

void ixgbe_atr_compute_perfect_hash_82599 ( union ixgbe_atr_input input,
union ixgbe_atr_input input_mask 
)

ixgbe_atr_compute_perfect_hash_82599 - Compute the perfect filter hash @input: input bitstream to compute the hash on @input_mask: mask for the input bitstream

This function serves two main purposes. First it applies the input_mask to the atr_input resulting in a cleaned up atr_input data stream. Secondly it computes the hash and stores it in the bkt_hash field at the end of the input byte stream. This way it will be available for future use without needing to recompute the hash.

Definition at line 1619 of file ixgbe_82599.c.

References ixgbe_atr_input::bkt_hash, ixgbe_atr_input::dword_stream, ixgbe_atr_input::formatted, IXGBE_COMPUTE_BKT_HASH_ITERATION, and IXGBE_NTOHL.

Referenced by ixgbe_fdir_add_perfect_filter_82599().

Here is the caller graph for this function:

◆ ixgbe_atr_compute_sig_hash_82599()

u32 ixgbe_atr_compute_sig_hash_82599 ( union ixgbe_atr_hash_dword  input,
union ixgbe_atr_hash_dword  common 
)

ixgbe_atr_compute_sig_hash_82599 - Compute the signature hash @input: input bitstream to compute the hash on @common: compressed common input dword

This function is almost identical to the function above but contains several optimizations such as unwinding all of the loops, letting the compiler work out all of the conditional ifs since the keys are static defines, and computing two keys at once since the hashed dword stream will be the same for both keys.

Definition at line 1479 of file ixgbe_82599.c.

References ixgbe_atr_hash_dword::dword, IXGBE_ATR_HASH_MASK, IXGBE_COMPUTE_SIG_HASH_ITERATION, and IXGBE_NTOHL.

Referenced by ixgbe_fdir_add_signature_filter_82599().

Here is the caller graph for this function:

◆ ixgbe_disable_tx_laser_multispeed_fiber()

void ixgbe_disable_tx_laser_multispeed_fiber ( struct ixgbe_hw hw)

ixgbe_disable_tx_laser_multispeed_fiber - Disable Tx laser @hw: pointer to hardware structure

The base drivers may require better control over SFP+ module PHY states. This includes selectively shutting down the Tx laser on the PHY, effectively halting physical link.

Definition at line 685 of file ixgbe_82599.c.

References ixgbe_check_reset_blocked(), IXGBE_ESDP, IXGBE_ESDP_SDP3, IXGBE_READ_REG, IXGBE_WRITE_FLUSH, IXGBE_WRITE_REG, and usec_delay.

Referenced by ixgbe_flap_tx_laser_multispeed_fiber(), and ixgbe_init_mac_link_ops_82599().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ixgbe_enable_rx_dma_82599()

s32 ixgbe_enable_rx_dma_82599 ( struct ixgbe_hw hw,
u32  regval 
)

ixgbe_enable_rx_dma_82599 - Enable the Rx DMA unit on 82599 @hw: pointer to hardware structure @regval: register value to write to RXCTRL

Enables the Rx DMA unit for 82599

Definition at line 2280 of file ixgbe_82599.c.

References DEBUGFUNC, ixgbe_mac_operations::disable_sec_rx_path, ixgbe_mac_operations::enable_sec_rx_path, ixgbe_disable_rx(), ixgbe_enable_rx(), IXGBE_RXCTRL_RXEN, IXGBE_SUCCESS, ixgbe_hw::mac, and ixgbe_mac_info::ops.

Referenced by ixgbe_init_ops_82599().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ixgbe_enable_tx_laser_multispeed_fiber()

void ixgbe_enable_tx_laser_multispeed_fiber ( struct ixgbe_hw hw)

ixgbe_enable_tx_laser_multispeed_fiber - Enable Tx laser @hw: pointer to hardware structure

The base drivers may require better control over SFP+ module PHY states. This includes selectively turning on the Tx laser on the PHY, effectively starting physical link.

Definition at line 708 of file ixgbe_82599.c.

References IXGBE_ESDP, IXGBE_READ_REG, IXGBE_WRITE_FLUSH, IXGBE_WRITE_REG, and msec_delay.

Referenced by ixgbe_flap_tx_laser_multispeed_fiber(), and ixgbe_init_mac_link_ops_82599().

Here is the caller graph for this function:

◆ ixgbe_fdir_add_perfect_filter_82599()

s32 ixgbe_fdir_add_perfect_filter_82599 ( struct ixgbe_hw hw,
union ixgbe_atr_input input,
union ixgbe_atr_input input_mask,
u16  soft_id,
u8  queue,
bool  cloud_mode 
)

ixgbe_fdir_add_perfect_filter_82599 - Adds a perfect filter @hw: pointer to hardware structure @input: input bitstream @input_mask: mask for the input bitstream @soft_id: software index for the filters @queue: queue index to direct traffic to @cloud_mode: unused

Note that the caller to this function must lock before calling, since the hardware writes must be protected from one another.

Definition at line 2019 of file ixgbe_82599.c.

References DEBUGFUNC, DEBUGOUT, ixgbe_atr_input::dst_port, ixgbe_atr_input::flow_type, ixgbe_atr_input::formatted, ixgbe_atr_compute_perfect_hash_82599(), IXGBE_ATR_FLOW_TYPE_IPV4, IXGBE_ATR_FLOW_TYPE_SCTPV4, IXGBE_ATR_FLOW_TYPE_TCPV4, IXGBE_ATR_FLOW_TYPE_TUNNELED_IPV4, IXGBE_ATR_FLOW_TYPE_TUNNELED_SCTPV4, IXGBE_ATR_FLOW_TYPE_TUNNELED_TCPV4, IXGBE_ATR_FLOW_TYPE_TUNNELED_UDPV4, IXGBE_ATR_FLOW_TYPE_UDPV4, IXGBE_ATR_L4TYPE_IPV6_MASK, IXGBE_ATR_L4TYPE_MASK, IXGBE_ERR_CONFIG, ixgbe_fdir_set_input_mask_82599(), ixgbe_fdir_write_perfect_filter_82599(), ixgbe_atr_input::src_port, and UNREFERENCED_1PARAMETER.

Here is the call graph for this function:

◆ ixgbe_fdir_add_signature_filter_82599()

void ixgbe_fdir_add_signature_filter_82599 ( struct ixgbe_hw hw,
union ixgbe_atr_hash_dword  input,
union ixgbe_atr_hash_dword  common,
u8  queue 
)

ixgbe_atr_add_signature_filter_82599 - Adds a signature hash filter @hw: pointer to hardware structure @input: unique input dword @common: compressed common input dword @queue: queue index to direct traffic to

Note that the tunnel bit in input must not be set when the hardware tunneling support does not exist.

Definition at line 1545 of file ixgbe_82599.c.

References DEBUGFUNC, DEBUGOUT, DEBUGOUT2, ixgbe_atr_hash_dword::flow_type, ixgbe_atr_hash_dword::formatted, ixgbe_atr_compute_sig_hash_82599(), IXGBE_ATR_FLOW_TYPE_SCTPV4, IXGBE_ATR_FLOW_TYPE_SCTPV6, IXGBE_ATR_FLOW_TYPE_TCPV4, IXGBE_ATR_FLOW_TYPE_TCPV6, IXGBE_ATR_FLOW_TYPE_UDPV4, IXGBE_ATR_FLOW_TYPE_UDPV6, IXGBE_ATR_L4TYPE_TUNNEL_MASK, IXGBE_FDIRCMD_CMD_ADD_FLOW, IXGBE_FDIRCMD_FILTER_UPDATE, IXGBE_FDIRCMD_FLOW_TYPE_SHIFT, IXGBE_FDIRCMD_LAST, IXGBE_FDIRCMD_QUEUE_EN, IXGBE_FDIRCMD_RX_QUEUE_SHIFT, IXGBE_FDIRCMD_TUNNEL_FILTER, IXGBE_FDIRHASH, and IXGBE_WRITE_REG64.

Here is the call graph for this function:

◆ ixgbe_fdir_check_cmd_complete()

static s32 ixgbe_fdir_check_cmd_complete ( struct ixgbe_hw hw,
u32 fdircmd 
)
static

ixgbe_fdir_check_cmd_complete - poll to check whether FDIRCMD is complete @hw: pointer to hardware structure @fdircmd: current value of FDIRCMD register

Definition at line 1217 of file ixgbe_82599.c.

References IXGBE_ERR_FDIR_CMD_INCOMPLETE, IXGBE_FDIRCMD, IXGBE_FDIRCMD_CMD_MASK, IXGBE_FDIRCMD_CMD_POLL, IXGBE_READ_REG, IXGBE_SUCCESS, and usec_delay.

Referenced by ixgbe_fdir_erase_perfect_filter_82599(), ixgbe_fdir_write_perfect_filter_82599(), and ixgbe_reinit_fdir_tables_82599().

Here is the caller graph for this function:

◆ ixgbe_fdir_enable_82599()

static void ixgbe_fdir_enable_82599 ( struct ixgbe_hw hw,
u32  fdirctrl 
)
static

ixgbe_fdir_enable_82599 - Initialize Flow Director control registers @hw: pointer to hardware structure @fdirctrl: value to write to flow director control register

Definition at line 1309 of file ixgbe_82599.c.

References DEBUGFUNC, DEBUGOUT, IXGBE_ATR_BUCKET_HASH_KEY, IXGBE_ATR_SIGNATURE_HASH_KEY, IXGBE_FDIR_INIT_DONE_POLL, IXGBE_FDIRCTRL, IXGBE_FDIRCTRL_INIT_DONE, IXGBE_FDIRHKEY, IXGBE_FDIRSKEY, IXGBE_READ_REG, IXGBE_WRITE_FLUSH, IXGBE_WRITE_REG, and msec_delay.

Referenced by ixgbe_init_fdir_perfect_82599(), ixgbe_init_fdir_signature_82599(), and ixgbe_set_fdir_drop_queue_82599().

Here is the caller graph for this function:

◆ ixgbe_fdir_erase_perfect_filter_82599()

◆ ixgbe_fdir_set_input_mask_82599()

◆ ixgbe_fdir_write_perfect_filter_82599()

◆ ixgbe_flap_tx_laser_multispeed_fiber()

void ixgbe_flap_tx_laser_multispeed_fiber ( struct ixgbe_hw hw)

ixgbe_flap_tx_laser_multispeed_fiber - Flap Tx laser @hw: pointer to hardware structure

When the driver changes the link speeds that it can support, it sets autotry_restart to true to indicate that we need to initiate a new autotry session with the link partner. To do so, we set the speed then disable and re-enable the Tx laser, to alert the link partner that it also needs to restart autotry on its end. This is consistent with true clause 37 autoneg, which also involves a loss of signal.

Definition at line 731 of file ixgbe_82599.c.

References ixgbe_mac_info::autotry_restart, DEBUGFUNC, ixgbe_check_reset_blocked(), ixgbe_disable_tx_laser_multispeed_fiber(), ixgbe_enable_tx_laser_multispeed_fiber(), and ixgbe_hw::mac.

Referenced by ixgbe_init_mac_link_ops_82599().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ixgbe_get_fdirtcpm_82599()

static u32 ixgbe_get_fdirtcpm_82599 ( union ixgbe_atr_input input_mask)
static

ixgbe_get_fdirtcpm_82599 - generate a TCP port from atr_input_masks @input_mask: mask to be bit swapped

The source and destination port masks for flow director are bit swapped in that bit 15 effects bit 0, 14 effects 1, 13, 2 etc. In order to generate a correctly swapped value we need to bit swap the mask and that is what is accomplished by this function.

Definition at line 1676 of file ixgbe_82599.c.

References ixgbe_atr_input::dst_port, ixgbe_atr_input::formatted, IXGBE_FDIRTCPM_DPORTM_SHIFT, IXGBE_NTOHS, and ixgbe_atr_input::src_port.

Referenced by ixgbe_fdir_set_input_mask_82599().

Here is the caller graph for this function:

◆ ixgbe_get_link_capabilities_82599()

◆ ixgbe_get_media_type_82599()

◆ ixgbe_get_supported_physical_layer_82599()

u64 ixgbe_get_supported_physical_layer_82599 ( struct ixgbe_hw hw)

ixgbe_get_supported_physical_layer_82599 - Returns physical layer type @hw: pointer to hardware structure

Determines physical layer capabilities of the current configuration.

Definition at line 2192 of file ixgbe_82599.c.

References DEBUGFUNC, ixgbe_phy_operations::identify, IXGBE_AUTOC, IXGBE_AUTOC2, IXGBE_AUTOC2_10G_KR, IXGBE_AUTOC2_10G_SERIAL_PMA_PMD_MASK, IXGBE_AUTOC2_10G_SFI, IXGBE_AUTOC_10G_CX4, IXGBE_AUTOC_10G_KX4, IXGBE_AUTOC_10G_PMA_PMD_MASK, IXGBE_AUTOC_10G_XAUI, IXGBE_AUTOC_1G_KX_BX, IXGBE_AUTOC_1G_PMA_PMD_MASK, IXGBE_AUTOC_KR_SUPP, IXGBE_AUTOC_KX4_SUPP, IXGBE_AUTOC_KX_SUPP, IXGBE_AUTOC_LMS_10G_LINK_NO_AN, IXGBE_AUTOC_LMS_10G_SERIAL, IXGBE_AUTOC_LMS_1G_AN, IXGBE_AUTOC_LMS_1G_LINK_NO_AN, IXGBE_AUTOC_LMS_KX4_KX_KR, IXGBE_AUTOC_LMS_KX4_KX_KR_1G_AN, IXGBE_AUTOC_LMS_MASK, ixgbe_get_supported_phy_sfp_layer_generic(), IXGBE_MDIO_PHY_1000BASET_ABILITY, IXGBE_MDIO_PHY_100BASETX_ABILITY, IXGBE_MDIO_PHY_10GBASET_ABILITY, IXGBE_MDIO_PHY_EXT_ABILITY, IXGBE_MDIO_PMA_PMD_DEV_TYPE, ixgbe_phy_cu_unknown, ixgbe_phy_tn, IXGBE_PHYSICAL_LAYER_1000BASE_BX, IXGBE_PHYSICAL_LAYER_1000BASE_KX, IXGBE_PHYSICAL_LAYER_1000BASE_T, IXGBE_PHYSICAL_LAYER_100BASE_TX, IXGBE_PHYSICAL_LAYER_10GBASE_CX4, IXGBE_PHYSICAL_LAYER_10GBASE_KR, IXGBE_PHYSICAL_LAYER_10GBASE_KX4, IXGBE_PHYSICAL_LAYER_10GBASE_T, IXGBE_PHYSICAL_LAYER_10GBASE_XAUI, IXGBE_PHYSICAL_LAYER_UNKNOWN, IXGBE_READ_REG, ixgbe_phy_info::ops, ixgbe_hw::phy, ixgbe_phy_operations::read_reg, and ixgbe_phy_info::type.

Referenced by ixgbe_init_ops_82599().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ixgbe_identify_phy_82599()

s32 ixgbe_identify_phy_82599 ( struct ixgbe_hw hw)

ixgbe_identify_phy_82599 - Get physical layer module @hw: pointer to hardware structure

Determines the physical layer module found on the current adapter. If PHY already detected, maintains current PHY type in hw struct, otherwise executes the PHY detection routine.

Definition at line 2157 of file ixgbe_82599.c.

References DEBUGFUNC, ixgbe_mac_operations::get_media_type, IXGBE_ERR_SFP_NOT_SUPPORTED, ixgbe_identify_module_generic(), ixgbe_identify_phy_generic(), ixgbe_media_type_copper, ixgbe_phy_none, ixgbe_phy_sfp_unsupported, ixgbe_phy_unknown, IXGBE_SUCCESS, ixgbe_hw::mac, ixgbe_mac_info::ops, ixgbe_hw::phy, and ixgbe_phy_info::type.

Referenced by ixgbe_init_ops_82599().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ixgbe_init_fdir_perfect_82599()

s32 ixgbe_init_fdir_perfect_82599 ( struct ixgbe_hw hw,
u32  fdirctrl,
bool  cloud_mode 
)

ixgbe_init_fdir_perfect_82599 - Initialize Flow Director perfect filters @hw: pointer to hardware structure @fdirctrl: value to write to flow director control register, initially contains just the value of the Rx packet buffer allocation @cloud_mode: true - cloud mode, false - other mode

Definition at line 1378 of file ixgbe_82599.c.

References DEBUGFUNC, IXGBE_FDIR_DROP_QUEUE, ixgbe_fdir_enable_82599(), IXGBE_FDIRCTRL_DROP_Q_SHIFT, IXGBE_FDIRCTRL_FILTERMODE_CLOUD, IXGBE_FDIRCTRL_FILTERMODE_SHIFT, IXGBE_FDIRCTRL_FLEX_SHIFT, IXGBE_FDIRCTRL_FULL_THRESH_SHIFT, IXGBE_FDIRCTRL_MAX_LENGTH_SHIFT, IXGBE_FDIRCTRL_PERFECT_MATCH, IXGBE_FDIRCTRL_REPORT_STATUS, IXGBE_SUCCESS, and UNREFERENCED_1PARAMETER.

Here is the call graph for this function:

◆ ixgbe_init_fdir_signature_82599()

s32 ixgbe_init_fdir_signature_82599 ( struct ixgbe_hw hw,
u32  fdirctrl 
)

ixgbe_init_fdir_signature_82599 - Initialize Flow Director signature filters @hw: pointer to hardware structure @fdirctrl: value to write to flow director control register, initially contains just the value of the Rx packet buffer allocation

Definition at line 1351 of file ixgbe_82599.c.

References DEBUGFUNC, ixgbe_fdir_enable_82599(), IXGBE_FDIRCTRL_FLEX_SHIFT, IXGBE_FDIRCTRL_FULL_THRESH_SHIFT, IXGBE_FDIRCTRL_MAX_LENGTH_SHIFT, and IXGBE_SUCCESS.

Here is the call graph for this function:

◆ ixgbe_init_mac_link_ops_82599()

◆ ixgbe_init_ops_82599()

s32 ixgbe_init_ops_82599 ( struct ixgbe_hw hw)

ixgbe_init_ops_82599 - Inits func ptrs and MAC type @hw: pointer to hardware structure

Initialize the function pointers and assign the MAC type for 82599. Does not touch the hardware.

Definition at line 322 of file ixgbe_82599.c.

References ixgbe_mac_info::arc_subsystem_valid, ixgbe_mac_operations::bypass_rd_eep, ixgbe_mac_operations::bypass_rw, ixgbe_mac_operations::bypass_set, ixgbe_mac_operations::bypass_valid_rd, ixgbe_mac_operations::check_link, ixgbe_mac_operations::clear_vfta, ixgbe_mac_operations::clear_vmdq, DEBUGFUNC, ixgbe_mac_operations::disable_sec_rx_path, ixgbe_hw::eeprom, ixgbe_mac_operations::enable_relaxed_ordering, ixgbe_mac_operations::enable_rx_dma, ixgbe_mac_operations::enable_sec_rx_path, ixgbe_mac_operations::get_device_caps, ixgbe_mac_operations::get_fcoe_boot_status, ixgbe_mac_operations::get_link_capabilities, ixgbe_mac_operations::get_media_type, ixgbe_mac_operations::get_rtrup2tc, ixgbe_mac_operations::get_san_mac_addr, ixgbe_mac_operations::get_supported_physical_layer, ixgbe_mac_operations::get_thermal_sensor_data, ixgbe_mac_operations::get_wwn_prefix, ixgbe_phy_operations::identify, ixgbe_phy_operations::init, ixgbe_mbx_operations::init_params, ixgbe_mac_operations::init_thermal_sensor_thresh, ixgbe_mac_operations::init_uta_tables, ixgbe_mac_operations::insert_mac_addr, IXGBE_82599_MAX_RX_QUEUES, IXGBE_82599_MAX_TX_QUEUES, IXGBE_82599_MC_TBL_SIZE, IXGBE_82599_RAR_ENTRIES, IXGBE_82599_RX_PB_SIZE, IXGBE_82599_VFT_TBL_SIZE, ixgbe_bypass_rd_eep_generic(), ixgbe_bypass_rw_generic(), ixgbe_bypass_set_generic(), ixgbe_bypass_valid_rd_generic(), ixgbe_check_mac_link_generic(), ixgbe_clear_vfta_generic(), ixgbe_clear_vmdq_generic(), ixgbe_dcb_get_rtrup2tc_generic(), ixgbe_disable_sec_rx_path_generic(), ixgbe_enable_relaxed_ordering_gen2(), ixgbe_enable_rx_dma_82599(), ixgbe_enable_sec_rx_path_generic(), IXGBE_FWSM_BY_MAC, IXGBE_FWSM_MODE_MASK, ixgbe_get_device_caps_generic(), ixgbe_get_fcoe_boot_status_generic(), ixgbe_get_link_capabilities_82599(), ixgbe_get_media_type_82599(), ixgbe_get_pcie_msix_count_generic(), ixgbe_get_san_mac_addr_generic(), ixgbe_get_supported_physical_layer_82599(), ixgbe_get_thermal_sensor_data_generic(), ixgbe_get_wwn_prefix_generic(), ixgbe_identify_phy_82599(), ixgbe_init_mac_link_ops_82599(), ixgbe_init_mbx_params_pf(), ixgbe_init_ops_generic(), ixgbe_init_phy_ops_82599(), ixgbe_init_phy_ops_generic(), ixgbe_init_thermal_sensor_thresh_generic(), ixgbe_init_uta_tables_generic(), ixgbe_insert_mac_addr_generic(), ixgbe_read_analog_reg8_82599(), ixgbe_read_eeprom_82599(), ixgbe_read_eeprom_buffer_82599(), IXGBE_READ_REG, ixgbe_reset_hw_82599(), ixgbe_set_fw_drv_ver_generic(), ixgbe_set_mac_anti_spoofing(), ixgbe_set_rxpba_generic(), ixgbe_set_san_mac_addr_generic(), ixgbe_set_vfta_generic(), ixgbe_set_vlan_anti_spoofing(), ixgbe_set_vlvf_generic(), ixgbe_set_vmdq_generic(), ixgbe_set_vmdq_san_mac_generic(), ixgbe_setup_sfp_modules_82599(), ixgbe_start_hw_82599(), ixgbe_write_analog_reg8_82599(), ixgbe_hw::mac, ixgbe_mac_info::max_msix_vectors, ixgbe_mac_info::max_rx_queues, ixgbe_mac_info::max_tx_queues, ixgbe_hw::mbx, ixgbe_mac_info::mcft_size, ixgbe_mac_info::num_rar_entries, ixgbe_eeprom_info::ops, ixgbe_mac_info::ops, ixgbe_phy_info::ops, ixgbe_mbx_info::ops, ixgbe_hw::phy, ixgbe_mac_operations::prot_autoc_read, prot_autoc_read_82599(), ixgbe_mac_operations::prot_autoc_write, prot_autoc_write_82599(), ixgbe_mac_info::rar_highwater, ixgbe_eeprom_operations::read, ixgbe_mac_operations::read_analog_reg8, ixgbe_eeprom_operations::read_buffer, ixgbe_mac_operations::reset_hw, ixgbe_mac_info::rx_pb_size, ixgbe_mac_operations::set_fw_drv_ver, ixgbe_mac_operations::set_mac_anti_spoofing, ixgbe_mac_operations::set_san_mac_addr, ixgbe_mac_operations::set_vfta, ixgbe_mac_operations::set_vlan_anti_spoofing, ixgbe_mac_operations::set_vlvf, ixgbe_mac_operations::set_vmdq, ixgbe_mac_operations::set_vmdq_san_mac, ixgbe_mac_operations::setup_rxpba, ixgbe_mac_operations::setup_sfp, ixgbe_mac_operations::start_hw, ixgbe_mac_info::vft_size, and ixgbe_mac_operations::write_analog_reg8.

Referenced by ixgbe_init_shared_code().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ixgbe_init_phy_ops_82599()

s32 ixgbe_init_phy_ops_82599 ( struct ixgbe_hw hw)

◆ ixgbe_read_analog_reg8_82599()

s32 ixgbe_read_analog_reg8_82599 ( struct ixgbe_hw hw,
u32  reg,
u8 val 
)

ixgbe_read_analog_reg8_82599 - Reads 8 bit Omer analog register @hw: pointer to hardware structure @reg: analog register to read @val: read value

Performs read operation to Omer analog register specified.

Definition at line 2082 of file ixgbe_82599.c.

References DEBUGFUNC, IXGBE_CORECTL, IXGBE_CORECTL_WRITE_CMD, IXGBE_READ_REG, IXGBE_SUCCESS, IXGBE_WRITE_FLUSH, IXGBE_WRITE_REG, and usec_delay.

Referenced by ixgbe_init_ops_82599().

Here is the caller graph for this function:

◆ ixgbe_read_eeprom_82599()

static s32 ixgbe_read_eeprom_82599 ( struct ixgbe_hw hw,
u16  offset,
u16 data 
)
static

ixgbe_read_eeprom_82599 - Read EEPROM word using fastest available method

@hw: pointer to hardware structure @offset: offset of word in the EEPROM to read @data: word read from the EEPROM

Reads a 16 bit word from the EEPROM

Definition at line 2457 of file ixgbe_82599.c.

References DEBUGFUNC, ixgbe_hw::eeprom, ixgbe_eeprom_spi, IXGBE_EERD_MAX_ADDR, IXGBE_ERR_CONFIG, ixgbe_read_eeprom_bit_bang_generic(), ixgbe_read_eerd_generic(), and ixgbe_eeprom_info::type.

Referenced by ixgbe_init_ops_82599().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ixgbe_read_eeprom_buffer_82599()

static s32 ixgbe_read_eeprom_buffer_82599 ( struct ixgbe_hw hw,
u16  offset,
u16  words,
u16 data 
)
static

ixgbe_read_eeprom_buffer_82599 - Read EEPROM word(s) using fastest available method

@hw: pointer to hardware structure @offset: offset of word in EEPROM to read @words: number of words @data: word(s) read from the EEPROM

Retrieves 16 bit word(s) read from EEPROM

Definition at line 2423 of file ixgbe_82599.c.

References DEBUGFUNC, ixgbe_hw::eeprom, ixgbe_eeprom_spi, IXGBE_EERD_MAX_ADDR, IXGBE_ERR_CONFIG, ixgbe_read_eeprom_buffer_bit_bang_generic(), ixgbe_read_eerd_buffer_generic(), and ixgbe_eeprom_info::type.

Referenced by ixgbe_init_ops_82599().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ixgbe_read_i2c_byte_82599()

static s32 ixgbe_read_i2c_byte_82599 ( struct ixgbe_hw hw,
u8  byte_offset,
u8  dev_addr,
u8 data 
)
static

ixgbe_read_i2c_byte_82599 - Reads 8 bit word over I2C @hw: pointer to hardware structure @byte_offset: byte offset to read @dev_addr: address to read from @data: value read

Performs byte read operation to SFP module's EEPROM over I2C interface at a specified device address.

Definition at line 2539 of file ixgbe_82599.c.

References DEBUGFUNC, DEBUGOUT, IXGBE_ERR_I2C, IXGBE_ESDP, IXGBE_ESDP_SDP0, IXGBE_ESDP_SDP1, ixgbe_read_i2c_byte_generic(), IXGBE_READ_REG, IXGBE_WRITE_FLUSH, IXGBE_WRITE_REG, msec_delay, ixgbe_hw::phy, and ixgbe_phy_info::qsfp_shared_i2c_bus.

Referenced by ixgbe_init_phy_ops_82599().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ixgbe_reinit_fdir_tables_82599()

s32 ixgbe_reinit_fdir_tables_82599 ( struct ixgbe_hw hw)

◆ ixgbe_reset_hw_82599()

s32 ixgbe_reset_hw_82599 ( struct ixgbe_hw hw)

ixgbe_reset_hw_82599 - Perform hardware reset @hw: pointer to hardware structure

Resets the hardware by resetting the transmit and receive units, masks and clears all interrupts, perform a PHY reset, and perform a link (MAC) reset.

Definition at line 1038 of file ixgbe_82599.c.

References ixgbe_mac_operations::check_link, ixgbe_mac_operations::clear_vmdq, DEBUGFUNC, DEBUGOUT, ixgbe_mac_info::flags, ixgbe_hw::force_full_reset, ixgbe_mac_operations::get_mac_addr, ixgbe_mac_operations::get_san_mac_addr, ixgbe_mac_operations::get_wwn_prefix, ixgbe_phy_operations::init, ixgbe_mac_operations::init_rx_addrs, IXGBE_AUTOC, IXGBE_AUTOC2, IXGBE_AUTOC2_LINK_DISABLE_MASK, IXGBE_AUTOC2_UPPER_MASK, IXGBE_AUTOC_LMS_MASK, ixgbe_clear_tx_pending(), IXGBE_CLEAR_VMDQ_ALL, IXGBE_CTRL, IXGBE_CTRL_LNK_RST, IXGBE_CTRL_RST, IXGBE_CTRL_RST_MASK, IXGBE_ERR_RESET_FAILED, IXGBE_ERR_SFP_NOT_SUPPORTED, IXGBE_FLAGS_DOUBLE_RESET_REQUIRED, ixgbe_mng_enabled(), IXGBE_RAH_AV, IXGBE_READ_REG, IXGBE_SUCCESS, ixgbe_validate_mac_addr(), IXGBE_WRITE_FLUSH, IXGBE_WRITE_REG, ixgbe_hw::mac, msec_delay, ixgbe_phy_info::multispeed_fiber, ixgbe_mac_info::num_rar_entries, ixgbe_mac_info::ops, ixgbe_phy_info::ops, ixgbe_mac_info::orig_autoc, ixgbe_mac_info::orig_autoc2, ixgbe_mac_info::orig_link_settings_stored, ixgbe_mac_info::perm_addr, ixgbe_hw::phy, ixgbe_mac_operations::prot_autoc_write, ixgbe_phy_operations::reset, ixgbe_phy_info::reset_disable, ixgbe_mac_info::san_addr, ixgbe_mac_info::san_mac_rar_index, ixgbe_mac_operations::set_rar, ixgbe_mac_operations::setup_sfp, ixgbe_phy_info::sfp_setup_needed, ixgbe_mac_operations::stop_adapter, usec_delay, ixgbe_hw::wol_enabled, ixgbe_mac_info::wwnn_prefix, and ixgbe_mac_info::wwpn_prefix.

Referenced by ixgbe_init_ops_82599().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ixgbe_reset_pipeline_82599()

s32 ixgbe_reset_pipeline_82599 ( struct ixgbe_hw hw)

ixgbe_reset_pipeline_82599 - perform pipeline reset

@hw: pointer to hardware structure

Reset pipeline by asserting Restart_AN together with LMS change to ensure full pipeline reset. This function assumes the SW/FW lock is held.

Definition at line 2486 of file ixgbe_82599.c.

References DEBUGOUT, IXGBE_ANLP1, IXGBE_ANLP1_AN_STATE_MASK, IXGBE_AUTOC, IXGBE_AUTOC2, IXGBE_AUTOC2_LINK_DISABLE_MASK, IXGBE_AUTOC_AN_RESTART, IXGBE_AUTOC_LMS_SHIFT, IXGBE_ERR_RESET_FAILED, IXGBE_READ_REG, IXGBE_SUCCESS, IXGBE_WRITE_FLUSH, IXGBE_WRITE_REG, and msec_delay.

Referenced by ixgbe_start_mac_link_82599(), and prot_autoc_write_82599().

Here is the caller graph for this function:

◆ ixgbe_set_fdir_drop_queue_82599()

void ixgbe_set_fdir_drop_queue_82599 ( struct ixgbe_hw hw,
u8  dropqueue 
)

ixgbe_set_fdir_drop_queue_82599 - Set Flow Director drop queue @hw: pointer to hardware structure @dropqueue: Rx queue index used for the dropped packets

Definition at line 1415 of file ixgbe_82599.c.

References DEBUGFUNC, ixgbe_fdir_enable_82599(), IXGBE_FDIRCMD, IXGBE_FDIRCMD_CLEARHT, IXGBE_FDIRCTRL, IXGBE_FDIRCTRL_DROP_NO_MATCH, IXGBE_FDIRCTRL_DROP_Q_MASK, IXGBE_FDIRCTRL_DROP_Q_SHIFT, IXGBE_FDIRCTRL_INIT_DONE, ixgbe_mac_X550, ixgbe_mac_X550EM_a, ixgbe_mac_X550EM_x, IXGBE_READ_REG, IXGBE_WRITE_FLUSH, IXGBE_WRITE_REG, ixgbe_hw::mac, and ixgbe_mac_info::type.

Here is the call graph for this function:

◆ ixgbe_set_hard_rate_select_speed()

void ixgbe_set_hard_rate_select_speed ( struct ixgbe_hw hw,
ixgbe_link_speed  speed 
)

ixgbe_set_hard_rate_select_speed - Set module link speed @hw: pointer to hardware structure @speed: link speed to set

Set module link speed via RS0/RS1 rate select pins.

Definition at line 753 of file ixgbe_82599.c.

References DEBUGOUT, IXGBE_ESDP, IXGBE_ESDP_SDP5, IXGBE_ESDP_SDP5_DIR, IXGBE_LINK_SPEED_10GB_FULL, IXGBE_LINK_SPEED_1GB_FULL, IXGBE_READ_REG, IXGBE_WRITE_FLUSH, and IXGBE_WRITE_REG.

Referenced by ixgbe_init_mac_link_ops_82599().

Here is the caller graph for this function:

◆ ixgbe_setup_copper_link_82599()

static s32 ixgbe_setup_copper_link_82599 ( struct ixgbe_hw hw,
ixgbe_link_speed  speed,
bool  autoneg_wait_to_complete 
)
static

ixgbe_setup_copper_link_82599 - Set the PHY autoneg advertised field @hw: pointer to hardware structure @speed: new link speed @autoneg_wait_to_complete: true if waiting is needed to complete

Restarts link on PHY and MAC based on settings passed in.

Definition at line 1013 of file ixgbe_82599.c.

References DEBUGFUNC, ixgbe_start_mac_link_82599(), ixgbe_phy_info::ops, ixgbe_hw::phy, and ixgbe_phy_operations::setup_link_speed.

Referenced by ixgbe_init_phy_ops_82599().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ixgbe_setup_mac_link_82599()

s32 ixgbe_setup_mac_link_82599 ( struct ixgbe_hw hw,
ixgbe_link_speed  speed,
bool  autoneg_wait_to_complete 
)

◆ ixgbe_setup_mac_link_smartspeed()

s32 ixgbe_setup_mac_link_smartspeed ( struct ixgbe_hw hw,
ixgbe_link_speed  speed,
bool  autoneg_wait_to_complete 
)

ixgbe_setup_mac_link_smartspeed - Set MAC link speed using SmartSpeed @hw: pointer to hardware structure @speed: new link speed @autoneg_wait_to_complete: true when waiting for completion is needed

Implements the Intel SmartSpeed algorithm.

Definition at line 783 of file ixgbe_82599.c.

References ixgbe_phy_info::autoneg_advertised, DEBUGFUNC, DEBUGOUT, IXGBE_AUTOC, IXGBE_AUTOC_KR_SUPP, IXGBE_AUTOC_KX4_KX_SUPP_MASK, ixgbe_check_link(), IXGBE_LINK_SPEED_100_FULL, IXGBE_LINK_SPEED_10GB_FULL, IXGBE_LINK_SPEED_1GB_FULL, IXGBE_LINK_SPEED_UNKNOWN, IXGBE_READ_REG, ixgbe_setup_mac_link_82599(), IXGBE_SMARTSPEED_MAX_RETRIES, IXGBE_SUCCESS, msec_delay, ixgbe_hw::phy, and ixgbe_phy_info::smart_speed_active.

Referenced by ixgbe_init_mac_link_ops_82599().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ixgbe_setup_sfp_modules_82599()

◆ ixgbe_start_hw_82599()

s32 ixgbe_start_hw_82599 ( struct ixgbe_hw hw)

ixgbe_start_hw_82599 - Prepare hardware for Tx/Rx @hw: pointer to hardware structure

Starts the hardware using the generic start_hw function and the generation start_hw function. Then performs revision-specific operations, if any.

Definition at line 2128 of file ixgbe_82599.c.

References ixgbe_mac_info::autotry_restart, DEBUGFUNC, ixgbe_start_hw_gen2(), ixgbe_start_hw_generic(), IXGBE_SUCCESS, ixgbe_verify_fw_version_82599(), and ixgbe_hw::mac.

Referenced by ixgbe_init_ops_82599().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ixgbe_start_mac_link_82599()

s32 ixgbe_start_mac_link_82599 ( struct ixgbe_hw hw,
bool  autoneg_wait_to_complete 
)

ixgbe_start_mac_link_82599 - Setup MAC link settings @hw: pointer to hardware structure @autoneg_wait_to_complete: true when waiting for completion is needed

Configures link settings based on values in the ixgbe_hw struct. Restarts the link. Performs autonegotiation if needed.

Definition at line 617 of file ixgbe_82599.c.

References ixgbe_mac_operations::acquire_swfw_sync, DEBUGFUNC, DEBUGOUT, IXGBE_AUTO_NEG_TIME, IXGBE_AUTOC, IXGBE_AUTOC_LMS_KX4_KX_KR, IXGBE_AUTOC_LMS_KX4_KX_KR_1G_AN, IXGBE_AUTOC_LMS_KX4_KX_KR_SGMII, IXGBE_AUTOC_LMS_MASK, IXGBE_ERR_AUTONEG_NOT_COMPLETE, IXGBE_GSSR_MAC_CSR_SM, IXGBE_LINKS, IXGBE_LINKS_KX_AN_COMP, IXGBE_READ_REG, ixgbe_reset_pipeline_82599(), IXGBE_SUCCESS, ixgbe_verify_lesm_fw_enabled_82599(), ixgbe_hw::mac, msec_delay, ixgbe_mac_info::ops, and ixgbe_mac_operations::release_swfw_sync.

Referenced by ixgbe_setup_copper_link_82599().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ixgbe_stop_mac_link_on_d3_82599()

void ixgbe_stop_mac_link_on_d3_82599 ( struct ixgbe_hw hw)

ixgbe_stop_mac_link_on_d3_82599 - Disables link on D3 @hw: pointer to hardware structure

Disables link during D3 power down sequence.

Definition at line 593 of file ixgbe_82599.c.

References DEBUGFUNC, IXGBE_AUTOC2, IXGBE_AUTOC2_LINK_DISABLE_ON_D3_MASK, IXGBE_EEPROM_CCD_BIT, IXGBE_EEPROM_CTRL_2, ixgbe_mng_present(), ixgbe_read_eeprom(), IXGBE_READ_REG, IXGBE_WRITE_REG, and ixgbe_hw::wol_enabled.

Referenced by ixgbe_if_stop().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ixgbe_verify_fw_version_82599()

static s32 ixgbe_verify_fw_version_82599 ( struct ixgbe_hw hw)
static

ixgbe_verify_fw_version_82599 - verify FW version for 82599 @hw: pointer to hardware structure

Verifies that installed the firmware version is 0.6 or higher for SFI devices. All 82599 SFI devices should have version 0.6 or higher.

Returns IXGBE_ERR_EEPROM_VERSION if the FW is not present or if the FW version is not supported.

Definition at line 2314 of file ixgbe_82599.c.

References DEBUGFUNC, ixgbe_hw::eeprom, ERROR_REPORT2, IXGBE_ERR_EEPROM_VERSION, IXGBE_ERROR_INVALID_STATE, IXGBE_FW_PASSTHROUGH_PATCH_CONFIG_PTR, IXGBE_FW_PATCH_VERSION_4, IXGBE_FW_PTR, ixgbe_media_type_fiber, IXGBE_SUCCESS, ixgbe_phy_info::media_type, ixgbe_eeprom_info::ops, ixgbe_hw::phy, and ixgbe_eeprom_operations::read.

Referenced by ixgbe_start_hw_82599().

Here is the caller graph for this function:

◆ ixgbe_verify_lesm_fw_enabled_82599()

bool ixgbe_verify_lesm_fw_enabled_82599 ( struct ixgbe_hw hw)

ixgbe_verify_lesm_fw_enabled_82599 - Checks LESM FW module state. @hw: pointer to hardware structure

Returns true if the LESM FW module is present and enabled. Otherwise returns false. Smart Speed must be disabled if LESM FW module is enabled.

Definition at line 2375 of file ixgbe_82599.c.

References DEBUGFUNC, ixgbe_hw::eeprom, IXGBE_FW_LESM_PARAMETERS_PTR, IXGBE_FW_LESM_STATE_1, IXGBE_FW_LESM_STATE_ENABLED, IXGBE_FW_PTR, IXGBE_SUCCESS, ixgbe_eeprom_info::ops, and ixgbe_eeprom_operations::read.

Referenced by ixgbe_init_mac_link_ops_82599(), ixgbe_start_mac_link_82599(), prot_autoc_read_82599(), and prot_autoc_write_82599().

Here is the caller graph for this function:

◆ ixgbe_write_analog_reg8_82599()

s32 ixgbe_write_analog_reg8_82599 ( struct ixgbe_hw hw,
u32  reg,
u8  val 
)

ixgbe_write_analog_reg8_82599 - Writes 8 bit Omer analog register @hw: pointer to hardware structure @reg: atlas register to write @val: value to write

Performs write operation to Omer analog register specified.

Definition at line 2106 of file ixgbe_82599.c.

References DEBUGFUNC, IXGBE_CORECTL, IXGBE_SUCCESS, IXGBE_WRITE_FLUSH, IXGBE_WRITE_REG, and usec_delay.

Referenced by ixgbe_init_ops_82599().

Here is the caller graph for this function:

◆ ixgbe_write_i2c_byte_82599()

static s32 ixgbe_write_i2c_byte_82599 ( struct ixgbe_hw hw,
u8  byte_offset,
u8  dev_addr,
u8  data 
)
static

ixgbe_write_i2c_byte_82599 - Writes 8 bit word over I2C @hw: pointer to hardware structure @byte_offset: byte offset to write @dev_addr: address to read from @data: value to write

Performs byte write operation to SFP module's EEPROM over I2C interface at a specified device address.

Definition at line 2597 of file ixgbe_82599.c.

References DEBUGFUNC, DEBUGOUT, IXGBE_ERR_I2C, IXGBE_ESDP, IXGBE_ESDP_SDP0, IXGBE_ESDP_SDP1, IXGBE_READ_REG, IXGBE_WRITE_FLUSH, ixgbe_write_i2c_byte_generic(), IXGBE_WRITE_REG, msec_delay, ixgbe_hw::phy, and ixgbe_phy_info::qsfp_shared_i2c_bus.

Referenced by ixgbe_init_phy_ops_82599().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ prot_autoc_read_82599()

s32 prot_autoc_read_82599 ( struct ixgbe_hw hw,
bool locked,
u32 reg_val 
)

prot_autoc_read_82599 - Hides MAC differences needed for AUTOC read @hw: pointer to hardware structure @locked: Return the if we locked for this read. @reg_val: Value we read from AUTOC

For this part (82599) we need to wrap read-modify-writes with a possible FW/SW lock. It is assumed this lock will be freed with the next prot_autoc_write_82599().

Definition at line 251 of file ixgbe_82599.c.

References ixgbe_mac_operations::acquire_swfw_sync, IXGBE_AUTOC, IXGBE_ERR_SWFW_SYNC, IXGBE_GSSR_MAC_CSR_SM, IXGBE_READ_REG, IXGBE_SUCCESS, ixgbe_verify_lesm_fw_enabled_82599(), ixgbe_hw::mac, and ixgbe_mac_info::ops.

Referenced by ixgbe_init_ops_82599().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ prot_autoc_write_82599()

s32 prot_autoc_write_82599 ( struct ixgbe_hw hw,
u32  autoc,
bool  locked 
)

prot_autoc_write_82599 - Hides MAC differences needed for AUTOC write @hw: pointer to hardware structure @autoc: value to write to AUTOC @locked: bool to indicate whether the SW/FW lock was already taken by previous proc_autoc_read_82599.

This part (82599) may need to hold the SW/FW lock around all writes to AUTOC. Likewise after a write we need to do a pipeline reset.

Definition at line 280 of file ixgbe_82599.c.

References ixgbe_mac_operations::acquire_swfw_sync, IXGBE_AUTOC, ixgbe_check_reset_blocked(), IXGBE_ERR_SWFW_SYNC, IXGBE_GSSR_MAC_CSR_SM, ixgbe_reset_pipeline_82599(), IXGBE_SUCCESS, ixgbe_verify_lesm_fw_enabled_82599(), IXGBE_WRITE_REG, ixgbe_hw::mac, ixgbe_mac_info::ops, and ixgbe_mac_operations::release_swfw_sync.

Referenced by ixgbe_init_ops_82599().

Here is the call graph for this function:
Here is the caller graph for this function: