#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/ip.h>
#include <linux/ratelimit.h>
#include <linux/string.h>
#include <linux/interrupt.h>
#include <net/dst.h>
#ifdef CONFIG_XFRM
#include <linux/xfrm.h>
#include <net/xfrm.h>
#endif
#include <linux/atomic.h>
#include <net/sch_generic.h>
#include "octeon-ethernet.h"
#include "ethernet-defines.h"
#include "ethernet-tx.h"
#include "ethernet-util.h"
#define CVM_OCT_SKB_CB(skb) …
#ifndef GET_SKBUFF_QOS
#define GET_SKBUFF_QOS(skb) …
#endif
static void cvm_oct_tx_do_cleanup(unsigned long arg);
static DECLARE_TASKLET_OLD(cvm_oct_tx_cleanup_tasklet, cvm_oct_tx_do_cleanup);
#define MAX_SKB_TO_FREE …
static inline int cvm_oct_adjust_skb_to_free(int skb_to_free, int fau)
{ … }
static void cvm_oct_kick_tx_poll_watchdog(void)
{ … }
static void cvm_oct_free_tx_skbs(struct net_device *dev)
{ … }
netdev_tx_t cvm_oct_xmit(struct sk_buff *skb, struct net_device *dev)
{ … }
netdev_tx_t cvm_oct_xmit_pow(struct sk_buff *skb, struct net_device *dev)
{ … }
void cvm_oct_tx_shutdown_dev(struct net_device *dev)
{ … }
static void cvm_oct_tx_do_cleanup(unsigned long arg)
{ … }
static irqreturn_t cvm_oct_tx_cleanup_watchdog(int cpl, void *dev_id)
{ … }
void cvm_oct_tx_initialize(void)
{ … }
void cvm_oct_tx_shutdown(void)
{ … }