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

Go to the source code of this file.

Macros

#define IXGBE_82598_MAX_TX_QUEUES   32
 
#define IXGBE_82598_MAX_RX_QUEUES   64
 
#define IXGBE_82598_RAR_ENTRIES   16
 
#define IXGBE_82598_MC_TBL_SIZE   128
 
#define IXGBE_82598_VFT_TBL_SIZE   128
 
#define IXGBE_82598_RX_PB_SIZE   512
 

Functions

static s32 ixgbe_get_link_capabilities_82598 (struct ixgbe_hw *hw, ixgbe_link_speed *speed, bool *autoneg)
 
static enum ixgbe_media_type ixgbe_get_media_type_82598 (struct ixgbe_hw *hw)
 
static s32 ixgbe_start_mac_link_82598 (struct ixgbe_hw *hw, bool autoneg_wait_to_complete)
 
static s32 ixgbe_check_mac_link_82598 (struct ixgbe_hw *hw, ixgbe_link_speed *speed, bool *link_up, bool link_up_wait_to_complete)
 
static s32 ixgbe_setup_mac_link_82598 (struct ixgbe_hw *hw, ixgbe_link_speed speed, bool autoneg_wait_to_complete)
 
static s32 ixgbe_setup_copper_link_82598 (struct ixgbe_hw *hw, ixgbe_link_speed speed, bool autoneg_wait_to_complete)
 
static s32 ixgbe_reset_hw_82598 (struct ixgbe_hw *hw)
 
static s32 ixgbe_clear_vmdq_82598 (struct ixgbe_hw *hw, u32 rar, u32 vmdq)
 
static s32 ixgbe_clear_vfta_82598 (struct ixgbe_hw *hw)
 
static void ixgbe_set_rxpba_82598 (struct ixgbe_hw *hw, int num_pb, u32 headroom, int strategy)
 
static s32 ixgbe_read_i2c_sff8472_82598 (struct ixgbe_hw *hw, u8 byte_offset, u8 *sff8472_data)
 
void ixgbe_set_pcie_completion_timeout (struct ixgbe_hw *hw)
 
s32 ixgbe_init_ops_82598 (struct ixgbe_hw *hw)
 
s32 ixgbe_init_phy_ops_82598 (struct ixgbe_hw *hw)
 
s32 ixgbe_start_hw_82598 (struct ixgbe_hw *hw)
 
s32 ixgbe_fc_enable_82598 (struct ixgbe_hw *hw)
 
static s32 ixgbe_validate_link_ready (struct ixgbe_hw *hw)
 
s32 ixgbe_set_vmdq_82598 (struct ixgbe_hw *hw, u32 rar, u32 vmdq)
 
s32 ixgbe_set_vfta_82598 (struct ixgbe_hw *hw, u32 vlan, u32 vind, bool vlan_on, bool vlvf_bypass)
 
s32 ixgbe_read_analog_reg8_82598 (struct ixgbe_hw *hw, u32 reg, u8 *val)
 
s32 ixgbe_write_analog_reg8_82598 (struct ixgbe_hw *hw, u32 reg, u8 val)
 
static s32 ixgbe_read_i2c_phy_82598 (struct ixgbe_hw *hw, u8 dev_addr, u8 byte_offset, u8 *eeprom_data)
 
s32 ixgbe_read_i2c_eeprom_82598 (struct ixgbe_hw *hw, u8 byte_offset, u8 *eeprom_data)
 
u64 ixgbe_get_supported_physical_layer_82598 (struct ixgbe_hw *hw)
 
void ixgbe_set_lan_id_multi_port_pcie_82598 (struct ixgbe_hw *hw)
 
void ixgbe_enable_relaxed_ordering_82598 (struct ixgbe_hw *hw)
 
s32 ixgbe_enable_rx_dma_82598 (struct ixgbe_hw *hw, u32 regval)
 

Macro Definition Documentation

◆ IXGBE_82598_MAX_RX_QUEUES

#define IXGBE_82598_MAX_RX_QUEUES   64

Definition at line 43 of file ixgbe_82598.c.

◆ IXGBE_82598_MAX_TX_QUEUES

