net/sfc: fix device reconfigure

Device reconfigure should be done without close which releases
all transmit and receive queue. ethdev API assumes that previously
setup queues (minimum from configured before and now) are kept
across device reconfigure.

Fixes: aaa3f5f0f79d ("net/sfc: add configure and close stubs")
Cc: stable@dpdk.org

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
This commit is contained in:
Andrew Rybchenko 2017-03-31 11:22:23 +01:00 committed by Ferruh Yigit
parent 09a46bf964
commit 005870b4d3
3 changed files with 16 additions and 17 deletions

View File

@ -398,7 +398,8 @@ sfc_configure(struct sfc_adapter *sa)
SFC_ASSERT(sfc_adapter_is_locked(sa));
SFC_ASSERT(sa->state == SFC_ADAPTER_INITIALIZED);
SFC_ASSERT(sa->state == SFC_ADAPTER_INITIALIZED ||
sa->state == SFC_ADAPTER_CONFIGURED);
sa->state = SFC_ADAPTER_CONFIGURING;
rc = sfc_check_conf(sa);

View File

@ -64,20 +64,20 @@ extern "C" {
* V |
* +---------------+------------+
* | INITIALIZED |
* +---------------+<-----------+
* |.dev_configure |
* V |
* +---------------+ |
* | CONFIGURING |------------^
* +---------------+ failed |
* |success |
* | +---------------+
* | | CLOSING |
* | +---------------+
* | ^
* V |.dev_close
* +---------------+------------+
* | CONFIGURED |
* +---------------+<-----------<---------------+
* |.dev_configure | |
* V |failed |
* +---------------+------------+ |
* | CONFIGURING | |
* +---------------+----+ |
* |success | |
* | | +---------------+
* | | | CLOSING |
* | | +---------------+
* | | ^
* V |.dev_configure |
* +---------------+----+ |.dev_close
* | CONFIGURED |----------------------------+
* +---------------+<-----------+
* |.dev_start |
* V |

View File

@ -192,8 +192,6 @@ sfc_dev_configure(struct rte_eth_dev *dev)
sfc_adapter_lock(sa);
switch (sa->state) {
case SFC_ADAPTER_CONFIGURED:
sfc_close(sa);
SFC_ASSERT(sa->state == SFC_ADAPTER_INITIALIZED);
/* FALLTHROUGH */
case SFC_ADAPTER_INITIALIZED:
rc = sfc_configure(sa);