18b95ced4SBeilei Xing /* SPDX-License-Identifier: BSD-3-Clause 28b95ced4SBeilei Xing * Copyright(c) 2023 Intel Corporation 38b95ced4SBeilei Xing */ 48b95ced4SBeilei Xing 58b95ced4SBeilei Xing #ifndef _IDPF_COMMON_RXTX_H_ 68b95ced4SBeilei Xing #define _IDPF_COMMON_RXTX_H_ 78b95ced4SBeilei Xing 8c008a5e7SBeilei Xing #include <rte_mbuf.h> 98b95ced4SBeilei Xing #include <rte_mbuf_ptype.h> 108b95ced4SBeilei Xing #include <rte_mbuf_core.h> 118b95ced4SBeilei Xing 128b95ced4SBeilei Xing #include "idpf_common_device.h" 138b95ced4SBeilei Xing 14c008a5e7SBeilei Xing #define IDPF_RX_MAX_BURST 32 15c008a5e7SBeilei Xing 16c008a5e7SBeilei Xing #define IDPF_RX_OFFLOAD_IPV4_CKSUM RTE_BIT64(1) 17c008a5e7SBeilei Xing #define IDPF_RX_OFFLOAD_UDP_CKSUM RTE_BIT64(2) 18c008a5e7SBeilei Xing #define IDPF_RX_OFFLOAD_TCP_CKSUM RTE_BIT64(3) 19c008a5e7SBeilei Xing #define IDPF_RX_OFFLOAD_OUTER_IPV4_CKSUM RTE_BIT64(6) 20c008a5e7SBeilei Xing #define IDPF_RX_OFFLOAD_TIMESTAMP RTE_BIT64(14) 21c008a5e7SBeilei Xing 22c008a5e7SBeilei Xing #define IDPF_TX_OFFLOAD_IPV4_CKSUM RTE_BIT64(1) 23c008a5e7SBeilei Xing #define IDPF_TX_OFFLOAD_UDP_CKSUM RTE_BIT64(2) 24c008a5e7SBeilei Xing #define IDPF_TX_OFFLOAD_TCP_CKSUM RTE_BIT64(3) 25c008a5e7SBeilei Xing #define IDPF_TX_OFFLOAD_SCTP_CKSUM RTE_BIT64(4) 26c008a5e7SBeilei Xing #define IDPF_TX_OFFLOAD_TCP_TSO RTE_BIT64(5) 27c008a5e7SBeilei Xing #define IDPF_TX_OFFLOAD_MULTI_SEGS RTE_BIT64(15) 28c008a5e7SBeilei Xing #define IDPF_TX_OFFLOAD_MBUF_FAST_FREE RTE_BIT64(16) 29c008a5e7SBeilei Xing 308c6098afSBeilei Xing #define IDPF_TX_MAX_MTU_SEG 10 318c6098afSBeilei Xing 328c6098afSBeilei Xing #define IDPF_MIN_TSO_MSS 88 338c6098afSBeilei Xing #define IDPF_MAX_TSO_MSS 9728 348c6098afSBeilei Xing #define IDPF_MAX_TSO_FRAME_SIZE 262143 358c6098afSBeilei Xing #define IDPF_TX_MAX_MTU_SEG 10 368c6098afSBeilei Xing 374fc6c4d9SWenjun Wu #define IDPF_RLAN_CTX_DBUF_S 7 384fc6c4d9SWenjun Wu #define IDPF_RX_MAX_DATA_BUF_SIZE (16 * 1024 - 128) 394fc6c4d9SWenjun Wu 408c6098afSBeilei Xing #define IDPF_TX_CKSUM_OFFLOAD_MASK ( \ 418c6098afSBeilei Xing RTE_MBUF_F_TX_IP_CKSUM | \ 428c6098afSBeilei Xing RTE_MBUF_F_TX_L4_MASK | \ 438c6098afSBeilei Xing RTE_MBUF_F_TX_TCP_SEG) 448c6098afSBeilei Xing 458c6098afSBeilei Xing #define IDPF_TX_OFFLOAD_MASK ( \ 468c6098afSBeilei Xing IDPF_TX_CKSUM_OFFLOAD_MASK | \ 478c6098afSBeilei Xing RTE_MBUF_F_TX_IPV4 | \ 488c6098afSBeilei Xing RTE_MBUF_F_TX_IPV6) 498c6098afSBeilei Xing 508c6098afSBeilei Xing #define IDPF_TX_OFFLOAD_NOTSUP_MASK \ 518c6098afSBeilei Xing (RTE_MBUF_F_TX_OFFLOAD_MASK ^ IDPF_TX_OFFLOAD_MASK) 528c6098afSBeilei Xing 530fac6a1cSBeilei Xing /* used for Vector PMD */ 540fac6a1cSBeilei Xing #define IDPF_VPMD_RX_MAX_BURST 32 550fac6a1cSBeilei Xing #define IDPF_VPMD_TX_MAX_BURST 32 560fac6a1cSBeilei Xing #define IDPF_VPMD_DESCS_PER_LOOP 4 570fac6a1cSBeilei Xing #define IDPF_RXQ_REARM_THRESH 64 58e528d7c7SWenjun Wu #define IDPD_TXQ_SCAN_CQ_THRESH 64 59e528d7c7SWenjun Wu #define IDPF_TX_CTYPE_NUM 8 600fac6a1cSBeilei Xing 618c6098afSBeilei Xing /* MTS */ 628c6098afSBeilei Xing #define GLTSYN_CMD_SYNC_0_0 (PF_TIMESYNC_BASE + 0x0) 638c6098afSBeilei Xing #define PF_GLTSYN_SHTIME_0_0 (PF_TIMESYNC_BASE + 0x4) 648c6098afSBeilei Xing #define PF_GLTSYN_SHTIME_L_0 (PF_TIMESYNC_BASE + 0x8) 658c6098afSBeilei Xing #define PF_GLTSYN_SHTIME_H_0 (PF_TIMESYNC_BASE + 0xC) 668c6098afSBeilei Xing #define GLTSYN_ART_L_0 (PF_TIMESYNC_BASE + 0x10) 678c6098afSBeilei Xing #define GLTSYN_ART_H_0 (PF_TIMESYNC_BASE + 0x14) 688c6098afSBeilei Xing #define PF_GLTSYN_SHTIME_0_1 (PF_TIMESYNC_BASE + 0x24) 698c6098afSBeilei Xing #define PF_GLTSYN_SHTIME_L_1 (PF_TIMESYNC_BASE + 0x28) 708c6098afSBeilei Xing #define PF_GLTSYN_SHTIME_H_1 (PF_TIMESYNC_BASE + 0x2C) 718c6098afSBeilei Xing #define PF_GLTSYN_SHTIME_0_2 (PF_TIMESYNC_BASE + 0x44) 728c6098afSBeilei Xing #define PF_GLTSYN_SHTIME_L_2 (PF_TIMESYNC_BASE + 0x48) 738c6098afSBeilei Xing #define PF_GLTSYN_SHTIME_H_2 (PF_TIMESYNC_BASE + 0x4C) 748c6098afSBeilei Xing #define PF_GLTSYN_SHTIME_0_3 (PF_TIMESYNC_BASE + 0x64) 758c6098afSBeilei Xing #define PF_GLTSYN_SHTIME_L_3 (PF_TIMESYNC_BASE + 0x68) 768c6098afSBeilei Xing #define PF_GLTSYN_SHTIME_H_3 (PF_TIMESYNC_BASE + 0x6C) 778c6098afSBeilei Xing 788c6098afSBeilei Xing #define PF_TIMESYNC_BAR4_BASE 0x0E400000 798c6098afSBeilei Xing #define GLTSYN_ENA (PF_TIMESYNC_BAR4_BASE + 0x90) 808c6098afSBeilei Xing #define GLTSYN_CMD (PF_TIMESYNC_BAR4_BASE + 0x94) 818c6098afSBeilei Xing #define GLTSYC_TIME_L (PF_TIMESYNC_BAR4_BASE + 0x104) 828c6098afSBeilei Xing #define GLTSYC_TIME_H (PF_TIMESYNC_BAR4_BASE + 0x108) 838c6098afSBeilei Xing 848c6098afSBeilei Xing #define GLTSYN_CMD_SYNC_0_4 (PF_TIMESYNC_BAR4_BASE + 0x110) 858c6098afSBeilei Xing #define PF_GLTSYN_SHTIME_L_4 (PF_TIMESYNC_BAR4_BASE + 0x118) 868c6098afSBeilei Xing #define PF_GLTSYN_SHTIME_H_4 (PF_TIMESYNC_BAR4_BASE + 0x11C) 878c6098afSBeilei Xing #define GLTSYN_INCVAL_L (PF_TIMESYNC_BAR4_BASE + 0x150) 888c6098afSBeilei Xing #define GLTSYN_INCVAL_H (PF_TIMESYNC_BAR4_BASE + 0x154) 898c6098afSBeilei Xing #define GLTSYN_SHADJ_L (PF_TIMESYNC_BAR4_BASE + 0x158) 908c6098afSBeilei Xing #define GLTSYN_SHADJ_H (PF_TIMESYNC_BAR4_BASE + 0x15C) 918c6098afSBeilei Xing 928c6098afSBeilei Xing #define GLTSYN_CMD_SYNC_0_5 (PF_TIMESYNC_BAR4_BASE + 0x130) 938c6098afSBeilei Xing #define PF_GLTSYN_SHTIME_L_5 (PF_TIMESYNC_BAR4_BASE + 0x138) 948c6098afSBeilei Xing #define PF_GLTSYN_SHTIME_H_5 (PF_TIMESYNC_BAR4_BASE + 0x13C) 958c6098afSBeilei Xing 96181348d3SMingxia Liu #define IDPF_RX_SPLIT_BUFQ1_ID 1 97181348d3SMingxia Liu #define IDPF_RX_SPLIT_BUFQ2_ID 2 98181348d3SMingxia Liu 998b95ced4SBeilei Xing struct idpf_rx_stats { 100*e12a0166STyler Retzlaff RTE_ATOMIC(uint64_t) mbuf_alloc_failed; 1018b95ced4SBeilei Xing }; 1028b95ced4SBeilei Xing 1038b95ced4SBeilei Xing struct idpf_rx_queue { 1048b95ced4SBeilei Xing struct idpf_adapter *adapter; /* the adapter this queue belongs to */ 1058b95ced4SBeilei Xing struct rte_mempool *mp; /* mbuf pool to populate Rx ring */ 1068b95ced4SBeilei Xing const struct rte_memzone *mz; /* memzone for Rx ring */ 1078b95ced4SBeilei Xing volatile void *rx_ring; 1088b95ced4SBeilei Xing struct rte_mbuf **sw_ring; /* address of SW ring */ 1098b95ced4SBeilei Xing uint64_t rx_ring_phys_addr; /* Rx ring DMA address */ 1108b95ced4SBeilei Xing 1118b95ced4SBeilei Xing uint16_t nb_rx_desc; /* ring length */ 1128b95ced4SBeilei Xing uint16_t rx_tail; /* current value of tail */ 1138b95ced4SBeilei Xing volatile uint8_t *qrx_tail; /* register address of tail */ 1148b95ced4SBeilei Xing uint16_t rx_free_thresh; /* max free RX desc to hold */ 1158b95ced4SBeilei Xing uint16_t nb_rx_hold; /* number of held free RX desc */ 1168b95ced4SBeilei Xing struct rte_mbuf *pkt_first_seg; /* first segment of current packet */ 1178b95ced4SBeilei Xing struct rte_mbuf *pkt_last_seg; /* last segment of current packet */ 1188b95ced4SBeilei Xing struct rte_mbuf fake_mbuf; /* dummy mbuf */ 1198b95ced4SBeilei Xing 1208b95ced4SBeilei Xing /* used for VPMD */ 1218b95ced4SBeilei Xing uint16_t rxrearm_nb; /* number of remaining to be re-armed */ 1228b95ced4SBeilei Xing uint16_t rxrearm_start; /* the idx we start the re-arming from */ 1238b95ced4SBeilei Xing uint64_t mbuf_initializer; /* value to init mbufs */ 1248b95ced4SBeilei Xing 1258b95ced4SBeilei Xing uint16_t rx_nb_avail; 1268b95ced4SBeilei Xing uint16_t rx_next_avail; 1278b95ced4SBeilei Xing 1288b95ced4SBeilei Xing uint16_t port_id; /* device port ID */ 1298b95ced4SBeilei Xing uint16_t queue_id; /* Rx queue index */ 1308b95ced4SBeilei Xing uint16_t rx_buf_len; /* The packet buffer size */ 1318b95ced4SBeilei Xing uint16_t rx_hdr_len; /* The header buffer size */ 1328b95ced4SBeilei Xing uint16_t max_pkt_len; /* Maximum packet length */ 1338b95ced4SBeilei Xing uint8_t rxdid; 1348b95ced4SBeilei Xing 1358b95ced4SBeilei Xing bool q_set; /* if rx queue has been configured */ 1368b95ced4SBeilei Xing bool q_started; /* if rx queue has been started */ 1378b95ced4SBeilei Xing bool rx_deferred_start; /* don't start this queue in dev start */ 1388b95ced4SBeilei Xing const struct idpf_rxq_ops *ops; 1398b95ced4SBeilei Xing 1408b95ced4SBeilei Xing struct idpf_rx_stats rx_stats; 1418b95ced4SBeilei Xing 1428b95ced4SBeilei Xing /* only valid for split queue mode */ 1438b95ced4SBeilei Xing uint8_t expected_gen_id; 1448b95ced4SBeilei Xing struct idpf_rx_queue *bufq1; 1458b95ced4SBeilei Xing struct idpf_rx_queue *bufq2; 1468b95ced4SBeilei Xing 1478b95ced4SBeilei Xing uint64_t offloads; 1488b95ced4SBeilei Xing uint32_t hw_register_set; 1498b95ced4SBeilei Xing }; 1508b95ced4SBeilei Xing 1518b95ced4SBeilei Xing struct idpf_tx_entry { 1528b95ced4SBeilei Xing struct rte_mbuf *mbuf; 1538b95ced4SBeilei Xing uint16_t next_id; 1548b95ced4SBeilei Xing uint16_t last_id; 1558b95ced4SBeilei Xing }; 1568b95ced4SBeilei Xing 1578b95ced4SBeilei Xing /* Structure associated with each TX queue. */ 1588b95ced4SBeilei Xing struct idpf_tx_queue { 1598b95ced4SBeilei Xing const struct rte_memzone *mz; /* memzone for Tx ring */ 160bab8149aSSimei Su volatile struct idpf_base_tx_desc *tx_ring; /* Tx ring virtual address */ 1618b95ced4SBeilei Xing volatile union { 1628b95ced4SBeilei Xing struct idpf_flex_tx_sched_desc *desc_ring; 1638b95ced4SBeilei Xing struct idpf_splitq_tx_compl_desc *compl_ring; 1648b95ced4SBeilei Xing }; 1658b95ced4SBeilei Xing uint64_t tx_ring_phys_addr; /* Tx ring DMA address */ 1668b95ced4SBeilei Xing struct idpf_tx_entry *sw_ring; /* address array of SW ring */ 1678b95ced4SBeilei Xing 1688b95ced4SBeilei Xing uint16_t nb_tx_desc; /* ring length */ 1698b95ced4SBeilei Xing uint16_t tx_tail; /* current value of tail */ 1708b95ced4SBeilei Xing volatile uint8_t *qtx_tail; /* register address of tail */ 1718b95ced4SBeilei Xing /* number of used desc since RS bit set */ 1728b95ced4SBeilei Xing uint16_t nb_used; 1738b95ced4SBeilei Xing uint16_t nb_free; 1748b95ced4SBeilei Xing uint16_t last_desc_cleaned; /* last desc have been cleaned*/ 1758b95ced4SBeilei Xing uint16_t free_thresh; 1768b95ced4SBeilei Xing uint16_t rs_thresh; 1778b95ced4SBeilei Xing 1788b95ced4SBeilei Xing uint16_t port_id; 1798b95ced4SBeilei Xing uint16_t queue_id; 1808b95ced4SBeilei Xing uint64_t offloads; 1818b95ced4SBeilei Xing uint16_t next_dd; /* next to set RS, for VPMD */ 1828b95ced4SBeilei Xing uint16_t next_rs; /* next to check DD, for VPMD */ 1838b95ced4SBeilei Xing 1848b95ced4SBeilei Xing bool q_set; /* if tx queue has been configured */ 1858b95ced4SBeilei Xing bool q_started; /* if tx queue has been started */ 1868b95ced4SBeilei Xing bool tx_deferred_start; /* don't start this queue in dev start */ 1878b95ced4SBeilei Xing const struct idpf_txq_ops *ops; 1888b95ced4SBeilei Xing 1898b95ced4SBeilei Xing /* only valid for split queue mode */ 1908b95ced4SBeilei Xing uint16_t sw_nb_desc; 1918b95ced4SBeilei Xing uint16_t sw_tail; 1928b95ced4SBeilei Xing void **txqs; 1938b95ced4SBeilei Xing uint32_t tx_start_qid; 1948b95ced4SBeilei Xing uint8_t expected_gen_id; 1958b95ced4SBeilei Xing struct idpf_tx_queue *complq; 196e528d7c7SWenjun Wu uint16_t ctype[IDPF_TX_CTYPE_NUM]; 1978b95ced4SBeilei Xing }; 1988b95ced4SBeilei Xing 1998c6098afSBeilei Xing /* Offload features */ 2008c6098afSBeilei Xing union idpf_tx_offload { 2018c6098afSBeilei Xing uint64_t data; 2028c6098afSBeilei Xing struct { 2038c6098afSBeilei Xing uint64_t l2_len:7; /* L2 (MAC) Header Length. */ 2048c6098afSBeilei Xing uint64_t l3_len:9; /* L3 (IP) Header Length. */ 2058c6098afSBeilei Xing uint64_t l4_len:8; /* L4 Header Length. */ 2068c6098afSBeilei Xing uint64_t tso_segsz:16; /* TCP TSO segment size */ 2078c6098afSBeilei Xing /* uint64_t unused : 24; */ 2088c6098afSBeilei Xing }; 2098c6098afSBeilei Xing }; 2108c6098afSBeilei Xing 2110fac6a1cSBeilei Xing struct idpf_tx_vec_entry { 2120fac6a1cSBeilei Xing struct rte_mbuf *mbuf; 2130fac6a1cSBeilei Xing }; 2140fac6a1cSBeilei Xing 215e528d7c7SWenjun Wu union idpf_tx_desc { 216e528d7c7SWenjun Wu struct idpf_base_tx_desc *tx_ring; 217e528d7c7SWenjun Wu struct idpf_flex_tx_sched_desc *desc_ring; 218e528d7c7SWenjun Wu struct idpf_splitq_tx_compl_desc *compl_ring; 219e528d7c7SWenjun Wu }; 220e528d7c7SWenjun Wu 221c008a5e7SBeilei Xing struct idpf_rxq_ops { 222c008a5e7SBeilei Xing void (*release_mbufs)(struct idpf_rx_queue *rxq); 223c008a5e7SBeilei Xing }; 224c008a5e7SBeilei Xing 225c008a5e7SBeilei Xing struct idpf_txq_ops { 226c008a5e7SBeilei Xing void (*release_mbufs)(struct idpf_tx_queue *txq); 227c008a5e7SBeilei Xing }; 228c008a5e7SBeilei Xing 2298c6098afSBeilei Xing extern int idpf_timestamp_dynfield_offset; 2308c6098afSBeilei Xing extern uint64_t idpf_timestamp_dynflag; 2318c6098afSBeilei Xing 232c008a5e7SBeilei Xing __rte_internal 233715939a7SBeilei Xing int idpf_qc_rx_thresh_check(uint16_t nb_desc, uint16_t thresh); 234c008a5e7SBeilei Xing __rte_internal 235715939a7SBeilei Xing int idpf_qc_tx_thresh_check(uint16_t nb_desc, uint16_t tx_rs_thresh, 236c008a5e7SBeilei Xing uint16_t tx_free_thresh); 237c008a5e7SBeilei Xing __rte_internal 238715939a7SBeilei Xing void idpf_qc_rxq_mbufs_release(struct idpf_rx_queue *rxq); 239c008a5e7SBeilei Xing __rte_internal 240715939a7SBeilei Xing void idpf_qc_txq_mbufs_release(struct idpf_tx_queue *txq); 241c008a5e7SBeilei Xing __rte_internal 242715939a7SBeilei Xing void idpf_qc_split_rx_descq_reset(struct idpf_rx_queue *rxq); 243c008a5e7SBeilei Xing __rte_internal 244715939a7SBeilei Xing void idpf_qc_split_rx_bufq_reset(struct idpf_rx_queue *rxq); 245c008a5e7SBeilei Xing __rte_internal 246715939a7SBeilei Xing void idpf_qc_split_rx_queue_reset(struct idpf_rx_queue *rxq); 247c008a5e7SBeilei Xing __rte_internal 248715939a7SBeilei Xing void idpf_qc_single_rx_queue_reset(struct idpf_rx_queue *rxq); 249c008a5e7SBeilei Xing __rte_internal 250715939a7SBeilei Xing void idpf_qc_split_tx_descq_reset(struct idpf_tx_queue *txq); 251c008a5e7SBeilei Xing __rte_internal 252715939a7SBeilei Xing void idpf_qc_split_tx_complq_reset(struct idpf_tx_queue *cq); 253c008a5e7SBeilei Xing __rte_internal 254715939a7SBeilei Xing void idpf_qc_single_tx_queue_reset(struct idpf_tx_queue *txq); 255c008a5e7SBeilei Xing __rte_internal 256715939a7SBeilei Xing void idpf_qc_rx_queue_release(void *rxq); 257c008a5e7SBeilei Xing __rte_internal 258715939a7SBeilei Xing void idpf_qc_tx_queue_release(void *txq); 259c008a5e7SBeilei Xing __rte_internal 260715939a7SBeilei Xing int idpf_qc_ts_mbuf_register(struct idpf_rx_queue *rxq); 2618c6098afSBeilei Xing __rte_internal 262715939a7SBeilei Xing int idpf_qc_single_rxq_mbufs_alloc(struct idpf_rx_queue *rxq); 263c008a5e7SBeilei Xing __rte_internal 264715939a7SBeilei Xing int idpf_qc_split_rxq_mbufs_alloc(struct idpf_rx_queue *rxq); 2658c6098afSBeilei Xing __rte_internal 2669ebf3f6bSBeilei Xing uint16_t idpf_dp_splitq_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, 2678c6098afSBeilei Xing uint16_t nb_pkts); 2688c6098afSBeilei Xing __rte_internal 2699ebf3f6bSBeilei Xing uint16_t idpf_dp_splitq_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, 2708c6098afSBeilei Xing uint16_t nb_pkts); 2718c6098afSBeilei Xing __rte_internal 2729ebf3f6bSBeilei Xing uint16_t idpf_dp_singleq_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, 2738c6098afSBeilei Xing uint16_t nb_pkts); 2748c6098afSBeilei Xing __rte_internal 2759ebf3f6bSBeilei Xing uint16_t idpf_dp_singleq_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, 2768c6098afSBeilei Xing uint16_t nb_pkts); 2778c6098afSBeilei Xing __rte_internal 2789ebf3f6bSBeilei Xing uint16_t idpf_dp_prep_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, 2798c6098afSBeilei Xing uint16_t nb_pkts); 280f580252dSBeilei Xing __rte_internal 281715939a7SBeilei Xing int idpf_qc_singleq_rx_vec_setup(struct idpf_rx_queue *rxq); 2820fac6a1cSBeilei Xing __rte_internal 283e528d7c7SWenjun Wu int idpf_qc_splitq_rx_vec_setup(struct idpf_rx_queue *rxq); 284e528d7c7SWenjun Wu __rte_internal 285e528d7c7SWenjun Wu int idpf_qc_tx_vec_avx512_setup(struct idpf_tx_queue *txq); 286e528d7c7SWenjun Wu __rte_internal 287e528d7c7SWenjun Wu int idpf_qc_tx_vec_avx512_setup(struct idpf_tx_queue *txq); 2880fac6a1cSBeilei Xing __rte_internal 2899ebf3f6bSBeilei Xing uint16_t idpf_dp_singleq_recv_pkts_avx512(void *rx_queue, 2900fac6a1cSBeilei Xing struct rte_mbuf **rx_pkts, 2910fac6a1cSBeilei Xing uint16_t nb_pkts); 2920fac6a1cSBeilei Xing __rte_internal 293e528d7c7SWenjun Wu uint16_t idpf_dp_splitq_recv_pkts_avx512(void *tx_queue, struct rte_mbuf **tx_pkts, 294e528d7c7SWenjun Wu uint16_t nb_pkts); 295e528d7c7SWenjun Wu __rte_internal 2969ebf3f6bSBeilei Xing uint16_t idpf_dp_singleq_xmit_pkts_avx512(void *tx_queue, 2970fac6a1cSBeilei Xing struct rte_mbuf **tx_pkts, 2980fac6a1cSBeilei Xing uint16_t nb_pkts); 299e528d7c7SWenjun Wu __rte_internal 300e528d7c7SWenjun Wu uint16_t idpf_dp_splitq_xmit_pkts_avx512(void *tx_queue, struct rte_mbuf **tx_pkts, 301e528d7c7SWenjun Wu uint16_t nb_pkts); 30213145ac4SMingxia Liu __rte_internal 30313145ac4SMingxia Liu uint16_t idpf_dp_singleq_recv_scatter_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, 30413145ac4SMingxia Liu uint16_t nb_pkts); 305c008a5e7SBeilei Xing 3068b95ced4SBeilei Xing #endif /* _IDPF_COMMON_RXTX_H_ */ 307