#define IXGBE_82598_MAX_TX_QUEUES   32

Definition at line 42 of file ixgbe_82598.c.

◆ IXGBE_82598_MC_TBL_SIZE

#define IXGBE_82598_MC_TBL_SIZE   128

Definition at line 45 of file ixgbe_82598.c.

◆ IXGBE_82598_RAR_ENTRIES

#define IXGBE_82598_RAR_ENTRIES   16

Definition at line 44 of file ixgbe_82598.c.

◆ IXGBE_82598_RX_PB_SIZE

#define IXGBE_82598_RX_PB_SIZE   512

Definition at line 47 of file ixgbe_82598.c.

◆ IXGBE_82598_VFT_TBL_SIZE

#define IXGBE_82598_VFT_TBL_SIZE   128

Definition at line 46 of file ixgbe_82598.c.

Function Documentation

◆ ixgbe_check_mac_link_82598()

static s32 ixgbe_check_mac_link_82598 ( struct ixgbe_hw hw,
ixgbe_link_speed speed,
bool link_up,
bool  link_up_wait_to_complete 
)
static

ixgbe_check_mac_link_82598 - Get link/speed status @hw: pointer to hardware structure @speed: pointer to link speed @link_up: true is link is up, false otherwise @link_up_wait_to_complete: bool used to wait for link up or not

Reads the links register to determine if link is up and the current speed

Definition at line 643 of file ixgbe_82598.c.

References DEBUGFUNC, ixgbe_hw::device_id, IXGBE_DEV_ID_82598AT2, IXGBE_LINK_SPEED_10GB_FULL, IXGBE_LINK_SPEED_1GB_FULL, IXGBE_LINKS, IXGBE_LINKS_SPEED, IXGBE_LINKS_UP, ixgbe_phy_nl, IXGBE_READ_REG, IXGBE_SUCCESS, IXGBE_TWINAX_DEV, ixgbe_validate_link_ready(), ixgbe_hw::mac, ixgbe_mac_info::max_link_up_time, msec_delay, ixgbe_phy_info::ops, ixgbe_hw::phy, ixgbe_phy_operations::read_reg, and ixgbe_phy_info::type.

Referenced by ixgbe_init_ops_82598().

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

◆ ixgbe_clear_vfta_82598()

static s32 ixgbe_clear_vfta_82598 ( struct ixgbe_hw hw)
static

ixgbe_clear_vfta_82598 - Clear VLAN filter table @hw: pointer to hardware structure

Clears the VLAN filer table, and the VMDq index associated with the filter

Definition at line 1054 of file ixgbe_82598.c.

References DEBUGFUNC, IXGBE_SUCCESS, IXGBE_VFTA, IXGBE_VFTAVIND, IXGBE_WRITE_REG, ixgbe_hw::mac, and ixgbe_mac_info::vft_size.

Referenced by ixgbe_init_ops_82598().

Here is the caller graph for this function:

◆ ixgbe_clear_vmdq_82598()

static s32 ixgbe_clear_vmdq_82598 ( struct ixgbe_hw hw,
u32  rar,
u32  vmdq 
)
static

ixgbe_clear_vmdq_82598 - Disassociate a VMDq set index from an rx address @hw: pointer to hardware struct @rar: receive address register index to associate with a VMDq index @vmdq: VMDq clear index (not used in 82598, but elsewhere)

Definition at line 973 of file ixgbe_82598.c.

References DEBUGOUT1, IXGBE_ERR_INVALID_ARGUMENT, IXGBE_RAH, IXGBE_RAH_VIND_MASK, IXGBE_READ_REG, IXGBE_SUCCESS, IXGBE_WRITE_REG, ixgbe_hw::mac, ixgbe_mac_info::num_rar_entries, and UNREFERENCED_1PARAMETER.

Referenced by ixgbe_init_ops_82598().

Here is the caller graph for this function:

◆ ixgbe_enable_relaxed_ordering_82598()

void ixgbe_enable_relaxed_ordering_82598 ( struct ixgbe_hw hw)

ixgbe_enable_relaxed_ordering_82598 - enable relaxed ordering @hw: pointer to hardware structure

