X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fthunderx%2Fnicvf_ethdev.c;h=6f43541a5d4200e64f898089fd46cdb7fd392f87;hb=cbbbbd3365d299f55233b8f9a09ce0d9e43ec3ad;hp=062eec3f25ced2a35853b07062cbd27c26414454;hpb=8b945a7f7dcb688fada7ec8650b8a1f45252ea73;p=dpdk.git diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c index 062eec3f25..6f43541a5d 100644 --- a/drivers/net/thunderx/nicvf_ethdev.c +++ b/drivers/net/thunderx/nicvf_ethdev.c @@ -1920,7 +1920,8 @@ nicvf_dev_configure(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(); - rxmode->offloads |= DEV_RX_OFFLOAD_RSS_HASH; + if (rxmode->mq_mode & ETH_MQ_RX_RSS_FLAG) + rxmode->offloads |= DEV_RX_OFFLOAD_RSS_HASH; if (!rte_eal_has_hugepages()) { PMD_INIT_LOG(INFO, "Huge page is not configured"); @@ -1987,6 +1988,37 @@ nicvf_dev_configure(struct rte_eth_dev *dev) return 0; } +static int +nicvf_dev_set_link_up(struct rte_eth_dev *dev) +{ + struct nicvf *nic = nicvf_pmd_priv(dev); + int rc, i; + + rc = nicvf_mbox_set_link_up_down(nic, true); + if (rc) + goto done; + + /* Start tx queues */ + for (i = 0; i < dev->data->nb_tx_queues; i++) + nicvf_dev_tx_queue_start(dev, i); + +done: + return rc; +} + +static int +nicvf_dev_set_link_down(struct rte_eth_dev *dev) +{ + struct nicvf *nic = nicvf_pmd_priv(dev); + int i; + + /* Stop tx queues */ + for (i = 0; i < dev->data->nb_tx_queues; i++) + nicvf_dev_tx_queue_stop(dev, i); + + return nicvf_mbox_set_link_up_down(nic, false); +} + /* Initialize and register driver with DPDK Application */ static const struct eth_dev_ops nicvf_eth_dev_ops = { .dev_configure = nicvf_dev_configure, @@ -2014,6 +2046,8 @@ static const struct eth_dev_ops nicvf_eth_dev_ops = { .rx_queue_count = nicvf_dev_rx_queue_count, .tx_queue_setup = nicvf_dev_tx_queue_setup, .tx_queue_release = nicvf_dev_tx_queue_release, + .dev_set_link_up = nicvf_dev_set_link_up, + .dev_set_link_down = nicvf_dev_set_link_down, .get_reg = nicvf_dev_get_regs, };