xref: /dpdk/drivers/net/mlx5/mlx5_rxtx.h (revision 3dfa78770ed53c376df2da7c2bd997e0b2d33cd1)
18fd92a66SOlivier Matz /* SPDX-License-Identifier: BSD-3-Clause
22e22920bSAdrien Mazarguil  * Copyright 2015 6WIND S.A.
35feecc57SShahaf Shuler  * Copyright 2015 Mellanox Technologies, Ltd
42e22920bSAdrien Mazarguil  */
52e22920bSAdrien Mazarguil 
62e22920bSAdrien Mazarguil #ifndef RTE_PMD_MLX5_RXTX_H_
72e22920bSAdrien Mazarguil #define RTE_PMD_MLX5_RXTX_H_
82e22920bSAdrien Mazarguil 
9c74564e5SOlga Shern #include <stddef.h>
102e22920bSAdrien Mazarguil #include <stdint.h>
11f8fb87d5SNélio Laranjeiro #include <sys/queue.h>
122e22920bSAdrien Mazarguil 
132e22920bSAdrien Mazarguil #include <rte_mbuf.h>
142e22920bSAdrien Mazarguil #include <rte_mempool.h>
15b4b12e55SNélio Laranjeiro #include <rte_common.h>
16c7714992SShahaf Shuler #include <rte_hexdump.h>
176bf10ab6SMoti Haimovsky #include <rte_spinlock.h>
186bf10ab6SMoti Haimovsky #include <rte_io.h>
1977522be0SViacheslav Ovsiienko #include <rte_cycles.h>
202e22920bSAdrien Mazarguil 
218fc74217SMatan Azrad #include <mlx5_common.h>
22b8dc6b0eSVu Pham #include <mlx5_common_mr.h>
237b4f1e6bSMatan Azrad 
242e22920bSAdrien Mazarguil #include "mlx5_utils.h"
252e22920bSAdrien Mazarguil #include "mlx5.h"
26ae018afeSAdrien Mazarguil #include "mlx5_autoconf.h"
272e22920bSAdrien Mazarguil 
28dbeba4cfSThomas Monjalon struct mlx5_priv;
292e22920bSAdrien Mazarguil 
302e22920bSAdrien Mazarguil /* mlx5_rxtx.c */
312e22920bSAdrien Mazarguil 
32ea16068cSYongseok Koh extern uint32_t mlx5_ptype_table[];
335f8ba81cSXueming Li extern uint8_t mlx5_cksum_table[];
345f8ba81cSXueming Li extern uint8_t mlx5_swp_types_table[];
356cb559d6SYongseok Koh 
36ea16068cSYongseok Koh void mlx5_set_ptype_table(void);
375f8ba81cSXueming Li void mlx5_set_cksum_table(void);
385f8ba81cSXueming Li void mlx5_set_swp_types_table(void);
39066cfecdSMatan Azrad void mlx5_dump_debug_information(const char *path, const char *title,
40066cfecdSMatan Azrad 				 const void *buf, unsigned int len);
41*3dfa7877SKiran Vedere void mlx5_dump_to_file(FILE *fd, const char *title,
42*3dfa7877SKiran Vedere 				 const void *buf, unsigned int len);
432d77cb61SMatan Azrad int mlx5_queue_state_modify_primary(struct rte_eth_dev *dev,
442d77cb61SMatan Azrad 			const struct mlx5_mp_arg_queue_state_modify *sm);
45a96102c8SMichael Baum int mlx5_queue_state_modify(struct rte_eth_dev *dev,
46a96102c8SMichael Baum 			    struct mlx5_mp_arg_queue_state_modify *sm);
472e22920bSAdrien Mazarguil 
48a1e910f5SViacheslav Ovsiienko /**
49a1e910f5SViacheslav Ovsiienko  * Convert timestamp from HW format to linear counter
50a1e910f5SViacheslav Ovsiienko  * from Packet Pacing Clock Queue CQE timestamp format.
51a1e910f5SViacheslav Ovsiienko  *
52a1e910f5SViacheslav Ovsiienko  * @param sh
53a1e910f5SViacheslav Ovsiienko  *   Pointer to the device shared context. Might be needed
54a1e910f5SViacheslav Ovsiienko  *   to convert according current device configuration.
55a1e910f5SViacheslav Ovsiienko  * @param ts
56a1e910f5SViacheslav Ovsiienko  *   Timestamp from CQE to convert.
57a1e910f5SViacheslav Ovsiienko  * @return
58a1e910f5SViacheslav Ovsiienko  *   UTC in nanoseconds
59a1e910f5SViacheslav Ovsiienko  */
60a1e910f5SViacheslav Ovsiienko static __rte_always_inline uint64_t
mlx5_txpp_convert_rx_ts(struct mlx5_dev_ctx_shared * sh,uint64_t ts)61a1e910f5SViacheslav Ovsiienko mlx5_txpp_convert_rx_ts(struct mlx5_dev_ctx_shared *sh, uint64_t ts)
62a1e910f5SViacheslav Ovsiienko {
63a1e910f5SViacheslav Ovsiienko 	RTE_SET_USED(sh);
64a1e910f5SViacheslav Ovsiienko 	return (ts & UINT32_MAX) + (ts >> 32) * NS_PER_S;
65a1e910f5SViacheslav Ovsiienko }
66a1e910f5SViacheslav Ovsiienko 
672e22920bSAdrien Mazarguil #endif /* RTE_PMD_MLX5_RXTX_H_ */
68