ice: Fix corner case when switching from IEEE to CEE
authorAvinash JD <avinash.dayanand@intel.com>
Thu, 27 Feb 2020 18:14:57 +0000 (10:14 -0800)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Tue, 10 Mar 2020 20:10:19 +0000 (13:10 -0700)
While testing DCB for a corner case in which mode is switched from IEEE to
CEE and pfc_ena bitmask unchanged then DCBX mode doesn't get updated.

This is happening because the function ice_dcb_get_mode() is called
in a "no change detected block" instead of "change detected block".

Signed-off-by: Avinash JD <avinash.dayanand@intel.com>
Signed-off-by: Scott Register <scottx.register@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ice/ice_dcb_lib.c

index 8279071..140a90c 100644 (file)
@@ -832,10 +832,11 @@ ice_dcb_process_lldp_set_mib_change(struct ice_pf *pf,
        /* No change detected in DCBX configs */
        if (!memcmp(&tmp_dcbx_cfg, &pi->local_dcbx_cfg, sizeof(tmp_dcbx_cfg))) {
                dev_dbg(dev, "No change detected in DCBX configuration.\n");
-               pf->dcbx_cap = ice_dcb_get_mode(pi, false);
                goto out;
        }
 
+       pf->dcbx_cap = ice_dcb_get_mode(pi, false);
+
        need_reconfig = ice_dcb_need_recfg(pf, &tmp_dcbx_cfg,
                                           &pi->local_dcbx_cfg);
        ice_dcbnl_flush_apps(pf, &tmp_dcbx_cfg, &pi->local_dcbx_cfg);