Definition at line 1363 of file ixgbe_82598.c.

References DEBUGFUNC, IXGBE_DCA_MAX_QUEUES_82598, IXGBE_DCA_RXCTRL, IXGBE_DCA_RXCTRL_DATA_WRO_EN, IXGBE_DCA_RXCTRL_HEAD_WRO_EN, IXGBE_DCA_TXCTRL, IXGBE_DCA_TXCTRL_DESC_WRO_EN, IXGBE_READ_REG, IXGBE_WRITE_REG, ixgbe_hw::mac, ixgbe_mac_info::max_rx_queues, and ixgbe_mac_info::max_tx_queues.

Referenced by ixgbe_init_ops_82598().

Here is the caller graph for this function:

◆ ixgbe_enable_rx_dma_82598()

s32 ixgbe_enable_rx_dma_82598 ( struct ixgbe_hw hw,
u32  regval 
)

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

Enables the Rx DMA unit

Definition at line 1435 of file ixgbe_82598.c.

References DEBUGFUNC, IXGBE_RXCTRL, IXGBE_SUCCESS, and IXGBE_WRITE_REG.

Referenced by ixgbe_init_ops_82598().

Here is the caller graph for this function:

◆ ixgbe_fc_enable_82598()

◆ ixgbe_get_link_capabilities_82598()

static s32 ixgbe_get_link_capabilities_82598 ( struct ixgbe_hw hw,
ixgbe_link_speed speed,
bool autoneg 
)
static

ixgbe_get_link_capabilities_82598 - Determines link capabilities @hw: pointer to hardware structure @speed: pointer to link speed @autoneg: boolean auto-negotiation value

Determines the link capabilities by reading the AUTOC register.

Definition at line 297 of file ixgbe_82598.c.

References DEBUGFUNC, IXGBE_AUTOC, IXGBE_AUTOC_KX4_SUPP, IXGBE_AUTOC_KX_SUPP, IXGBE_AUTOC_LMS_10G_LINK_NO_AN, IXGBE_AUTOC_LMS_1G_AN, IXGBE_AUTOC_LMS_1G_LINK_NO_AN, IXGBE_AUTOC_LMS_KX4_AN, IXGBE_AUTOC_LMS_KX4_AN_1G_AN, IXGBE_AUTOC_LMS_MASK, IXGBE_ERR_LINK_SETUP, IXGBE_LINK_SPEED_10GB_FULL, IXGBE_LINK_SPEED_1GB_FULL, IXGBE_LINK_SPEED_UNKNOWN, IXGBE_READ_REG, IXGBE_SUCCESS, ixgbe_hw::mac, ixgbe_mac_info::orig_autoc, and ixgbe_mac_info::orig_link_settings_stored.

Referenced by ixgbe_init_ops_82598().

Here is the caller graph for this function:

◆ ixgbe_get_media_type_82598()

◆ ixgbe_get_supported_physical_layer_82598()

u64 ixgbe_get_supported_physical_layer_82598 ( struct ixgbe_hw hw)

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

Determines physical layer capabilities of the current configuration.

Definition at line 1228 of file ixgbe_82598.c.

References DEBUGFUNC, ixgbe_hw::device_id, ixgbe_phy_operations::identify, ixgbe_phy_operations::identify_sfp, IXGBE_AUTOC, IXGBE_AUTOC_10G_CX4, IXGBE_AUTOC_10G_KX4, IXGBE_AUTOC_10G_PMA_PMD_MASK, IXGBE_AUTOC_1G_KX, IXGBE_AUTOC_1G_PMA_PMD_MASK, IXGBE_AUTOC_KX4_SUPP, IXGBE_AUTOC_KX_SUPP, IXGBE_AUTOC_LMS_10G_LINK_NO_AN, IXGBE_AUTOC_LMS_1G_AN, IXGBE_AUTOC_LMS_1G_LINK_NO_AN, IXGBE_AUTOC_LMS_KX4_AN, IXGBE_AUTOC_LMS_KX4_AN_1G_AN, IXGBE_AUTOC_LMS_MASK, IXGBE_DEV_ID_82598_DA_DUAL_PORT, IXGBE_DEV_ID_82598_SR_DUAL_PORT_EM, IXGBE_DEV_ID_82598AF_DUAL_PORT, IXGBE_DEV_ID_82598AF_SINGLE_PORT, IXGBE_DEV_ID_82598EB_XF_LR, 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_nl, 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_KX4, IXGBE_PHYSICAL_LAYER_10GBASE_LR, IXGBE_PHYSICAL_LAYER_10GBASE_SR, IXGBE_PHYSICAL_LAYER_10GBASE_T, IXGBE_PHYSICAL_LAYER_SFP_PLUS_CU, IXGBE_PHYSICAL_LAYER_UNKNOWN, IXGBE_READ_REG, ixgbe_sfp_type_da_cu, ixgbe_sfp_type_lr, ixgbe_sfp_type_sr, ixgbe_phy_info::ops, ixgbe_hw::phy, ixgbe_phy_operations::read_reg, ixgbe_phy_info::sfp_type, and ixgbe_phy_info::type.

