xref: /dpdk/drivers/net/mlx5/mlx5_rxtx.h (revision d38febb08d57fec29fed27a2d12a507fc6fcdfa1)
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