X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsfc%2Fsfc_ethdev.c;h=3886daf7add7ae1667f259e770078b50674fddae;hb=4a5bc4e201e6654015828f02867dc606072dfbe8;hp=9b5324ca6796f141864adf23d43f92ec1a8704cd;hpb=0668a27a62a21798fe580456af75221f9c558485;p=dpdk.git diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c index 9b5324ca67..3886daf7ad 100644 --- a/drivers/net/sfc/sfc_ethdev.c +++ b/drivers/net/sfc/sfc_ethdev.c @@ -172,7 +172,8 @@ sfc_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) if (sa->dp_tx->get_dev_info != NULL) sa->dp_tx->get_dev_info(dev_info); - dev_info->dev_capa = RTE_ETH_DEV_CAPA_RUNTIME_RX_QUEUE_SETUP; + dev_info->dev_capa = RTE_ETH_DEV_CAPA_RUNTIME_RX_QUEUE_SETUP | + RTE_ETH_DEV_CAPA_RUNTIME_TX_QUEUE_SETUP; } static const uint32_t * @@ -443,8 +444,6 @@ sfc_rx_queue_release(void *queue) sfc_log_init(sa, "RxQ=%u", sw_index); - sa->eth_dev->data->rx_queues[sw_index] = NULL; - sfc_rx_qfini(sa, sw_index); sfc_adapter_unlock(sa); @@ -499,9 +498,6 @@ sfc_tx_queue_release(void *queue) sfc_adapter_lock(sa); - SFC_ASSERT(sw_index < sa->eth_dev->data->nb_tx_queues); - sa->eth_dev->data->tx_queues[sw_index] = NULL; - sfc_tx_qfini(sa, sw_index); sfc_adapter_unlock(sa); @@ -1197,6 +1193,9 @@ sfc_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id) if (sa->state != SFC_ADAPTER_STARTED) goto fail_not_started; + if (sa->txq_info[tx_queue_id].txq == NULL) + goto fail_not_setup; + rc = sfc_tx_qstart(sa, tx_queue_id); if (rc != 0) goto fail_tx_qstart; @@ -1208,6 +1207,7 @@ sfc_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id) fail_tx_qstart: +fail_not_setup: fail_not_started: sfc_adapter_unlock(sa); SFC_ASSERT(rc > 0); @@ -1354,14 +1354,10 @@ sfc_dev_rss_hash_conf_get(struct rte_eth_dev *dev, { struct sfc_adapter *sa = dev->data->dev_private; struct sfc_rss *rss = &sa->rss; - struct sfc_port *port = &sa->port; - if (rss->context_type != EFX_RX_SCALE_EXCLUSIVE || port->isolated) + if (rss->context_type != EFX_RX_SCALE_EXCLUSIVE) return -ENOTSUP; - if (rss->channels == 0) - return -EINVAL; - sfc_adapter_lock(sa); /* @@ -2039,9 +2035,6 @@ sfc_eth_dev_uninit(struct rte_eth_dev *dev) sfc_detach(sa); sfc_unprobe(sa); - rte_free(dev->data->mac_addrs); - dev->data->mac_addrs = NULL; - sfc_kvargs_cleanup(sa); sfc_adapter_unlock(sa);