qed: Correct DCBx update scheme
authorSudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>
Mon, 29 May 2017 06:53:06 +0000 (09:53 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 30 May 2017 16:07:01 +0000 (12:07 -0400)
Instead of using a boolean value that propagates to FW configuration,
use the proper firmware HSI values.

Signed-off-by: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qed/qed_dcbx.c
drivers/net/ethernet/qlogic/qed/qed_dcbx.h

index efe309e..64c2e7c 100644 (file)
@@ -191,17 +191,19 @@ static void
 qed_dcbx_set_params(struct qed_dcbx_results *p_data,
                    struct qed_hw_info *p_info,
                    bool enable,
-                   bool update,
                    u8 prio,
                    u8 tc,
                    enum dcbx_protocol_type type,
                    enum qed_pci_personality personality)
 {
        /* PF update ramrod data */
-       p_data->arr[type].update = update;
        p_data->arr[type].enable = enable;
        p_data->arr[type].priority = prio;
        p_data->arr[type].tc = tc;
+       if (enable)
+               p_data->arr[type].update = UPDATE_DCB;
+       else
+               p_data->arr[type].update = DONT_UPDATE_DCB_DSCP;
 
        /* QM reconf data */
        if (p_info->personality == personality)
@@ -213,7 +215,6 @@ static void
 qed_dcbx_update_app_info(struct qed_dcbx_results *p_data,
                         struct qed_hwfn *p_hwfn,
                         bool enable,
-                        bool update,
                         u8 prio, u8 tc, enum dcbx_protocol_type type)
 {
        struct qed_hw_info *p_info = &p_hwfn->hw_info;
@@ -231,7 +232,7 @@ qed_dcbx_update_app_info(struct qed_dcbx_results *p_data,
                personality = qed_dcbx_app_update[i].personality;
                name = qed_dcbx_app_update[i].name;
 
-               qed_dcbx_set_params(p_data, p_info, enable, update,
+               qed_dcbx_set_params(p_data, p_info, enable,
                                    prio, tc, type, personality);
        }
 }
@@ -304,7 +305,7 @@ qed_dcbx_process_tlv(struct qed_hwfn *p_hwfn,
                         */
                        enable = !(type == DCBX_PROTOCOL_ETH);
 
-                       qed_dcbx_update_app_info(p_data, p_hwfn, enable, true,
+                       qed_dcbx_update_app_info(p_data, p_hwfn, enable,
                                                 priority, tc, type);
                }
        }
@@ -316,7 +317,7 @@ qed_dcbx_process_tlv(struct qed_hwfn *p_hwfn,
            p_data->arr[DCBX_PROTOCOL_ROCE].update) {
                tc = p_data->arr[DCBX_PROTOCOL_ROCE].tc;
                priority = p_data->arr[DCBX_PROTOCOL_ROCE].priority;
-               qed_dcbx_update_app_info(p_data, p_hwfn, true, true,
+               qed_dcbx_update_app_info(p_data, p_hwfn, true,
                                         priority, tc, DCBX_PROTOCOL_ROCE_V2);
        }
 
@@ -332,8 +333,8 @@ qed_dcbx_process_tlv(struct qed_hwfn *p_hwfn,
                if (p_data->arr[type].update)
                        continue;
 
-               enable = !(type == DCBX_PROTOCOL_ETH);
-               qed_dcbx_update_app_info(p_data, p_hwfn, enable, true,
+               enable = (type == DCBX_PROTOCOL_ETH) ? false : !!dcbx_version;
+               qed_dcbx_update_app_info(p_data, p_hwfn, enable,
                                         priority, tc, type);
        }
 
index 414e262..5feb90e 100644 (file)
@@ -52,7 +52,7 @@ enum qed_mib_read_type {
 
 struct qed_dcbx_app_data {
        bool enable;            /* DCB enabled */
-       bool update;            /* Update indication */
+       u8 update;              /* Update indication */
        u8 priority;            /* Priority */
        u8 tc;                  /* Traffic Class */
 };