forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-04 1543e317f1da31b75942316931e8f491a8920811
kernel/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_rxtx.h
....@@ -34,15 +34,27 @@
3434 #ifndef __MLX5E_IPSEC_RXTX_H__
3535 #define __MLX5E_IPSEC_RXTX_H__
3636
37
-#ifdef CONFIG_MLX5_EN_IPSEC
38
-
3937 #include <linux/skbuff.h>
4038 #include <net/xfrm.h>
4139 #include "en.h"
40
+#include "en/txrx.h"
41
+
42
+/* Bit31: IPsec marker, Bit30-24: IPsec syndrome, Bit23-0: IPsec obj id */
43
+#define MLX5_IPSEC_METADATA_MARKER(metadata) (((metadata) >> 31) & 0x1)
44
+#define MLX5_IPSEC_METADATA_SYNDROM(metadata) (((metadata) >> 24) & GENMASK(6, 0))
45
+#define MLX5_IPSEC_METADATA_HANDLE(metadata) ((metadata) & GENMASK(23, 0))
46
+
47
+struct mlx5e_accel_tx_ipsec_state {
48
+ struct xfrm_offload *xo;
49
+ struct xfrm_state *x;
50
+ u32 tailen;
51
+ u32 plen;
52
+};
53
+
54
+#ifdef CONFIG_MLX5_EN_IPSEC
4255
4356 struct sk_buff *mlx5e_ipsec_handle_rx_skb(struct net_device *netdev,
4457 struct sk_buff *skb, u32 *cqe_bcnt);
45
-void mlx5e_ipsec_handle_rx_cqe(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe);
4658
4759 void mlx5e_ipsec_inverse_table_init(void);
4860 bool mlx5e_ipsec_feature_check(struct sk_buff *skb, struct net_device *netdev,
....@@ -51,10 +63,40 @@
5163 struct xfrm_offload *xo);
5264 void mlx5e_ipsec_set_iv(struct sk_buff *skb, struct xfrm_state *x,
5365 struct xfrm_offload *xo);
54
-struct sk_buff *mlx5e_ipsec_handle_tx_skb(struct net_device *netdev,
55
- struct mlx5e_tx_wqe *wqe,
56
- struct sk_buff *skb);
66
+bool mlx5e_ipsec_handle_tx_skb(struct net_device *netdev,
67
+ struct sk_buff *skb,
68
+ struct mlx5e_accel_tx_ipsec_state *ipsec_st);
69
+void mlx5e_ipsec_handle_tx_wqe(struct mlx5e_tx_wqe *wqe,
70
+ struct mlx5e_accel_tx_ipsec_state *ipsec_st,
71
+ struct mlx5_wqe_inline_seg *inlseg);
72
+void mlx5e_ipsec_offload_handle_rx_skb(struct net_device *netdev,
73
+ struct sk_buff *skb,
74
+ struct mlx5_cqe64 *cqe);
75
+static inline unsigned int mlx5e_ipsec_tx_ids_len(struct mlx5e_accel_tx_ipsec_state *ipsec_st)
76
+{
77
+ return ipsec_st->tailen;
78
+}
5779
80
+static inline bool mlx5_ipsec_is_rx_flow(struct mlx5_cqe64 *cqe)
81
+{
82
+ return MLX5_IPSEC_METADATA_MARKER(be32_to_cpu(cqe->ft_metadata));
83
+}
84
+
85
+static inline bool mlx5e_ipsec_is_tx_flow(struct mlx5e_accel_tx_ipsec_state *ipsec_st)
86
+{
87
+ return ipsec_st->x;
88
+}
89
+
90
+void mlx5e_ipsec_tx_build_eseg(struct mlx5e_priv *priv, struct sk_buff *skb,
91
+ struct mlx5_wqe_eth_seg *eseg);
92
+#else
93
+static inline
94
+void mlx5e_ipsec_offload_handle_rx_skb(struct net_device *netdev,
95
+ struct sk_buff *skb,
96
+ struct mlx5_cqe64 *cqe)
97
+{}
98
+
99
+static inline bool mlx5_ipsec_is_rx_flow(struct mlx5_cqe64 *cqe) { return false; }
58100 #endif /* CONFIG_MLX5_EN_IPSEC */
59101
60102 #endif /* __MLX5E_IPSEC_RXTX_H__ */