Referenced by ixgbe_init_ops_82598().

Here is the caller graph for this function:

◆ ixgbe_init_ops_82598()

s32 ixgbe_init_ops_82598 ( struct ixgbe_hw hw)

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

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

Definition at line 120 of file ixgbe_82598.c.

References ixgbe_mac_operations::check_link, ixgbe_mac_operations::clear_vfta, ixgbe_mac_operations::clear_vmdq, DEBUGFUNC, ixgbe_mac_operations::enable_relaxed_ordering, ixgbe_mac_operations::enable_rx_dma, ixgbe_mac_operations::fc_enable, ixgbe_mac_operations::flap_tx_laser, ixgbe_mac_operations::get_link_capabilities, ixgbe_mac_operations::get_media_type, ixgbe_mac_operations::get_rtrup2tc, ixgbe_mac_operations::get_supported_physical_layer, ixgbe_phy_operations::init, IXGBE_82598_MAX_RX_QUEUES, IXGBE_82598_MAX_TX_QUEUES, IXGBE_82598_MC_TBL_SIZE, IXGBE_82598_RAR_ENTRIES, IXGBE_82598_RX_PB_SIZE, IXGBE_82598_VFT_TBL_SIZE, ixgbe_check_mac_link_82598(), ixgbe_clear_vfta_82598(), ixgbe_clear_vmdq_82598(), ixgbe_enable_relaxed_ordering_82598(), ixgbe_enable_rx_dma_82598(), ixgbe_fc_enable_82598(), ixgbe_get_link_capabilities_82598(), ixgbe_get_media_type_82598(), ixgbe_get_pcie_msix_count_generic(), ixgbe_get_supported_physical_layer_82598(), ixgbe_init_ops_generic(), ixgbe_init_phy_ops_82598(), ixgbe_init_phy_ops_generic(), ixgbe_read_analog_reg8_82598(), ixgbe_read_i2c_eeprom_82598(), ixgbe_read_i2c_sff8472_82598(), ixgbe_reset_hw_82598(), ixgbe_set_lan_id_multi_port_pcie_82598(), ixgbe_set_rxpba_82598(), ixgbe_set_vfta_82598(), ixgbe_set_vmdq_82598(), ixgbe_setup_mac_link_82598(), ixgbe_start_hw_82598(), ixgbe_write_analog_reg8_82598(), ixgbe_hw::mac, ixgbe_mac_info::max_msix_vectors, ixgbe_mac_info::max_rx_queues, ixgbe_mac_info::max_tx_queues, ixgbe_mac_info::mcft_size, ixgbe_mac_info::num_rar_entries, ixgbe_mac_info::ops, ixgbe_phy_info::ops, ixgbe_hw::phy, ixgbe_mac_operations::read_analog_reg8, ixgbe_phy_operations::read_i2c_eeprom, ixgbe_phy_operations::read_i2c_sff8472, ixgbe_mac_operations::reset_hw, ixgbe_mac_info::rx_pb_size, ixgbe_mac_operations::set_fw_drv_ver, ixgbe_mac_operations::set_lan_id, ixgbe_mac_operations::set_vfta, ixgbe_mac_operations::set_vlvf, ixgbe_mac_operations::set_vmdq, ixgbe_mac_operations::setup_link, ixgbe_mac_operations::setup_rxpba, 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_82598()

