bnx2fc: HSI dependent changes for 7.2.xx FW
authorBhanu Prakash Gollapudi <bprakash@broadcom.com>
Mon, 20 Feb 2012 09:59:09 +0000 (09:59 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 21 Feb 2012 00:34:08 +0000 (19:34 -0500)
with Tx only section for single cached SGEs.

Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/scsi/bnx2fc/bnx2fc_constants.h
drivers/scsi/bnx2fc/bnx2fc_hwi.c

index 399cda047a7770ab079f414962edce09457993bb..c12702bb16d6b22b352a7cf4acc33ce566316923 100644 (file)
@@ -7,7 +7,7 @@
 
 /* Current FCoE HSI version number composed of two fields (16 bit) */
 /* Implies on a change broken previous HSI */
-#define FCOE_HSI_MAJOR_VERSION (1)
+#define FCOE_HSI_MAJOR_VERSION (2)
 /* Implies on a change which does not broken previous HSI */
 #define FCOE_HSI_MINOR_VERSION (1)
 
index 1923a25cb6a22201bc45456cb06f2da9c7715f90..afd570962b8c288636fad351671a376ad03992e7 100644 (file)
@@ -1716,15 +1716,19 @@ void bnx2fc_init_task(struct bnx2fc_cmd *io_req,
 
        /* Tx only */
        bd_count = bd_tbl->bd_valid;
+       cached_sge = &task->rxwr_only.union_ctx.read_info.sgl_ctx.cached_sge;
        if (task_type == FCOE_TASK_TYPE_WRITE) {
                if ((dev_type == TYPE_DISK) && (bd_count == 1)) {
                        struct fcoe_bd_ctx *fcoe_bd_tbl = bd_tbl->bd_tbl;
 
                        task->txwr_only.sgl_ctx.cached_sge.cur_buf_addr.lo =
+                       cached_sge->cur_buf_addr.lo =
                                        fcoe_bd_tbl->buf_addr_lo;
                        task->txwr_only.sgl_ctx.cached_sge.cur_buf_addr.hi =
+                       cached_sge->cur_buf_addr.hi =
                                        fcoe_bd_tbl->buf_addr_hi;
                        task->txwr_only.sgl_ctx.cached_sge.cur_buf_rem =
+                       cached_sge->cur_buf_rem =
                                        fcoe_bd_tbl->buf_len;
 
                        task->txwr_rxrd.const_ctx.init_flags |= 1 <<
@@ -1790,11 +1794,13 @@ void bnx2fc_init_task(struct bnx2fc_cmd *io_req,
        task->rxwr_txrd.var_ctx.rx_id = 0xffff;
 
        /* Rx Only */
-       cached_sge = &task->rxwr_only.union_ctx.read_info.sgl_ctx.cached_sge;
+       if (task_type != FCOE_TASK_TYPE_READ)
+               return;
+
        sgl = &task->rxwr_only.union_ctx.read_info.sgl_ctx.sgl;
        bd_count = bd_tbl->bd_valid;
-       if (task_type == FCOE_TASK_TYPE_READ &&
-           dev_type == TYPE_DISK) {
+
+       if (dev_type == TYPE_DISK) {
                if (bd_count == 1) {
 
                        struct fcoe_bd_ctx *fcoe_bd_tbl = bd_tbl->bd_tbl;