net/qede/base: retain dcbx config till actually applied
authorRasesh Mody <rasesh.mody@cavium.com>
Tue, 19 Sep 2017 01:51:39 +0000 (18:51 -0700)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 6 Oct 2017 00:49:49 +0000 (02:49 +0200)
Retain user dcbx configurations till the config is applied to the adapter
i.e. till the negotiation completes. If base driver receives a config
update before negotiation completes, then base driver merges the new config
with the cached config and sends it to management FW.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
drivers/net/qede/base/ecore_dcbx.c
drivers/net/qede/base/ecore_mcp.c

index 54c61bf..c6274bd 100644 (file)
@@ -1220,15 +1220,10 @@ enum _ecore_status_t ecore_dcbx_config_params(struct ecore_hwfn *p_hwfn,
        u32 resp = 0, param = 0;
        enum _ecore_status_t rc = ECORE_SUCCESS;
 
-       if (!hw_commit) {
-               OSAL_MEMCPY(&p_hwfn->p_dcbx_info->set, params,
-                           sizeof(p_hwfn->p_dcbx_info->set));
+       OSAL_MEMCPY(&p_hwfn->p_dcbx_info->set, params,
+                   sizeof(p_hwfn->p_dcbx_info->set));
+       if (!hw_commit)
                return ECORE_SUCCESS;
-       }
-
-       /* clear set-parmas cache */
-       OSAL_MEMSET(&p_hwfn->p_dcbx_info->set, 0,
-                   sizeof(struct ecore_dcbx_set));
 
        OSAL_MEMSET(&local_admin, 0, sizeof(local_admin));
        ecore_dcbx_set_local_params(p_hwfn, &local_admin, params);
index 8a8670d..06e426a 100644 (file)
@@ -1984,6 +1984,9 @@ enum _ecore_status_t ecore_mcp_handle_events(struct ecore_hwfn *p_hwfn,
                case MFW_DRV_MSG_DCBX_OPERATIONAL_MIB_UPDATED:
                        ecore_dcbx_mib_update_event(p_hwfn, p_ptt,
                                                    ECORE_DCBX_OPERATIONAL_MIB);
+                       /* clear the user-config cache */
+                       OSAL_MEMSET(&p_hwfn->p_dcbx_info->set, 0,
+                                   sizeof(struct ecore_dcbx_set));
                        break;
                case MFW_DRV_MSG_OEM_CFG_UPDATE:
                        ecore_mcp_handle_ufp_event(p_hwfn, p_ptt);