◆ ixgbe_read_analog_reg8_82598()

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

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

Performs read operation to Atlas analog register specified.

Definition at line 1080 of file ixgbe_82598.c.

References DEBUGFUNC, IXGBE_ATLASCTL, IXGBE_ATLASCTL_WRITE_CMD, IXGBE_READ_REG, IXGBE_SUCCESS, IXGBE_WRITE_FLUSH, IXGBE_WRITE_REG, and usec_delay.

Referenced by ixgbe_init_ops_82598().

Here is the caller graph for this function:

◆ ixgbe_read_i2c_eeprom_82598()

s32 ixgbe_read_i2c_eeprom_82598 ( struct ixgbe_hw hw,
u8  byte_offset,
u8 eeprom_data 
)

ixgbe_read_i2c_eeprom_82598 - Reads 8 bit word over I2C interface. @hw: pointer to hardware structure @byte_offset: EEPROM byte offset to read @eeprom_data: value read

Performs 8 byte read operation to SFP module's EEPROM over I2C interface.

Definition at line 1200 of file ixgbe_82598.c.

References IXGBE_I2C_EEPROM_DEV_ADDR, and ixgbe_read_i2c_phy_82598().

Referenced by ixgbe_init_ops_82598().

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

◆ ixgbe_read_i2c_phy_82598()

static s32 ixgbe_read_i2c_phy_82598 ( struct ixgbe_hw hw,
u8  dev_addr,
u8  byte_offset,
u8 eeprom_data 
)
static

◆ ixgbe_read_i2c_sff8472_82598()

static s32 ixgbe_read_i2c_sff8472_82598 ( struct ixgbe_hw hw,
u8  byte_offset,
u8 sff8472_data 
)
static

ixgbe_read_i2c_sff8472_82598 - Reads 8 bit word over I2C interface. @hw: pointer to hardware structure @byte_offset: byte offset at address 0xA2 @sff8472_data: value read

Performs 8 byte read operation to SFP module's SFF-8472 data over I2C

Definition at line 1215 of file ixgbe_82598.c.

References IXGBE_I2C_EEPROM_DEV_ADDR2, and ixgbe_read_i2c_phy_82598().

Referenced by ixgbe_init_ops_82598().

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

◆ ixgbe_reset_hw_82598()

◆ ixgbe_set_lan_id_multi_port_pcie_82598()

void ixgbe_set_lan_id_multi_port_pcie_82598 ( struct ixgbe_hw hw)

ixgbe_set_lan_id_multi_port_pcie_82598 - Set LAN id for PCIe multiple port devices. @hw: pointer to the HW structure

Calls common function and corrects issue with some single port devices that enable LAN1 but not LAN0.

Definition at line 1332 of file ixgbe_82598.c.

References ixgbe_hw::bus, DEBUGFUNC, ixgbe_hw::eeprom, ixgbe_bus_info::func, IXGBE_PCIE_CTRL2, IXGBE_PCIE_CTRL2_DISABLE_SELECT, IXGBE_PCIE_CTRL2_DUMMY_ENABLE, IXGBE_PCIE_CTRL2_LAN_DISABLE, IXGBE_PCIE_GENERAL_PTR, ixgbe_set_lan_id_multi_port_pcie(), ixgbe_eeprom_info::ops, and ixgbe_eeprom_operations::read.

Referenced by ixgbe_init_ops_82598().

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

◆ ixgbe_set_pcie_completion_timeout()

void ixgbe_set_pcie_completion_timeout ( struct ixgbe_hw hw)

ixgbe_set_pcie_completion_timeout - set pci-e completion timeout @hw: pointer to the HW structure

The defaults for 82598 should be in the range of 50us to 50ms, however the hardware default for these parts is 500us to 1ms which is less than the 10ms recommended by the pci-e spec. To address this we need to increase the value to either 10ms to 250ms for capability version 1 config, or 16ms to 55ms for version 2.

Definition at line 81 of file ixgbe_82598.c.

