#include <linux/tcp.h>
#include <linux/ip.h>
#include <linux/ipv6.h>
#include <linux/crc32.h>
#include <linux/if_vlan.h>
#include <linux/jiffies.h>
#include <linux/phy.h>
#include <linux/of.h>
#include <net/ip6_checksum.h>
#include "emac.h"
#include "emac-sgmii.h"
#define SINGLE_PAUSE_MODE …
#define DEBUG_MODE …
#define BROAD_EN …
#define MULTI_ALL …
#define RX_CHKSUM_EN …
#define HUGE …
#define SPEED(x) …
#define SPEED_MASK …
#define SIMR …
#define TPAUSE …
#define PROM_MODE …
#define VLAN_STRIP …
#define PRLEN_BMSK …
#define PRLEN_SHFT …
#define HUGEN …
#define FLCHK …
#define PCRCE …
#define CRCE …
#define FULLD …
#define MAC_LP_EN …
#define RXFC …
#define TXFC …
#define RXEN …
#define TXEN …
#define RFD_RING_SIZE_BMSK …
#define RX_BUFFER_SIZE_BMSK …
#define RRD_RING_SIZE_BMSK …
#define TPD_RING_SIZE_BMSK …
#define NUM_TXF_BURST_PREF_BMSK …
#define NUM_TXF_BURST_PREF_SHFT …
#define LS_8023_SP …
#define TXQ_MODE …
#define TXQ_EN …
#define IP_OP_SP …
#define NUM_TPD_BURST_PREF_BMSK …
#define NUM_TPD_BURST_PREF_SHFT …
#define JUMBO_TASK_OFFLOAD_THRESHOLD_BMSK …
#define TXF_HWM_BMSK …
#define TXF_LWM_BMSK …
#define RXQ_EN …
#define CUT_THRU_EN …
#define RSS_HASH_EN …
#define NUM_RFD_BURST_PREF_BMSK …
#define NUM_RFD_BURST_PREF_SHFT …
#define IDT_TABLE_SIZE_BMSK …
#define IDT_TABLE_SIZE_SHFT …
#define SP_IPV6 …
#define JUMBO_1KAH_BMSK …
#define JUMBO_1KAH_SHFT …
#define RFD_PREF_LOW_TH …
#define RFD_PREF_LOW_THRESHOLD_BMSK …
#define RFD_PREF_LOW_THRESHOLD_SHFT …
#define RFD_PREF_UP_TH …
#define RFD_PREF_UP_THRESHOLD_BMSK …
#define RFD_PREF_UP_THRESHOLD_SHFT …
#define RXF_DOF_THRESFHOLD …
#define RXF_DOF_THRESHOLD_BMSK …
#define RXF_DOF_THRESHOLD_SHFT …
#define RXF_UOF_THRESFHOLD …
#define RXF_UOF_THRESHOLD_BMSK …
#define RXF_UOF_THRESHOLD_SHFT …
#define RXD_TIMER_BMSK …
#define RXD_THRESHOLD_BMSK …
#define RXD_THRESHOLD_SHFT …
#define DMAW_DLY_CNT_BMSK …
#define DMAW_DLY_CNT_SHFT …
#define DMAR_DLY_CNT_BMSK …
#define DMAR_DLY_CNT_SHFT …
#define DMAR_REQ_PRI …
#define REGWRBLEN_BMSK …
#define REGWRBLEN_SHFT …
#define REGRDBLEN_BMSK …
#define REGRDBLEN_SHFT …
#define OUT_ORDER_MODE …
#define ENH_ORDER_MODE …
#define IN_ORDER_MODE …
#define RFD3_PROC_IDX_BMSK …
#define RFD3_PROC_IDX_SHFT …
#define RFD3_PROD_IDX_BMSK …
#define RFD3_PROD_IDX_SHFT …
#define NTPD_CONS_IDX_BMSK …
#define NTPD_CONS_IDX_SHFT …
#define RFD0_CONS_IDX_BMSK …
#define RFD0_CONS_IDX_SHFT …
#define H3TPD_PROD_IDX_BMSK …
#define H3TPD_PROD_IDX_SHFT …
#define DATA_BYTE_SWAP …
#define MAX_BOUND …
#define MAX_BTYPE …
#define H3TPD_CONS_IDX_BMSK …
#define H3TPD_CONS_IDX_SHFT …
#define H2TPD_PROD_IDX_BMSK …
#define H2TPD_PROD_IDX_SHFT …
#define H1TPD_CONS_IDX_BMSK …
#define H1TPD_CONS_IDX_SHFT …
#define H2TPD_CONS_IDX_BMSK …
#define H2TPD_CONS_IDX_SHFT …
#define HEADER_CNT_EN …
#define HEADER_ENABLE …
#define RFD0_PROC_IDX_BMSK …
#define RFD0_PROC_IDX_SHFT …
#define RFD0_PROD_IDX_BMSK …
#define RFD0_PROD_IDX_SHFT …
#define RFD1_PROC_IDX_BMSK …
#define RFD1_PROC_IDX_SHFT …
#define RFD1_PROD_IDX_BMSK …
#define RFD1_PROD_IDX_SHFT …
#define RX_UNCPL_INT_EN …
#define RFD2_CONS_IDX_BMSK …
#define RFD2_CONS_IDX_SHFT …
#define RFD1_CONS_IDX_BMSK …
#define RFD1_CONS_IDX_SHFT …
#define RFD3_CONS_IDX_BMSK …
#define RFD3_CONS_IDX_SHFT …
#define NTPD_PROD_IDX_BMSK …
#define NTPD_PROD_IDX_SHFT …
#define H1TPD_PROD_IDX_BMSK …
#define H1TPD_PROD_IDX_SHFT …
#define RXQ0_RSS_HSTYP_IPV6_TCP_EN …
#define RXQ0_RSS_HSTYP_IPV6_EN …
#define RXQ0_RSS_HSTYP_IPV4_TCP_EN …
#define RXQ0_RSS_HSTYP_IPV4_EN …
#define EMAC_WRAPPER_TX_TS_EMPTY …
#define EMAC_WRAPPER_TX_TS_INX_BMSK …
struct emac_skb_cb { … };
#define EMAC_SKB_CB(skb) …
#define EMAC_RSS_IDT_SIZE …
#define JUMBO_1KAH …
#define RXD_TH …
#define EMAC_TPD_LAST_FRAGMENT …
#define EMAC_TPD_TSTAMP_SAVE …
#define EMAC_RRD_L4F …
#define EMAC_RRD_IPF …
#define EMAC_RRD_CRC …
#define EMAC_RRD_FAE …
#define EMAC_RRD_TRN …
#define EMAC_RRD_RNT …
#define EMAC_RRD_INC …
#define EMAC_RRD_FOV …
#define EMAC_RRD_LEN …
#define EMAC_RRD_ERROR …
#define EMAC_RRD_STATS_DW_IDX …
#define EMAC_RRD(RXQ, SIZE, IDX) …
#define EMAC_RFD(RXQ, SIZE, IDX) …
#define EMAC_TPD(TXQ, SIZE, IDX) …
#define GET_RFD_BUFFER(RXQ, IDX) …
#define GET_TPD_BUFFER(RTQ, IDX) …
#define EMAC_TX_POLL_HWTXTSTAMP_THRESHOLD …
#define ISR_RX_PKT …
void emac_mac_multicast_addr_set(struct emac_adapter *adpt, u8 *addr)
{ … }
void emac_mac_multicast_addr_clear(struct emac_adapter *adpt)
{ … }
#define EMAC_RSS_KEY(_i, _type) …
#define EMAC_RSS_TBL(_i, _type) …
void emac_mac_mode_config(struct emac_adapter *adpt)
{ … }
static void emac_mac_dma_rings_config(struct emac_adapter *adpt)
{ … }
static void emac_mac_tx_config(struct emac_adapter *adpt)
{ … }
static void emac_mac_rx_config(struct emac_adapter *adpt)
{ … }
static void emac_mac_dma_config(struct emac_adapter *adpt)
{ … }
static void emac_set_mac_address(struct emac_adapter *adpt, const u8 *addr)
{ … }
static void emac_mac_config(struct emac_adapter *adpt)
{ … }
void emac_mac_reset(struct emac_adapter *adpt)
{ … }
static void emac_mac_start(struct emac_adapter *adpt)
{ … }
void emac_mac_stop(struct emac_adapter *adpt)
{ … }
static void emac_tx_q_descs_free(struct emac_adapter *adpt)
{ … }
static void emac_rx_q_free_descs(struct emac_adapter *adpt)
{ … }
static void emac_tx_q_bufs_free(struct emac_adapter *adpt)
{ … }
static int emac_tx_q_desc_alloc(struct emac_adapter *adpt,
struct emac_tx_queue *tx_q)
{ … }
static void emac_rx_q_bufs_free(struct emac_adapter *adpt)
{ … }
static int emac_rx_descs_alloc(struct emac_adapter *adpt)
{ … }
int emac_mac_rx_tx_rings_alloc_all(struct emac_adapter *adpt)
{ … }
void emac_mac_rx_tx_rings_free_all(struct emac_adapter *adpt)
{ … }
static void emac_mac_rx_tx_ring_reset_all(struct emac_adapter *adpt)
{ … }
static void emac_mac_rx_rfd_create(struct emac_adapter *adpt,
struct emac_rx_queue *rx_q,
dma_addr_t addr)
{ … }
static void emac_mac_rx_descs_refill(struct emac_adapter *adpt,
struct emac_rx_queue *rx_q)
{ … }
static void emac_adjust_link(struct net_device *netdev)
{ … }
int emac_mac_up(struct emac_adapter *adpt)
{ … }
void emac_mac_down(struct emac_adapter *adpt)
{ … }
static bool emac_rx_process_rrd(struct emac_adapter *adpt,
struct emac_rx_queue *rx_q,
struct emac_rrd *rrd)
{ … }
static void emac_tx_tpd_create(struct emac_adapter *adpt,
struct emac_tx_queue *tx_q, struct emac_tpd *tpd)
{ … }
static void emac_tx_tpd_mark_last(struct emac_adapter *adpt,
struct emac_tx_queue *tx_q)
{ … }
static void emac_rx_rfd_clean(struct emac_rx_queue *rx_q, struct emac_rrd *rrd)
{ … }
static void emac_receive_skb(struct emac_rx_queue *rx_q,
struct sk_buff *skb,
u16 vlan_tag, bool vlan_flag)
{ … }
void emac_mac_rx_process(struct emac_adapter *adpt, struct emac_rx_queue *rx_q,
int *num_pkts, int max_pkts)
{ … }
static unsigned int emac_tpd_num_free_descs(struct emac_tx_queue *tx_q)
{ … }
void emac_mac_tx_process(struct emac_adapter *adpt, struct emac_tx_queue *tx_q)
{ … }
void emac_mac_rx_tx_ring_init_all(struct platform_device *pdev,
struct emac_adapter *adpt)
{ … }
static int emac_tso_csum(struct emac_adapter *adpt,
struct emac_tx_queue *tx_q,
struct sk_buff *skb,
struct emac_tpd *tpd)
{ … }
static void emac_tx_fill_tpd(struct emac_adapter *adpt,
struct emac_tx_queue *tx_q, struct sk_buff *skb,
struct emac_tpd *tpd)
{ … }
netdev_tx_t emac_mac_tx_buf_send(struct emac_adapter *adpt,
struct emac_tx_queue *tx_q,
struct sk_buff *skb)
{ … }