1 | /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ |
2 | /* Copyright (c) 2020, Mellanox Technologies inc. All rights reserved. */ |
3 | |
4 | #ifndef __MLX5E_KTLS_TXRX_H__ |
5 | #define __MLX5E_KTLS_TXRX_H__ |
6 | |
7 | #ifdef CONFIG_MLX5_EN_TLS |
8 | |
9 | #include <net/tls.h> |
10 | #include "en.h" |
11 | #include "en/txrx.h" |
12 | |
13 | struct mlx5e_accel_tx_tls_state { |
14 | u32 tls_tisn; |
15 | }; |
16 | |
17 | u16 mlx5e_ktls_get_stop_room(struct mlx5_core_dev *mdev, struct mlx5e_params *params); |
18 | |
19 | bool mlx5e_ktls_handle_tx_skb(struct net_device *netdev, struct mlx5e_txqsq *sq, |
20 | struct sk_buff *skb, |
21 | struct mlx5e_accel_tx_tls_state *state); |
22 | void mlx5e_ktls_handle_rx_skb(struct mlx5e_rq *rq, struct sk_buff *skb, |
23 | struct mlx5_cqe64 *cqe, u32 *cqe_bcnt); |
24 | |
25 | void mlx5e_ktls_handle_ctx_completion(struct mlx5e_icosq_wqe_info *wi); |
26 | void mlx5e_ktls_handle_get_psv_completion(struct mlx5e_icosq_wqe_info *wi, |
27 | struct mlx5e_icosq *sq); |
28 | |
29 | void mlx5e_ktls_tx_handle_resync_dump_comp(struct mlx5e_txqsq *sq, |
30 | struct mlx5e_tx_wqe_info *wi, |
31 | u32 *dma_fifo_cc); |
32 | static inline bool |
33 | mlx5e_ktls_tx_try_handle_resync_dump_comp(struct mlx5e_txqsq *sq, |
34 | struct mlx5e_tx_wqe_info *wi, |
35 | u32 *dma_fifo_cc) |
36 | { |
37 | if (unlikely(wi->resync_dump_frag_page)) { |
38 | mlx5e_ktls_tx_handle_resync_dump_comp(sq, wi, dma_fifo_cc); |
39 | return true; |
40 | } |
41 | return false; |
42 | } |
43 | |
44 | bool mlx5e_ktls_rx_handle_resync_list(struct mlx5e_channel *c, int budget); |
45 | |
46 | static inline bool |
47 | mlx5e_ktls_rx_pending_resync_list(struct mlx5e_channel *c, int budget) |
48 | { |
49 | return budget && test_bit(MLX5E_SQ_STATE_PENDING_TLS_RX_RESYNC, &c->async_icosq.state); |
50 | } |
51 | |
52 | static inline void |
53 | mlx5e_ktls_handle_tx_wqe(struct mlx5_wqe_ctrl_seg *cseg, |
54 | struct mlx5e_accel_tx_tls_state *state) |
55 | { |
56 | cseg->tis_tir_num = cpu_to_be32(state->tls_tisn << 8); |
57 | } |
58 | #else |
59 | static inline bool |
60 | mlx5e_ktls_tx_try_handle_resync_dump_comp(struct mlx5e_txqsq *sq, |
61 | struct mlx5e_tx_wqe_info *wi, |
62 | u32 *dma_fifo_cc) |
63 | { |
64 | return false; |
65 | } |
66 | |
67 | static inline bool |
68 | mlx5e_ktls_rx_handle_resync_list(struct mlx5e_channel *c, int budget) |
69 | { |
70 | return false; |
71 | } |
72 | |
73 | static inline bool |
74 | mlx5e_ktls_rx_pending_resync_list(struct mlx5e_channel *c, int budget) |
75 | { |
76 | return false; |
77 | } |
78 | |
79 | static inline u16 mlx5e_ktls_get_stop_room(struct mlx5_core_dev *mdev, |
80 | struct mlx5e_params *params) |
81 | { |
82 | return 0; |
83 | } |
84 | |
85 | static inline void mlx5e_ktls_handle_rx_skb(struct mlx5e_rq *rq, |
86 | struct sk_buff *skb, |
87 | struct mlx5_cqe64 *cqe, |
88 | u32 *cqe_bcnt) |
89 | { |
90 | } |
91 | #endif /* CONFIG_MLX5_EN_TLS */ |
92 | |
93 | #endif /* __MLX5E_TLS_TXRX_H__ */ |
94 | |