References IXGBE_GCR, IXGBE_GCR_CAP_VER2, IXGBE_GCR_CMPL_TMOUT_10ms, IXGBE_GCR_CMPL_TMOUT_MASK, IXGBE_PCI_DEVICE_CONTROL2, IXGBE_PCI_DEVICE_CONTROL2_16ms, IXGBE_READ_PCIE_WORD, IXGBE_READ_REG, IXGBE_WRITE_PCIE_WORD, and IXGBE_WRITE_REG.

Referenced by ixgbe_start_hw_82598().

Here is the caller graph for this function:

◆ ixgbe_set_rxpba_82598()

static void ixgbe_set_rxpba_82598 ( struct ixgbe_hw hw,
int  num_pb,
u32  headroom,
int  strategy 
)
static

ixgbe_set_rxpba_82598 - Initialize RX packet buffer @hw: pointer to hardware structure @num_pb: number of packet buffers to allocate @headroom: reserve n KB of headroom @strategy: packet buffer allocation strategy

Definition at line 1395 of file ixgbe_82598.c.

References IXGBE_MAX_PACKET_BUFFERS, IXGBE_RXPBSIZE, IXGBE_RXPBSIZE_48KB, IXGBE_RXPBSIZE_64KB, IXGBE_RXPBSIZE_80KB, IXGBE_TXPBSIZE, IXGBE_TXPBSIZE_40KB, IXGBE_WRITE_REG, PBA_STRATEGY_EQUAL, PBA_STRATEGY_WEIGHTED, and UNREFERENCED_1PARAMETER.

Referenced by ixgbe_init_ops_82598().

Here is the caller graph for this function:

◆ ixgbe_set_vfta_82598()

s32 ixgbe_set_vfta_82598 ( struct ixgbe_hw hw,
u32  vlan,
u32  vind,
bool  vlan_on,
bool  vlvf_bypass 
)

ixgbe_set_vfta_82598 - Set VLAN filter table @hw: pointer to hardware structure @vlan: VLAN id to write to VLAN filter @vind: VMDq output index that maps queue to VLAN id in VFTA @vlan_on: boolean flag to turn on/off VLAN in VFTA @vlvf_bypass: boolean flag - unused

Turn on/off specified VLAN in the VLAN filter table.

Definition at line 1005 of file ixgbe_82598.c.

References DEBUGFUNC, IXGBE_ERR_PARAM, IXGBE_READ_REG, IXGBE_SUCCESS, IXGBE_VFTA, IXGBE_VFTAVIND, IXGBE_WRITE_REG, and UNREFERENCED_1PARAMETER.

Referenced by ixgbe_init_ops_82598().

Here is the caller graph for this function:

◆ ixgbe_set_vmdq_82598()

s32 ixgbe_set_vmdq_82598 ( struct ixgbe_hw hw,
u32  rar,
u32  vmdq 
)

ixgbe_set_vmdq_82598 - Associate a VMDq set index with a rx address @hw: pointer to hardware struct @rar: receive address register index to associate with a VMDq index @vmdq: VMDq set index

Definition at line 947 of file ixgbe_82598.c.

References DEBUGFUNC, DEBUGOUT1, IXGBE_ERR_INVALID_ARGUMENT, IXGBE_RAH, IXGBE_RAH_VIND_MASK, IXGBE_RAH_VIND_SHIFT, IXGBE_READ_REG, IXGBE_SUCCESS, IXGBE_WRITE_REG, ixgbe_hw::mac, and ixgbe_mac_info::num_rar_entries.

Referenced by ixgbe_init_ops_82598().

Here is the caller graph for this function:

◆ ixgbe_setup_copper_link_82598()

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

ixgbe_setup_copper_link_82598 - 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

Sets the link speed in the AUTOC register in the MAC and restarts link.

Definition at line 786 of file ixgbe_82598.c.

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

Referenced by ixgbe_init_phy_ops_82598().

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

◆ ixgbe_setup_mac_link_82598()

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

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

Set the link speed in the AUTOC register and restarts link.

Definition at line 732 of file ixgbe_82598.c.

