#define pr_fmt(fmt) …
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <scsi/scsi_host.h>
#include "common.h"
#include "t3_cpl.h"
#include "t3cdev.h"
#include "cxgb3_defs.h"
#include "cxgb3_ctl_defs.h"
#include "cxgb3_offload.h"
#include "firmware_exports.h"
#include "cxgb3i.h"
static unsigned int dbg_level;
#include "../libcxgbi.h"
#define DRV_MODULE_NAME …
#define DRV_MODULE_DESC …
#define DRV_MODULE_VERSION …
#define DRV_MODULE_RELDATE …
static char version[] = …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…);
MODULE_VERSION(…);
MODULE_LICENSE(…) …;
module_param(dbg_level, uint, 0644);
MODULE_PARM_DESC(…) …;
static int cxgb3i_rcv_win = …;
module_param(cxgb3i_rcv_win, int, 0644);
MODULE_PARM_DESC(…) …;
static int cxgb3i_snd_win = …;
module_param(cxgb3i_snd_win, int, 0644);
MODULE_PARM_DESC(…) …;
static int cxgb3i_rx_credit_thres = …;
module_param(cxgb3i_rx_credit_thres, int, 0644);
MODULE_PARM_DESC(…) …;
static unsigned int cxgb3i_max_connect = …;
module_param(cxgb3i_max_connect, uint, 0644);
MODULE_PARM_DESC(…) …;
static unsigned int cxgb3i_sport_base = …;
module_param(cxgb3i_sport_base, uint, 0644);
MODULE_PARM_DESC(…) …;
static void cxgb3i_dev_open(struct t3cdev *);
static void cxgb3i_dev_close(struct t3cdev *);
static void cxgb3i_dev_event_handler(struct t3cdev *, u32, u32);
static struct cxgb3_client t3_client = …;
static const struct scsi_host_template cxgb3i_host_template = …;
static struct iscsi_transport cxgb3i_iscsi_transport = …;
static struct scsi_transport_template *cxgb3i_stt;
static int push_tx_frames(struct cxgbi_sock *csk, int req_completion);
static void send_act_open_req(struct cxgbi_sock *csk, struct sk_buff *skb,
const struct l2t_entry *e)
{ … }
static inline void act_open_arp_failure(struct t3cdev *dev, struct sk_buff *skb)
{ … }
static void send_close_req(struct cxgbi_sock *csk)
{ … }
static void abort_arp_failure(struct t3cdev *tdev, struct sk_buff *skb)
{ … }
static void send_abort_req(struct cxgbi_sock *csk)
{ … }
static void send_abort_rpl(struct cxgbi_sock *csk, int rst_status)
{ … }
static u32 send_rx_credits(struct cxgbi_sock *csk, u32 credits)
{ … }
static unsigned int wrlen __read_mostly;
static unsigned int skb_wrs[SKB_WR_LIST_SIZE] __read_mostly;
static void init_wr_tab(unsigned int wr_len)
{ … }
static inline void make_tx_data_wr(struct cxgbi_sock *csk, struct sk_buff *skb,
int len, int req_completion)
{ … }
static void arp_failure_skb_discard(struct t3cdev *dev, struct sk_buff *skb)
{ … }
static int push_tx_frames(struct cxgbi_sock *csk, int req_completion)
{ … }
static inline void free_atid(struct cxgbi_sock *csk)
{ … }
static int do_act_establish(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
{ … }
static int act_open_rpl_status_to_errno(int status)
{ … }
static void act_open_retry_timer(struct timer_list *t)
{ … }
static int do_act_open_rpl(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
{ … }
static int do_peer_close(struct t3cdev *cdev, struct sk_buff *skb, void *ctx)
{ … }
static int do_close_con_rpl(struct t3cdev *cdev, struct sk_buff *skb,
void *ctx)
{ … }
static int abort_status_to_errno(struct cxgbi_sock *csk, int abort_reason,
int *need_rst)
{ … }
static int do_abort_req(struct t3cdev *cdev, struct sk_buff *skb, void *ctx)
{ … }
static int do_abort_rpl(struct t3cdev *cdev, struct sk_buff *skb, void *ctx)
{ … }
static int do_iscsi_hdr(struct t3cdev *t3dev, struct sk_buff *skb, void *ctx)
{ … }
static int do_wr_ack(struct t3cdev *cdev, struct sk_buff *skb, void *ctx)
{ … }
static int alloc_cpls(struct cxgbi_sock *csk)
{ … }
static void l2t_put(struct cxgbi_sock *csk)
{ … }
static void release_offload_resources(struct cxgbi_sock *csk)
{ … }
static void update_address(struct cxgbi_hba *chba)
{ … }
static int init_act_open(struct cxgbi_sock *csk)
{ … }
cxgb3_cpl_handler_func cxgb3i_cpl_handlers[NUM_CPL_CMDS] = …;
static int cxgb3i_ofld_init(struct cxgbi_device *cdev)
{ … }
static inline void ulp_mem_io_set_hdr(struct sk_buff *skb, unsigned int addr)
{ … }
static struct cxgbi_ppm *cdev2ppm(struct cxgbi_device *cdev)
{ … }
static int ddp_set_map(struct cxgbi_ppm *ppm, struct cxgbi_sock *csk,
struct cxgbi_task_tag_info *ttinfo)
{ … }
static void ddp_clear_map(struct cxgbi_device *cdev, struct cxgbi_ppm *ppm,
struct cxgbi_task_tag_info *ttinfo)
{ … }
static int ddp_setup_conn_pgidx(struct cxgbi_sock *csk,
unsigned int tid, int pg_idx)
{ … }
static int ddp_setup_conn_digest(struct cxgbi_sock *csk, unsigned int tid,
int hcrc, int dcrc)
{ … }
static int cxgb3i_ddp_init(struct cxgbi_device *cdev)
{ … }
static void cxgb3i_dev_close(struct t3cdev *t3dev)
{ … }
static void cxgb3i_dev_open(struct t3cdev *t3dev)
{ … }
static void cxgb3i_dev_event_handler(struct t3cdev *t3dev, u32 event, u32 port)
{ … }
static int __init cxgb3i_init_module(void)
{ … }
static void __exit cxgb3i_exit_module(void)
{ … }
module_init(…) …;
module_exit(cxgb3i_exit_module);