[dpdk-dev] [PATCH v4 1/3] lib/librte_ether: add support for port reset

Yuanhan Liu yuanhan.liu at linux.intel.com
Thu Apr 20 08:07:58 CEST 2017


On Thu, Apr 06, 2017 at 02:57:29AM +0000, Zhao1, Wei wrote:
> > > + * Reset an ethernet device when it's not working. One scenario is,
> > > + after PF
> > > + * port is down and up, the related VF port should be reset.
> > > + * The API will stop the port, clear the rx/tx queues, re-setup the
> > > + rx/tx
> > > + * queues, restart the port.
> > 
> > s/The API/This function/
> > 
> > Please explain exactly the responsibility of this function, and how it is
> > different from calling stop/configure/start.
> 
> In this reset feature, reset function can do the calling stop/configure/start process, but also 
> It can also do some restore work for the port, for example, it can restore the added parameters 
>  of vlan,  mac_addrs, promisc_unicast_enabled falg and promisc_multicast_enabled flag.
> Maybe , I should add this explanation in the patch comments or function comments?

I'm curious why we have to do save & restore for a reset operation.
Why some configures have to be saved and restored? Doesn't "reset"
literally means reset everything?

Even though, how do you tell what kind of configures need be restored
and what should not? Again, even though, will all PMDs supports
restoring the same set of configurations?

While looking at your reset implementation for i40e, it looks more
complex than necessary: just thinking we have to call "xxx_queue_setup"
for all PMDs.

I'm thinking a simple hardware reset might be enough?

    /* literally reset the hardware: reset everything */
    rte_eth_reset(port) 
    {
    	eth_dev->ops->reset();
    }

Assume the application already has a function (say, port_init()) to
initiate a specific port, it then just needs do something like following
to handle the case you described in the commit log:

    rte_eth_reset(port);
    port_init(port);

Makes sense? Sorry it's completely wrong; I've limited knowledge on NIC
pmd drivers after all :/

	--yliu


More information about the dev mailing list