#ifndef __OCTEON_IQ_H__
#define __OCTEON_IQ_H__
#define IQ_STATUS_RUNNING …
#define IQ_SEND_OK …
#define IQ_SEND_STOP …
#define IQ_SEND_FAILED …
#define REQTYPE_NONE …
#define REQTYPE_NORESP_NET …
#define REQTYPE_NORESP_NET_SG …
#define REQTYPE_RESP_NET …
#define REQTYPE_RESP_NET_SG …
#define REQTYPE_SOFT_COMMAND …
#define REQTYPE_LAST …
struct octeon_request_list { … };
struct oct_iq_stats { … };
#define OCT_IQ_STATS_SIZE …
struct octeon_instr_queue { … };
struct octeon_instr_32B { … };
#define OCT_32B_INSTR_SIZE …
struct octeon_instr2_64B { … };
struct octeon_instr3_64B { … };
octeon_instr_64B;
#define OCT_64B_INSTR_SIZE …
#define SOFT_COMMAND_BUFFER_SIZE …
struct octeon_soft_command { … };
#define LIO_SC_MAX_TMO_MS …
#define MAX_SOFT_COMMAND_BUFFERS …
struct octeon_sc_buffer_pool { … };
#define INCR_INSTRQUEUE_PKT_COUNT(octeon_dev_ptr, iq_no, field, count) …
int octeon_setup_sc_buffer_pool(struct octeon_device *oct);
int octeon_free_sc_done_list(struct octeon_device *oct);
int octeon_free_sc_zombie_list(struct octeon_device *oct);
int octeon_free_sc_buffer_pool(struct octeon_device *oct);
struct octeon_soft_command *
octeon_alloc_soft_command(struct octeon_device *oct,
u32 datasize, u32 rdatasize,
u32 ctxsize);
void octeon_free_soft_command(struct octeon_device *oct,
struct octeon_soft_command *sc);
int octeon_init_instr_queue(struct octeon_device *octeon_dev,
union oct_txpciq txpciq,
u32 num_descs);
int octeon_delete_instr_queue(struct octeon_device *octeon_dev, u32 iq_no);
int lio_wait_for_instr_fetch(struct octeon_device *oct);
void
octeon_ring_doorbell_locked(struct octeon_device *oct, u32 iq_no);
int
octeon_register_reqtype_free_fn(struct octeon_device *oct, int reqtype,
void (*fn)(void *));
int
lio_process_iq_request_list(struct octeon_device *oct,
struct octeon_instr_queue *iq, u32 napi_budget);
int octeon_send_command(struct octeon_device *oct, u32 iq_no,
u32 force_db, void *cmd, void *buf,
u32 datasize, u32 reqtype);
void octeon_dump_soft_command(struct octeon_device *oct,
struct octeon_soft_command *sc);
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);
int octeon_send_soft_command(struct octeon_device *oct,
struct octeon_soft_command *sc);
int octeon_setup_iq(struct octeon_device *oct, int ifidx,
int q_index, union oct_txpciq iq_no, u32 num_descs,
void *app_ctx);
int
octeon_flush_iq(struct octeon_device *oct, struct octeon_instr_queue *iq,
u32 napi_budget);
#endif