* [PATCH 4/4] be2iscsi: code reorganizing and minor changes
@ 2009-11-18 0:43 Jayamohan Kallickal
2009-11-19 21:55 ` Mike Christie
0 siblings, 1 reply; 4+ messages in thread
From: Jayamohan Kallickal @ 2009-11-18 0:43 UTC (permalink / raw)
To: linux-scsi; +Cc: James.Bottomley, michaelc
This patch does a couple of very small, mostly
single line changes which I feel will be an overkill to put in
individual patches
1) moved pci_set_drvdata to inside beiscsi_hba_alloc
2) Enabled handling of TEXT Response
3) Added opcode for ISCSI_OP_LOGOUT_RSP, ISCSI_OP_SCSI_TMFUNC_RSP,
4) Ask for ack based completion for NOOPOUT and TTT != RESERVERD
Signed-off-by: Jayamohan Kallickal <jayamohank@serverengines.com>
---
drivers/scsi/be2iscsi/be_main.c | 23 +++++++++++++++++------
drivers/scsi/be2iscsi/be_main.h | 4 ++--
2 files changed, 19 insertions(+), 8 deletions(-)
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index ac76b14..109482f 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -112,6 +112,7 @@ static struct beiscsi_hba *beiscsi_hba_alloc(struct pci_dev *pcidev)
memset(phba, 0, sizeof(*phba));
phba->shost = shost;
phba->pcidev = pci_dev_get(pcidev);
+ pci_set_drvdata(pcidev, phba);
if (iscsi_host_add(shost, &phba->pcidev->dev))
goto free_devices;
@@ -564,6 +565,8 @@ beiscsi_process_async_pdu(struct beiscsi_conn *beiscsi_conn,
login_hdr = (struct iscsi_hdr *)ppdu;
login_hdr->itt = io_task->libiscsi_itt;
break;
+ case ISCSI_OP_TEXT_RSP:
+ break;
default:
shost_printk(KERN_WARNING, phba->shost,
"Unrecognized opcode 0x%x in async msg \n",
@@ -789,6 +792,7 @@ be_complete_io(struct beiscsi_conn *beiscsi_conn,
memcpy(task->sc->sense_buffer, sense,
min_t(u16, sense_len, SCSI_SENSE_BUFFERSIZE));
}
+
if (io_task->cmd_bhs->iscsi_hdr.flags & ISCSI_FLAG_CMD_READ) {
if (psol->dw[offsetof(struct amap_sol_cqe, i_res_cnt) / 32]
& SOL_RES_CNT_MASK)
@@ -810,6 +814,7 @@ be_complete_logout(struct beiscsi_conn *beiscsi_conn,
struct iscsi_conn *conn = beiscsi_conn->conn;
hdr = (struct iscsi_logout_rsp *)task->hdr;
+ hdr->opcode = ISCSI_OP_LOGOUT_RSP;
hdr->t2wait = 5;
hdr->t2retain = 0;
hdr->flags = ((psol->dw[offsetof(struct amap_sol_cqe, i_flags) / 32]
@@ -824,6 +829,9 @@ be_complete_logout(struct beiscsi_conn *beiscsi_conn,
& SOL_EXP_CMD_SN_MASK) +
((psol->dw[offsetof(struct amap_sol_cqe, i_cmd_wnd)
/ 32] & SOL_CMD_WND_MASK) >> 24) - 1);
+ hdr->dlength[0] = 0;
+ hdr->dlength[1] = 0;
+ hdr->dlength[2] = 0;
hdr->hlength = 0;
hdr->itt = io_task->libiscsi_itt;
__iscsi_complete_pdu(conn, (struct iscsi_hdr *)hdr, NULL, 0);
@@ -838,6 +846,7 @@ be_complete_tmf(struct beiscsi_conn *beiscsi_conn,
struct beiscsi_io_task *io_task = task->dd_data;
hdr = (struct iscsi_tm_rsp *)task->hdr;
+ hdr->opcode = ISCSI_OP_SCSI_TMFUNC_RSP;
hdr->flags = ((psol->dw[offsetof(struct amap_sol_cqe, i_flags) / 32]
& SOL_FLAGS_MASK) >> 24) | 0x80;
hdr->response = (psol->dw[offsetof(struct amap_sol_cqe, i_resp) /
@@ -1461,6 +1470,7 @@ static unsigned int beiscsi_process_cq(struct be_eq_obj *pbe_eq)
}
beiscsi_ep = ep->dd_data;
beiscsi_conn = beiscsi_ep->conn;
+
if (num_processed >= 32) {
hwi_ring_cq_db(phba, cq->id,
num_processed, 0, 0);
@@ -3332,7 +3342,7 @@ static int beiscsi_alloc_pdu(struct iscsi_task *task, uint8_t opcode)
goto free_hndls;
} else {
io_task->scsi_cmnd = NULL;
- if ((task->hdr->opcode & ISCSI_OPCODE_MASK) == ISCSI_OP_LOGIN) {
+ if ((opcode & ISCSI_OPCODE_MASK) == ISCSI_OP_LOGIN) {
if (!beiscsi_conn->login_in_progress) {
spin_lock(&phba->mgmt_sgl_lock);
io_task->psgl_handle = (struct sgl_handle *)
@@ -3539,6 +3549,10 @@ static int beiscsi_mtask(struct iscsi_task *task)
else
AMAP_SET_BITS(struct amap_iscsi_wrb, type, pwrb,
INI_RD_CMD);
+ if (task->hdr->ttt == ISCSI_RESERVED_TAG)
+ AMAP_SET_BITS(struct amap_iscsi_wrb, dmsg, pwrb, 0);
+ else
+ AMAP_SET_BITS(struct amap_iscsi_wrb, dmsg, pwrb, 1);
hwi_write_buffer(pwrb, task);
break;
case ISCSI_OP_TEXT:
@@ -3547,6 +3561,7 @@ static int beiscsi_mtask(struct iscsi_task *task)
else
AMAP_SET_BITS(struct amap_iscsi_wrb, type, pwrb,
INI_WR_CMD);
+ AMAP_SET_BITS(struct amap_iscsi_wrb, dmsg, pwrb, 0);
AMAP_SET_BITS(struct amap_iscsi_wrb, dsp, pwrb, 1);
hwi_write_buffer(pwrb, task);
break;
@@ -3594,7 +3609,7 @@ static int beiscsi_mtask(struct iscsi_task *task)
}
AMAP_SET_BITS(struct amap_iscsi_wrb, r2t_exp_dtl, pwrb,
- be32_to_cpu(task->data_count));
+ task->data_count);
AMAP_SET_BITS(struct amap_iscsi_wrb, ptr2nextwrb, pwrb,
io_task->pwrb_handle->nxt_wrb_index);
be_dws_le_to_cpu(pwrb, sizeof(struct iscsi_wrb));
@@ -3630,8 +3645,6 @@ static int beiscsi_task_xmit(struct iscsi_task *task)
SE_DEBUG(DBG_LVL_1, " scsi_dma_map Failed\n")
return num_sg;
}
- SE_DEBUG(DBG_LVL_4, "xferlen=0x%08x scmd=%p num_sg=%d sernum=%lu\n",
- (scsi_bufflen(sc)), sc, num_sg, sc->serial_number);
xferlen = scsi_bufflen(sc);
sg = scsi_sglist(sc);
if (sc->sc_data_direction == DMA_TO_DEVICE) {
@@ -3726,9 +3739,7 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev,
" Failed in beiscsi_hba_alloc \n");
goto disable_pci;
}
- SE_DEBUG(DBG_LVL_8, " phba = %p \n", phba);
- pci_set_drvdata(pcidev, phba);
if (enable_msix)
num_cpus = find_num_cpus();
else
diff --git a/drivers/scsi/be2iscsi/be_main.h b/drivers/scsi/be2iscsi/be_main.h
index 0e2eac6..388bd58 100644
--- a/drivers/scsi/be2iscsi/be_main.h
+++ b/drivers/scsi/be2iscsi/be_main.h
@@ -651,8 +651,8 @@ struct amap_iscsi_wrb {
} __packed;
-struct wrb_handle *alloc_wrb_handle(struct beiscsi_hba *phba, unsigned int cid,
- int index);
+struct wrb_handle *alloc_wrb_handle(struct beiscsi_hba *phba, unsigned int cid);
+
void
free_mgmt_sgl_handle(struct beiscsi_hba *phba, struct sgl_handle *psgl_handle);
--
1.6.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 4/4] be2iscsi: code reorganizing and minor changes
2009-11-18 0:43 Jayamohan Kallickal
@ 2009-11-19 21:55 ` Mike Christie
0 siblings, 0 replies; 4+ messages in thread
From: Mike Christie @ 2009-11-19 21:55 UTC (permalink / raw)
To: Jayamohan Kalickal; +Cc: linux-scsi, James.Bottomley
Jayamohan Kallickal wrote:
> This patch does a couple of very small, mostly
> single line changes which I feel will be an overkill to put in
> individual patches
>
> 1) moved pci_set_drvdata to inside beiscsi_hba_alloc
> 2) Enabled handling of TEXT Response
> 3) Added opcode for ISCSI_OP_LOGOUT_RSP, ISCSI_OP_SCSI_TMFUNC_RSP,
> 4) Ask for ack based completion for NOOPOUT and TTT != RESERVERD
>
I think in the future you still might want to separate these.
> diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
> index ac76b14..109482f 100644
> --- a/drivers/scsi/be2iscsi/be_main.c
> +++ b/drivers/scsi/be2iscsi/be_main.c
> @@ -564,6 +565,8 @@ beiscsi_process_async_pdu(struct beiscsi_conn *beiscsi_conn,
> login_hdr = (struct iscsi_hdr *)ppdu;
> login_hdr->itt = io_task->libiscsi_itt;
> break;
> + case ISCSI_OP_TEXT_RSP:
> + break;
Is this the only thing needed for TEXT pdu handling? Did you test with
my userspace changes and the libiscsi fixups?
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 4/4] be2iscsi: code reorganizing and minor changes
@ 2009-11-19 22:23 Jayamohan Kalickal
2009-11-19 22:38 ` Mike Christie
0 siblings, 1 reply; 4+ messages in thread
From: Jayamohan Kalickal @ 2009-11-19 22:23 UTC (permalink / raw)
To: Mike Christie; +Cc: linux-scsi, James.Bottomley
No, I haven't tested it with libiscsi fixups.
The whole packet including header is passed upwards ,so, I don't see a reason it won't work.
Will I get your changes in the latest git tree?
-Jay
_____
From: Mike Christie [mailto:michaelc@cs.wisc.edu]
To: Jayamohan Kalickal [mailto:jayamohank@serverengines.com]
Cc: linux-scsi@vger.kernel.org, James.Bottomley@suse.de
Sent: Thu, 19 Nov 2009 13:55:13 -0800
Subject: Re: [PATCH 4/4] be2iscsi: code reorganizing and minor changes
Jayamohan Kallickal wrote:
> This patch does a couple of very small, mostly
> single line changes which I feel will be an overkill to put in
> individual patches
>
> 1) moved pci_set_drvdata to inside beiscsi_hba_alloc
> 2) Enabled handling of TEXT Response
> 3) Added opcode for ISCSI_OP_LOGOUT_RSP, ISCSI_OP_SCSI_TMFUNC_RSP,
> 4) Ask for ack based completion for NOOPOUT and TTT != RESERVERD
>
I think in the future you still might want to separate these.
> diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
> index ac76b14..109482f 100644
> --- a/drivers/scsi/be2iscsi/be_main.c
> +++ b/drivers/scsi/be2iscsi/be_main.c
> @@ -564,6 +565,8 @@ beiscsi_process_async_pdu(struct beiscsi_conn *beiscsi_conn,
> login_hdr = (struct iscsi_hdr *)ppdu;
> login_hdr->itt = io_task->libiscsi_itt;
> break;
> + case ISCSI_OP_TEXT_RSP:
> + break;
Is this the only thing needed for TEXT pdu handling? Did you test with
my userspace changes and the libiscsi fixups?
___________________________________________________________________________________
This message, together with any attachment(s), contains confidential and proprietary information of
ServerEngines Corporation and is intended only for the designated recipient(s) named above. Any unauthorized
review, printing, retention, copying, disclosure or distribution is strictly prohibited. If you are not the
intended recipient of this message, please immediately advise the sender by reply email message and
delete all copies of this message and any attachment(s). Thank you.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 4/4] be2iscsi: code reorganizing and minor changes
2009-11-19 22:23 [PATCH 4/4] be2iscsi: code reorganizing and minor changes Jayamohan Kalickal
@ 2009-11-19 22:38 ` Mike Christie
0 siblings, 0 replies; 4+ messages in thread
From: Mike Christie @ 2009-11-19 22:38 UTC (permalink / raw)
To: Jayamohan Kalickal; +Cc: linux-scsi, James.Bottomley
[-- Attachment #1: Type: text/plain, Size: 2460 bytes --]
Jayamohan Kalickal wrote:
> No, I haven't tested it with libiscsi fixups.
>
> The whole packet including header is passed upwards ,so, I don't see a reason it won't work.
>
> Will I get your changes in the latest git tree?
The kernel code is in scsi-misc (it is also in linux-2.6-iscsi but that
might not have your newer be2iscsi changes). For the kernel stuff you
will need the attached patch for be2iscsi.
For userspace support get the offload branch of the open-iscsi.git tree.
>
> -Jay
>
> _____
> From: Mike Christie [mailto:michaelc@cs.wisc.edu]
> To: Jayamohan Kalickal [mailto:jayamohank@serverengines.com]
> Cc: linux-scsi@vger.kernel.org, James.Bottomley@suse.de
> Sent: Thu, 19 Nov 2009 13:55:13 -0800
> Subject: Re: [PATCH 4/4] be2iscsi: code reorganizing and minor changes
>
> Jayamohan Kallickal wrote:
>> This patch does a couple of very small, mostly
>> single line changes which I feel will be an overkill to put in
>> individual patches
>>
>> 1) moved pci_set_drvdata to inside beiscsi_hba_alloc
>> 2) Enabled handling of TEXT Response
>> 3) Added opcode for ISCSI_OP_LOGOUT_RSP, ISCSI_OP_SCSI_TMFUNC_RSP,
>> 4) Ask for ack based completion for NOOPOUT and TTT != RESERVERD
>>
>
> I think in the future you still might want to separate these.
>
>
>> diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
>> index ac76b14..109482f 100644
>> --- a/drivers/scsi/be2iscsi/be_main.c
>> +++ b/drivers/scsi/be2iscsi/be_main.c
>
>
>> @@ -564,6 +565,8 @@ beiscsi_process_async_pdu(struct beiscsi_conn *beiscsi_conn,
>> login_hdr = (struct iscsi_hdr *)ppdu;
>> login_hdr->itt = io_task->libiscsi_itt;
>> break;
>> + case ISCSI_OP_TEXT_RSP:
>> + break;
>
>
> Is this the only thing needed for TEXT pdu handling? Did you test with
> my userspace changes and the libiscsi fixups?
>
> ___________________________________________________________________________________
> This message, together with any attachment(s), contains confidential and proprietary information of
> ServerEngines Corporation and is intended only for the designated recipient(s) named above. Any unauthorized
> review, printing, retention, copying, disclosure or distribution is strictly prohibited. If you are not the
> intended recipient of this message, please immediately advise the sender by reply email message and
> delete all copies of this message and any attachment(s). Thank you.
>
[-- Attachment #2: set-text-bit.patch --]
[-- Type: text/x-patch, Size: 542 bytes --]
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index d1e7e93..aebaf25 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -3293,7 +3293,7 @@ disable_pci:
struct iscsi_transport beiscsi_iscsi_transport = {
.owner = THIS_MODULE,
.name = DRV_NAME,
- .caps = CAP_RECOVERY_L0 | CAP_HDRDGST |
+ .caps = CAP_RECOVERY_L0 | CAP_HDRDGST | CAP_TEXT_NEGO |
CAP_MULTI_R2T | CAP_DATADGST | CAP_DATA_PATH_OFFLOAD,
.param_mask = ISCSI_MAX_RECV_DLENGTH |
ISCSI_MAX_XMIT_DLENGTH |
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-11-19 22:38 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-19 22:23 [PATCH 4/4] be2iscsi: code reorganizing and minor changes Jayamohan Kalickal
2009-11-19 22:38 ` Mike Christie
-- strict thread matches above, loose matches on Subject: below --
2009-11-18 0:43 Jayamohan Kallickal
2009-11-19 21:55 ` Mike Christie
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).