aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/broadcom/cnic.c
diff options
context:
space:
mode:
authorMichael Chan <mchan@broadcom.com>2012-03-21 11:38:34 -0400
committerDavid S. Miller <davem@davemloft.net>2012-03-21 21:57:36 -0400
commit8ec3e70207486bbd3e2d3c0d6b809116ccd4f219 (patch)
treebda290a8c461fe639fe99a7210e75615c1bef03d /drivers/net/ethernet/broadcom/cnic.c
parent7ae5289017e5ed5514b2603d157fb54c058a3c82 (diff)
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>
Diffstat (limited to 'drivers/net/ethernet/broadcom/cnic.c')
-rw-r--r--drivers/net/ethernet/broadcom/cnic.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/net/ethernet/broadcom/cnic.c b/drivers/net/ethernet/broadcom/cnic.c
index 7b65716b8734..c95e7b5e2b85 100644
--- a/drivers/net/ethernet/broadcom/cnic.c
+++ b/drivers/net/ethernet/broadcom/cnic.c
@@ -47,6 +47,7 @@
47#include "bnx2x/bnx2x_hsi.h" 47#include "bnx2x/bnx2x_hsi.h"
48#include "../../../scsi/bnx2i/57xx_iscsi_constants.h" 48#include "../../../scsi/bnx2i/57xx_iscsi_constants.h"
49#include "../../../scsi/bnx2i/57xx_iscsi_hsi.h" 49#include "../../../scsi/bnx2i/57xx_iscsi_hsi.h"
50#include "../../../scsi/bnx2fc/bnx2fc_constants.h"
50#include "cnic.h" 51#include "cnic.h"
51#include "cnic_defs.h" 52#include "cnic_defs.h"
52 53
@@ -2547,7 +2548,7 @@ static void cnic_bnx2x_kwqe_err(struct cnic_dev *dev, struct kwqe *kwqe)
2547 } 2548 }
2548 kcqe.kcqe_op_flag = kcqe_op << KCQE_FLAGS_OPCODE_SHIFT; 2549 kcqe.kcqe_op_flag = kcqe_op << KCQE_FLAGS_OPCODE_SHIFT;
2549 kcqe.kcqe_op_flag |= KCQE_FLAGS_LAYER_MASK_L5_FCOE; 2550 kcqe.kcqe_op_flag |= KCQE_FLAGS_LAYER_MASK_L5_FCOE;
2550 kcqe.kcqe_info1 = FCOE_KCQE_COMPLETION_STATUS_NIC_ERROR; 2551 kcqe.kcqe_info1 = FCOE_KCQE_COMPLETION_STATUS_PARITY_ERROR;
2551 kcqe.kcqe_info2 = cid; 2552 kcqe.kcqe_info2 = cid;
2552 kcqe.kcqe_info0 = l5_cid; 2553 kcqe.kcqe_info0 = l5_cid;
2553 2554
@@ -2558,7 +2559,7 @@ static void cnic_bnx2x_kwqe_err(struct cnic_dev *dev, struct kwqe *kwqe)
2558 2559
2559 kcqe.kcqe_op_flag = (opcode + 0x10) << KCQE_FLAGS_OPCODE_SHIFT; 2560 kcqe.kcqe_op_flag = (opcode + 0x10) << KCQE_FLAGS_OPCODE_SHIFT;
2560 kcqe.kcqe_op_flag |= KCQE_FLAGS_LAYER_MASK_L5_ISCSI; 2561 kcqe.kcqe_op_flag |= KCQE_FLAGS_LAYER_MASK_L5_ISCSI;
2561 kcqe.kcqe_info1 = ISCSI_KCQE_COMPLETION_STATUS_NIC_ERROR; 2562 kcqe.kcqe_info1 = ISCSI_KCQE_COMPLETION_STATUS_PARITY_ERR;
2562 kcqe.kcqe_info2 = cid; 2563 kcqe.kcqe_info2 = cid;
2563 cnic_get_l5_cid(cp, BNX2X_SW_CID(cid), &kcqe.kcqe_info0); 2564 cnic_get_l5_cid(cp, BNX2X_SW_CID(cid), &kcqe.kcqe_info0);
2564 2565
@@ -2577,7 +2578,7 @@ static void cnic_bnx2x_kwqe_err(struct cnic_dev *dev, struct kwqe *kwqe)
2577 2578
2578 kcqe.kcqe_op_flag = (kcqe_op << KCQE_FLAGS_OPCODE_SHIFT) | 2579 kcqe.kcqe_op_flag = (kcqe_op << KCQE_FLAGS_OPCODE_SHIFT) |
2579 KCQE_FLAGS_LAYER_MASK_L4; 2580 KCQE_FLAGS_LAYER_MASK_L4;
2580 l4kcqe->status = L4_KCQE_COMPLETION_STATUS_NIC_ERROR; 2581 l4kcqe->status = L4_KCQE_COMPLETION_STATUS_PARITY_ERROR;
2581 l4kcqe->cid = cid; 2582 l4kcqe->cid = cid;
2582 cnic_get_l5_cid(cp, BNX2X_SW_CID(cid), &l4kcqe->conn_id); 2583 cnic_get_l5_cid(cp, BNX2X_SW_CID(cid), &l4kcqe->conn_id);
2583 } else { 2584 } else {
@@ -3933,7 +3934,8 @@ static void cnic_cm_process_kcqe(struct cnic_dev *dev, struct kcqe *kcqe)
3933 case L4_KCQE_OPCODE_VALUE_CONNECT_COMPLETE: 3934 case L4_KCQE_OPCODE_VALUE_CONNECT_COMPLETE:
3934 if (l4kcqe->status == 0) 3935 if (l4kcqe->status == 0)
3935 set_bit(SK_F_OFFLD_COMPLETE, &csk->flags); 3936 set_bit(SK_F_OFFLD_COMPLETE, &csk->flags);
3936 else if (l4kcqe->status == L4_KCQE_COMPLETION_STATUS_NIC_ERROR) 3937 else if (l4kcqe->status ==
3938 L4_KCQE_COMPLETION_STATUS_PARITY_ERROR)
3937 set_bit(SK_F_HW_ERR, &csk->flags); 3939 set_bit(SK_F_HW_ERR, &csk->flags);
3938 3940
3939 smp_mb__before_clear_bit(); 3941 smp_mb__before_clear_bit();
@@ -3946,7 +3948,7 @@ static void cnic_cm_process_kcqe(struct cnic_dev *dev, struct kcqe *kcqe)
3946 case L4_KCQE_OPCODE_VALUE_RESET_COMP: 3948 case L4_KCQE_OPCODE_VALUE_RESET_COMP:
3947 case L5CM_RAMROD_CMD_ID_SEARCHER_DELETE: 3949 case L5CM_RAMROD_CMD_ID_SEARCHER_DELETE:
3948 case L5CM_RAMROD_CMD_ID_TERMINATE_OFFLOAD: 3950 case L5CM_RAMROD_CMD_ID_TERMINATE_OFFLOAD:
3949 if (l4kcqe->status == L4_KCQE_COMPLETION_STATUS_NIC_ERROR) 3951 if (l4kcqe->status == L4_KCQE_COMPLETION_STATUS_PARITY_ERROR)
3950 set_bit(SK_F_HW_ERR, &csk->flags); 3952 set_bit(SK_F_HW_ERR, &csk->flags);
3951 3953
3952 cp->close_conn(csk, opcode); 3954 cp->close_conn(csk, opcode);