Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

cnic: Fix parity error code conflict

The recently added parity error handling used an error code that was
already defined for a different error. This could lead to bnx2x
firmware assert. We need to fix this with new error codes that are
defined for parity error only.

Signed-off-by: Michael Chan <mchan@broadcom.com>
Reviewed-by: Eddie Wai <eddie.wai@broadcom.com>
Reviewed-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Michael Chan and committed by
David S. Miller
8ec3e702 7ae52890

+12 -34
+7 -5
drivers/net/ethernet/broadcom/cnic.c
··· 47 47 #include "bnx2x/bnx2x_hsi.h" 48 48 #include "../../../scsi/bnx2i/57xx_iscsi_constants.h" 49 49 #include "../../../scsi/bnx2i/57xx_iscsi_hsi.h" 50 + #include "../../../scsi/bnx2fc/bnx2fc_constants.h" 50 51 #include "cnic.h" 51 52 #include "cnic_defs.h" 52 53 ··· 2548 2547 } 2549 2548 kcqe.kcqe_op_flag = kcqe_op << KCQE_FLAGS_OPCODE_SHIFT; 2550 2549 kcqe.kcqe_op_flag |= KCQE_FLAGS_LAYER_MASK_L5_FCOE; 2551 - kcqe.kcqe_info1 = FCOE_KCQE_COMPLETION_STATUS_NIC_ERROR; 2550 + kcqe.kcqe_info1 = FCOE_KCQE_COMPLETION_STATUS_PARITY_ERROR; 2552 2551 kcqe.kcqe_info2 = cid; 2553 2552 kcqe.kcqe_info0 = l5_cid; 2554 2553 ··· 2559 2558 2560 2559 kcqe.kcqe_op_flag = (opcode + 0x10) << KCQE_FLAGS_OPCODE_SHIFT; 2561 2560 kcqe.kcqe_op_flag |= KCQE_FLAGS_LAYER_MASK_L5_ISCSI; 2562 - kcqe.kcqe_info1 = ISCSI_KCQE_COMPLETION_STATUS_NIC_ERROR; 2561 + kcqe.kcqe_info1 = ISCSI_KCQE_COMPLETION_STATUS_PARITY_ERR; 2563 2562 kcqe.kcqe_info2 = cid; 2564 2563 cnic_get_l5_cid(cp, BNX2X_SW_CID(cid), &kcqe.kcqe_info0); 2565 2564 ··· 2578 2577 2579 2578 kcqe.kcqe_op_flag = (kcqe_op << KCQE_FLAGS_OPCODE_SHIFT) | 2580 2579 KCQE_FLAGS_LAYER_MASK_L4; 2581 - l4kcqe->status = L4_KCQE_COMPLETION_STATUS_NIC_ERROR; 2580 + l4kcqe->status = L4_KCQE_COMPLETION_STATUS_PARITY_ERROR; 2582 2581 l4kcqe->cid = cid; 2583 2582 cnic_get_l5_cid(cp, BNX2X_SW_CID(cid), &l4kcqe->conn_id); 2584 2583 } else { ··· 3934 3933 case L4_KCQE_OPCODE_VALUE_CONNECT_COMPLETE: 3935 3934 if (l4kcqe->status == 0) 3936 3935 set_bit(SK_F_OFFLD_COMPLETE, &csk->flags); 3937 - else if (l4kcqe->status == L4_KCQE_COMPLETION_STATUS_NIC_ERROR) 3936 + else if (l4kcqe->status == 3937 + L4_KCQE_COMPLETION_STATUS_PARITY_ERROR) 3938 3938 set_bit(SK_F_HW_ERR, &csk->flags); 3939 3939 3940 3940 smp_mb__before_clear_bit(); ··· 3948 3946 case L4_KCQE_OPCODE_VALUE_RESET_COMP: 3949 3947 case L5CM_RAMROD_CMD_ID_SEARCHER_DELETE: 3950 3948 case L5CM_RAMROD_CMD_ID_TERMINATE_OFFLOAD: 3951 - if (l4kcqe->status == L4_KCQE_COMPLETION_STATUS_NIC_ERROR) 3949 + if (l4kcqe->status == L4_KCQE_COMPLETION_STATUS_PARITY_ERROR) 3952 3950 set_bit(SK_F_HW_ERR, &csk->flags); 3953 3951 3954 3952 cp->close_conn(csk, opcode);
+1 -27
drivers/net/ethernet/broadcom/cnic_defs.h
··· 35 35 #define L5CM_RAMROD_CMD_ID_SEARCHER_DELETE (L5CM_RAMROD_CMD_ID_BASE + 14) 36 36 #define L5CM_RAMROD_CMD_ID_TERMINATE_OFFLOAD (L5CM_RAMROD_CMD_ID_BASE + 15) 37 37 38 - #define FCOE_KCQE_OPCODE_INIT_FUNC (0x10) 39 - #define FCOE_KCQE_OPCODE_DESTROY_FUNC (0x11) 40 - #define FCOE_KCQE_OPCODE_STAT_FUNC (0x12) 41 - #define FCOE_KCQE_OPCODE_OFFLOAD_CONN (0x15) 42 - #define FCOE_KCQE_OPCODE_ENABLE_CONN (0x16) 43 - #define FCOE_KCQE_OPCODE_DISABLE_CONN (0x17) 44 - #define FCOE_KCQE_OPCODE_DESTROY_CONN (0x18) 45 - #define FCOE_KCQE_OPCODE_CQ_EVENT_NOTIFICATION (0x20) 46 - #define FCOE_KCQE_OPCODE_FCOE_ERROR (0x21) 47 - 48 38 #define FCOE_RAMROD_CMD_ID_INIT_FUNC (FCOE_KCQE_OPCODE_INIT_FUNC) 49 39 #define FCOE_RAMROD_CMD_ID_DESTROY_FUNC (FCOE_KCQE_OPCODE_DESTROY_FUNC) 50 40 #define FCOE_RAMROD_CMD_ID_STAT_FUNC (FCOE_KCQE_OPCODE_STAT_FUNC) ··· 43 53 #define FCOE_RAMROD_CMD_ID_DISABLE_CONN (FCOE_KCQE_OPCODE_DISABLE_CONN) 44 54 #define FCOE_RAMROD_CMD_ID_DESTROY_CONN (FCOE_KCQE_OPCODE_DESTROY_CONN) 45 55 #define FCOE_RAMROD_CMD_ID_TERMINATE_CONN (0x81) 46 - 47 - #define FCOE_KWQE_OPCODE_INIT1 (0) 48 - #define FCOE_KWQE_OPCODE_INIT2 (1) 49 - #define FCOE_KWQE_OPCODE_INIT3 (2) 50 - #define FCOE_KWQE_OPCODE_OFFLOAD_CONN1 (3) 51 - #define FCOE_KWQE_OPCODE_OFFLOAD_CONN2 (4) 52 - #define FCOE_KWQE_OPCODE_OFFLOAD_CONN3 (5) 53 - #define FCOE_KWQE_OPCODE_OFFLOAD_CONN4 (6) 54 - #define FCOE_KWQE_OPCODE_ENABLE_CONN (7) 55 - #define FCOE_KWQE_OPCODE_DISABLE_CONN (8) 56 - #define FCOE_KWQE_OPCODE_DESTROY_CONN (9) 57 - #define FCOE_KWQE_OPCODE_DESTROY (10) 58 - #define FCOE_KWQE_OPCODE_STAT (11) 59 - 60 - #define FCOE_KCQE_COMPLETION_STATUS_ERROR (0x1) 61 - #define FCOE_KCQE_COMPLETION_STATUS_CTX_ALLOC_FAILURE (0x3) 62 - #define FCOE_KCQE_COMPLETION_STATUS_NIC_ERROR (0x5) 63 56 64 57 /* KCQ (kernel completion queue) response op codes */ 65 58 #define L4_KCQE_OPCODE_VALUE_CLOSE_COMP (53) ··· 60 87 /* KCQ (kernel completion queue) completion status */ 61 88 #define L4_KCQE_COMPLETION_STATUS_SUCCESS (0) 62 89 #define L4_KCQE_COMPLETION_STATUS_NIC_ERROR (4) 90 + #define L4_KCQE_COMPLETION_STATUS_PARITY_ERROR (0x81) 63 91 #define L4_KCQE_COMPLETION_STATUS_TIMEOUT (0x93) 64 92 65 93 #define L4_KCQE_COMPLETION_STATUS_CTX_ALLOC_FAIL (0x83)
+2 -2
drivers/net/ethernet/broadcom/cnic_if.h
··· 12 12 #ifndef CNIC_IF_H 13 13 #define CNIC_IF_H 14 14 15 - #define CNIC_MODULE_VERSION "2.5.9" 16 - #define CNIC_MODULE_RELDATE "Feb 8, 2012" 15 + #define CNIC_MODULE_VERSION "2.5.10" 16 + #define CNIC_MODULE_RELDATE "March 21, 2012" 17 17 18 18 #define CNIC_ULP_RDMA 0 19 19 #define CNIC_ULP_ISCSI 1
+1
drivers/scsi/bnx2fc/bnx2fc_constants.h
··· 47 47 #define FCOE_KCQE_COMPLETION_STATUS_CTX_FREE_FAILURE (0x4) 48 48 #define FCOE_KCQE_COMPLETION_STATUS_NIC_ERROR (0x5) 49 49 #define FCOE_KCQE_COMPLETION_STATUS_WRONG_HSI_VERSION (0x6) 50 + #define FCOE_KCQE_COMPLETION_STATUS_PARITY_ERROR (0x81) 50 51 51 52 /* CQE type */ 52 53 #define FCOE_PENDING_CQE_TYPE 0
+1
drivers/scsi/bnx2i/57xx_iscsi_constants.h
··· 122 122 #define ISCSI_KCQE_COMPLETION_STATUS_LOM_ISCSI_NOT_ENABLED (0x51) 123 123 124 124 #define ISCSI_KCQE_COMPLETION_STATUS_CID_BUSY (0x80) 125 + #define ISCSI_KCQE_COMPLETION_STATUS_PARITY_ERR (0x81) 125 126 126 127 /* SQ/RQ/CQ DB structure sizes */ 127 128 #define ISCSI_SQ_DB_SIZE (16)