#ifndef ALX_HW_H_
#define ALX_HW_H_
#include <linux/types.h>
#include <linux/mdio.h>
#include <linux/pci.h>
#include <linux/if_vlan.h>
#include "reg.h"
struct alx_txd { … } __packed;
#define TPD_CXSUMSTART_MASK …
#define TPD_CXSUMSTART_SHIFT …
#define TPD_L4HDROFFSET_MASK …
#define TPD_L4HDROFFSET_SHIFT …
#define TPD_CXSUM_EN_MASK …
#define TPD_CXSUM_EN_SHIFT …
#define TPD_IP_XSUM_MASK …
#define TPD_IP_XSUM_SHIFT …
#define TPD_TCP_XSUM_MASK …
#define TPD_TCP_XSUM_SHIFT …
#define TPD_UDP_XSUM_MASK …
#define TPD_UDP_XSUM_SHIFT …
#define TPD_LSO_EN_MASK …
#define TPD_LSO_EN_SHIFT …
#define TPD_LSO_V2_MASK …
#define TPD_LSO_V2_SHIFT …
#define TPD_VLTAGGED_MASK …
#define TPD_VLTAGGED_SHIFT …
#define TPD_INS_VLTAG_MASK …
#define TPD_INS_VLTAG_SHIFT …
#define TPD_IPV4_MASK …
#define TPD_IPV4_SHIFT …
#define TPD_ETHTYPE_MASK …
#define TPD_ETHTYPE_SHIFT …
#define TPD_CXSUMOFFSET_MASK …
#define TPD_CXSUMOFFSET_SHIFT …
#define TPD_MSS_MASK …
#define TPD_MSS_SHIFT …
#define TPD_EOP_MASK …
#define TPD_EOP_SHIFT …
#define DESC_GET(_x, _name) …
struct alx_rfd { … } __packed;
struct alx_rrd { … } __packed;
#define RRD_XSUM_MASK …
#define RRD_XSUM_SHIFT …
#define RRD_NOR_MASK …
#define RRD_NOR_SHIFT …
#define RRD_SI_MASK …
#define RRD_SI_SHIFT …
#define RRD_VLTAG_MASK …
#define RRD_VLTAG_SHIFT …
#define RRD_PID_MASK …
#define RRD_PID_SHIFT …
#define RRD_PID_NONIP …
#define RRD_PID_IPV4 …
#define RRD_PID_IPV6TCP …
#define RRD_PID_IPV4TCP …
#define RRD_PID_IPV6UDP …
#define RRD_PID_IPV4UDP …
#define RRD_PID_IPV6 …
#define RRD_PID_LLDP …
#define RRD_PID_1588 …
#define RRD_RSSQ_MASK …
#define RRD_RSSQ_SHIFT …
#define RRD_RSSALG_MASK …
#define RRD_RSSALG_SHIFT …
#define RRD_RSSALG_TCPV6 …
#define RRD_RSSALG_IPV6 …
#define RRD_RSSALG_TCPV4 …
#define RRD_RSSALG_IPV4 …
#define RRD_PKTLEN_MASK …
#define RRD_PKTLEN_SHIFT …
#define RRD_ERR_L4_MASK …
#define RRD_ERR_L4_SHIFT …
#define RRD_ERR_IPV4_MASK …
#define RRD_ERR_IPV4_SHIFT …
#define RRD_VLTAGGED_MASK …
#define RRD_VLTAGGED_SHIFT …
#define RRD_OLD_PID_MASK …
#define RRD_OLD_PID_SHIFT …
#define RRD_ERR_RES_MASK …
#define RRD_ERR_RES_SHIFT …
#define RRD_ERR_FCS_MASK …
#define RRD_ERR_FCS_SHIFT …
#define RRD_ERR_FAE_MASK …
#define RRD_ERR_FAE_SHIFT …
#define RRD_ERR_TRUNC_MASK …
#define RRD_ERR_TRUNC_SHIFT …
#define RRD_ERR_RUNT_MASK …
#define RRD_ERR_RUNT_SHIFT …
#define RRD_ERR_ICMP_MASK …
#define RRD_ERR_ICMP_SHIFT …
#define RRD_BCAST_MASK …
#define RRD_BCAST_SHIFT …
#define RRD_MCAST_MASK …
#define RRD_MCAST_SHIFT …
#define RRD_ETHTYPE_MASK …
#define RRD_ETHTYPE_SHIFT …
#define RRD_ERR_FIFOV_MASK …
#define RRD_ERR_FIFOV_SHIFT …
#define RRD_ERR_LEN_MASK …
#define RRD_ERR_LEN_SHIFT …
#define RRD_UPDATED_MASK …
#define RRD_UPDATED_SHIFT …
#define ALX_MAX_SETUP_LNK_CYCLE …
#define ALX_FC_RX …
#define ALX_FC_TX …
#define ALX_FC_ANEG …
#define ALX_SLEEP_WOL_PHY …
#define ALX_SLEEP_WOL_MAGIC …
#define ALX_SLEEP_CIFS …
#define ALX_SLEEP_ACTIVE …
#define ALX_RSS_HASH_TYPE_IPV4 …
#define ALX_RSS_HASH_TYPE_IPV4_TCP …
#define ALX_RSS_HASH_TYPE_IPV6 …
#define ALX_RSS_HASH_TYPE_IPV6_TCP …
#define ALX_RSS_HASH_TYPE_ALL …
#define ALX_FRAME_PAD …
#define ALX_RAW_MTU(_mtu) …
#define ALX_MAX_FRAME_LEN(_mtu) …
#define ALX_DEF_RXBUF_SIZE …
#define ALX_MAX_JUMBO_PKT_SIZE …
#define ALX_MAX_TSO_PKT_SIZE …
#define ALX_MAX_FRAME_SIZE …
#define ALX_MAX_RX_QUEUES …
#define ALX_MAX_TX_QUEUES …
#define ALX_MAX_HANDLED_INTRS …
#define ALX_ISR_MISC …
#define ALX_ISR_FATAL …
#define ALX_ISR_ALERT …
#define ALX_ISR_ALL_QUEUES …
struct alx_hw_stats { … };
#define ALX_MAX_MSIX_INTRS …
#define ALX_GET_FIELD(_data, _field) …
#define ALX_SET_FIELD(_data, _field, _value) …
struct alx_hw { … };
static inline int alx_hw_revision(struct alx_hw *hw)
{ … }
static inline bool alx_hw_with_cr(struct alx_hw *hw)
{ … }
static inline bool alx_hw_giga(struct alx_hw *hw)
{ … }
static inline void alx_write_mem8(struct alx_hw *hw, u32 reg, u8 val)
{ … }
static inline void alx_write_mem16(struct alx_hw *hw, u32 reg, u16 val)
{ … }
static inline u16 alx_read_mem16(struct alx_hw *hw, u32 reg)
{ … }
static inline void alx_write_mem32(struct alx_hw *hw, u32 reg, u32 val)
{ … }
static inline u32 alx_read_mem32(struct alx_hw *hw, u32 reg)
{ … }
static inline void alx_post_write(struct alx_hw *hw)
{ … }
int alx_get_perm_macaddr(struct alx_hw *hw, u8 *addr);
void alx_reset_phy(struct alx_hw *hw);
void alx_reset_pcie(struct alx_hw *hw);
void alx_enable_aspm(struct alx_hw *hw, bool l0s_en, bool l1_en);
int alx_setup_speed_duplex(struct alx_hw *hw, u32 ethadv, u8 flowctrl);
void alx_post_phy_link(struct alx_hw *hw);
int alx_read_phy_reg(struct alx_hw *hw, u16 reg, u16 *phy_data);
int alx_write_phy_reg(struct alx_hw *hw, u16 reg, u16 phy_data);
int alx_read_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 *pdata);
int alx_write_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 data);
int alx_read_phy_link(struct alx_hw *hw);
int alx_clear_phy_intr(struct alx_hw *hw);
void alx_cfg_mac_flowcontrol(struct alx_hw *hw, u8 fc);
void alx_start_mac(struct alx_hw *hw);
int alx_reset_mac(struct alx_hw *hw);
void alx_set_macaddr(struct alx_hw *hw, const u8 *addr);
bool alx_phy_configured(struct alx_hw *hw);
void alx_configure_basic(struct alx_hw *hw);
void alx_mask_msix(struct alx_hw *hw, int index, bool mask);
void alx_disable_rss(struct alx_hw *hw);
bool alx_get_phy_info(struct alx_hw *hw);
void alx_update_hw_stats(struct alx_hw *hw);
static inline u32 alx_speed_to_ethadv(int speed, u8 duplex)
{ … }
#endif