bnx2x: FCoE statistics id fixed
authorYuval Mintz <yuvalmin@broadcom.com>
Mon, 12 Mar 2012 11:22:07 +0000 (11:22 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 13 Mar 2012 00:01:25 +0000 (17:01 -0700)
FCoE statistics ids were distinguished from the L2's statistics ids.
However, not all of the change was committed. This causes a possible
collision of indices when FCoE is present.

This patch fixes the issue.

Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h

index bf27c54ff2e0d5ac093e7f59f3db75f89715bdc4..4f40f7d7d8c6647652fc09b2d240e5c7c224530c 100644 (file)
@@ -1179,10 +1179,16 @@ static inline int bnx2x_alloc_rx_bds(struct bnx2x_fastpath *fp,
  */
 static inline u8 bnx2x_stats_id(struct bnx2x_fastpath *fp)
 {
-       if (!CHIP_IS_E1x(fp->bp))
+       struct bnx2x *bp = fp->bp;
+       if (!CHIP_IS_E1x(bp)) {
+#ifdef BCM_CNIC
+               /* there are special statistics counters for FCoE 136..140 */
+               if (IS_FCOE_FP(fp))
+                       return bp->cnic_base_cl_id + (bp->pf_num >> 1);
+#endif
                return fp->cl_id;
-       else
-               return fp->cl_id + BP_PORT(fp->bp) * FP_SB_MAX_E1x;
+       }
+       return fp->cl_id + BP_PORT(bp) * FP_SB_MAX_E1x;
 }
 
 static inline void bnx2x_init_vlan_mac_fp_objs(struct bnx2x_fastpath *fp,