References DEBUGFUNC, IXGBE_AUTOC, IXGBE_AUTOC_KX4_SUPP, IXGBE_AUTOC_KX_SUPP, IXGBE_AUTOC_LMS_KX4_AN, IXGBE_AUTOC_LMS_KX4_AN_1G_AN, IXGBE_AUTOC_LMS_MASK, IXGBE_ERR_LINK_SETUP, ixgbe_get_link_capabilities(), IXGBE_LINK_SPEED_10GB_FULL, IXGBE_LINK_SPEED_1GB_FULL, IXGBE_LINK_SPEED_UNKNOWN, IXGBE_READ_REG, ixgbe_start_mac_link_82598(), IXGBE_SUCCESS, and IXGBE_WRITE_REG.

Referenced by ixgbe_init_ops_82598().

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

◆ ixgbe_start_hw_82598()

s32 ixgbe_start_hw_82598 ( struct ixgbe_hw hw)

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

Starts the hardware using the generic start_hw function. Disables relaxed ordering Then set pcie completion timeout

Definition at line 255 of file ixgbe_82598.c.

References DEBUGFUNC, IXGBE_DCA_MAX_QUEUES_82598, IXGBE_DCA_RXCTRL, IXGBE_DCA_RXCTRL_DATA_WRO_EN, IXGBE_DCA_RXCTRL_HEAD_WRO_EN, IXGBE_DCA_TXCTRL, IXGBE_READ_REG, ixgbe_set_pcie_completion_timeout(), ixgbe_start_hw_generic(), IXGBE_SUCCESS, IXGBE_WRITE_REG, ixgbe_hw::mac, ixgbe_mac_info::max_rx_queues, and ixgbe_mac_info::max_tx_queues.

Referenced by ixgbe_init_ops_82598().

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

◆ ixgbe_start_mac_link_82598()

static s32 ixgbe_start_mac_link_82598 ( struct ixgbe_hw hw,
bool  autoneg_wait_to_complete 
)
static

ixgbe_start_mac_link_82598 - Configures 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 558 of file ixgbe_82598.c.

References DEBUGFUNC, DEBUGOUT, IXGBE_AUTO_NEG_TIME, IXGBE_AUTOC, IXGBE_AUTOC_AN_RESTART, IXGBE_AUTOC_LMS_KX4_AN, IXGBE_AUTOC_LMS_KX4_AN_1G_AN, IXGBE_AUTOC_LMS_MASK, IXGBE_ERR_AUTONEG_NOT_COMPLETE, IXGBE_LINKS, IXGBE_LINKS_KX_AN_COMP, IXGBE_READ_REG, IXGBE_SUCCESS, IXGBE_WRITE_REG, and msec_delay.

Referenced by ixgbe_setup_copper_link_82598(), and ixgbe_setup_mac_link_82598().

Here is the caller graph for this function:

◆ ixgbe_validate_link_ready()

static s32 ixgbe_validate_link_ready ( struct ixgbe_hw hw)
static

ixgbe_validate_link_ready - Function looks for phy link @hw: pointer to hardware structure

Function indicates success when phy link is available. If phy is not ready within 5 seconds of MAC indicating link, the function returns error.

Definition at line 606 of file ixgbe_82598.c.

References DEBUGOUT, ixgbe_hw::device_id, IXGBE_DEV_ID_82598AT2, IXGBE_ERR_LINK_SETUP, IXGBE_MDIO_AUTO_NEG_DEV_TYPE, IXGBE_MDIO_AUTO_NEG_STATUS, IXGBE_MII_AUTONEG_COMPLETE, IXGBE_MII_AUTONEG_LINK_UP, IXGBE_SUCCESS, IXGBE_VALIDATE_LINK_READY_TIMEOUT, msec_delay, ixgbe_phy_info::ops, ixgbe_hw::phy, and ixgbe_phy_operations::read_reg.

Referenced by ixgbe_check_mac_link_82598().

Here is the caller graph for this function:

◆ ixgbe_write_analog_reg8_82598()

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

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

Performs write operation to Atlas analog register specified.

Definition at line 1104 of file ixgbe_82598.c.

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

Referenced by ixgbe_init_ops_82598().

Here is the caller graph for this function: