Commit ed8a507b authored by Jakub Kicinski's avatar Jakub Kicinski Committed by Paolo Abeni
Browse files

net: modify core data structures for PSP datapath support



Add pointers to psp data structures to core networking structs,
and an SKB extension to carry the PSP information from the drivers
to the socket layer.

Reviewed-by: default avatarWillem de Bruijn <willemb@google.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
Co-developed-by: default avatarDaniel Zahka <daniel.zahka@gmail.com>
Signed-off-by: default avatarDaniel Zahka <daniel.zahka@gmail.com>
Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/20250917000954.859376-4-daniel.zahka@gmail.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 00c94ca2
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -4901,6 +4901,9 @@ enum skb_ext_id {
#endif
#if IS_ENABLED(CONFIG_MCTP_FLOWS)
	SKB_EXT_MCTP,
#endif
#if IS_ENABLED(CONFIG_INET_PSP)
	SKB_EXT_PSP,
#endif
	SKB_EXT_NUM, /* must be last */
};
+3 −0
Original line number Diff line number Diff line
@@ -81,6 +81,9 @@ struct inet_timewait_sock {
	struct timer_list	tw_timer;
	struct inet_bind_bucket	*tw_tb;
	struct inet_bind2_bucket	*tw_tb2;
#if IS_ENABLED(CONFIG_INET_PSP)
	struct psp_assoc __rcu	  *psp_assoc;
#endif
};
#define tw_tclass tw_tos

+6 −0
Original line number Diff line number Diff line
@@ -5,10 +5,16 @@

#include <net/psp/types.h>

struct inet_timewait_sock;

/* Driver-facing API */
struct psp_dev *
psp_dev_create(struct net_device *netdev, struct psp_dev_ops *psd_ops,
	       struct psp_dev_caps *psd_caps, void *priv_ptr);
void psp_dev_unregister(struct psp_dev *psd);

/* Kernel-facing API */
static inline void psp_sk_assoc_free(struct sock *sk) { }
static inline void psp_twsk_assoc_free(struct inet_timewait_sock *tw) { }

#endif /* __NET_PSP_HELPERS_H */
+7 −0
Original line number Diff line number Diff line
@@ -84,6 +84,13 @@ struct psp_dev_caps {

#define PSP_MAX_KEY	32

struct psp_skb_ext {
	__be32 spi;
	u16 dev_id;
	u8 generation;
	u8 version;
};

/**
 * struct psp_dev_ops - netdev driver facing PSP callbacks
 */
+4 −0
Original line number Diff line number Diff line
@@ -249,6 +249,7 @@ struct sk_filter;
  *	@sk_dst_cache: destination cache
  *	@sk_dst_pending_confirm: need to confirm neighbour
  *	@sk_policy: flow policy
  *	@psp_assoc: PSP association, if socket is PSP-secured
  *	@sk_receive_queue: incoming packets
  *	@sk_wmem_alloc: transmit queue bytes committed
  *	@sk_tsq_flags: TCP Small Queues flags
@@ -450,6 +451,9 @@ struct sock {
#endif
#ifdef CONFIG_XFRM
	struct xfrm_policy __rcu *sk_policy[2];
#endif
#if IS_ENABLED(CONFIG_INET_PSP)
	struct psp_assoc __rcu	*psp_assoc;
#endif
	struct numa_drop_counters *sk_drop_counters;
	__cacheline_group_end(sock_read_rxtx);
Loading