aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/bnx2i/bnx2i_init.c
diff options
context:
space:
mode:
authorGrant Likely <grant.likely@secretlab.ca>2010-05-22 02:36:56 -0400
committerGrant Likely <grant.likely@secretlab.ca>2010-05-22 02:36:56 -0400
commitcf9b59e9d3e008591d1f54830f570982bb307a0d (patch)
tree113478ce8fd8c832ba726ffdf59b82cb46356476 /drivers/scsi/bnx2i/bnx2i_init.c
parent44504b2bebf8b5823c59484e73096a7d6574471d (diff)
parentf4b87dee923342505e1ddba8d34ce9de33e75050 (diff)
Merge remote branch 'origin' into secretlab/next-devicetree
Merging in current state of Linus' tree to deal with merge conflicts and build failures in vio.c after merge. Conflicts: drivers/i2c/busses/i2c-cpm.c drivers/i2c/busses/i2c-mpc.c drivers/net/gianfar.c Also fixed up one line in arch/powerpc/kernel/vio.c to use the correct node pointer. Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Diffstat (limited to 'drivers/scsi/bnx2i/bnx2i_init.c')
-rw-r--r--drivers/scsi/bnx2i/bnx2i_init.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/drivers/scsi/bnx2i/bnx2i_init.c b/drivers/scsi/bnx2i/bnx2i_init.c
index 6d8172e781cf..af6a00a600fb 100644
--- a/drivers/scsi/bnx2i/bnx2i_init.c
+++ b/drivers/scsi/bnx2i/bnx2i_init.c
@@ -17,8 +17,8 @@ static struct list_head adapter_list = LIST_HEAD_INIT(adapter_list);
17static u32 adapter_count; 17static u32 adapter_count;
18 18
19#define DRV_MODULE_NAME "bnx2i" 19#define DRV_MODULE_NAME "bnx2i"
20#define DRV_MODULE_VERSION "2.1.0" 20#define DRV_MODULE_VERSION "2.1.1"
21#define DRV_MODULE_RELDATE "Dec 06, 2009" 21#define DRV_MODULE_RELDATE "Mar 24, 2010"
22 22
23static char version[] __devinitdata = 23static char version[] __devinitdata =
24 "Broadcom NetXtreme II iSCSI Driver " DRV_MODULE_NAME \ 24 "Broadcom NetXtreme II iSCSI Driver " DRV_MODULE_NAME \
@@ -26,7 +26,8 @@ static char version[] __devinitdata =
26 26
27 27
28MODULE_AUTHOR("Anil Veerabhadrappa <anilgv@broadcom.com>"); 28MODULE_AUTHOR("Anil Veerabhadrappa <anilgv@broadcom.com>");
29MODULE_DESCRIPTION("Broadcom NetXtreme II BCM5706/5708/5709 iSCSI Driver"); 29MODULE_DESCRIPTION("Broadcom NetXtreme II BCM5706/5708/5709/57710/57711"
30 " iSCSI Driver");
30MODULE_LICENSE("GPL"); 31MODULE_LICENSE("GPL");
31MODULE_VERSION(DRV_MODULE_VERSION); 32MODULE_VERSION(DRV_MODULE_VERSION);
32 33
@@ -177,11 +178,22 @@ void bnx2i_stop(void *handle)
177 struct bnx2i_hba *hba = handle; 178 struct bnx2i_hba *hba = handle;
178 179
179 /* check if cleanup happened in GOING_DOWN context */ 180 /* check if cleanup happened in GOING_DOWN context */
180 clear_bit(ADAPTER_STATE_UP, &hba->adapter_state);
181 if (!test_and_clear_bit(ADAPTER_STATE_GOING_DOWN, 181 if (!test_and_clear_bit(ADAPTER_STATE_GOING_DOWN,
182 &hba->adapter_state)) 182 &hba->adapter_state))
183 iscsi_host_for_each_session(hba->shost, 183 iscsi_host_for_each_session(hba->shost,
184 bnx2i_drop_session); 184 bnx2i_drop_session);
185
186 /* Wait for all endpoints to be torn down, Chip will be reset once
187 * control returns to network driver. So it is required to cleanup and
188 * release all connection resources before returning from this routine.
189 */
190 wait_event_interruptible_timeout(hba->eh_wait,
191 (hba->ofld_conns_active == 0),
192 hba->hba_shutdown_tmo);
193 /* This flag should be cleared last so that ep_disconnect() gracefully
194 * cleans up connection context
195 */
196 clear_bit(ADAPTER_STATE_UP, &hba->adapter_state);
185} 197}
186 198
187/** 199/**
@@ -278,6 +290,7 @@ static int bnx2i_init_one(struct bnx2i_hba *hba, struct cnic_dev *cnic)
278 int rc; 290 int rc;
279 291
280 mutex_lock(&bnx2i_dev_lock); 292 mutex_lock(&bnx2i_dev_lock);
293 hba->cnic = cnic;
281 rc = cnic->register_device(cnic, CNIC_ULP_ISCSI, hba); 294 rc = cnic->register_device(cnic, CNIC_ULP_ISCSI, hba);
282 if (!rc) { 295 if (!rc) {
283 hba->age++; 296 hba->age++;
@@ -324,8 +337,7 @@ void bnx2i_ulp_init(struct cnic_dev *dev)
324 if (bnx2i_init_one(hba, dev)) { 337 if (bnx2i_init_one(hba, dev)) {
325 printk(KERN_ERR "bnx2i - hba %p init failed\n", hba); 338 printk(KERN_ERR "bnx2i - hba %p init failed\n", hba);
326 bnx2i_free_hba(hba); 339 bnx2i_free_hba(hba);
327 } else 340 }
328 hba->cnic = dev;
329} 341}
330 342
331 343