#include "aq_nic.h"
#include "aq_hw.h"
#include "aq_hw_utils.h"
#include "aq_ptp.h"
#include "aq_vec.h"
#include "aq_main.h"
#include <net/xdp.h>
#include <linux/filter.h>
#include <linux/bpf_trace.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
static void aq_get_rxpages_xdp(struct aq_ring_buff_s *buff,
struct xdp_buff *xdp)
{ … }
static inline void aq_free_rxpage(struct aq_rxpage *rxpage, struct device *dev)
{ … }
static int aq_alloc_rxpages(struct aq_rxpage *rxpage, struct aq_ring_s *rx_ring)
{ … }
static int aq_get_rxpages(struct aq_ring_s *self, struct aq_ring_buff_s *rxbuf)
{ … }
static int aq_ring_alloc(struct aq_ring_s *self,
struct aq_nic_s *aq_nic)
{ … }
int aq_ring_tx_alloc(struct aq_ring_s *self,
struct aq_nic_s *aq_nic,
unsigned int idx,
struct aq_nic_cfg_s *aq_nic_cfg)
{ … }
int aq_ring_rx_alloc(struct aq_ring_s *self,
struct aq_nic_s *aq_nic,
unsigned int idx,
struct aq_nic_cfg_s *aq_nic_cfg)
{ … }
int
aq_ring_hwts_rx_alloc(struct aq_ring_s *self, struct aq_nic_s *aq_nic,
unsigned int idx, unsigned int size, unsigned int dx_size)
{ … }
int aq_ring_init(struct aq_ring_s *self, const enum atl_ring_type ring_type)
{ … }
static inline bool aq_ring_dx_in_range(unsigned int h, unsigned int i,
unsigned int t)
{ … }
void aq_ring_update_queue_state(struct aq_ring_s *ring)
{ … }
void aq_ring_queue_wake(struct aq_ring_s *ring)
{ … }
void aq_ring_queue_stop(struct aq_ring_s *ring)
{ … }
bool aq_ring_tx_clean(struct aq_ring_s *self)
{ … }
static void aq_rx_checksum(struct aq_ring_s *self,
struct aq_ring_buff_s *buff,
struct sk_buff *skb)
{ … }
int aq_xdp_xmit(struct net_device *dev, int num_frames,
struct xdp_frame **frames, u32 flags)
{ … }
static struct sk_buff *aq_xdp_build_skb(struct xdp_buff *xdp,
struct net_device *dev,
struct aq_ring_buff_s *buff)
{ … }
static struct sk_buff *aq_xdp_run_prog(struct aq_nic_s *aq_nic,
struct xdp_buff *xdp,
struct aq_ring_s *rx_ring,
struct aq_ring_buff_s *buff)
{ … }
static bool aq_add_rx_fragment(struct device *dev,
struct aq_ring_s *ring,
struct aq_ring_buff_s *buff,
struct xdp_buff *xdp)
{ … }
static int __aq_ring_rx_clean(struct aq_ring_s *self, struct napi_struct *napi,
int *work_done, int budget)
{ … }
static int __aq_ring_xdp_clean(struct aq_ring_s *rx_ring,
struct napi_struct *napi, int *work_done,
int budget)
{ … }
int aq_ring_rx_clean(struct aq_ring_s *self,
struct napi_struct *napi,
int *work_done,
int budget)
{ … }
void aq_ring_hwts_rx_clean(struct aq_ring_s *self, struct aq_nic_s *aq_nic)
{ … }
int aq_ring_rx_fill(struct aq_ring_s *self)
{ … }
void aq_ring_rx_deinit(struct aq_ring_s *self)
{ … }
void aq_ring_free(struct aq_ring_s *self)
{ … }
void aq_ring_hwts_rx_free(struct aq_ring_s *self)
{ … }
unsigned int aq_ring_fill_stats_data(struct aq_ring_s *self, u64 *data)
{ … }