Commit aea71a02 authored by Bhanu Prakash Gollapudi's avatar Bhanu Prakash Gollapudi Committed by James Bottomley

[SCSI] bnx2fc: Introduce interface structure for each vlan interface

Currently, bnx2fc has a hba structure that can work with only a single vlan
interface.  When there is a change in vlan id, it does not have the capability
to switch to different vlan interface. To solve this problem, a new structure
called 'interface' has been introduced, and each hba can now have multiple
interfaces, one per vlan id.

Most of the patch is a moving the interface specific fields from hba to the
interface structure, and appropriately modifying the dereferences. A list of
interfaces (if_list) is maintained along with adapter list. During a create
call, the interface structure is allocated and added to if_list and deleted &
freed on a destroy call.  Link events are propagated to all interfaces
belonging to the hba.
Signed-off-by: default avatarBhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent f6e76055
...@@ -153,18 +153,13 @@ struct bnx2fc_percpu_s { ...@@ -153,18 +153,13 @@ struct bnx2fc_percpu_s {
}; };
struct bnx2fc_hba { struct bnx2fc_hba {
struct list_head link; struct list_head list;
struct cnic_dev *cnic; struct cnic_dev *cnic;
struct pci_dev *pcidev; struct pci_dev *pcidev;
struct net_device *netdev;
struct net_device *phys_dev; struct net_device *phys_dev;
unsigned long reg_with_cnic; unsigned long reg_with_cnic;
#define BNX2FC_CNIC_REGISTERED 1 #define BNX2FC_CNIC_REGISTERED 1
struct packet_type fcoe_packet_type;
struct packet_type fip_packet_type;
struct bnx2fc_cmd_mgr *cmd_mgr; struct bnx2fc_cmd_mgr *cmd_mgr;
struct workqueue_struct *timer_work_queue;
struct kref kref;
spinlock_t hba_lock; spinlock_t hba_lock;
struct mutex hba_mutex; struct mutex hba_mutex;
unsigned long adapter_state; unsigned long adapter_state;
...@@ -172,15 +167,9 @@ struct bnx2fc_hba { ...@@ -172,15 +167,9 @@ struct bnx2fc_hba {
#define ADAPTER_STATE_GOING_DOWN 1 #define ADAPTER_STATE_GOING_DOWN 1
#define ADAPTER_STATE_LINK_DOWN 2 #define ADAPTER_STATE_LINK_DOWN 2
#define ADAPTER_STATE_READY 3 #define ADAPTER_STATE_READY 3
u32 flags; unsigned long flags;
unsigned long init_done; #define BNX2FC_FLAG_FW_INIT_DONE 0
#define BNX2FC_FW_INIT_DONE 0 #define BNX2FC_FLAG_DESTROY_CMPL 1
#define BNX2FC_CTLR_INIT_DONE 1
#define BNX2FC_CREATE_DONE 2
struct fcoe_ctlr ctlr;
struct list_head vports;
u8 vlan_enabled;
int vlan_id;
u32 next_conn_id; u32 next_conn_id;
struct fcoe_task_ctx_entry **task_ctx; struct fcoe_task_ctx_entry **task_ctx;
dma_addr_t *task_ctx_dma; dma_addr_t *task_ctx_dma;
...@@ -199,38 +188,41 @@ struct bnx2fc_hba { ...@@ -199,38 +188,41 @@ struct bnx2fc_hba {
char *dummy_buffer; char *dummy_buffer;
dma_addr_t dummy_buf_dma; dma_addr_t dummy_buf_dma;
/* Active list of offloaded sessions */
struct bnx2fc_rport **tgt_ofld_list;
/* statistics */
struct fcoe_statistics_params *stats_buffer; struct fcoe_statistics_params *stats_buffer;
dma_addr_t stats_buf_dma; dma_addr_t stats_buf_dma;
struct completion stat_req_done;
/*
* PCI related info.
*/
u16 pci_did;
u16 pci_vid;
u16 pci_sdid;
u16 pci_svid;
u16 pci_func;
u16 pci_devno;
struct task_struct *l2_thread;
/* linkdown handling */
wait_queue_head_t shutdown_wait;
int wait_for_link_down;
/*destroy handling */ /*destroy handling */
struct timer_list destroy_timer; struct timer_list destroy_timer;
wait_queue_head_t destroy_wait; wait_queue_head_t destroy_wait;
/* Active list of offloaded sessions */ /* linkdown handling */
struct bnx2fc_rport *tgt_ofld_list[BNX2FC_NUM_MAX_SESS]; wait_queue_head_t shutdown_wait;
int wait_for_link_down;
int num_ofld_sess; int num_ofld_sess;
struct list_head vports;
};
/* statistics */ struct bnx2fc_interface {
struct completion stat_req_done; struct list_head list;
unsigned long if_flags;
#define BNX2FC_CTLR_INIT_DONE 0
struct bnx2fc_hba *hba;
struct net_device *netdev;
struct packet_type fcoe_packet_type;
struct packet_type fip_packet_type;
struct workqueue_struct *timer_work_queue;
struct kref kref;
struct fcoe_ctlr ctlr;
u8 vlan_enabled;
int vlan_id;
}; };
#define bnx2fc_from_ctlr(fip) container_of(fip, struct bnx2fc_hba, ctlr) #define bnx2fc_from_ctlr(fip) container_of(fip, struct bnx2fc_interface, ctlr)
struct bnx2fc_lport { struct bnx2fc_lport {
struct list_head list; struct list_head list;
...@@ -262,10 +254,9 @@ struct bnx2fc_rport { ...@@ -262,10 +254,9 @@ struct bnx2fc_rport {
#define BNX2FC_FLAG_DISABLED 0x3 #define BNX2FC_FLAG_DISABLED 0x3
#define BNX2FC_FLAG_DESTROYED 0x4 #define BNX2FC_FLAG_DESTROYED 0x4
#define BNX2FC_FLAG_OFLD_REQ_CMPL 0x5 #define BNX2FC_FLAG_OFLD_REQ_CMPL 0x5
#define BNX2FC_FLAG_DESTROY_CMPL 0x6 #define BNX2FC_FLAG_CTX_ALLOC_FAILURE 0x6
#define BNX2FC_FLAG_CTX_ALLOC_FAILURE 0x7 #define BNX2FC_FLAG_UPLD_REQ_COMPL 0x7
#define BNX2FC_FLAG_UPLD_REQ_COMPL 0x8 #define BNX2FC_FLAG_EXPL_LOGO 0x8
#define BNX2FC_FLAG_EXPL_LOGO 0x9
u8 src_addr[ETH_ALEN]; u8 src_addr[ETH_ALEN];
u32 max_sqes; u32 max_sqes;
...@@ -327,12 +318,9 @@ struct bnx2fc_rport { ...@@ -327,12 +318,9 @@ struct bnx2fc_rport {
spinlock_t cq_lock; spinlock_t cq_lock;
atomic_t num_active_ios; atomic_t num_active_ios;
u32 flush_in_prog; u32 flush_in_prog;
unsigned long work_time_slice;
unsigned long timestamp; unsigned long timestamp;
struct list_head free_task_list; struct list_head free_task_list;
struct bnx2fc_cmd *pending_queue[BNX2FC_SQ_WQES_MAX+1]; struct bnx2fc_cmd *pending_queue[BNX2FC_SQ_WQES_MAX+1];
atomic_t pi;
atomic_t ci;
struct list_head active_cmd_queue; struct list_head active_cmd_queue;
struct list_head els_queue; struct list_head els_queue;
struct list_head io_retire_queue; struct list_head io_retire_queue;
......
...@@ -259,7 +259,7 @@ static int bnx2fc_initiate_els(struct bnx2fc_rport *tgt, unsigned int op, ...@@ -259,7 +259,7 @@ static int bnx2fc_initiate_els(struct bnx2fc_rport *tgt, unsigned int op,
struct bnx2fc_els_cb_arg *cb_arg, u32 timer_msec) struct bnx2fc_els_cb_arg *cb_arg, u32 timer_msec)
{ {
struct fcoe_port *port = tgt->port; struct fcoe_port *port = tgt->port;
struct bnx2fc_hba *hba = port->priv; struct bnx2fc_interface *interface = port->priv;
struct fc_rport *rport = tgt->rport; struct fc_rport *rport = tgt->rport;
struct fc_lport *lport = port->lport; struct fc_lport *lport = port->lport;
struct bnx2fc_cmd *els_req; struct bnx2fc_cmd *els_req;
...@@ -352,7 +352,8 @@ static int bnx2fc_initiate_els(struct bnx2fc_rport *tgt, unsigned int op, ...@@ -352,7 +352,8 @@ static int bnx2fc_initiate_els(struct bnx2fc_rport *tgt, unsigned int op,
index = xid % BNX2FC_TASKS_PER_PAGE; index = xid % BNX2FC_TASKS_PER_PAGE;
/* Initialize task context for this IO request */ /* Initialize task context for this IO request */
task_page = (struct fcoe_task_ctx_entry *) hba->task_ctx[task_idx]; task_page = (struct fcoe_task_ctx_entry *)
interface->hba->task_ctx[task_idx];
task = &(task_page[index]); task = &(task_page[index]);
bnx2fc_init_mp_task(els_req, task); bnx2fc_init_mp_task(els_req, task);
...@@ -496,8 +497,8 @@ struct fc_seq *bnx2fc_elsct_send(struct fc_lport *lport, u32 did, ...@@ -496,8 +497,8 @@ struct fc_seq *bnx2fc_elsct_send(struct fc_lport *lport, u32 did,
void *arg, u32 timeout) void *arg, u32 timeout)
{ {
struct fcoe_port *port = lport_priv(lport); struct fcoe_port *port = lport_priv(lport);
struct bnx2fc_hba *hba = port->priv; struct bnx2fc_interface *interface = port->priv;
struct fcoe_ctlr *fip = &hba->ctlr; struct fcoe_ctlr *fip = &interface->ctlr;
struct fc_frame_header *fh = fc_frame_header_get(fp); struct fc_frame_header *fh = fc_frame_header_get(fp);
switch (op) { switch (op) {
......
This diff is collapsed.
This diff is collapsed.
...@@ -29,10 +29,11 @@ static void bnx2fc_parse_fcp_rsp(struct bnx2fc_cmd *io_req, ...@@ -29,10 +29,11 @@ static void bnx2fc_parse_fcp_rsp(struct bnx2fc_cmd *io_req,
void bnx2fc_cmd_timer_set(struct bnx2fc_cmd *io_req, void bnx2fc_cmd_timer_set(struct bnx2fc_cmd *io_req,
unsigned int timer_msec) unsigned int timer_msec)
{ {
struct bnx2fc_hba *hba = io_req->port->priv; struct bnx2fc_interface *interface = io_req->port->priv;
if (queue_delayed_work(hba->timer_work_queue, &io_req->timeout_work, if (queue_delayed_work(interface->timer_work_queue,
msecs_to_jiffies(timer_msec))) &io_req->timeout_work,
msecs_to_jiffies(timer_msec)))
kref_get(&io_req->refcount); kref_get(&io_req->refcount);
} }
...@@ -419,8 +420,8 @@ void bnx2fc_cmd_mgr_free(struct bnx2fc_cmd_mgr *cmgr) ...@@ -419,8 +420,8 @@ void bnx2fc_cmd_mgr_free(struct bnx2fc_cmd_mgr *cmgr)
struct bnx2fc_cmd *bnx2fc_elstm_alloc(struct bnx2fc_rport *tgt, int type) struct bnx2fc_cmd *bnx2fc_elstm_alloc(struct bnx2fc_rport *tgt, int type)
{ {
struct fcoe_port *port = tgt->port; struct fcoe_port *port = tgt->port;
struct bnx2fc_hba *hba = port->priv; struct bnx2fc_interface *interface = port->priv;
struct bnx2fc_cmd_mgr *cmd_mgr = hba->cmd_mgr; struct bnx2fc_cmd_mgr *cmd_mgr = interface->hba->cmd_mgr;
struct bnx2fc_cmd *io_req; struct bnx2fc_cmd *io_req;
struct list_head *listp; struct list_head *listp;
struct io_bdt *bd_tbl; struct io_bdt *bd_tbl;
...@@ -485,11 +486,12 @@ struct bnx2fc_cmd *bnx2fc_elstm_alloc(struct bnx2fc_rport *tgt, int type) ...@@ -485,11 +486,12 @@ struct bnx2fc_cmd *bnx2fc_elstm_alloc(struct bnx2fc_rport *tgt, int type)
kref_init(&io_req->refcount); kref_init(&io_req->refcount);
return io_req; return io_req;
} }
static struct bnx2fc_cmd *bnx2fc_cmd_alloc(struct bnx2fc_rport *tgt)
struct bnx2fc_cmd *bnx2fc_cmd_alloc(struct bnx2fc_rport *tgt)
{ {
struct fcoe_port *port = tgt->port; struct fcoe_port *port = tgt->port;
struct bnx2fc_hba *hba = port->priv; struct bnx2fc_interface *interface = port->priv;
struct bnx2fc_cmd_mgr *cmd_mgr = hba->cmd_mgr; struct bnx2fc_cmd_mgr *cmd_mgr = interface->hba->cmd_mgr;
struct bnx2fc_cmd *io_req; struct bnx2fc_cmd *io_req;
struct list_head *listp; struct list_head *listp;
struct io_bdt *bd_tbl; struct io_bdt *bd_tbl;
...@@ -570,7 +572,8 @@ void bnx2fc_cmd_release(struct kref *ref) ...@@ -570,7 +572,8 @@ void bnx2fc_cmd_release(struct kref *ref)
static void bnx2fc_free_mp_resc(struct bnx2fc_cmd *io_req) static void bnx2fc_free_mp_resc(struct bnx2fc_cmd *io_req)
{ {
struct bnx2fc_mp_req *mp_req = &(io_req->mp_req); struct bnx2fc_mp_req *mp_req = &(io_req->mp_req);
struct bnx2fc_hba *hba = io_req->port->priv; struct bnx2fc_interface *interface = io_req->port->priv;
struct bnx2fc_hba *hba = interface->hba;
size_t sz = sizeof(struct fcoe_bd_ctx); size_t sz = sizeof(struct fcoe_bd_ctx);
/* clear tm flags */ /* clear tm flags */
...@@ -606,7 +609,8 @@ int bnx2fc_init_mp_req(struct bnx2fc_cmd *io_req) ...@@ -606,7 +609,8 @@ int bnx2fc_init_mp_req(struct bnx2fc_cmd *io_req)
struct bnx2fc_mp_req *mp_req; struct bnx2fc_mp_req *mp_req;
struct fcoe_bd_ctx *mp_req_bd; struct fcoe_bd_ctx *mp_req_bd;
struct fcoe_bd_ctx *mp_resp_bd; struct fcoe_bd_ctx *mp_resp_bd;
struct bnx2fc_hba *hba = io_req->port->priv; struct bnx2fc_interface *interface = io_req->port->priv;
struct bnx2fc_hba *hba = interface->hba;
dma_addr_t addr; dma_addr_t addr;
size_t sz; size_t sz;
...@@ -682,7 +686,7 @@ static int bnx2fc_initiate_tmf(struct scsi_cmnd *sc_cmd, u8 tm_flags) ...@@ -682,7 +686,7 @@ static int bnx2fc_initiate_tmf(struct scsi_cmnd *sc_cmd, u8 tm_flags)
struct fc_rport *rport = starget_to_rport(scsi_target(sc_cmd->device)); struct fc_rport *rport = starget_to_rport(scsi_target(sc_cmd->device));
struct fc_rport_libfc_priv *rp = rport->dd_data; struct fc_rport_libfc_priv *rp = rport->dd_data;
struct fcoe_port *port; struct fcoe_port *port;
struct bnx2fc_hba *hba; struct bnx2fc_interface *interface;
struct bnx2fc_rport *tgt; struct bnx2fc_rport *tgt;
struct bnx2fc_cmd *io_req; struct bnx2fc_cmd *io_req;
struct bnx2fc_mp_req *tm_req; struct bnx2fc_mp_req *tm_req;
...@@ -699,7 +703,7 @@ static int bnx2fc_initiate_tmf(struct scsi_cmnd *sc_cmd, u8 tm_flags) ...@@ -699,7 +703,7 @@ static int bnx2fc_initiate_tmf(struct scsi_cmnd *sc_cmd, u8 tm_flags)
lport = shost_priv(host); lport = shost_priv(host);
port = lport_priv(lport); port = lport_priv(lport);
hba = port->priv; interface = port->priv;
if (rport == NULL) { if (rport == NULL) {
printk(KERN_ERR PFX "device_reset: rport is NULL\n"); printk(KERN_ERR PFX "device_reset: rport is NULL\n");
...@@ -774,7 +778,8 @@ static int bnx2fc_initiate_tmf(struct scsi_cmnd *sc_cmd, u8 tm_flags) ...@@ -774,7 +778,8 @@ static int bnx2fc_initiate_tmf(struct scsi_cmnd *sc_cmd, u8 tm_flags)
index = xid % BNX2FC_TASKS_PER_PAGE; index = xid % BNX2FC_TASKS_PER_PAGE;
/* Initialize task context for this IO request */ /* Initialize task context for this IO request */
task_page = (struct fcoe_task_ctx_entry *) hba->task_ctx[task_idx]; task_page = (struct fcoe_task_ctx_entry *)
interface->hba->task_ctx[task_idx];
task = &(task_page[index]); task = &(task_page[index]);
bnx2fc_init_mp_task(io_req, task); bnx2fc_init_mp_task(io_req, task);
...@@ -822,7 +827,7 @@ int bnx2fc_initiate_abts(struct bnx2fc_cmd *io_req) ...@@ -822,7 +827,7 @@ int bnx2fc_initiate_abts(struct bnx2fc_cmd *io_req)
struct bnx2fc_rport *tgt = io_req->tgt; struct bnx2fc_rport *tgt = io_req->tgt;
struct fc_rport *rport = tgt->rport; struct fc_rport *rport = tgt->rport;
struct fc_rport_priv *rdata = tgt->rdata; struct fc_rport_priv *rdata = tgt->rdata;
struct bnx2fc_hba *hba; struct bnx2fc_interface *interface;
struct fcoe_port *port; struct fcoe_port *port;
struct bnx2fc_cmd *abts_io_req; struct bnx2fc_cmd *abts_io_req;
struct fcoe_task_ctx_entry *task; struct fcoe_task_ctx_entry *task;
...@@ -839,7 +844,7 @@ int bnx2fc_initiate_abts(struct bnx2fc_cmd *io_req) ...@@ -839,7 +844,7 @@ int bnx2fc_initiate_abts(struct bnx2fc_cmd *io_req)
BNX2FC_IO_DBG(io_req, "Entered bnx2fc_initiate_abts\n"); BNX2FC_IO_DBG(io_req, "Entered bnx2fc_initiate_abts\n");
port = io_req->port; port = io_req->port;
hba = port->priv; interface = port->priv;
lport = port->lport; lport = port->lport;
if (!test_bit(BNX2FC_FLAG_SESSION_READY, &tgt->flags)) { if (!test_bit(BNX2FC_FLAG_SESSION_READY, &tgt->flags)) {
...@@ -896,7 +901,8 @@ int bnx2fc_initiate_abts(struct bnx2fc_cmd *io_req) ...@@ -896,7 +901,8 @@ int bnx2fc_initiate_abts(struct bnx2fc_cmd *io_req)
index = xid % BNX2FC_TASKS_PER_PAGE; index = xid % BNX2FC_TASKS_PER_PAGE;
/* Initialize task context for this IO request */ /* Initialize task context for this IO request */
task_page = (struct fcoe_task_ctx_entry *) hba->task_ctx[task_idx]; task_page = (struct fcoe_task_ctx_entry *)
interface->hba->task_ctx[task_idx];
task = &(task_page[index]); task = &(task_page[index]);
bnx2fc_init_mp_task(abts_io_req, task); bnx2fc_init_mp_task(abts_io_req, task);
...@@ -928,7 +934,7 @@ int bnx2fc_initiate_cleanup(struct bnx2fc_cmd *io_req) ...@@ -928,7 +934,7 @@ int bnx2fc_initiate_cleanup(struct bnx2fc_cmd *io_req)
{ {
struct fc_lport *lport; struct fc_lport *lport;
struct bnx2fc_rport *tgt = io_req->tgt; struct bnx2fc_rport *tgt = io_req->tgt;
struct bnx2fc_hba *hba; struct bnx2fc_interface *interface;
struct fcoe_port *port; struct fcoe_port *port;
struct bnx2fc_cmd *cleanup_io_req; struct bnx2fc_cmd *cleanup_io_req;
struct fcoe_task_ctx_entry *task; struct fcoe_task_ctx_entry *task;
...@@ -941,7 +947,7 @@ int bnx2fc_initiate_cleanup(struct bnx2fc_cmd *io_req) ...@@ -941,7 +947,7 @@ int bnx2fc_initiate_cleanup(struct bnx2fc_cmd *io_req)
BNX2FC_IO_DBG(io_req, "Entered bnx2fc_initiate_cleanup\n"); BNX2FC_IO_DBG(io_req, "Entered bnx2fc_initiate_cleanup\n");
port = io_req->port; port = io_req->port;
hba = port->priv; interface = port->priv;
lport = port->lport; lport = port->lport;
cleanup_io_req = bnx2fc_elstm_alloc(tgt, BNX2FC_CLEANUP); cleanup_io_req = bnx2fc_elstm_alloc(tgt, BNX2FC_CLEANUP);
...@@ -963,7 +969,8 @@ int bnx2fc_initiate_cleanup(struct bnx2fc_cmd *io_req) ...@@ -963,7 +969,8 @@ int bnx2fc_initiate_cleanup(struct bnx2fc_cmd *io_req)
index = xid % BNX2FC_TASKS_PER_PAGE; index = xid % BNX2FC_TASKS_PER_PAGE;
/* Initialize task context for this IO request */ /* Initialize task context for this IO request */
task_page = (struct fcoe_task_ctx_entry *) hba->task_ctx[task_idx]; task_page = (struct fcoe_task_ctx_entry *)
interface->hba->task_ctx[task_idx];
task = &(task_page[index]); task = &(task_page[index]);
orig_xid = io_req->xid; orig_xid = io_req->xid;
...@@ -1796,7 +1803,8 @@ static int bnx2fc_post_io_req(struct bnx2fc_rport *tgt, ...@@ -1796,7 +1803,8 @@ static int bnx2fc_post_io_req(struct bnx2fc_rport *tgt,
struct fcoe_task_ctx_entry *task_page; struct fcoe_task_ctx_entry *task_page;
struct scsi_cmnd *sc_cmd = io_req->sc_cmd; struct scsi_cmnd *sc_cmd = io_req->sc_cmd;
struct fcoe_port *port = tgt->port; struct fcoe_port *port = tgt->port;
struct bnx2fc_hba *hba = port->priv; struct bnx2fc_interface *interface = port->priv;
struct bnx2fc_hba *hba = interface->hba;
struct fc_lport *lport = port->lport; struct fc_lport *lport = port->lport;
struct fcoe_dev_stats *stats; struct fcoe_dev_stats *stats;
int task_idx, index; int task_idx, index;
......
...@@ -65,7 +65,8 @@ static void bnx2fc_offload_session(struct fcoe_port *port, ...@@ -65,7 +65,8 @@ static void bnx2fc_offload_session(struct fcoe_port *port,
{ {
struct fc_lport *lport = rdata->local_port; struct fc_lport *lport = rdata->local_port;
struct fc_rport *rport = rdata->rport; struct fc_rport *rport = rdata->rport;
struct bnx2fc_hba *hba = port->priv; struct bnx2fc_interface *interface = port->priv;
struct bnx2fc_hba *hba = interface->hba;
int rval; int rval;
int i = 0; int i = 0;
...@@ -237,7 +238,8 @@ void bnx2fc_flush_active_ios(struct bnx2fc_rport *tgt) ...@@ -237,7 +238,8 @@ void bnx2fc_flush_active_ios(struct bnx2fc_rport *tgt)
static void bnx2fc_upload_session(struct fcoe_port *port, static void bnx2fc_upload_session(struct fcoe_port *port,
struct bnx2fc_rport *tgt) struct bnx2fc_rport *tgt)
{ {
struct bnx2fc_hba *hba = port->priv; struct bnx2fc_interface *interface = port->priv;
struct bnx2fc_hba *hba = interface->hba;
BNX2FC_TGT_DBG(tgt, "upload_session: active_ios = %d\n", BNX2FC_TGT_DBG(tgt, "upload_session: active_ios = %d\n",
tgt->num_active_ios.counter); tgt->num_active_ios.counter);
...@@ -316,7 +318,8 @@ static int bnx2fc_init_tgt(struct bnx2fc_rport *tgt, ...@@ -316,7 +318,8 @@ static int bnx2fc_init_tgt(struct bnx2fc_rport *tgt,
{ {
struct fc_rport *rport = rdata->rport; struct fc_rport *rport = rdata->rport;
struct bnx2fc_hba *hba = port->priv; struct bnx2fc_interface *interface = port->priv;
struct bnx2fc_hba *hba = interface->hba;
struct b577xx_doorbell_set_prod *sq_db = &tgt->sq_db; struct b577xx_doorbell_set_prod *sq_db = &tgt->sq_db;
struct b577xx_fcoe_rx_doorbell *rx_db = &tgt->rx_db; struct b577xx_fcoe_rx_doorbell *rx_db = &tgt->rx_db;
...@@ -392,7 +395,8 @@ void bnx2fc_rport_event_handler(struct fc_lport *lport, ...@@ -392,7 +395,8 @@ void bnx2fc_rport_event_handler(struct fc_lport *lport,
enum fc_rport_event event) enum fc_rport_event event)
{ {
struct fcoe_port *port = lport_priv(lport); struct fcoe_port *port = lport_priv(lport);
struct bnx2fc_hba *hba = port->priv; struct bnx2fc_interface *interface = port->priv;
struct bnx2fc_hba *hba = interface->hba;
struct fc_rport *rport = rdata->rport; struct fc_rport *rport = rdata->rport;
struct fc_rport_libfc_priv *rp; struct fc_rport_libfc_priv *rp;
struct bnx2fc_rport *tgt; struct bnx2fc_rport *tgt;
...@@ -537,7 +541,8 @@ void bnx2fc_rport_event_handler(struct fc_lport *lport, ...@@ -537,7 +541,8 @@ void bnx2fc_rport_event_handler(struct fc_lport *lport,
struct bnx2fc_rport *bnx2fc_tgt_lookup(struct fcoe_port *port, struct bnx2fc_rport *bnx2fc_tgt_lookup(struct fcoe_port *port,
u32 port_id) u32 port_id)
{ {
struct bnx2fc_hba *hba = port->priv; struct bnx2fc_interface *interface = port->priv;
struct bnx2fc_hba *hba = interface->hba;
struct bnx2fc_rport *tgt; struct bnx2fc_rport *tgt;
struct fc_rport_priv *rdata; struct fc_rport_priv *rdata;
int i; int i;
...@@ -552,7 +557,7 @@ struct bnx2fc_rport *bnx2fc_tgt_lookup(struct fcoe_port *port, ...@@ -552,7 +557,7 @@ struct bnx2fc_rport *bnx2fc_tgt_lookup(struct fcoe_port *port,
"obtained\n"); "obtained\n");
return tgt; return tgt;
} else { } else {
printk(KERN_ERR PFX "rport 0x%x " BNX2FC_TGT_DBG(tgt, "rport 0x%x "
"is in DELETED state\n", "is in DELETED state\n",
rdata->ids.port_id); rdata->ids.port_id);
return NULL; return NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment