X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fice%2Fice_dcf_ethdev.c;h=b0b2ecb0d6729145dc314b3c2412a47c7e0ad08c;hb=f28fbd1e6b502fe4c38e0a4aa862e103811b1b97;hp=38e321f4b4e87ab9ea0ea8485411e50527086746;hpb=c9f889e9961681f035e188fbd492b81b0e171cb1;p=dpdk.git diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c index 38e321f4b4..b0b2ecb0d6 100644 --- a/drivers/net/ice/ice_dcf_ethdev.c +++ b/drivers/net/ice/ice_dcf_ethdev.c @@ -230,7 +230,7 @@ ice_dcf_config_rx_queues_irqs(struct rte_eth_dev *dev, static int alloc_rxq_mbufs(struct ice_rx_queue *rxq) { - volatile union ice_32b_rx_flex_desc *rxd; + volatile union ice_rx_flex_desc *rxd; struct rte_mbuf *mbuf = NULL; uint64_t dma_addr; uint16_t i; @@ -254,8 +254,10 @@ alloc_rxq_mbufs(struct ice_rx_queue *rxq) rxd = &rxq->rx_ring[i]; rxd->read.pkt_addr = dma_addr; rxd->read.hdr_addr = 0; +#ifndef RTE_LIBRTE_ICE_16BYTE_RX_DESC rxd->read.rsvd1 = 0; rxd->read.rsvd2 = 0; +#endif rxq->sw_ring[i].mbuf = (void *)mbuf; } @@ -544,6 +546,12 @@ ice_dcf_dev_start(struct rte_eth_dev *dev) return ret; } + ret = ice_dcf_add_del_all_mac_addr(hw, true); + if (ret) { + PMD_DRV_LOG(ERR, "Failed to add mac addr"); + return ret; + } + dev->data->dev_link.link_status = ETH_LINK_UP; return 0; @@ -581,7 +589,7 @@ ice_dcf_stop_queues(struct rte_eth_dev *dev) } } -static void +static int ice_dcf_dev_stop(struct rte_eth_dev *dev) { struct ice_dcf_adapter *dcf_ad = dev->data->dev_private; @@ -590,7 +598,7 @@ ice_dcf_dev_stop(struct rte_eth_dev *dev) if (ad->pf.adapter_stopped == 1) { PMD_DRV_LOG(DEBUG, "Port is already stopped"); - return; + return 0; } ice_dcf_stop_queues(dev); @@ -601,8 +609,11 @@ ice_dcf_dev_stop(struct rte_eth_dev *dev) intr_handle->intr_vec = NULL; } + ice_dcf_add_del_all_mac_addr(&dcf_ad->real_hw, false); dev->data->dev_link.link_status = ETH_LINK_DOWN; ad->pf.adapter_stopped = 1; + + return 0; } static int @@ -838,20 +849,18 @@ ice_dcf_stats_reset(struct rte_eth_dev *dev) return 0; } -static void +static int ice_dcf_dev_close(struct rte_eth_dev *dev) { struct ice_dcf_adapter *adapter = dev->data->dev_private; if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return; - - dev->dev_ops = NULL; - dev->rx_pkt_burst = NULL; - dev->tx_pkt_burst = NULL; + return 0; ice_dcf_uninit_parent_adapter(dev); ice_dcf_uninit_hw(dev, &adapter->real_hw); + + return 0; } static int @@ -897,7 +906,7 @@ ice_dcf_dev_init(struct rte_eth_dev *eth_dev) if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE; + eth_dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS; adapter->real_hw.vc_event_msg_cb = ice_dcf_handle_pf_event_msg; if (ice_dcf_init_hw(eth_dev, &adapter->real_hw) != 0) {