Commit 016ef690 authored by Eddie Wai's avatar Eddie Wai Committed by James Bottomley

[SCSI] bnx2i: Removed the dynamic registration of CNIC

The code no longer needs to dynamically register and unregister
the CNIC device.  The CNIC device will be kept registered until
module unload.
Signed-off-by: default avatarEddie Wai <eddie.wai@broadcom.com>
Reviewed-by: default avatarMichael Chan <mchan@broadcom.com>
Reviewed-by: default avatarMike Christie <michaelc@cs.wisc.edu>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent 7a2962c7
...@@ -717,14 +717,11 @@ extern struct device_attribute *bnx2i_dev_attributes[]; ...@@ -717,14 +717,11 @@ extern struct device_attribute *bnx2i_dev_attributes[];
* Function Prototypes * Function Prototypes
*/ */
extern void bnx2i_identify_device(struct bnx2i_hba *hba); extern void bnx2i_identify_device(struct bnx2i_hba *hba);
extern void bnx2i_register_device(struct bnx2i_hba *hba);
extern void bnx2i_ulp_init(struct cnic_dev *dev); extern void bnx2i_ulp_init(struct cnic_dev *dev);
extern void bnx2i_ulp_exit(struct cnic_dev *dev); extern void bnx2i_ulp_exit(struct cnic_dev *dev);
extern void bnx2i_start(void *handle); extern void bnx2i_start(void *handle);
extern void bnx2i_stop(void *handle); extern void bnx2i_stop(void *handle);
extern void bnx2i_reg_dev_all(void);
extern void bnx2i_unreg_dev_all(void);
extern struct bnx2i_hba *get_adapter_list_head(void); extern struct bnx2i_hba *get_adapter_list_head(void);
struct bnx2i_conn *bnx2i_get_conn_from_id(struct bnx2i_hba *hba, struct bnx2i_conn *bnx2i_get_conn_from_id(struct bnx2i_hba *hba,
......
...@@ -65,8 +65,6 @@ MODULE_PARM_DESC(rq_size, "Configure RQ size"); ...@@ -65,8 +65,6 @@ MODULE_PARM_DESC(rq_size, "Configure RQ size");
u64 iscsi_error_mask = 0x00; u64 iscsi_error_mask = 0x00;
static void bnx2i_unreg_one_device(struct bnx2i_hba *hba) ;
/** /**
* bnx2i_identify_device - identifies NetXtreme II device type * bnx2i_identify_device - identifies NetXtreme II device type
...@@ -238,86 +236,6 @@ void bnx2i_stop(void *handle) ...@@ -238,86 +236,6 @@ void bnx2i_stop(void *handle)
clear_bit(ADAPTER_STATE_UP, &hba->adapter_state); clear_bit(ADAPTER_STATE_UP, &hba->adapter_state);
} }
/**
* bnx2i_register_device - register bnx2i adapter instance with the cnic driver
* @hba: Adapter instance to register
*
* registers bnx2i adapter instance with the cnic driver while holding the
* adapter structure lock
*/
void bnx2i_register_device(struct bnx2i_hba *hba)
{
int rc;
if (test_bit(ADAPTER_STATE_GOING_DOWN, &hba->adapter_state) ||
test_bit(BNX2I_CNIC_REGISTERED, &hba->reg_with_cnic)) {
return;
}
rc = hba->cnic->register_device(hba->cnic, CNIC_ULP_ISCSI, hba);
if (!rc)
set_bit(BNX2I_CNIC_REGISTERED, &hba->reg_with_cnic);
}
/**
* bnx2i_reg_dev_all - registers all adapter instances with the cnic driver
*
* registers all bnx2i adapter instances with the cnic driver while holding
* the global resource lock
*/
void bnx2i_reg_dev_all(void)
{
struct bnx2i_hba *hba, *temp;
mutex_lock(&bnx2i_dev_lock);
list_for_each_entry_safe(hba, temp, &adapter_list, link)
bnx2i_register_device(hba);
mutex_unlock(&bnx2i_dev_lock);
}
/**
* bnx2i_unreg_one_device - unregister adapter instance with the cnic driver
* @hba: Adapter instance to unregister
*
* registers bnx2i adapter instance with the cnic driver while holding
* the adapter structure lock
*/
static void bnx2i_unreg_one_device(struct bnx2i_hba *hba)
{
if (hba->ofld_conns_active ||
!test_bit(BNX2I_CNIC_REGISTERED, &hba->reg_with_cnic) ||
test_bit(ADAPTER_STATE_GOING_DOWN, &hba->adapter_state))
return;
hba->cnic->unregister_device(hba->cnic, CNIC_ULP_ISCSI);
/* ep_disconnect could come before NETDEV_DOWN, driver won't
* see NETDEV_DOWN as it already unregistered itself.
*/
hba->adapter_state = 0;
clear_bit(BNX2I_CNIC_REGISTERED, &hba->reg_with_cnic);
}
/**
* bnx2i_unreg_dev_all - unregisters all bnx2i instances with the cnic driver
*
* unregisters all bnx2i adapter instances with the cnic driver while holding
* the global resource lock
*/
void bnx2i_unreg_dev_all(void)
{
struct bnx2i_hba *hba, *temp;
mutex_lock(&bnx2i_dev_lock);
list_for_each_entry_safe(hba, temp, &adapter_list, link)
bnx2i_unreg_one_device(hba);
mutex_unlock(&bnx2i_dev_lock);
}
/** /**
* bnx2i_init_one - initialize an adapter instance and allocate memory resources * bnx2i_init_one - initialize an adapter instance and allocate memory resources
* @hba: bnx2i adapter instance * @hba: bnx2i adapter instance
......
...@@ -1606,8 +1606,6 @@ static struct bnx2i_hba *bnx2i_check_route(struct sockaddr *dst_addr) ...@@ -1606,8 +1606,6 @@ static struct bnx2i_hba *bnx2i_check_route(struct sockaddr *dst_addr)
struct bnx2i_hba *hba; struct bnx2i_hba *hba;
struct cnic_dev *cnic = NULL; struct cnic_dev *cnic = NULL;
bnx2i_reg_dev_all();
hba = get_adapter_list_head(); hba = get_adapter_list_head();
if (hba && hba->cnic) if (hba && hba->cnic)
cnic = hba->cnic->cm_select_dev(desti, CNIC_ULP_ISCSI); cnic = hba->cnic->cm_select_dev(desti, CNIC_ULP_ISCSI);
...@@ -1726,8 +1724,6 @@ static struct iscsi_endpoint *bnx2i_ep_connect(struct Scsi_Host *shost, ...@@ -1726,8 +1724,6 @@ static struct iscsi_endpoint *bnx2i_ep_connect(struct Scsi_Host *shost,
if (shost) { if (shost) {
/* driver is given scsi host to work with */ /* driver is given scsi host to work with */
hba = iscsi_host_priv(shost); hba = iscsi_host_priv(shost);
/* Register the device with cnic if not already done so */
bnx2i_register_device(hba);
} else } else
/* /*
* check if the given destination can be reached through * check if the given destination can be reached through
...@@ -1853,7 +1849,6 @@ static struct iscsi_endpoint *bnx2i_ep_connect(struct Scsi_Host *shost, ...@@ -1853,7 +1849,6 @@ static struct iscsi_endpoint *bnx2i_ep_connect(struct Scsi_Host *shost,
check_busy: check_busy:
mutex_unlock(&hba->net_dev_lock); mutex_unlock(&hba->net_dev_lock);
nohba: nohba:
bnx2i_unreg_dev_all();
return ERR_PTR(rc); return ERR_PTR(rc);
} }
...@@ -2089,8 +2084,6 @@ static void bnx2i_ep_disconnect(struct iscsi_endpoint *ep) ...@@ -2089,8 +2084,6 @@ static void bnx2i_ep_disconnect(struct iscsi_endpoint *ep)
bnx2i_free_ep(ep); bnx2i_free_ep(ep);
mutex_unlock(&hba->net_dev_lock); mutex_unlock(&hba->net_dev_lock);
if (!hba->ofld_conns_active)
bnx2i_unreg_dev_all();
wake_up_interruptible(&hba->eh_wait); wake_up_interruptible(&hba->eh_wait);
} }
......
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