X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fice%2Fice_rxtx.c;h=748954f6147ad6c02b274785cc472e416713e856;hb=f2caa921dc03f9486185b6caf09c9fd271f1b86d;hp=c794ee861ae09df7e73990b276aa54beed318be1;hpb=89760a006b826ec3f85f46f2c7a04efe75a8d6fa;p=dpdk.git diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c index c794ee861a..748954f614 100644 --- a/drivers/net/ice/ice_rxtx.c +++ b/drivers/net/ice/ice_rxtx.c @@ -7,8 +7,6 @@ #include "ice_rxtx.h" -#define ICE_TD_CMD ICE_TX_DESC_CMD_EOP - #define ICE_TX_CKSUM_OFFLOAD_MASK ( \ PKT_TX_IP_CKSUM | \ PKT_TX_L4_MASK | \ @@ -165,7 +163,7 @@ ice_alloc_rx_queue_mbufs(struct ice_rx_queue *rxq) /* Free all mbufs for descriptors in rx queue */ static void -ice_rx_queue_release_mbufs(struct ice_rx_queue *rxq) +_ice_rx_queue_release_mbufs(struct ice_rx_queue *rxq) { uint16_t i; @@ -193,6 +191,12 @@ ice_rx_queue_release_mbufs(struct ice_rx_queue *rxq) #endif /* RTE_LIBRTE_ICE_RX_ALLOW_BULK_ALLOC */ } +static void +ice_rx_queue_release_mbufs(struct ice_rx_queue *rxq) +{ + rxq->rx_rel_mbufs(rxq); +} + /* turn on or off rx queue * @q_idx: queue index in pf scope * @on: turn on or off the queue @@ -319,6 +323,9 @@ ice_reset_rx_queue(struct ice_rx_queue *rxq) rxq->nb_rx_hold = 0; rxq->pkt_first_seg = NULL; rxq->pkt_last_seg = NULL; + + rxq->rxrearm_start = 0; + rxq->rxrearm_nb = 0; } int @@ -468,7 +475,7 @@ ice_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id) /* Free all mbufs for descriptors in tx queue */ static void -ice_tx_queue_release_mbufs(struct ice_tx_queue *txq) +_ice_tx_queue_release_mbufs(struct ice_tx_queue *txq) { uint16_t i; @@ -484,6 +491,11 @@ ice_tx_queue_release_mbufs(struct ice_tx_queue *txq) } } } +static void +ice_tx_queue_release_mbufs(struct ice_tx_queue *txq) +{ + txq->tx_rel_mbufs(txq); +} static void ice_reset_tx_queue(struct ice_tx_queue *txq) @@ -669,6 +681,7 @@ ice_rx_queue_setup(struct rte_eth_dev *dev, ice_reset_rx_queue(rxq); rxq->q_set = TRUE; dev->data->rx_queues[queue_idx] = rxq; + rxq->rx_rel_mbufs = _ice_rx_queue_release_mbufs; use_def_burst_func = ice_check_rx_burst_bulk_alloc_preconditions(rxq); @@ -866,6 +879,7 @@ ice_tx_queue_setup(struct rte_eth_dev *dev, ice_reset_tx_queue(txq); txq->q_set = TRUE; dev->data->tx_queues[queue_idx] = txq; + txq->tx_rel_mbufs = _ice_tx_queue_release_mbufs; return 0; } @@ -1488,6 +1502,13 @@ ice_dev_supported_ptypes_get(struct rte_eth_dev *dev) #endif dev->rx_pkt_burst == ice_recv_scattered_pkts) return ptypes; + +#ifdef RTE_ARCH_X86 + if (dev->rx_pkt_burst == ice_recv_pkts_vec || + dev->rx_pkt_burst == ice_recv_scattered_pkts_vec) + return ptypes; +#endif + return NULL; } @@ -2219,6 +2240,29 @@ ice_set_rx_function(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(); struct ice_adapter *ad = ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); +#ifdef RTE_ARCH_X86 + struct ice_rx_queue *rxq; + int i; + + if (!ice_rx_vec_dev_check(dev)) { + for (i = 0; i < dev->data->nb_rx_queues; i++) { + rxq = dev->data->rx_queues[i]; + (void)ice_rxq_vec_setup(rxq); + } + if (dev->data->scattered_rx) { + PMD_DRV_LOG(DEBUG, + "Using Vector Scattered Rx (port %d).", + dev->data->port_id); + dev->rx_pkt_burst = ice_recv_scattered_pkts_vec; + } else { + PMD_DRV_LOG(DEBUG, "Using Vector Rx (port %d).", + dev->data->port_id); + dev->rx_pkt_burst = ice_recv_pkts_vec; + } + + return; + } +#endif if (dev->data->scattered_rx) { /* Set the non-LRO scattered function */