bnx2x: added TLV_NOT_FOUND flags to the dcb
authorDmitry Kravkov <dmitry@broadcom.com>
Sun, 18 Mar 2012 10:33:42 +0000 (10:33 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 19 Mar 2012 20:53:07 +0000 (16:53 -0400)
The new error flags are supported by the bnx2x FW.

Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
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_dcb.c
drivers/net/ethernet/broadcom/bnx2x/bnx2x_hsi.h

index fce47a6f88d7aab311f4743100e4867f0253a50d..4f9244bd7530877ff791defbe2082a0c2e9aa480 100644 (file)
@@ -206,8 +206,11 @@ static void bnx2x_dcbx_get_ap_feature(struct bnx2x *bp,
        if (GET_FLAGS(error, DCBX_LOCAL_APP_MISMATCH))
                DP(BNX2X_MSG_DCB, "DCBX_LOCAL_APP_MISMATCH\n");
 
+       if (GET_FLAGS(error, DCBX_REMOTE_APP_TLV_NOT_FOUND))
+               DP(BNX2X_MSG_DCB, "DCBX_REMOTE_APP_TLV_NOT_FOUND\n");
        if (app->enabled &&
-           !GET_FLAGS(error, DCBX_LOCAL_APP_ERROR | DCBX_LOCAL_APP_MISMATCH)) {
+           !GET_FLAGS(error, DCBX_LOCAL_APP_ERROR | DCBX_LOCAL_APP_MISMATCH |
+                             DCBX_REMOTE_APP_TLV_NOT_FOUND)) {
 
                bp->dcbx_port_params.app.enabled = true;
 
@@ -258,6 +261,8 @@ static void bnx2x_dcbx_get_ets_feature(struct bnx2x *bp,
        if (GET_FLAGS(error, DCBX_LOCAL_ETS_ERROR))
                DP(BNX2X_MSG_DCB, "DCBX_LOCAL_ETS_ERROR\n");
 
+       if (GET_FLAGS(error, DCBX_REMOTE_ETS_TLV_NOT_FOUND))
+               DP(BNX2X_MSG_DCB, "DCBX_REMOTE_ETS_TLV_NOT_FOUND\n");
 
        /* Clean up old settings of ets on COS */
        for (i = 0; i < ARRAY_SIZE(bp->dcbx_port_params.ets.cos_params) ; i++) {
@@ -267,9 +272,9 @@ static void bnx2x_dcbx_get_ets_feature(struct bnx2x *bp,
                cos_params[i].pri_bitmask = 0;
        }
 
-       if (bp->dcbx_port_params.app.enabled &&
-          !GET_FLAGS(error, DCBX_LOCAL_ETS_ERROR) &&
-          ets->enabled) {
+       if (bp->dcbx_port_params.app.enabled && ets->enabled &&
+          !GET_FLAGS(error,
+                     DCBX_LOCAL_ETS_ERROR | DCBX_REMOTE_ETS_TLV_NOT_FOUND)) {
                DP(BNX2X_MSG_DCB, "DCBX_LOCAL_ETS_ENABLE\n");
                bp->dcbx_port_params.ets.enabled = true;
 
@@ -301,9 +306,11 @@ static void  bnx2x_dcbx_get_pfc_feature(struct bnx2x *bp,
        if (GET_FLAGS(error, DCBX_LOCAL_PFC_ERROR))
                DP(BNX2X_MSG_DCB, "DCBX_LOCAL_PFC_ERROR\n");
 
-       if (bp->dcbx_port_params.app.enabled &&
-          !GET_FLAGS(error, DCBX_LOCAL_PFC_ERROR | DCBX_LOCAL_PFC_MISMATCH) &&
-          pfc->enabled) {
+       if (GET_FLAGS(error, DCBX_REMOTE_PFC_TLV_NOT_FOUND))
+               DP(BNX2X_MSG_DCB, "DCBX_REMOTE_PFC_TLV_NOT_FOUND\n");
+       if (bp->dcbx_port_params.app.enabled && pfc->enabled &&
+          !GET_FLAGS(error, DCBX_LOCAL_PFC_ERROR | DCBX_LOCAL_PFC_MISMATCH |
+                            DCBX_REMOTE_PFC_TLV_NOT_FOUND)) {
                bp->dcbx_port_params.pfc.enabled = true;
                bp->dcbx_port_params.pfc.priority_non_pauseable_mask =
                        ~(pfc->pri_en_bitmap);
index a1413ad7757da189950b1633be7001ccfb545142..0c5f1211559ad13f37e85ca5187ed21fab3ec7a8 100644 (file)
@@ -1833,6 +1833,9 @@ struct lldp_local_mib {
        #define DCBX_LOCAL_PFC_MISMATCH          0x00000010
        #define DCBX_LOCAL_APP_MISMATCH          0x00000020
        #define DCBX_REMOTE_MIB_ERROR            0x00000040
+       #define DCBX_REMOTE_ETS_TLV_NOT_FOUND    0x00000080
+       #define DCBX_REMOTE_PFC_TLV_NOT_FOUND    0x00000100
+       #define DCBX_REMOTE_APP_TLV_NOT_FOUND    0x00000200
        struct dcbx_features   features;
        u32 suffix_seq_num;
 };