X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fnetvsc%2Fhn_ethdev.c;h=164e9ad174a76fdf7afc8c1ae4548849a96509f6;hb=aa2cbd32e9695c0f552ee26653b7867cade5ffb3;hp=7353211c129e2d361f3e79a28977e0f77b1687aa;hpb=bdad90d12ec8eea8c9552880d715f10b0af93cc6;p=dpdk.git diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c index 7353211c12..164e9ad174 100644 --- a/drivers/net/netvsc/hn_ethdev.c +++ b/drivers/net/netvsc/hn_ethdev.c @@ -416,16 +416,16 @@ static int hn_rss_hash_conf_get(struct rte_eth_dev *dev, return 0; } -static void +static int hn_dev_promiscuous_enable(struct rte_eth_dev *dev) { struct hn_data *hv = dev->data->dev_private; hn_rndis_set_rxfilter(hv, NDIS_PACKET_TYPE_PROMISCUOUS); - hn_vf_promiscuous_enable(dev); + return hn_vf_promiscuous_enable(dev); } -static void +static int hn_dev_promiscuous_disable(struct rte_eth_dev *dev) { struct hn_data *hv = dev->data->dev_private; @@ -435,10 +435,10 @@ hn_dev_promiscuous_disable(struct rte_eth_dev *dev) if (dev->data->all_multicast) filter |= NDIS_PACKET_TYPE_ALL_MULTICAST; hn_rndis_set_rxfilter(hv, filter); - hn_vf_promiscuous_disable(dev); + return hn_vf_promiscuous_disable(dev); } -static void +static int hn_dev_allmulticast_enable(struct rte_eth_dev *dev) { struct hn_data *hv = dev->data->dev_private; @@ -446,17 +446,17 @@ hn_dev_allmulticast_enable(struct rte_eth_dev *dev) hn_rndis_set_rxfilter(hv, NDIS_PACKET_TYPE_DIRECTED | NDIS_PACKET_TYPE_ALL_MULTICAST | NDIS_PACKET_TYPE_BROADCAST); - hn_vf_allmulticast_enable(dev); + return hn_vf_allmulticast_enable(dev); } -static void +static int hn_dev_allmulticast_disable(struct rte_eth_dev *dev) { struct hn_data *hv = dev->data->dev_private; hn_rndis_set_rxfilter(hv, NDIS_PACKET_TYPE_DIRECTED | NDIS_PACKET_TYPE_BROADCAST); - hn_vf_allmulticast_disable(dev); + return hn_vf_allmulticast_disable(dev); } static int @@ -532,6 +532,9 @@ static int hn_dev_configure(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(); + if (dev_conf->rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG) + dev_conf->rxmode.offloads |= DEV_RX_OFFLOAD_RSS_HASH; + unsupported = txmode->offloads & ~HN_TX_OFFLOAD_CAPS; if (unsupported) { PMD_DRV_LOG(NOTICE, @@ -630,7 +633,7 @@ static int hn_dev_stats_get(struct rte_eth_dev *dev, return 0; } -static void +static int hn_dev_stats_reset(struct rte_eth_dev *dev) { unsigned int i; @@ -653,13 +656,20 @@ hn_dev_stats_reset(struct rte_eth_dev *dev) memset(&rxq->stats, 0, sizeof(struct hn_stats)); } + + return 0; } -static void +static int hn_dev_xstats_reset(struct rte_eth_dev *dev) { - hn_dev_stats_reset(dev); - hn_vf_xstats_reset(dev); + int ret; + + ret = hn_dev_stats_reset(dev); + if (ret != 0) + return 0; + + return hn_vf_xstats_reset(dev); } static int @@ -997,6 +1007,7 @@ static int eth_hn_dev_uninit(struct rte_eth_dev *eth_dev) { struct hn_data *hv = eth_dev->data->dev_private; + int ret; PMD_INIT_FUNC_TRACE(); @@ -1014,7 +1025,9 @@ eth_hn_dev_uninit(struct rte_eth_dev *eth_dev) hn_tx_pool_uninit(eth_dev); rte_vmbus_chan_close(hv->primary->chan); rte_free(hv->primary); - rte_eth_dev_owner_delete(hv->owner.id); + ret = rte_eth_dev_owner_delete(hv->owner.id); + if (ret != 0) + return ret; return 0; }