On Wed, Aug 1, 2018 at 10:00 AM Zhang, Qi Z <qi.z.zh...@intel.com> wrote:
> Hi Williams: > > > -----Original Message----- > > From: Chas Williams [mailto:3ch...@gmail.com] > > Sent: Wednesday, August 1, 2018 12:07 PM > > To: dev@dpdk.org > > Cc: Xing, Beilei <beilei.x...@intel.com>; Zhang, Qi Z < > qi.z.zh...@intel.com>; > > Charles (Chas) Williams <ch...@att.com> > > Subject: [PATCH] net/i40e: stop lldp before setting local lldp MIB > > > > From: "Charles (Chas) Williams" <ch...@att.com> > > > > From the Intel Ethernet Controller X710/XXV710/XL710 Specifiction > > Update: > > > > Starting from NVM 5.02, if the Set Local LLDP MIB command is > > received while the DCBx specific agent is stopped, the command > > returns an EPERM error. If the command is received while the > > LLDP agent is stopped, it sets the local MIB without exchanging > > LLDP with peer, and returns SUCCESS. > > > > This results in the harmless, but annoying, diagnostic: > > > > default dcb config fails. err = -53, aq_err = 1. > > > > So, always stop the lldp daemon when we are in software mode before we > > attempt to call i40e_set_dcb_config. > > > > Signed-off-by: Chas Williams <ch...@att.com> > > --- > > drivers/net/i40e/i40e_ethdev.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/drivers/net/i40e/i40e_ethdev.c > b/drivers/net/i40e/i40e_ethdev.c > > index a340540ef..03bedf5c1 100644 > > --- a/drivers/net/i40e/i40e_ethdev.c > > +++ b/drivers/net/i40e/i40e_ethdev.c > > @@ -11237,6 +11237,7 @@ i40e_dcb_init_configure(struct rte_eth_dev > > *dev, bool sw_dcb) > > * i40e_init_dcb we expect is failure with I40E_AQ_RC_EPERM > > * adminq status. Otherwise, it should return success. > > */ > > + i40e_aq_stop_lldp(hw, TRUE, NULL); > > I40e_aq_stop_lldp is intended to be removed with below two patches. > > commit c6431c891d9e9691e3205fe5c5350071cbaeb852 > commit fcbd40d4327b36725c4de9f33f57809edc359f4a > Yeah about that. The i40e driver seems to go out of its way to program the flow control outside of LLDP see i40e_update_flow_control() and i40e_flow_ctrl_set(). So it's not clear to me what is going on here with DPDK and LLDP. Do you really want LLDP running in this mode? The other branch in i40e_dcb_init_configure() explicitly starts LLDP, so I assume at some point, LLDP wasn't/isn't running. How did it get this way? With respect to item #70, shouldn't you therefore always start LLDP to workaround the bug? Item#70 is fixed in later NVM's (6.01 or later). Perhaps a check to see if the NVM is new enough to safely allow LLDP stopping? > > Regards. > Qi > > > > if ((ret == I40E_SUCCESS) || (ret != I40E_SUCCESS && > > hw->aq.asq_last_status == I40E_AQ_RC_EPERM)) { > > memset(&hw->local_dcbx_config, 0, > > -- > > 2.14.4 > >