Add iser backports for OFED1.4

Signed-off-by: Doron Shoham <[EMAIL PROTECTED]>
---
 ..._da9c0c770e775e655e3f77c96d91ee557b117adb.patch |   44 ++++++++++++
 ..._d8196ed2181b4595eaf464a5bcbddb6c28649a39.patch |   12 +++
 ..._1548271ece9e9312fd5feb41fd58773b56a71d39.patch |   74 ++++++++++++++++++++
 ..._77a23c21aaa723f6b0ffc4a701be8c8e5a32346d.patch |   38 ++++++++++
 ..._b2c6416736b847b91950bd43cc5153e11a1f83ee.patch |   18 +++++
 ..._857ae0bdb72999936a28ce621e38e2e288c485da.patch |   16 ++++
 ..._8ad5781ae9702a8f95cfdf30967752e4297613ee.patch |   14 ++++
 ..._0801c242a33426fddc005c2f559a3d2fa6fca7eb.patch |   22 ++++++
 .../2.6.9_U4/iser_09_fix_inclusion_order.patch     |   13 ++++
 ..._da9c0c770e775e655e3f77c96d91ee557b117adb.patch |   44 ++++++++++++
 ..._d8196ed2181b4595eaf464a5bcbddb6c28649a39.patch |   12 +++
 ..._1548271ece9e9312fd5feb41fd58773b56a71d39.patch |   74 ++++++++++++++++++++
 ..._77a23c21aaa723f6b0ffc4a701be8c8e5a32346d.patch |   38 ++++++++++
 ..._b2c6416736b847b91950bd43cc5153e11a1f83ee.patch |   18 +++++
 ..._857ae0bdb72999936a28ce621e38e2e288c485da.patch |   16 ++++
 ..._8ad5781ae9702a8f95cfdf30967752e4297613ee.patch |   14 ++++
 ..._0801c242a33426fddc005c2f559a3d2fa6fca7eb.patch |   22 ++++++
 .../2.6.9_U5/iser_09_fix_inclusion_order.patch     |   13 ++++
 ..._da9c0c770e775e655e3f77c96d91ee557b117adb.patch |   44 ++++++++++++
 ..._d8196ed2181b4595eaf464a5bcbddb6c28649a39.patch |   12 +++
 ..._1548271ece9e9312fd5feb41fd58773b56a71d39.patch |   74 ++++++++++++++++++++
 ..._77a23c21aaa723f6b0ffc4a701be8c8e5a32346d.patch |   38 ++++++++++
 ..._b2c6416736b847b91950bd43cc5153e11a1f83ee.patch |   18 +++++
 ..._857ae0bdb72999936a28ce621e38e2e288c485da.patch |   16 ++++
 ..._8ad5781ae9702a8f95cfdf30967752e4297613ee.patch |   14 ++++
 ..._0801c242a33426fddc005c2f559a3d2fa6fca7eb.patch |   22 ++++++
 .../2.6.9_U6/iser_09_fix_inclusion_order.patch     |   13 ++++
 27 files changed, 753 insertions(+), 0 deletions(-)
 create mode 100644 
kernel_patches/backport/2.6.9_U4/iser_01_revert_da9c0c770e775e655e3f77c96d91ee557b117adb.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U4/iser_02_revert_d8196ed2181b4595eaf464a5bcbddb6c28649a39.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U4/iser_03_revert_1548271ece9e9312fd5feb41fd58773b56a71d39.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U4/iser_04_revert_77a23c21aaa723f6b0ffc4a701be8c8e5a32346d.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U4/iser_05_revert_b2c6416736b847b91950bd43cc5153e11a1f83ee.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U4/iser_06_revert_857ae0bdb72999936a28ce621e38e2e288c485da.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U4/iser_07_revert_8ad5781ae9702a8f95cfdf30967752e4297613ee.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U4/iser_08_revert_0801c242a33426fddc005c2f559a3d2fa6fca7eb.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U4/iser_09_fix_inclusion_order.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U5/iser_01_revert_da9c0c770e775e655e3f77c96d91ee557b117adb.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U5/iser_02_revert_d8196ed2181b4595eaf464a5bcbddb6c28649a39.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U5/iser_03_revert_1548271ece9e9312fd5feb41fd58773b56a71d39.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U5/iser_04_revert_77a23c21aaa723f6b0ffc4a701be8c8e5a32346d.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U5/iser_05_revert_b2c6416736b847b91950bd43cc5153e11a1f83ee.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U5/iser_06_revert_857ae0bdb72999936a28ce621e38e2e288c485da.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U5/iser_07_revert_8ad5781ae9702a8f95cfdf30967752e4297613ee.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U5/iser_08_revert_0801c242a33426fddc005c2f559a3d2fa6fca7eb.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U5/iser_09_fix_inclusion_order.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U6/iser_01_revert_da9c0c770e775e655e3f77c96d91ee557b117adb.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U6/iser_02_revert_d8196ed2181b4595eaf464a5bcbddb6c28649a39.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U6/iser_03_revert_1548271ece9e9312fd5feb41fd58773b56a71d39.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U6/iser_04_revert_77a23c21aaa723f6b0ffc4a701be8c8e5a32346d.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U6/iser_05_revert_b2c6416736b847b91950bd43cc5153e11a1f83ee.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U6/iser_06_revert_857ae0bdb72999936a28ce621e38e2e288c485da.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U6/iser_07_revert_8ad5781ae9702a8f95cfdf30967752e4297613ee.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U6/iser_08_revert_0801c242a33426fddc005c2f559a3d2fa6fca7eb.patch
 create mode 100644 
kernel_patches/backport/2.6.9_U6/iser_09_fix_inclusion_order.patch

diff --git 
a/kernel_patches/backport/2.6.9_U4/iser_01_revert_da9c0c770e775e655e3f77c96d91ee557b117adb.patch
 
