diff options
author | Jayamohan Kallickal <jayamohank@serverengines.com> | 2009-10-23 02:22:33 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-12-04 13:00:38 -0500 |
commit | bfead3b2cb4607c71831423c3ee97d22cd0c9dcb (patch) | |
tree | 13822ffd73826b315f8be0077c0dc9b65ab3ff86 /drivers/scsi/be2iscsi/be_iscsi.c | |
parent | b4a9c7ede96e90f7b1ec009ce7256059295e76df (diff) |
[SCSI] be2iscsi: Adding msix and mcc_rings V3
This patch enables msix for be2iscsi. It also enables use
of mcc_rings for fw commands. Since the mcc eq creation is
dependent on msix I am sending as one patch
Signed-off-by: Jayamohan Kallickal <jayamohank@serverengines.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/be2iscsi/be_iscsi.c')
-rw-r--r-- | drivers/scsi/be2iscsi/be_iscsi.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/drivers/scsi/be2iscsi/be_iscsi.c b/drivers/scsi/be2iscsi/be_iscsi.c index 2fd25442cfaf..d587b0362f18 100644 --- a/drivers/scsi/be2iscsi/be_iscsi.c +++ b/drivers/scsi/be2iscsi/be_iscsi.c | |||
@@ -67,11 +67,11 @@ struct iscsi_cls_session *beiscsi_session_create(struct iscsi_endpoint *ep, | |||
67 | cmds_max = beiscsi_ep->phba->params.wrbs_per_cxn; | 67 | cmds_max = beiscsi_ep->phba->params.wrbs_per_cxn; |
68 | } | 68 | } |
69 | 69 | ||
70 | cls_session = iscsi_session_setup(&beiscsi_iscsi_transport, | 70 | cls_session = iscsi_session_setup(&beiscsi_iscsi_transport, |
71 | shost, cmds_max, | 71 | shost, cmds_max, |
72 | sizeof(*beiscsi_sess), | 72 | sizeof(*beiscsi_sess), |
73 | sizeof(*io_task), | 73 | sizeof(*io_task), |
74 | initial_cmdsn, ISCSI_MAX_TARGET); | 74 | initial_cmdsn, ISCSI_MAX_TARGET); |
75 | if (!cls_session) | 75 | if (!cls_session) |
76 | return NULL; | 76 | return NULL; |
77 | sess = cls_session->dd_data; | 77 | sess = cls_session->dd_data; |
@@ -297,7 +297,7 @@ int beiscsi_get_host_param(struct Scsi_Host *shost, | |||
297 | 297 | ||
298 | switch (param) { | 298 | switch (param) { |
299 | case ISCSI_HOST_PARAM_HWADDRESS: | 299 | case ISCSI_HOST_PARAM_HWADDRESS: |
300 | be_cmd_get_mac_addr(&phba->ctrl, phba->mac_address); | 300 | be_cmd_get_mac_addr(phba, phba->mac_address); |
301 | len = sysfs_format_mac(buf, phba->mac_address, ETH_ALEN); | 301 | len = sysfs_format_mac(buf, phba->mac_address, ETH_ALEN); |
302 | break; | 302 | break; |
303 | default: | 303 | default: |
@@ -377,16 +377,12 @@ int beiscsi_conn_start(struct iscsi_cls_conn *cls_conn) | |||
377 | struct beiscsi_conn *beiscsi_conn = conn->dd_data; | 377 | struct beiscsi_conn *beiscsi_conn = conn->dd_data; |
378 | struct beiscsi_endpoint *beiscsi_ep; | 378 | struct beiscsi_endpoint *beiscsi_ep; |
379 | struct beiscsi_offload_params params; | 379 | struct beiscsi_offload_params params; |
380 | struct iscsi_session *session = conn->session; | ||
381 | struct Scsi_Host *shost = iscsi_session_to_shost(session->cls_session); | ||
382 | struct beiscsi_hba *phba = iscsi_host_priv(shost); | ||
383 | 380 | ||
384 | memset(¶ms, 0, sizeof(struct beiscsi_offload_params)); | 381 | memset(¶ms, 0, sizeof(struct beiscsi_offload_params)); |
385 | beiscsi_ep = beiscsi_conn->ep; | 382 | beiscsi_ep = beiscsi_conn->ep; |
386 | if (!beiscsi_ep) | 383 | if (!beiscsi_ep) |
387 | SE_DEBUG(DBG_LVL_1, "In beiscsi_conn_start , no beiscsi_ep\n"); | 384 | SE_DEBUG(DBG_LVL_1, "In beiscsi_conn_start , no beiscsi_ep\n"); |
388 | 385 | ||
389 | free_mgmt_sgl_handle(phba, beiscsi_conn->plogin_sgl_handle); | ||
390 | beiscsi_conn->login_in_progress = 0; | 386 | beiscsi_conn->login_in_progress = 0; |
391 | beiscsi_set_params_for_offld(beiscsi_conn, ¶ms); | 387 | beiscsi_set_params_for_offld(beiscsi_conn, ¶ms); |
392 | beiscsi_offload_connection(beiscsi_conn, ¶ms); | 388 | beiscsi_offload_connection(beiscsi_conn, ¶ms); |
@@ -498,6 +494,13 @@ beiscsi_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr, | |||
498 | SE_DEBUG(DBG_LVL_1, "shost is NULL \n"); | 494 | SE_DEBUG(DBG_LVL_1, "shost is NULL \n"); |
499 | return ERR_PTR(ret); | 495 | return ERR_PTR(ret); |
500 | } | 496 | } |
497 | |||
498 | if (phba->state) { | ||
499 | ret = -EBUSY; | ||
500 | SE_DEBUG(DBG_LVL_1, "The Adapet state is Not UP \n"); | ||
501 | return ERR_PTR(ret); | ||
502 | } | ||
503 | |||
501 | ep = iscsi_create_endpoint(sizeof(struct beiscsi_endpoint)); | 504 | ep = iscsi_create_endpoint(sizeof(struct beiscsi_endpoint)); |
502 | if (!ep) { | 505 | if (!ep) { |
503 | ret = -ENOMEM; | 506 | ret = -ENOMEM; |