X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fiavf%2Fiavf_ethdev.c;h=472538181e41c44064bad33deec52414ce81b3ab;hb=07d74e3d91f06a2f7d91e180fcf6453ea812985a;hp=97a2dc7d764db214d78953d648d04c3aafc6e9f3;hpb=5a038d19962d5ad3380ea6a116ec3120962398ab;p=dpdk.git diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c index 97a2dc7d76..472538181e 100644 --- a/drivers/net/iavf/iavf_ethdev.c +++ b/drivers/net/iavf/iavf_ethdev.c @@ -362,19 +362,11 @@ iavf_init_rss(struct iavf_adapter *adapter) PMD_DRV_LOG(DEBUG, "RSS is not supported"); return -ENOTSUP; } - if (adapter->eth_dev->data->dev_conf.rxmode.mq_mode != ETH_MQ_RX_RSS) { - PMD_DRV_LOG(WARNING, "RSS is enabled by PF by default"); - /* set all lut items to default queue */ - for (i = 0; i < vf->vf_res->rss_lut_size; i++) - vf->rss_lut[i] = 0; - ret = iavf_configure_rss_lut(adapter); - return ret; - } /* configure RSS key */ if (!rss_conf->rss_key) { /* Calculate the default hash key */ - for (i = 0; i <= vf->vf_res->rss_key_size; i++) + for (i = 0; i < vf->vf_res->rss_key_size; i++) vf->rss_key[i] = (uint8_t)rte_rand(); } else rte_memcpy(vf->rss_key, rss_conf->rss_key, @@ -2364,7 +2356,15 @@ iavf_dev_close(struct rte_eth_dev *dev) rte_free(vf->aq_resp); vf->aq_resp = NULL; - vf->vf_reset = false; + /* + * If the VF is reset via VFLR, the device will be knocked out of bus + * master mode, and the driver will fail to recover from the reset. Fix + * this by enabling bus mastering after every reset. In a non-VFLR case, + * the bus master bit will not be disabled, and this call will have no + * effect. + */ + if (vf->vf_reset && !rte_pci_set_bus_master(pci_dev, true)) + vf->vf_reset = false; return ret; } @@ -2448,7 +2448,6 @@ static int iavf_drv_i40evf_selected(struct rte_devargs *devargs, uint16_t device_id) { struct rte_kvargs *kvlist; - const char *key = "driver"; int ret = 0; if (device_id != IAVF_DEV_ID_VF && @@ -2464,13 +2463,13 @@ iavf_drv_i40evf_selected(struct rte_devargs *devargs, uint16_t device_id) if (kvlist == NULL) return 0; - if (!rte_kvargs_count(kvlist, key)) + if (!rte_kvargs_count(kvlist, RTE_DEVARGS_KEY_DRIVER)) goto exit; /* i40evf driver selected when there's a key-value pair: * driver=i40evf */ - if (rte_kvargs_process(kvlist, key, + if (rte_kvargs_process(kvlist, RTE_DEVARGS_KEY_DRIVER, iavf_drv_i40evf_check_handler, NULL) < 0) goto exit; @@ -2510,11 +2509,11 @@ RTE_PMD_REGISTER_PCI(net_iavf, rte_iavf_pmd); RTE_PMD_REGISTER_PCI_TABLE(net_iavf, pci_id_iavf_map); RTE_PMD_REGISTER_KMOD_DEP(net_iavf, "* igb_uio | vfio-pci"); RTE_PMD_REGISTER_PARAM_STRING(net_iavf, "cap=dcf driver=i40evf"); -RTE_LOG_REGISTER(iavf_logtype_init, pmd.net.iavf.init, NOTICE); -RTE_LOG_REGISTER(iavf_logtype_driver, pmd.net.iavf.driver, NOTICE); +RTE_LOG_REGISTER_SUFFIX(iavf_logtype_init, init, NOTICE); +RTE_LOG_REGISTER_SUFFIX(iavf_logtype_driver, driver, NOTICE); #ifdef RTE_ETHDEV_DEBUG_RX -RTE_LOG_REGISTER(iavf_logtype_rx, pmd.net.iavf.rx, DEBUG); +RTE_LOG_REGISTER_SUFFIX(iavf_logtype_rx, rx, DEBUG); #endif #ifdef RTE_ETHDEV_DEBUG_TX -RTE_LOG_REGISTER(iavf_logtype_tx, pmd.net.iavf.tx, DEBUG); +RTE_LOG_REGISTER_SUFFIX(iavf_logtype_tx, tx, DEBUG); #endif