b/kernel_patches/backport/2.6.9_U4/iser_01_revert_da9c0c770e775e655e3f77c96d91ee557b117adb.patch
new file mode 100644
index 0000000..101fdc6
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U4/iser_01_revert_da9c0c770e775e655e3f77c96d91ee557b117adb.patch
@@ -0,0 +1,44 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index bad8dac..75ecabe 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -211,10 +211,10 @@ iscsi_iser_ctask_xmit(struct iscsi_conn *conn,
+       int error = 0;
+ 
+       if (ctask->sc->sc_data_direction == DMA_TO_DEVICE) {
+-              BUG_ON(scsi_bufflen(ctask->sc) == 0);
++              BUG_ON(ctask->sc->request_bufflen == 0);
+ 
+               debug_scsi("cmd [itt %x total %d imm %d unsol_data %d\n",
+-                         ctask->itt, scsi_bufflen(ctask->sc),
++                         ctask->itt, ctask->sc->request_bufflen,
+                          ctask->imm_count, ctask->unsol_count);
+       }
+ 
+diff --git a/drivers/infiniband/ulp/iser/iser_initiator.c 
b/drivers/infiniband/ulp/iser/iser_initiator.c
+index 5d62cc0..1ae80d8 100644
+--- a/drivers/infiniband/ulp/iser/iser_initiator.c
++++ b/drivers/infiniband/ulp/iser/iser_initiator.c
+@@ -349,12 +349,18 @@ int iser_send_command(struct iscsi_conn     *conn,
+       else
+               data_buf = &iser_ctask->data[ISER_DIR_OUT];
+ 
+-      if (scsi_sg_count(sc)) { /* using a scatter list */
+-              data_buf->buf  = scsi_sglist(sc);
+-              data_buf->size = scsi_sg_count(sc);
++      if (sc->use_sg) { /* using a scatter list */
++              data_buf->buf  = sc->request_buffer;
++              data_buf->size = sc->use_sg;
++      } else if (sc->request_bufflen) {
++              /* using a single buffer - convert it into one entry SG */
++              sg_init_one(&data_buf->sg_single,
++                          sc->request_buffer, sc->request_bufflen);
++              data_buf->buf   = &data_buf->sg_single;
++              data_buf->size  = 1;
+       }
+ 
+-      data_buf->data_len = scsi_bufflen(sc);
++      data_buf->data_len = sc->request_bufflen;
+ 
+       if (hdr->flags & ISCSI_FLAG_CMD_READ) {
+               err = iser_prepare_read_cmd(ctask, edtl);
diff --git 
a/kernel_patches/backport/2.6.9_U4/iser_02_revert_d8196ed2181b4595eaf464a5bcbddb6c28649a39.patch
 
b/kernel_patches/backport/2.6.9_U4/iser_02_revert_d8196ed2181b4595eaf464a5bcbddb6c28649a39.patch
new file mode 100644
index 0000000..7b21cba
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U4/iser_02_revert_d8196ed2181b4595eaf464a5bcbddb6c28649a39.patch
@@ -0,0 +1,12 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index bad8dac..933429b 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -586,7 +586,6 @@ static struct iscsi_transport iscsi_iser_transport = {
+                                 ISCSI_FAST_ABORT | ISCSI_ABORT_TMO |
+                                 ISCSI_PING_TMO | ISCSI_RECV_TMO,
+       .host_param_mask        = ISCSI_HOST_HWADDRESS |
+-                                ISCSI_HOST_NETDEV_NAME |
+                                 ISCSI_HOST_INITIATOR_NAME,
+       .host_template          = &iscsi_iser_sht,
+       .conndata_size          = sizeof(struct iscsi_conn),
diff --git 
a/kernel_patches/backport/2.6.9_U4/iser_03_revert_1548271ece9e9312fd5feb41fd58773b56a71d39.patch
 
b/kernel_patches/backport/2.6.9_U4/iser_03_revert_1548271ece9e9312fd5feb41fd58773b56a71d39.patch
new file mode 100644
index 0000000..d72eb5a
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U4/iser_03_revert_1548271ece9e9312fd5feb41fd58773b56a71d39.patch
@@ -0,0 +1,74 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index bad8dac..7baac99 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -368,8 +368,7 @@ static struct iscsi_transport iscsi_iser_transport;
+ static struct iscsi_cls_session *
+ iscsi_iser_session_create(struct iscsi_transport *iscsit,
+                        struct scsi_transport_template *scsit,
+-                       uint16_t cmds_max, uint16_t qdepth,
+-                       uint32_t initial_cmdsn, uint32_t *hostno)
++                        uint32_t initial_cmdsn, uint32_t *hostno)
+ {
+       struct iscsi_cls_session *cls_session;
+       struct iscsi_session *session;
+@@ -380,13 +380,7 @@ iscsi_iser_session_create(struct iscsi_transport *iscsit,
+       struct iscsi_iser_cmd_task *iser_ctask;
+       struct iser_desc *desc;
+ 
+-      /*
+-       * we do not support setting can_queue cmd_per_lun from userspace yet
+-       * because we preallocate so many resources
+-       */
+       cls_session = iscsi_session_setup(iscsit, scsit,
+-                                        ISCSI_DEF_XMIT_CMDS_MAX,
+-                                        ISCSI_MAX_CMD_PER_LUN,
+                                         sizeof(struct iscsi_iser_cmd_task),
+                                         sizeof(struct iser_desc),
+                                         initial_cmdsn, &hn);
+@@ -550,7 +550,7 @@ static struct scsi_host_template iscsi_iser_sht = {
+       .name                   = "iSCSI Initiator over iSER, v." DRV_VER,
+       .queuecommand           = iscsi_queuecommand,
+       .change_queue_depth     = iscsi_change_queue_depth,
+-      .can_queue              = ISCSI_DEF_XMIT_CMDS_MAX - 1,
++      .can_queue              = ISCSI_XMIT_CMDS_MAX - 1,
+       .sg_tablesize           = ISCSI_ISER_SG_TABLESIZE,
+       .max_sectors            = 1024,
+       .cmd_per_lun            = ISCSI_MAX_CMD_PER_LUN,
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.h 
b/drivers/infiniband/ulp/iser/iscsi_iser.h
+index 1ee867b..671faff 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.h
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.h
+@@ -105,7 +105,7 @@
+ #define ISER_MAX_TX_MISC_PDUS         6 /* NOOP_OUT(2), TEXT(1),         *
+                                          * SCSI_TMFUNC(2), LOGOUT(1) */
+ 
+-#define ISER_QP_MAX_RECV_DTOS         (ISCSI_DEF_XMIT_CMDS_MAX + \
++#define ISER_QP_MAX_RECV_DTOS         (ISCSI_XMIT_CMDS_MAX + \
+                                       ISER_MAX_RX_MISC_PDUS    +  \
+                                       ISER_MAX_TX_MISC_PDUS)
+ 
+@@ -117,7 +117,7 @@
+ 
+ #define ISER_INFLIGHT_DATAOUTS                8
+ 
+-#define ISER_QP_MAX_REQ_DTOS          (ISCSI_DEF_XMIT_CMDS_MAX *    \
++#define ISER_QP_MAX_REQ_DTOS          (ISCSI_XMIT_CMDS_MAX *    \
+                                       (1 + ISER_INFLIGHT_DATAOUTS) + \
+                                       ISER_MAX_TX_MISC_PDUS        + \
+                                       ISER_MAX_RX_MISC_PDUS)
+diff --git a/drivers/infiniband/ulp/iser/iser_verbs.c 
b/drivers/infiniband/ulp/iser/iser_verbs.c
+index 654a4dc..f3d8ba5 100644
+--- a/drivers/infiniband/ulp/iser/iser_verbs.c
++++ b/drivers/infiniband/ulp/iser/iser_verbs.c
+@@ -154,8 +154,8 @@ static int iser_create_ib_conn_res(struct iser_conn 
*ib_conn)
+       params.max_pages_per_fmr = ISCSI_ISER_SG_TABLESIZE + 1;
+       /* make the pool size twice the max number of SCSI commands *
+        * the ML is expected to queue, watermark for unmap at 50%  */
+-      params.pool_size         = ISCSI_DEF_XMIT_CMDS_MAX * 2;
+-      params.dirty_watermark   = ISCSI_DEF_XMIT_CMDS_MAX;
++      params.pool_size         = ISCSI_XMIT_CMDS_MAX * 2;
++      params.dirty_watermark   = ISCSI_XMIT_CMDS_MAX;
+       params.cache             = 0;
+       params.flush_function    = NULL;
+       params.access            = (IB_ACCESS_LOCAL_WRITE  |
diff --git 
a/kernel_patches/backport/2.6.9_U4/iser_04_revert_77a23c21aaa723f6b0ffc4a701be8c8e5a32346d.patch
 
b/kernel_patches/backport/2.6.9_U4/iser_04_revert_77a23c21aaa723f6b0ffc4a701be8c8e5a32346d.patch
new file mode 100644
index 0000000..26fa09c
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U4/iser_04_revert_77a23c21aaa723f6b0ffc4a701be8c8e5a32346d.patch
@@ -0,0 +1,38 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index 8f7b859..5f82d6c 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -134,9 +134,18 @@ iscsi_iser_cmd_init(struct iscsi_cmd_task *ctask)
+ {
+       struct iscsi_iser_conn     *iser_conn  = ctask->conn->dd_data;
+       struct iscsi_iser_cmd_task *iser_ctask = ctask->dd_data;
++      struct scsi_cmnd  *sc = ctask->sc;
+ 
+       iser_ctask->command_sent = 0;
+       iser_ctask->iser_conn    = iser_conn;
++      if (sc->sc_data_direction == DMA_TO_DEVICE) {
++              BUG_ON(sc->request_bufflen == 0);
++
++              debug_scsi("cmd [itt %x total %d imm %d unsol_data %d\n",
++                         ctask->itt, sc->request_bufflen, ctask->imm_count,
++                         ctask->unsol_count);
++      }
++
+       iser_ctask_rdma_init(iser_ctask);
+       return 0;
+ }
+@@ -210,14 +219,6 @@ iscsi_iser_ctask_xmit(struct iscsi_conn *conn,
+       struct iscsi_iser_cmd_task *iser_ctask = ctask->dd_data;
+       int error = 0;
+ 
+-      if (ctask->sc->sc_data_direction == DMA_TO_DEVICE) {
+-              BUG_ON(ctask->sc->request_bufflen == 0);
+-
+-              debug_scsi("cmd [itt %x total %d imm %d unsol_data %d\n",
+-                         ctask->itt, ctask->sc->request_bufflen,
+-                         ctask->imm_count, ctask->unsol_count);
+-      }
+-
+       debug_scsi("ctask deq [cid %d itt 0x%x]\n",
+                  conn->id, ctask->itt);
+ 
diff --git 
a/kernel_patches/backport/2.6.9_U4/iser_05_revert_b2c6416736b847b91950bd43cc5153e11a1f83ee.patch
 
b/kernel_patches/backport/2.6.9_U4/iser_05_revert_b2c6416736b847b91950bd43cc5153e11a1f83ee.patch
new file mode 100644
index 0000000..417415f
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U4/iser_05_revert_b2c6416736b847b91950bd43cc5153e11a1f83ee.patch
@@ -0,0 +1,18 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index 5f82d6c..3a67d76 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -574,11 +574,8 @@ static struct iscsi_transport iscsi_iser_transport = {
+                                 ISCSI_EXP_STATSN |
+                                 ISCSI_PERSISTENT_PORT |
+                                 ISCSI_PERSISTENT_ADDRESS |
+-                                ISCSI_TARGET_NAME | ISCSI_TPGT |
+-                                ISCSI_USERNAME | ISCSI_PASSWORD |
+-                                ISCSI_USERNAME_IN | ISCSI_PASSWORD_IN |
+-                                ISCSI_FAST_ABORT | ISCSI_ABORT_TMO |
+-                                ISCSI_PING_TMO | ISCSI_RECV_TMO,
++                                ISCSI_TARGET_NAME |
++                                ISCSI_TPGT,
+       .host_param_mask        = ISCSI_HOST_HWADDRESS |
+                                 ISCSI_HOST_INITIATOR_NAME,
+       .host_template          = &iscsi_iser_sht,
diff --git 
a/kernel_patches/backport/2.6.9_U4/iser_06_revert_857ae0bdb72999936a28ce621e38e2e288c485da.patch
 
b/kernel_patches/backport/2.6.9_U4/iser_06_revert_857ae0bdb72999936a28ce621e38e2e288c485da.patch
new file mode 100644
index 0000000..0b1a4c4
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U4/iser_06_revert_857ae0bdb72999936a28ce621e38e2e288c485da.patch
@@ -0,0 +1,16 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index c5941fa..2f4f125 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -140,8 +140,8 @@ iscsi_iser_cmd_init(struct iscsi_cmd_task *ctask)
+       iser_ctask->iser_conn    = iser_conn;
+       if (sc->sc_data_direction == DMA_TO_DEVICE) {
+-              BUG_ON(sc->request_bufflen == 0);
++              BUG_ON(ctask->total_length == 0);
+ 
+               debug_scsi("cmd [itt %x total %d imm %d unsol_data %d\n",
+-                         ctask->itt, sc->request_bufflen, ctask->imm_count,
++                         ctask->itt, ctask->total_length, ctask->imm_count,
+                          ctask->unsol_count);
+       }
+ 
diff --git 
a/kernel_patches/backport/2.6.9_U4/iser_07_revert_8ad5781ae9702a8f95cfdf30967752e4297613ee.patch
 
b/kernel_patches/backport/2.6.9_U4/iser_07_revert_8ad5781ae9702a8f95cfdf30967752e4297613ee.patch
new file mode 100644
index 0000000..f207af3
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U4/iser_07_revert_8ad5781ae9702a8f95cfdf30967752e4297613ee.patch
@@ -0,0 +1,14 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index 2f4f125..940bf98 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -576,8 +576,7 @@ static struct iscsi_transport iscsi_iser_transport = {
+                                 ISCSI_PERSISTENT_ADDRESS |
+                                 ISCSI_TARGET_NAME |
+                                 ISCSI_TPGT,
+-      .host_param_mask        = ISCSI_HOST_HWADDRESS |
+-                                ISCSI_HOST_INITIATOR_NAME,
++      .host_param_mask        = ISCSI_HOST_HWADDRESS,
+       .host_template          = &iscsi_iser_sht,
+       .conndata_size          = sizeof(struct iscsi_conn),
+       .max_lun                = ISCSI_ISER_MAX_LUN,
diff --git 
a/kernel_patches/backport/2.6.9_U4/iser_08_revert_0801c242a33426fddc005c2f559a3d2fa6fca7eb.patch
 
b/kernel_patches/backport/2.6.9_U4/iser_08_revert_0801c242a33426fddc005c2f559a3d2fa6fca7eb.patch
new file mode 100644
index 0000000..f9dceb1
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U4/iser_08_revert_0801c242a33426fddc005c2f559a3d2fa6fca7eb.patch
@@ -0,0 +1,22 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index 940bf98..6a35eff 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -576,7 +576,6 @@ static struct iscsi_transport iscsi_iser_transport = {
+                                 ISCSI_PERSISTENT_ADDRESS |
+                                 ISCSI_TARGET_NAME |
+                                 ISCSI_TPGT,
+-      .host_param_mask        = ISCSI_HOST_HWADDRESS,
+       .host_template          = &iscsi_iser_sht,
+       .conndata_size          = sizeof(struct iscsi_conn),
+       .max_lun                = ISCSI_ISER_MAX_LUN,
+@@ -593,9 +593,6 @@ static struct iscsi_transport iscsi_iser_transport = {
+       .get_session_param      = iscsi_session_get_param,
+       .start_conn             = iscsi_iser_conn_start,
+       .stop_conn              = iscsi_conn_stop,
+-      /* iscsi host params */
+-      .get_host_param         = iscsi_host_get_param,
+-      .set_host_param         = iscsi_host_set_param,
+       /* IO */
+       .send_pdu               = iscsi_conn_send_pdu,
+       .get_stats              = iscsi_iser_conn_get_stats,
diff --git a/kernel_patches/backport/2.6.9_U4/iser_09_fix_inclusion_order.patch 
b/kernel_patches/backport/2.6.9_U4/iser_09_fix_inclusion_order.patch
new file mode 100644
index 0000000..3c2a969
--- /dev/null
+++ b/kernel_patches/backport/2.6.9_U4/iser_09_fix_inclusion_order.patch
@@ -0,0 +1,13 @@
+--- linux-2.6.20-rc7-orig/drivers/infiniband/ulp/iser/iscsi_iser.c     
2007-02-08 09:13:43.000000000 +0200
++++ linux-2.6.20-rc7/drivers/infiniband/ulp/iser/iscsi_iser.c  2007-02-08 
09:14:31.000000000 +0200
+@@ -70,9 +70,8 @@
+ #include <scsi/scsi_tcq.h>
+ #include <scsi/scsi_host.h>
+ #include <scsi/scsi.h>
+-#include <scsi/scsi_transport_iscsi.h>
+-
+ #include "iscsi_iser.h"
++#include <scsi/scsi_transport_iscsi.h>
+ 
+ static unsigned int iscsi_max_lun = 512;
+ module_param_named(max_lun, iscsi_max_lun, uint, S_IRUGO);
diff --git 
a/kernel_patches/backport/2.6.9_U5/iser_01_revert_da9c0c770e775e655e3f77c96d91ee557b117adb.patch
 
b/kernel_patches/backport/2.6.9_U5/iser_01_revert_da9c0c770e775e655e3f77c96d91ee557b117adb.patch
new file mode 100644
index 0000000..101fdc6
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U5/iser_01_revert_da9c0c770e775e655e3f77c96d91ee557b117adb.patch
@@ -0,0 +1,44 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index bad8dac..75ecabe 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -211,10 +211,10 @@ iscsi_iser_ctask_xmit(struct iscsi_conn *conn,
+       int error = 0;
+ 
+       if (ctask->sc->sc_data_direction == DMA_TO_DEVICE) {
+-              BUG_ON(scsi_bufflen(ctask->sc) == 0);
++              BUG_ON(ctask->sc->request_bufflen == 0);
+ 
+               debug_scsi("cmd [itt %x total %d imm %d unsol_data %d\n",
+-                         ctask->itt, scsi_bufflen(ctask->sc),
++                         ctask->itt, ctask->sc->request_bufflen,
+                          ctask->imm_count, ctask->unsol_count);
+       }
+ 
+diff --git a/drivers/infiniband/ulp/iser/iser_initiator.c 
b/drivers/infiniband/ulp/iser/iser_initiator.c
+index 5d62cc0..1ae80d8 100644
+--- a/drivers/infiniband/ulp/iser/iser_initiator.c
++++ b/drivers/infiniband/ulp/iser/iser_initiator.c
+@@ -349,12 +349,18 @@ int iser_send_command(struct iscsi_conn     *conn,
+       else
+               data_buf = &iser_ctask->data[ISER_DIR_OUT];
+ 
+-      if (scsi_sg_count(sc)) { /* using a scatter list */
+-              data_buf->buf  = scsi_sglist(sc);
+-              data_buf->size = scsi_sg_count(sc);
++      if (sc->use_sg) { /* using a scatter list */
++              data_buf->buf  = sc->request_buffer;
++              data_buf->size = sc->use_sg;
++      } else if (sc->request_bufflen) {
++              /* using a single buffer - convert it into one entry SG */
++              sg_init_one(&data_buf->sg_single,
++                          sc->request_buffer, sc->request_bufflen);
++              data_buf->buf   = &data_buf->sg_single;
++              data_buf->size  = 1;
+       }
+ 
+-      data_buf->data_len = scsi_bufflen(sc);
++      data_buf->data_len = sc->request_bufflen;
+ 
+       if (hdr->flags & ISCSI_FLAG_CMD_READ) {
+               err = iser_prepare_read_cmd(ctask, edtl);
diff --git 
a/kernel_patches/backport/2.6.9_U5/iser_02_revert_d8196ed2181b4595eaf464a5bcbddb6c28649a39.patch
 
b/kernel_patches/backport/2.6.9_U5/iser_02_revert_d8196ed2181b4595eaf464a5bcbddb6c28649a39.patch
new file mode 100644
index 0000000..7b21cba
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U5/iser_02_revert_d8196ed2181b4595eaf464a5bcbddb6c28649a39.patch
@@ -0,0 +1,12 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index bad8dac..933429b 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -586,7 +586,6 @@ static struct iscsi_transport iscsi_iser_transport = {
+                                 ISCSI_FAST_ABORT | ISCSI_ABORT_TMO |
+                                 ISCSI_PING_TMO | ISCSI_RECV_TMO,
+       .host_param_mask        = ISCSI_HOST_HWADDRESS |
+-                                ISCSI_HOST_NETDEV_NAME |
+                                 ISCSI_HOST_INITIATOR_NAME,
+       .host_template          = &iscsi_iser_sht,
+       .conndata_size          = sizeof(struct iscsi_conn),
diff --git 
a/kernel_patches/backport/2.6.9_U5/iser_03_revert_1548271ece9e9312fd5feb41fd58773b56a71d39.patch
 
b/kernel_patches/backport/2.6.9_U5/iser_03_revert_1548271ece9e9312fd5feb41fd58773b56a71d39.patch
new file mode 100644
index 0000000..d72eb5a
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U5/iser_03_revert_1548271ece9e9312fd5feb41fd58773b56a71d39.patch
@@ -0,0 +1,74 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index bad8dac..7baac99 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -368,8 +368,7 @@ static struct iscsi_transport iscsi_iser_transport;
+ static struct iscsi_cls_session *
+ iscsi_iser_session_create(struct iscsi_transport *iscsit,
+                        struct scsi_transport_template *scsit,
+-                       uint16_t cmds_max, uint16_t qdepth,
+-                       uint32_t initial_cmdsn, uint32_t *hostno)
++                        uint32_t initial_cmdsn, uint32_t *hostno)
+ {
+       struct iscsi_cls_session *cls_session;
+       struct iscsi_session *session;
+@@ -380,13 +380,7 @@ iscsi_iser_session_create(struct iscsi_transport *iscsit,
+       struct iscsi_iser_cmd_task *iser_ctask;
+       struct iser_desc *desc;
+ 
+-      /*
+-       * we do not support setting can_queue cmd_per_lun from userspace yet
+-       * because we preallocate so many resources
+-       */
+       cls_session = iscsi_session_setup(iscsit, scsit,
+-                                        ISCSI_DEF_XMIT_CMDS_MAX,
+-                                        ISCSI_MAX_CMD_PER_LUN,
+                                         sizeof(struct iscsi_iser_cmd_task),
+                                         sizeof(struct iser_desc),
+                                         initial_cmdsn, &hn);
+@@ -550,7 +550,7 @@ static struct scsi_host_template iscsi_iser_sht = {
+       .name                   = "iSCSI Initiator over iSER, v." DRV_VER,
+       .queuecommand           = iscsi_queuecommand,
+       .change_queue_depth     = iscsi_change_queue_depth,
+-      .can_queue              = ISCSI_DEF_XMIT_CMDS_MAX - 1,
++      .can_queue              = ISCSI_XMIT_CMDS_MAX - 1,
+       .sg_tablesize           = ISCSI_ISER_SG_TABLESIZE,
+       .max_sectors            = 1024,
+       .cmd_per_lun            = ISCSI_MAX_CMD_PER_LUN,
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.h 
b/drivers/infiniband/ulp/iser/iscsi_iser.h
+index 1ee867b..671faff 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.h
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.h
+@@ -105,7 +105,7 @@
+ #define ISER_MAX_TX_MISC_PDUS         6 /* NOOP_OUT(2), TEXT(1),         *
+                                          * SCSI_TMFUNC(2), LOGOUT(1) */
+ 
+-#define ISER_QP_MAX_RECV_DTOS         (ISCSI_DEF_XMIT_CMDS_MAX + \
++#define ISER_QP_MAX_RECV_DTOS         (ISCSI_XMIT_CMDS_MAX + \
+                                       ISER_MAX_RX_MISC_PDUS    +  \
+                                       ISER_MAX_TX_MISC_PDUS)
+ 
+@@ -117,7 +117,7 @@
+ 
+ #define ISER_INFLIGHT_DATAOUTS                8
+ 
+-#define ISER_QP_MAX_REQ_DTOS          (ISCSI_DEF_XMIT_CMDS_MAX *    \
++#define ISER_QP_MAX_REQ_DTOS          (ISCSI_XMIT_CMDS_MAX *    \
+                                       (1 + ISER_INFLIGHT_DATAOUTS) + \
+                                       ISER_MAX_TX_MISC_PDUS        + \
+                                       ISER_MAX_RX_MISC_PDUS)
+diff --git a/drivers/infiniband/ulp/iser/iser_verbs.c 
b/drivers/infiniband/ulp/iser/iser_verbs.c
+index 654a4dc..f3d8ba5 100644
+--- a/drivers/infiniband/ulp/iser/iser_verbs.c
++++ b/drivers/infiniband/ulp/iser/iser_verbs.c
+@@ -154,8 +154,8 @@ static int iser_create_ib_conn_res(struct iser_conn 
*ib_conn)
+       params.max_pages_per_fmr = ISCSI_ISER_SG_TABLESIZE + 1;
+       /* make the pool size twice the max number of SCSI commands *
+        * the ML is expected to queue, watermark for unmap at 50%  */
+-      params.pool_size         = ISCSI_DEF_XMIT_CMDS_MAX * 2;
+-      params.dirty_watermark   = ISCSI_DEF_XMIT_CMDS_MAX;
++      params.pool_size         = ISCSI_XMIT_CMDS_MAX * 2;
++      params.dirty_watermark   = ISCSI_XMIT_CMDS_MAX;
+       params.cache             = 0;
+       params.flush_function    = NULL;
+       params.access            = (IB_ACCESS_LOCAL_WRITE  |
diff --git 
a/kernel_patches/backport/2.6.9_U5/iser_04_revert_77a23c21aaa723f6b0ffc4a701be8c8e5a32346d.patch
 
b/kernel_patches/backport/2.6.9_U5/iser_04_revert_77a23c21aaa723f6b0ffc4a701be8c8e5a32346d.patch
new file mode 100644
index 0000000..26fa09c
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U5/iser_04_revert_77a23c21aaa723f6b0ffc4a701be8c8e5a32346d.patch
@@ -0,0 +1,38 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index 8f7b859..5f82d6c 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -134,9 +134,18 @@ iscsi_iser_cmd_init(struct iscsi_cmd_task *ctask)
+ {
+       struct iscsi_iser_conn     *iser_conn  = ctask->conn->dd_data;
+       struct iscsi_iser_cmd_task *iser_ctask = ctask->dd_data;
++      struct scsi_cmnd  *sc = ctask->sc;
+ 
+       iser_ctask->command_sent = 0;
+       iser_ctask->iser_conn    = iser_conn;
++      if (sc->sc_data_direction == DMA_TO_DEVICE) {
++              BUG_ON(sc->request_bufflen == 0);
++
++              debug_scsi("cmd [itt %x total %d imm %d unsol_data %d\n",
++                         ctask->itt, sc->request_bufflen, ctask->imm_count,
++                         ctask->unsol_count);
++      }
++
+       iser_ctask_rdma_init(iser_ctask);
+       return 0;
+ }
+@@ -210,14 +219,6 @@ iscsi_iser_ctask_xmit(struct iscsi_conn *conn,
+       struct iscsi_iser_cmd_task *iser_ctask = ctask->dd_data;
+       int error = 0;
+ 
+-      if (ctask->sc->sc_data_direction == DMA_TO_DEVICE) {
+-              BUG_ON(ctask->sc->request_bufflen == 0);
+-
+-              debug_scsi("cmd [itt %x total %d imm %d unsol_data %d\n",
+-                         ctask->itt, ctask->sc->request_bufflen,
+-                         ctask->imm_count, ctask->unsol_count);
+-      }
+-
+       debug_scsi("ctask deq [cid %d itt 0x%x]\n",
+                  conn->id, ctask->itt);
+ 
diff --git 
a/kernel_patches/backport/2.6.9_U5/iser_05_revert_b2c6416736b847b91950bd43cc5153e11a1f83ee.patch
 
b/kernel_patches/backport/2.6.9_U5/iser_05_revert_b2c6416736b847b91950bd43cc5153e11a1f83ee.patch
new file mode 100644
index 0000000..417415f
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U5/iser_05_revert_b2c6416736b847b91950bd43cc5153e11a1f83ee.patch
@@ -0,0 +1,18 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index 5f82d6c..3a67d76 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -574,11 +574,8 @@ static struct iscsi_transport iscsi_iser_transport = {
+                                 ISCSI_EXP_STATSN |
+                                 ISCSI_PERSISTENT_PORT |
+                                 ISCSI_PERSISTENT_ADDRESS |
+-                                ISCSI_TARGET_NAME | ISCSI_TPGT |
+-                                ISCSI_USERNAME | ISCSI_PASSWORD |
+-                                ISCSI_USERNAME_IN | ISCSI_PASSWORD_IN |
+-                                ISCSI_FAST_ABORT | ISCSI_ABORT_TMO |
+-                                ISCSI_PING_TMO | ISCSI_RECV_TMO,
++                                ISCSI_TARGET_NAME |
++                                ISCSI_TPGT,
+       .host_param_mask        = ISCSI_HOST_HWADDRESS |
+                                 ISCSI_HOST_INITIATOR_NAME,
+       .host_template          = &iscsi_iser_sht,
diff --git 
a/kernel_patches/backport/2.6.9_U5/iser_06_revert_857ae0bdb72999936a28ce621e38e2e288c485da.patch
 
b/kernel_patches/backport/2.6.9_U5/iser_06_revert_857ae0bdb72999936a28ce621e38e2e288c485da.patch
new file mode 100644
index 0000000..0b1a4c4
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U5/iser_06_revert_857ae0bdb72999936a28ce621e38e2e288c485da.patch
@@ -0,0 +1,16 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index c5941fa..2f4f125 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -140,8 +140,8 @@ iscsi_iser_cmd_init(struct iscsi_cmd_task *ctask)
+       iser_ctask->iser_conn    = iser_conn;
+       if (sc->sc_data_direction == DMA_TO_DEVICE) {
+-              BUG_ON(sc->request_bufflen == 0);
++              BUG_ON(ctask->total_length == 0);
+ 
+               debug_scsi("cmd [itt %x total %d imm %d unsol_data %d\n",
+-                         ctask->itt, sc->request_bufflen, ctask->imm_count,
++                         ctask->itt, ctask->total_length, ctask->imm_count,
+                          ctask->unsol_count);
+       }
+ 
diff --git 
a/kernel_patches/backport/2.6.9_U5/iser_07_revert_8ad5781ae9702a8f95cfdf30967752e4297613ee.patch
 
b/kernel_patches/backport/2.6.9_U5/iser_07_revert_8ad5781ae9702a8f95cfdf30967752e4297613ee.patch
new file mode 100644
index 0000000..f207af3
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U5/iser_07_revert_8ad5781ae9702a8f95cfdf30967752e4297613ee.patch
@@ -0,0 +1,14 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index 2f4f125..940bf98 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -576,8 +576,7 @@ static struct iscsi_transport iscsi_iser_transport = {
+                                 ISCSI_PERSISTENT_ADDRESS |
+                                 ISCSI_TARGET_NAME |
+                                 ISCSI_TPGT,
+-      .host_param_mask        = ISCSI_HOST_HWADDRESS |
+-                                ISCSI_HOST_INITIATOR_NAME,
++      .host_param_mask        = ISCSI_HOST_HWADDRESS,
+       .host_template          = &iscsi_iser_sht,
+       .conndata_size          = sizeof(struct iscsi_conn),
+       .max_lun                = ISCSI_ISER_MAX_LUN,
diff --git 
a/kernel_patches/backport/2.6.9_U5/iser_08_revert_0801c242a33426fddc005c2f559a3d2fa6fca7eb.patch
 
b/kernel_patches/backport/2.6.9_U5/iser_08_revert_0801c242a33426fddc005c2f559a3d2fa6fca7eb.patch
new file mode 100644
index 0000000..f9dceb1
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U5/iser_08_revert_0801c242a33426fddc005c2f559a3d2fa6fca7eb.patch
@@ -0,0 +1,22 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index 940bf98..6a35eff 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -576,7 +576,6 @@ static struct iscsi_transport iscsi_iser_transport = {
+                                 ISCSI_PERSISTENT_ADDRESS |
+                                 ISCSI_TARGET_NAME |
+                                 ISCSI_TPGT,
+-      .host_param_mask        = ISCSI_HOST_HWADDRESS,
+       .host_template          = &iscsi_iser_sht,
+       .conndata_size          = sizeof(struct iscsi_conn),
+       .max_lun                = ISCSI_ISER_MAX_LUN,
+@@ -593,9 +593,6 @@ static struct iscsi_transport iscsi_iser_transport = {
+       .get_session_param      = iscsi_session_get_param,
+       .start_conn             = iscsi_iser_conn_start,
+       .stop_conn              = iscsi_conn_stop,
+-      /* iscsi host params */
+-      .get_host_param         = iscsi_host_get_param,
+-      .set_host_param         = iscsi_host_set_param,
+       /* IO */
+       .send_pdu               = iscsi_conn_send_pdu,
+       .get_stats              = iscsi_iser_conn_get_stats,
diff --git a/kernel_patches/backport/2.6.9_U5/iser_09_fix_inclusion_order.patch 
b/kernel_patches/backport/2.6.9_U5/iser_09_fix_inclusion_order.patch
new file mode 100644
index 0000000..3c2a969
--- /dev/null
+++ b/kernel_patches/backport/2.6.9_U5/iser_09_fix_inclusion_order.patch
@@ -0,0 +1,13 @@
+--- linux-2.6.20-rc7-orig/drivers/infiniband/ulp/iser/iscsi_iser.c     
2007-02-08 09:13:43.000000000 +0200
++++ linux-2.6.20-rc7/drivers/infiniband/ulp/iser/iscsi_iser.c  2007-02-08 
09:14:31.000000000 +0200
+@@ -70,9 +70,8 @@
+ #include <scsi/scsi_tcq.h>
+ #include <scsi/scsi_host.h>
+ #include <scsi/scsi.h>
+-#include <scsi/scsi_transport_iscsi.h>
+-
+ #include "iscsi_iser.h"
++#include <scsi/scsi_transport_iscsi.h>
+ 
+ static unsigned int iscsi_max_lun = 512;
+ module_param_named(max_lun, iscsi_max_lun, uint, S_IRUGO);
diff --git 
a/kernel_patches/backport/2.6.9_U6/iser_01_revert_da9c0c770e775e655e3f77c96d91ee557b117adb.patch
 
b/kernel_patches/backport/2.6.9_U6/iser_01_revert_da9c0c770e775e655e3f77c96d91ee557b117adb.patch
new file mode 100644
index 0000000..101fdc6
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U6/iser_01_revert_da9c0c770e775e655e3f77c96d91ee557b117adb.patch
@@ -0,0 +1,44 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index bad8dac..75ecabe 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -211,10 +211,10 @@ iscsi_iser_ctask_xmit(struct iscsi_conn *conn,
+       int error = 0;
+ 
+       if (ctask->sc->sc_data_direction == DMA_TO_DEVICE) {
+-              BUG_ON(scsi_bufflen(ctask->sc) == 0);
++              BUG_ON(ctask->sc->request_bufflen == 0);
+ 
+               debug_scsi("cmd [itt %x total %d imm %d unsol_data %d\n",
+-                         ctask->itt, scsi_bufflen(ctask->sc),
++                         ctask->itt, ctask->sc->request_bufflen,
+                          ctask->imm_count, ctask->unsol_count);
+       }
+ 
+diff --git a/drivers/infiniband/ulp/iser/iser_initiator.c 
b/drivers/infiniband/ulp/iser/iser_initiator.c
+index 5d62cc0..1ae80d8 100644
+--- a/drivers/infiniband/ulp/iser/iser_initiator.c
++++ b/drivers/infiniband/ulp/iser/iser_initiator.c
+@@ -349,12 +349,18 @@ int iser_send_command(struct iscsi_conn     *conn,
+       else
+               data_buf = &iser_ctask->data[ISER_DIR_OUT];
+ 
+-      if (scsi_sg_count(sc)) { /* using a scatter list */
+-              data_buf->buf  = scsi_sglist(sc);
+-              data_buf->size = scsi_sg_count(sc);
++      if (sc->use_sg) { /* using a scatter list */
++              data_buf->buf  = sc->request_buffer;
++              data_buf->size = sc->use_sg;
++      } else if (sc->request_bufflen) {
++              /* using a single buffer - convert it into one entry SG */
++              sg_init_one(&data_buf->sg_single,
++                          sc->request_buffer, sc->request_bufflen);
++              data_buf->buf   = &data_buf->sg_single;
++              data_buf->size  = 1;
+       }
+ 
+-      data_buf->data_len = scsi_bufflen(sc);
++      data_buf->data_len = sc->request_bufflen;
+ 
+       if (hdr->flags & ISCSI_FLAG_CMD_READ) {
+               err = iser_prepare_read_cmd(ctask, edtl);
diff --git 
a/kernel_patches/backport/2.6.9_U6/iser_02_revert_d8196ed2181b4595eaf464a5bcbddb6c28649a39.patch
 
b/kernel_patches/backport/2.6.9_U6/iser_02_revert_d8196ed2181b4595eaf464a5bcbddb6c28649a39.patch
new file mode 100644
index 0000000..7b21cba
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U6/iser_02_revert_d8196ed2181b4595eaf464a5bcbddb6c28649a39.patch
@@ -0,0 +1,12 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index bad8dac..933429b 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -586,7 +586,6 @@ static struct iscsi_transport iscsi_iser_transport = {
+                                 ISCSI_FAST_ABORT | ISCSI_ABORT_TMO |
+                                 ISCSI_PING_TMO | ISCSI_RECV_TMO,
+       .host_param_mask        = ISCSI_HOST_HWADDRESS |
+-                                ISCSI_HOST_NETDEV_NAME |
+                                 ISCSI_HOST_INITIATOR_NAME,
+       .host_template          = &iscsi_iser_sht,
+       .conndata_size          = sizeof(struct iscsi_conn),
diff --git 
a/kernel_patches/backport/2.6.9_U6/iser_03_revert_1548271ece9e9312fd5feb41fd58773b56a71d39.patch
 
b/kernel_patches/backport/2.6.9_U6/iser_03_revert_1548271ece9e9312fd5feb41fd58773b56a71d39.patch
new file mode 100644
index 0000000..d72eb5a
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U6/iser_03_revert_1548271ece9e9312fd5feb41fd58773b56a71d39.patch
@@ -0,0 +1,74 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index bad8dac..7baac99 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -368,8 +368,7 @@ static struct iscsi_transport iscsi_iser_transport;
+ static struct iscsi_cls_session *
+ iscsi_iser_session_create(struct iscsi_transport *iscsit,
+                        struct scsi_transport_template *scsit,
+-                       uint16_t cmds_max, uint16_t qdepth,
+-                       uint32_t initial_cmdsn, uint32_t *hostno)
++                        uint32_t initial_cmdsn, uint32_t *hostno)
+ {
+       struct iscsi_cls_session *cls_session;
+       struct iscsi_session *session;
+@@ -380,13 +380,7 @@ iscsi_iser_session_create(struct iscsi_transport *iscsit,
+       struct iscsi_iser_cmd_task *iser_ctask;
+       struct iser_desc *desc;
+ 
+-      /*
+-       * we do not support setting can_queue cmd_per_lun from userspace yet
+-       * because we preallocate so many resources
+-       */
+       cls_session = iscsi_session_setup(iscsit, scsit,
+-                                        ISCSI_DEF_XMIT_CMDS_MAX,
+-                                        ISCSI_MAX_CMD_PER_LUN,
+                                         sizeof(struct iscsi_iser_cmd_task),
+                                         sizeof(struct iser_desc),
+                                         initial_cmdsn, &hn);
+@@ -550,7 +550,7 @@ static struct scsi_host_template iscsi_iser_sht = {
+       .name                   = "iSCSI Initiator over iSER, v." DRV_VER,
+       .queuecommand           = iscsi_queuecommand,
+       .change_queue_depth     = iscsi_change_queue_depth,
+-      .can_queue              = ISCSI_DEF_XMIT_CMDS_MAX - 1,
++      .can_queue              = ISCSI_XMIT_CMDS_MAX - 1,
+       .sg_tablesize           = ISCSI_ISER_SG_TABLESIZE,
+       .max_sectors            = 1024,
+       .cmd_per_lun            = ISCSI_MAX_CMD_PER_LUN,
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.h 
b/drivers/infiniband/ulp/iser/iscsi_iser.h
+index 1ee867b..671faff 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.h
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.h
+@@ -105,7 +105,7 @@
+ #define ISER_MAX_TX_MISC_PDUS         6 /* NOOP_OUT(2), TEXT(1),         *
+                                          * SCSI_TMFUNC(2), LOGOUT(1) */
+ 
+-#define ISER_QP_MAX_RECV_DTOS         (ISCSI_DEF_XMIT_CMDS_MAX + \
++#define ISER_QP_MAX_RECV_DTOS         (ISCSI_XMIT_CMDS_MAX + \
+                                       ISER_MAX_RX_MISC_PDUS    +  \
+                                       ISER_MAX_TX_MISC_PDUS)
+ 
+@@ -117,7 +117,7 @@
+ 
+ #define ISER_INFLIGHT_DATAOUTS                8
+ 
+-#define ISER_QP_MAX_REQ_DTOS          (ISCSI_DEF_XMIT_CMDS_MAX *    \
++#define ISER_QP_MAX_REQ_DTOS          (ISCSI_XMIT_CMDS_MAX *    \
+                                       (1 + ISER_INFLIGHT_DATAOUTS) + \
+                                       ISER_MAX_TX_MISC_PDUS        + \
+                                       ISER_MAX_RX_MISC_PDUS)
+diff --git a/drivers/infiniband/ulp/iser/iser_verbs.c 
b/drivers/infiniband/ulp/iser/iser_verbs.c
+index 654a4dc..f3d8ba5 100644
+--- a/drivers/infiniband/ulp/iser/iser_verbs.c
++++ b/drivers/infiniband/ulp/iser/iser_verbs.c
+@@ -154,8 +154,8 @@ static int iser_create_ib_conn_res(struct iser_conn 
*ib_conn)
+       params.max_pages_per_fmr = ISCSI_ISER_SG_TABLESIZE + 1;
+       /* make the pool size twice the max number of SCSI commands *
+        * the ML is expected to queue, watermark for unmap at 50%  */
+-      params.pool_size         = ISCSI_DEF_XMIT_CMDS_MAX * 2;
+-      params.dirty_watermark   = ISCSI_DEF_XMIT_CMDS_MAX;
++      params.pool_size         = ISCSI_XMIT_CMDS_MAX * 2;
++      params.dirty_watermark   = ISCSI_XMIT_CMDS_MAX;
+       params.cache             = 0;
+       params.flush_function    = NULL;
+       params.access            = (IB_ACCESS_LOCAL_WRITE  |
diff --git 
a/kernel_patches/backport/2.6.9_U6/iser_04_revert_77a23c21aaa723f6b0ffc4a701be8c8e5a32346d.patch
 
b/kernel_patches/backport/2.6.9_U6/iser_04_revert_77a23c21aaa723f6b0ffc4a701be8c8e5a32346d.patch
new file mode 100644
index 0000000..26fa09c
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U6/iser_04_revert_77a23c21aaa723f6b0ffc4a701be8c8e5a32346d.patch
@@ -0,0 +1,38 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index 8f7b859..5f82d6c 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -134,9 +134,18 @@ iscsi_iser_cmd_init(struct iscsi_cmd_task *ctask)
+ {
+       struct iscsi_iser_conn     *iser_conn  = ctask->conn->dd_data;
+       struct iscsi_iser_cmd_task *iser_ctask = ctask->dd_data;
++      struct scsi_cmnd  *sc = ctask->sc;
+ 
+       iser_ctask->command_sent = 0;
+       iser_ctask->iser_conn    = iser_conn;
++      if (sc->sc_data_direction == DMA_TO_DEVICE) {
++              BUG_ON(sc->request_bufflen == 0);
++
++              debug_scsi("cmd [itt %x total %d imm %d unsol_data %d\n",
++                         ctask->itt, sc->request_bufflen, ctask->imm_count,
++                         ctask->unsol_count);
++      }
++
+       iser_ctask_rdma_init(iser_ctask);
+       return 0;
+ }
+@@ -210,14 +219,6 @@ iscsi_iser_ctask_xmit(struct iscsi_conn *conn,
+       struct iscsi_iser_cmd_task *iser_ctask = ctask->dd_data;
+       int error = 0;
+ 
+-      if (ctask->sc->sc_data_direction == DMA_TO_DEVICE) {
+-              BUG_ON(ctask->sc->request_bufflen == 0);
+-
+-              debug_scsi("cmd [itt %x total %d imm %d unsol_data %d\n",
+-                         ctask->itt, ctask->sc->request_bufflen,
+-                         ctask->imm_count, ctask->unsol_count);
+-      }
+-
+       debug_scsi("ctask deq [cid %d itt 0x%x]\n",
+                  conn->id, ctask->itt);
+ 
diff --git 
a/kernel_patches/backport/2.6.9_U6/iser_05_revert_b2c6416736b847b91950bd43cc5153e11a1f83ee.patch
 
b/kernel_patches/backport/2.6.9_U6/iser_05_revert_b2c6416736b847b91950bd43cc5153e11a1f83ee.patch
new file mode 100644
index 0000000..417415f
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U6/iser_05_revert_b2c6416736b847b91950bd43cc5153e11a1f83ee.patch
@@ -0,0 +1,18 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index 5f82d6c..3a67d76 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -574,11 +574,8 @@ static struct iscsi_transport iscsi_iser_transport = {
+                                 ISCSI_EXP_STATSN |
+                                 ISCSI_PERSISTENT_PORT |
+                                 ISCSI_PERSISTENT_ADDRESS |
+-                                ISCSI_TARGET_NAME | ISCSI_TPGT |
+-                                ISCSI_USERNAME | ISCSI_PASSWORD |
+-                                ISCSI_USERNAME_IN | ISCSI_PASSWORD_IN |
+-                                ISCSI_FAST_ABORT | ISCSI_ABORT_TMO |
+-                                ISCSI_PING_TMO | ISCSI_RECV_TMO,
++                                ISCSI_TARGET_NAME |
++                                ISCSI_TPGT,
+       .host_param_mask        = ISCSI_HOST_HWADDRESS |
+                                 ISCSI_HOST_INITIATOR_NAME,
+       .host_template          = &iscsi_iser_sht,
diff --git 
a/kernel_patches/backport/2.6.9_U6/iser_06_revert_857ae0bdb72999936a28ce621e38e2e288c485da.patch
 
b/kernel_patches/backport/2.6.9_U6/iser_06_revert_857ae0bdb72999936a28ce621e38e2e288c485da.patch
new file mode 100644
index 0000000..0b1a4c4
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U6/iser_06_revert_857ae0bdb72999936a28ce621e38e2e288c485da.patch
@@ -0,0 +1,16 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index c5941fa..2f4f125 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -140,8 +140,8 @@ iscsi_iser_cmd_init(struct iscsi_cmd_task *ctask)
+       iser_ctask->iser_conn    = iser_conn;
+       if (sc->sc_data_direction == DMA_TO_DEVICE) {
+-              BUG_ON(sc->request_bufflen == 0);
++              BUG_ON(ctask->total_length == 0);
+ 
+               debug_scsi("cmd [itt %x total %d imm %d unsol_data %d\n",
+-                         ctask->itt, sc->request_bufflen, ctask->imm_count,
++                         ctask->itt, ctask->total_length, ctask->imm_count,
+                          ctask->unsol_count);
+       }
+ 
diff --git 
a/kernel_patches/backport/2.6.9_U6/iser_07_revert_8ad5781ae9702a8f95cfdf30967752e4297613ee.patch
 
b/kernel_patches/backport/2.6.9_U6/iser_07_revert_8ad5781ae9702a8f95cfdf30967752e4297613ee.patch
new file mode 100644
index 0000000..f207af3
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U6/iser_07_revert_8ad5781ae9702a8f95cfdf30967752e4297613ee.patch
@@ -0,0 +1,14 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index 2f4f125..940bf98 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -576,8 +576,7 @@ static struct iscsi_transport iscsi_iser_transport = {
+                                 ISCSI_PERSISTENT_ADDRESS |
+                                 ISCSI_TARGET_NAME |
+                                 ISCSI_TPGT,
+-      .host_param_mask        = ISCSI_HOST_HWADDRESS |
+-                                ISCSI_HOST_INITIATOR_NAME,
++      .host_param_mask        = ISCSI_HOST_HWADDRESS,
+       .host_template          = &iscsi_iser_sht,
+       .conndata_size          = sizeof(struct iscsi_conn),
+       .max_lun                = ISCSI_ISER_MAX_LUN,
diff --git 
a/kernel_patches/backport/2.6.9_U6/iser_08_revert_0801c242a33426fddc005c2f559a3d2fa6fca7eb.patch
 
b/kernel_patches/backport/2.6.9_U6/iser_08_revert_0801c242a33426fddc005c2f559a3d2fa6fca7eb.patch
new file mode 100644
index 0000000..f9dceb1
--- /dev/null
+++ 
b/kernel_patches/backport/2.6.9_U6/iser_08_revert_0801c242a33426fddc005c2f559a3d2fa6fca7eb.patch
@@ -0,0 +1,22 @@
+diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c 
b/drivers/infiniband/ulp/iser/iscsi_iser.c
+index 940bf98..6a35eff 100644
+--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
++++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
+@@ -576,7 +576,6 @@ static struct iscsi_transport iscsi_iser_transport = {
+                                 ISCSI_PERSISTENT_ADDRESS |
+                                 ISCSI_TARGET_NAME |
+                                 ISCSI_TPGT,
+-      .host_param_mask        = ISCSI_HOST_HWADDRESS,
+       .host_template          = &iscsi_iser_sht,
+       .conndata_size          = sizeof(struct iscsi_conn),
+       .max_lun                = ISCSI_ISER_MAX_LUN,
+@@ -593,9 +593,6 @@ static struct iscsi_transport iscsi_iser_transport = {
+       .get_session_param      = iscsi_session_get_param,
+       .start_conn             = iscsi_iser_conn_start,
+       .stop_conn              = iscsi_conn_stop,
+-      /* iscsi host params */
+-      .get_host_param         = iscsi_host_get_param,
+-      .set_host_param         = iscsi_host_set_param,
+       /* IO */
+       .send_pdu               = iscsi_conn_send_pdu,
+       .get_stats              = iscsi_iser_conn_get_stats,
diff --git a/kernel_patches/backport/2.6.9_U6/iser_09_fix_inclusion_order.patch 
b/kernel_patches/backport/2.6.9_U6/iser_09_fix_inclusion_order.patch
new file mode 100644
index 0000000..3c2a969
--- /dev/null
+++ b/kernel_patches/backport/2.6.9_U6/iser_09_fix_inclusion_order.patch
@@ -0,0 +1,13 @@
+--- linux-2.6.20-rc7-orig/drivers/infiniband/ulp/iser/iscsi_iser.c     
2007-02-08 09:13:43.000000000 +0200
++++ linux-2.6.20-rc7/drivers/infiniband/ulp/iser/iscsi_iser.c  2007-02-08 
09:14:31.000000000 +0200
+@@ -70,9 +70,8 @@
+ #include <scsi/scsi_tcq.h>
+ #include <scsi/scsi_host.h>
+ #include <scsi/scsi.h>
+-#include <scsi/scsi_transport_iscsi.h>
+-
+ #include "iscsi_iser.h"
++#include <scsi/scsi_transport_iscsi.h>
+ 
+ static unsigned int iscsi_max_lun = 512;
+ module_param_named(max_lun, iscsi_max_lun, uint, S_IRUGO);
-- 
1.5.3.8


_______________________________________________
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg

Reply via email to