On 5/22/2018 3:33 PM, chuhong yao wrote: > When I was using VPP +dpdk-18.02+liqudio CN23xx, > I encountered such a bug. > When VPP called dpdk_device_start to initialize DPDK liqudio drive, > I found that initialization failed. > The reason for the failure is that VF MTU > PF MTU, > but PF MTU has been modified to 9600 (> VF MTU). > Finally, I am location that DPDK liqudio drive > cannot get the correct PF driver to liqudio network card. > It is due to the fact that when VPP calls dpdk_device_start to > initialize DPDK liqudio drive,this time, > lio_dev->linfo.Link var already exists in the old value, not empty. > Cause lio_dev->linfo.Link. Link_status64 != 0 > statement is set up, > and the link info is stopped directly to liqudio card, > resulting in no get accurate pf mtu. > I did a test model to reproduce the bug, > which is to add rte_eth_dev_set_mtu(portid, vf_mtu) > to the rte_eth_dev_start function when using > dpdk-18.02+liqudio CN23xx+l2fwd. > You need to make sure that 1500 < vf_mtu < pf_mtu will be available. > At this time, you will have > net_liovf[04:00.3]ERROR: lio_dev_mtu_set() > VF MTU should be >= 68 and <= 1500. Such a mistake. > > Signed-off-by: chuhong yao <y...@panath.cn>
Will use commit log suggested by maintainer [1]. Thanks Shijith! [1] net/liquidio: fix link state fetching during device start Clear link state information during device start for fetching new state before function completion. Fixes: 605164c8e79d ("net/liquidio: add API to validate VF MTU") Cc: sta...@dpdk.org Signed-off-by: Chuhong Yao <y...@panath.cn> Acked-by: Shijith Thotton <shijith.thot...@caviumnetworks.com> > --- > drivers/net/liquidio/lio_ethdev.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/net/liquidio/lio_ethdev.c > b/drivers/net/liquidio/lio_ethdev.c > index 0e0b5d8..50743c7 100644 > --- a/drivers/net/liquidio/lio_ethdev.c > +++ b/drivers/net/liquidio/lio_ethdev.c > @@ -1405,6 +1405,9 @@ struct rte_lio_xstats_name_off { > /* Configure RSS if device configured with multiple RX queues. */ > lio_dev_mq_rx_configure(eth_dev); > > + /* Before update the link info, must set linfo.link.link_status64 to 0. > */ Giving checkpatch warning for long line, will wrap it while merging. > + lio_dev->linfo.link.link_status64 = 0; > + > /* start polling for lsc */ > ret = rte_eal_alarm_set(LIO_LSC_TIMEOUT, > lio_sync_link_state_check, >