1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright 2015 6WIND S.A. 3 * Copyright 2015 Mellanox Technologies, Ltd 4 */ 5 6 #ifndef RTE_PMD_MLX5_RXTX_H_ 7 #define RTE_PMD_MLX5_RXTX_H_ 8 9 #include <stddef.h> 10 #include <stdint.h> 11 #include <sys/queue.h> 12 13 #include <rte_mbuf.h> 14 #include <rte_mempool.h> 15 #include <rte_common.h> 16 #include <rte_hexdump.h> 17 #include <rte_spinlock.h> 18 #include <rte_io.h> 19 #include <rte_cycles.h> 20 21 #include <mlx5_common.h> 22 #include <mlx5_common_mr.h> 23 24 #include "mlx5_utils.h" 25 #include "mlx5.h" 26 #include "mlx5_autoconf.h" 27 #include "mlx5_mr.h" 28 29 struct mlx5_priv; 30 31 /* mlx5_rxtx.c */ 32 33 extern uint32_t mlx5_ptype_table[]; 34 extern uint8_t mlx5_cksum_table[]; 35 extern uint8_t mlx5_swp_types_table[]; 36 37 void mlx5_set_ptype_table(void); 38 void mlx5_set_cksum_table(void); 39 void mlx5_set_swp_types_table(void); 40 void mlx5_dump_debug_information(const char *path, const char *title, 41 const void *buf, unsigned int len); 42 int mlx5_queue_state_modify_primary(struct rte_eth_dev *dev, 43 const struct mlx5_mp_arg_queue_state_modify *sm); 44 int mlx5_queue_state_modify(struct rte_eth_dev *dev, 45 struct mlx5_mp_arg_queue_state_modify *sm); 46 47 /* mlx5_mr.c */ 48 49 void mlx5_mr_flush_local_cache(struct mlx5_mr_ctrl *mr_ctrl); 50 int mlx5_net_dma_map(struct rte_device *rte_dev, void *addr, uint64_t iova, 51 size_t len); 52 int mlx5_net_dma_unmap(struct rte_device *rte_dev, void *addr, uint64_t iova, 53 size_t len); 54 55 /** 56 * Get Memory Pool (MP) from mbuf. If mbuf is indirect, the pool from which the 57 * cloned mbuf is allocated is returned instead. 58 * 59 * @param buf 60 * Pointer to mbuf. 61 * 62 * @return 63 * Memory pool where data is located for given mbuf. 64 */ 65 static inline struct rte_mempool * 66 mlx5_mb2mp(struct rte_mbuf *buf) 67 { 68 if (unlikely(RTE_MBUF_CLONED(buf))) 69 return rte_mbuf_from_indirect(buf)->pool; 70 return buf->pool; 71 } 72 73 #endif /* RTE_PMD_MLX5_RXTX_H_ */ 74