#include <linux/pci.h>
#include <linux/if_vlan.h>
#include "liquidio_common.h"
#include "octeon_droq.h"
#include "octeon_iq.h"
#include "response_manager.h"
#include "octeon_device.h"
#include "octeon_nic.h"
#include "octeon_main.h"
#include "octeon_network.h"
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
#define LIO_OOM_POLL_INTERVAL_MS …
#define OCTNIC_MAX_SG …
void lio_delete_glists(struct lio *lio)
{ … }
EXPORT_SYMBOL_GPL(…);
int lio_setup_glists(struct octeon_device *oct, struct lio *lio, int num_iqs)
{ … }
EXPORT_SYMBOL_GPL(…);
int liquidio_set_feature(struct net_device *netdev, int cmd, u16 param1)
{ … }
EXPORT_SYMBOL_GPL(…);
void octeon_report_tx_completion_to_bql(void *txq, unsigned int pkts_compl,
unsigned int bytes_compl)
{ … }
void octeon_update_tx_completion_counters(void *buf, int reqtype,
unsigned int *pkts_compl,
unsigned int *bytes_compl)
{ … }
int octeon_report_sent_bytes_to_bql(void *buf, int reqtype)
{ … }
void liquidio_link_ctrl_cmd_completion(void *nctrl_ptr)
{ … }
EXPORT_SYMBOL_GPL(…);
void octeon_pf_changed_vf_macaddr(struct octeon_device *oct, u8 *mac)
{ … }
void octeon_schedule_rxq_oom_work(struct octeon_device *oct,
struct octeon_droq *droq)
{ … }
static void octnet_poll_check_rxq_oom_status(struct work_struct *work)
{ … }
int setup_rx_oom_poll_fn(struct net_device *netdev)
{ … }
EXPORT_SYMBOL_GPL(…);
void cleanup_rx_oom_poll_fn(struct net_device *netdev)
{ … }
EXPORT_SYMBOL_GPL(…);
static void lio_update_txq_status(struct octeon_device *oct, int iq_num)
{ … }
static int octeon_setup_droq(struct octeon_device *oct, int q_no, int num_descs,
int desc_size, void *app_ctx)
{ … }
static void
liquidio_push_packet(u32 __maybe_unused octeon_id,
void *skbuff,
u32 len,
union octeon_rh *rh,
void *param,
void *arg)
{ … }
static void napi_schedule_wrapper(void *param)
{ … }
static void liquidio_napi_drv_callback(void *arg)
{ … }
static int liquidio_napi_poll(struct napi_struct *napi, int budget)
{ … }
int liquidio_setup_io_queues(struct octeon_device *octeon_dev, int ifidx,
u32 num_iqs, u32 num_oqs)
{ … }
EXPORT_SYMBOL_GPL(…);
static
int liquidio_schedule_msix_droq_pkt_handler(struct octeon_droq *droq, u64 ret)
{ … }
irqreturn_t
liquidio_msix_intr_handler(int __maybe_unused irq, void *dev)
{ … }
static void liquidio_schedule_droq_pkt_handlers(struct octeon_device *oct)
{ … }
static
irqreturn_t liquidio_legacy_intr_handler(int __maybe_unused irq, void *dev)
{ … }
int octeon_setup_interrupt(struct octeon_device *oct, u32 num_ioqs)
{ … }
EXPORT_SYMBOL_GPL(…);
int liquidio_change_mtu(struct net_device *netdev, int new_mtu)
{ … }
EXPORT_SYMBOL_GPL(…);
int lio_wait_for_clean_oq(struct octeon_device *oct)
{ … }
EXPORT_SYMBOL_GPL(…);
static void
octnet_nic_stats_callback(struct octeon_device *oct_dev,
u32 status, void *ptr)
{ … }
static int lio_fetch_vf_stats(struct lio *lio)
{ … }
void lio_fetch_stats(struct work_struct *work)
{ … }
EXPORT_SYMBOL_GPL(…);
int liquidio_set_speed(struct lio *lio, int speed)
{ … }
int liquidio_get_speed(struct lio *lio)
{ … }
EXPORT_SYMBOL_GPL(…);
int liquidio_set_fec(struct lio *lio, int on_off)
{ … }
int liquidio_get_fec(struct lio *lio)
{ … }
EXPORT_SYMBOL_GPL(…);