[SCSI] bnx2i: Fixed the override of the error_mask module param
authorEddie Wai <eddie.wai@broadcom.com>
Thu, 2 Feb 2012 23:22:00 +0000 (15:22 -0800)
committerJames Bottomley <JBottomley@Parallels.com>
Sun, 19 Feb 2012 14:09:01 +0000 (08:09 -0600)
The error_mask module param overrides has a bug which prevented
the new module param values to take effect.

Also changed the type attribute of the error_mask1/2 module params
from int to uint to allow the MSB to be set.

Signed-off-by: Eddie Wai <eddie.wai@broadcom.com>
Acked-by: Anil Veerabhadrappa <anilgv@broadcom.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/bnx2i/bnx2i_hwi.c
drivers/scsi/bnx2i/bnx2i_init.c

index 1ad0b8225560f89fedae6a9e0f8318666df10fcb..f9d6f4129093d0c8f83e1a50510ebb440994c3c5 100644 (file)
@@ -1312,14 +1312,18 @@ int bnx2i_send_fw_iscsi_init_msg(struct bnx2i_hba *hba)
                  ISCSI_KCQE_COMPLETION_STATUS_PROTOCOL_ERR_EXP_DATASN) |
                /* EMC */
                (1ULL << ISCSI_KCQE_COMPLETION_STATUS_PROTOCOL_ERR_LUN));
-       if (error_mask1)
+       if (error_mask1) {
                iscsi_init2.error_bit_map[0] = error_mask1;
-       else
+               mask64 &= (u32)(~mask64);
+               mask64 |= error_mask1;
+       } else
                iscsi_init2.error_bit_map[0] = (u32) mask64;
 
-       if (error_mask2)
+       if (error_mask2) {
                iscsi_init2.error_bit_map[1] = error_mask2;
-       else
+               mask64 &= 0xffffffff;
+               mask64 |= ((u64)error_mask2 << 32);
+       } else
                iscsi_init2.error_bit_map[1] = (u32) (mask64 >> 32);
 
        iscsi_error_mask = mask64;
index 62c8c0a02a7cdc4b5cfcb2554a6d1fc4e2a99ae4..4927cca733d397d395aae0d70bf2418d45623454 100644 (file)
@@ -49,11 +49,11 @@ module_param(en_tcp_dack, int, 0664);
 MODULE_PARM_DESC(en_tcp_dack, "Enable TCP Delayed ACK");
 
 unsigned int error_mask1 = 0x00;
-module_param(error_mask1, int, 0664);
+module_param(error_mask1, uint, 0664);
 MODULE_PARM_DESC(error_mask1, "Config FW iSCSI Error Mask #1");
 
 unsigned int error_mask2 = 0x00;
-module_param(error_mask2, int, 0664);
+module_param(error_mask2, uint, 0664);
 MODULE_PARM_DESC(error_mask2, "Config FW iSCSI Error Mask #2");
 
 unsigned int sq_size;