#include <linux/netdevice.h>
#include <linux/tcp.h>
#include <linux/interrupt.h>
#include "dwc-xlgmac.h"
#include "dwc-xlgmac-reg.h"
static int xlgmac_one_poll(struct napi_struct *, int);
static int xlgmac_all_poll(struct napi_struct *, int);
static inline unsigned int xlgmac_tx_avail_desc(struct xlgmac_ring *ring)
{ … }
static inline unsigned int xlgmac_rx_dirty_desc(struct xlgmac_ring *ring)
{ … }
static int xlgmac_maybe_stop_tx_queue(
struct xlgmac_channel *channel,
struct xlgmac_ring *ring,
unsigned int count)
{ … }
static void xlgmac_prep_vlan(struct sk_buff *skb,
struct xlgmac_pkt_info *pkt_info)
{ … }
static int xlgmac_prep_tso(struct sk_buff *skb,
struct xlgmac_pkt_info *pkt_info)
{ … }
static int xlgmac_is_tso(struct sk_buff *skb)
{ … }
static void xlgmac_prep_tx_pkt(struct xlgmac_pdata *pdata,
struct xlgmac_ring *ring,
struct sk_buff *skb,
struct xlgmac_pkt_info *pkt_info)
{ … }
static int xlgmac_calc_rx_buf_size(struct net_device *netdev, unsigned int mtu)
{ … }
static void xlgmac_enable_rx_tx_ints(struct xlgmac_pdata *pdata)
{ … }
static void xlgmac_disable_rx_tx_ints(struct xlgmac_pdata *pdata)
{ … }
static irqreturn_t xlgmac_isr(int irq, void *data)
{ … }
static irqreturn_t xlgmac_dma_isr(int irq, void *data)
{ … }
static void xlgmac_tx_timer(struct timer_list *t)
{ … }
static void xlgmac_init_timers(struct xlgmac_pdata *pdata)
{ … }
static void xlgmac_stop_timers(struct xlgmac_pdata *pdata)
{ … }
static void xlgmac_napi_enable(struct xlgmac_pdata *pdata, unsigned int add)
{ … }
static void xlgmac_napi_disable(struct xlgmac_pdata *pdata, unsigned int del)
{ … }
static int xlgmac_request_irqs(struct xlgmac_pdata *pdata)
{ … }
static void xlgmac_free_irqs(struct xlgmac_pdata *pdata)
{ … }
static void xlgmac_free_tx_data(struct xlgmac_pdata *pdata)
{ … }
static void xlgmac_free_rx_data(struct xlgmac_pdata *pdata)
{ … }
static int xlgmac_start(struct xlgmac_pdata *pdata)
{ … }
static void xlgmac_stop(struct xlgmac_pdata *pdata)
{ … }
static void xlgmac_restart_dev(struct xlgmac_pdata *pdata)
{ … }
static void xlgmac_restart(struct work_struct *work)
{ … }
static int xlgmac_open(struct net_device *netdev)
{ … }
static int xlgmac_close(struct net_device *netdev)
{ … }
static void xlgmac_tx_timeout(struct net_device *netdev, unsigned int txqueue)
{ … }
static netdev_tx_t xlgmac_xmit(struct sk_buff *skb, struct net_device *netdev)
{ … }
static void xlgmac_get_stats64(struct net_device *netdev,
struct rtnl_link_stats64 *s)
{ … }
static int xlgmac_set_mac_address(struct net_device *netdev, void *addr)
{ … }
static int xlgmac_ioctl(struct net_device *netdev,
struct ifreq *ifreq, int cmd)
{ … }
static int xlgmac_change_mtu(struct net_device *netdev, int mtu)
{ … }
static int xlgmac_vlan_rx_add_vid(struct net_device *netdev,
__be16 proto,
u16 vid)
{ … }
static int xlgmac_vlan_rx_kill_vid(struct net_device *netdev,
__be16 proto,
u16 vid)
{ … }
#ifdef CONFIG_NET_POLL_CONTROLLER
static void xlgmac_poll_controller(struct net_device *netdev)
{ … }
#endif
static int xlgmac_set_features(struct net_device *netdev,
netdev_features_t features)
{ … }
static void xlgmac_set_rx_mode(struct net_device *netdev)
{ … }
static const struct net_device_ops xlgmac_netdev_ops = …;
const struct net_device_ops *xlgmac_get_netdev_ops(void)
{ … }
static void xlgmac_rx_refresh(struct xlgmac_channel *channel)
{ … }
static struct sk_buff *xlgmac_create_skb(struct xlgmac_pdata *pdata,
struct napi_struct *napi,
struct xlgmac_desc_data *desc_data,
unsigned int len)
{ … }
static int xlgmac_tx_poll(struct xlgmac_channel *channel)
{ … }
static int xlgmac_rx_poll(struct xlgmac_channel *channel, int budget)
{ … }
static int xlgmac_one_poll(struct napi_struct *napi, int budget)
{ … }
static int xlgmac_all_poll(struct napi_struct *napi, int budget)
{ … }