net/bnxt: fix Rx configuration
[dpdk.git] / drivers / net / dpaa2 / dpaa2_ethdev.h
index 528bcff..a459181 100644 (file)
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  *
  *   Copyright (c) 2015-2016 Freescale Semiconductor, Inc. All rights reserved.
- *   Copyright 2016-2021 NXP
+ *   Copyright 2016-2022 NXP
  *
  */
 
@@ -11,6 +11,7 @@
 #include <rte_event_eth_rx_adapter.h>
 #include <rte_pmd_dpaa2.h>
 
+#include <rte_fslmc.h>
 #include <dpaa2_hw_pvt.h>
 #include "dpaa2_tm.h"
 
 /* Tx confirmation enabled */
 #define DPAA2_TX_CONF_ENABLE   0x06
 
+/* HW loopback the egress traffic to self ingress*/
+#define DPAA2_TX_MAC_LOOPBACK_MODE 0x20
+
+#define DPAA2_TX_SERDES_LOOPBACK_MODE 0x40
+
+#define DPAA2_TX_DPNI_LOOPBACK_MODE 0x80
+
+#define DPAA2_TX_LOOPBACK_MODE \
+       (DPAA2_TX_MAC_LOOPBACK_MODE | \
+       DPAA2_TX_SERDES_LOOPBACK_MODE | \
+       DPAA2_TX_DPNI_LOOPBACK_MODE)
+
 #define DPAA2_RSS_OFFLOAD_ALL ( \
        RTE_ETH_RSS_L2_PAYLOAD | \
        RTE_ETH_RSS_IP | \
@@ -192,6 +205,7 @@ struct dpaa2_dev_priv {
        struct dpaa2_queue *next_tx_conf_queue;
 
        struct rte_eth_dev *eth_dev; /**< Pointer back to holding ethdev */
+       rte_spinlock_t lpbk_qp_lock;
 
        uint8_t channel_inuse;
        LIST_HEAD(, rte_flow) flows; /**< Configured flow rule handles. */
@@ -250,8 +264,7 @@ __rte_internal
 uint16_t dpaa2_dev_tx_multi_txq_ordered(void **queue,
                struct rte_mbuf **bufs, uint16_t nb_pkts);
 
-uint16_t dummy_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts);
-void dpaa2_dev_free_eqresp_buf(uint16_t eqresp_ci);
+void dpaa2_dev_free_eqresp_buf(uint16_t eqresp_ci, struct dpaa2_queue *dpaa2_q);
 void dpaa2_flow_clean(struct rte_eth_dev *dev);
 uint16_t dpaa2_dev_tx_conf(void *queue)  __rte_unused;
 int dpaa2_dev_is_dpaa2(struct rte_eth_dev *dev);
@@ -268,4 +281,13 @@ int dpaa2_timesync_read_rx_timestamp(struct rte_eth_dev *dev,
                                                uint32_t flags __rte_unused);
 int dpaa2_timesync_read_tx_timestamp(struct rte_eth_dev *dev,
                                          struct timespec *timestamp);
+
+int dpaa2_dev_recycle_config(struct rte_eth_dev *eth_dev);
+int dpaa2_dev_recycle_deconfig(struct rte_eth_dev *eth_dev);
+int dpaa2_dev_recycle_qp_setup(struct rte_dpaa2_device *dpaa2_dev,
+       uint16_t qidx, uint64_t cntx,
+       eth_rx_burst_t tx_lpbk, eth_tx_burst_t rx_lpbk,
+       struct dpaa2_queue **txq,
+       struct dpaa2_queue **rxq);
+
 #endif /* _DPAA2_ETHDEV_H */