When the FW LLDP agent is active the driver sends an initial DCB configuration via set_local_mib. Currently the ETS TLV willing bit is clear, which prevents LLDP negotiation and renders the FW LLDP mode non-functional. Add ICE_IEEE_ETS_IS_WILLING to document intent and use it to set the willing bit so the FW can negotiate DCB settings with the peer. This only affects the default configuration; SW LLDP mode overrides it immediately afterwards. Fixes: 7d9c9b791f9e ("ice: Implement LFC workaround") Cc: stable@vger.kernel.org Signed-off-by: Yochai Hagvi Signed-off-by: Aleksandr Loktionov --- drivers/net/ethernet/intel/ice/ice_dcb.h | 1 + drivers/net/ethernet/intel/ice/ice_main.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/intel/ice/ice_dcb.h b/drivers/net/ethernet/intel/ice/ice_dcb.h index be34650..91d6682 100644 --- a/drivers/net/ethernet/intel/ice/ice_dcb.h +++ b/drivers/net/ethernet/intel/ice/ice_dcb.h @@ -52,6 +52,7 @@ #define ICE_IEEE_ETS_CBS_M BIT(ICE_IEEE_ETS_CBS_S) #define ICE_IEEE_ETS_WILLING_S 7 #define ICE_IEEE_ETS_WILLING_M BIT(ICE_IEEE_ETS_WILLING_S) +#define ICE_IEEE_ETS_IS_WILLING BIT(ICE_IEEE_ETS_WILLING_S) #define ICE_IEEE_ETS_PRIO_0_S 0 #define ICE_IEEE_ETS_PRIO_0_M (0x7 << ICE_IEEE_ETS_PRIO_0_S) #define ICE_IEEE_ETS_PRIO_1_S 4 diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c index e7308e3..75a48e5 100644 --- a/drivers/net/ethernet/intel/ice/ice_main.c +++ b/drivers/net/ethernet/intel/ice/ice_main.c @@ -971,7 +971,7 @@ static void ice_set_dflt_mib(struct ice_pf *pf) tlv->ouisubtype = htonl(ouisubtype); buf = tlv->tlvinfo; - buf[0] = 0; + buf[0] = ICE_IEEE_ETS_IS_WILLING; /* ETS CFG all UPs map to TC 0. Next 4 (1 - 4) Octets = 0. * Octets 5 - 12 are BW values, set octet 5 to 100% BW. -- 2.52.0