#include <linux/pci.h>
#include <linux/netdevice.h>
#include <linux/vmalloc.h>
#include "liquidio_common.h"
#include "octeon_droq.h"
#include "octeon_iq.h"
#include "response_manager.h"
#include "octeon_device.h"
#include "octeon_main.h"
#include "octeon_network.h"
#include "cn66xx_device.h"
#include "cn23xx_pf_device.h"
#include "cn23xx_vf_device.h"
struct iq_post_status { … };
static void check_db_timeout(struct work_struct *work);
static void __check_db_timeout(struct octeon_device *oct, u64 iq_no);
static void (*reqtype_free_fn[MAX_OCTEON_DEVICES][REQTYPE_LAST + 1]) (void *);
int octeon_init_instr_queue(struct octeon_device *oct,
union oct_txpciq txpciq,
u32 num_descs)
{ … }
int octeon_delete_instr_queue(struct octeon_device *oct, u32 iq_no)
{ … }
EXPORT_SYMBOL_GPL(…);
int octeon_setup_iq(struct octeon_device *oct,
int ifidx,
int q_index,
union oct_txpciq txpciq,
u32 num_descs,
void *app_ctx)
{ … }
int lio_wait_for_instr_fetch(struct octeon_device *oct)
{ … }
EXPORT_SYMBOL_GPL(…);
static inline void
ring_doorbell(struct octeon_device *oct, struct octeon_instr_queue *iq)
{ … }
void
octeon_ring_doorbell_locked(struct octeon_device *oct, u32 iq_no)
{ … }
EXPORT_SYMBOL_GPL(…);
static inline void __copy_cmd_into_iq(struct octeon_instr_queue *iq,
u8 *cmd)
{ … }
static inline struct iq_post_status
__post_command2(struct octeon_instr_queue *iq, u8 *cmd)
{ … }
int
octeon_register_reqtype_free_fn(struct octeon_device *oct, int reqtype,
void (*fn)(void *))
{ … }
EXPORT_SYMBOL_GPL(…);
static inline void
__add_to_request_list(struct octeon_instr_queue *iq,
int idx, void *buf, int reqtype)
{ … }
int
lio_process_iq_request_list(struct octeon_device *oct,
struct octeon_instr_queue *iq, u32 napi_budget)
{ … }
EXPORT_SYMBOL_GPL(…);
int
octeon_flush_iq(struct octeon_device *oct, struct octeon_instr_queue *iq,
u32 napi_budget)
{ … }
static void __check_db_timeout(struct octeon_device *oct, u64 iq_no)
{ … }
static void check_db_timeout(struct work_struct *work)
{ … }
int
octeon_send_command(struct octeon_device *oct, u32 iq_no,
u32 force_db, void *cmd, void *buf,
u32 datasize, u32 reqtype)
{ … }
EXPORT_SYMBOL_GPL(…);
void
octeon_prepare_soft_command(struct octeon_device *oct,
struct octeon_soft_command *sc,
u8 opcode,
u8 subcode,
u32 irh_ossp,
u64 ossp0,
u64 ossp1)
{ … }
EXPORT_SYMBOL_GPL(…);
int octeon_send_soft_command(struct octeon_device *oct,
struct octeon_soft_command *sc)
{ … }
EXPORT_SYMBOL_GPL(…);
int octeon_setup_sc_buffer_pool(struct octeon_device *oct)
{ … }
EXPORT_SYMBOL_GPL(…);
int octeon_free_sc_done_list(struct octeon_device *oct)
{ … }
EXPORT_SYMBOL_GPL(…);
int octeon_free_sc_zombie_list(struct octeon_device *oct)
{ … }
EXPORT_SYMBOL_GPL(…);
int octeon_free_sc_buffer_pool(struct octeon_device *oct)
{ … }
EXPORT_SYMBOL_GPL(…);
struct octeon_soft_command *octeon_alloc_soft_command(struct octeon_device *oct,
u32 datasize,
u32 rdatasize,
u32 ctxsize)
{ … }
EXPORT_SYMBOL_GPL(…);
void octeon_free_soft_command(struct octeon_device *oct,
struct octeon_soft_command *sc)
{ … }
EXPORT_SYMBOL_GPL(…);