Skip to content

Commit c7881b4

Browse files
committed
Merge branch 'net-tls-small-code-cleanup'
Jakub Kicinski says: ==================== net/tls: small code cleanup This small patch set cleans up tls (mostly offload parts). Other than avoiding unnecessary error messages - no functional changes here. v2 (Saeed): - fix up Review tags; - remove the warning on failure completely. ==================== Reviewed-by: Saeed Mahameed <saeedm@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2 parents 30e5a9a + 63a1c95 commit c7881b4

File tree

3 files changed

+38
-50
lines changed

3 files changed

+38
-50
lines changed

include/linux/netdevice.h

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -914,34 +914,13 @@ struct xfrmdev_ops {
914914
};
915915
#endif
916916

917-
#if IS_ENABLED(CONFIG_TLS_DEVICE)
918-
enum tls_offload_ctx_dir {
919-
TLS_OFFLOAD_CTX_DIR_RX,
920-
TLS_OFFLOAD_CTX_DIR_TX,
921-
};
922-
923-
struct tls_crypto_info;
924-
struct tls_context;
925-
926-
struct tlsdev_ops {
927-
int (*tls_dev_add)(struct net_device *netdev, struct sock *sk,
928-
enum tls_offload_ctx_dir direction,
929-
struct tls_crypto_info *crypto_info,
930-
u32 start_offload_tcp_sn);
931-
void (*tls_dev_del)(struct net_device *netdev,
932-
struct tls_context *ctx,
933-
enum tls_offload_ctx_dir direction);
934-
void (*tls_dev_resync_rx)(struct net_device *netdev,
935-
struct sock *sk, u32 seq, u64 rcd_sn);
936-
};
937-
#endif
938-
939917
struct dev_ifalias {
940918
struct rcu_head rcuhead;
941919
char ifalias[];
942920
};
943921

944922
struct devlink;
923+
struct tlsdev_ops;
945924

946925
/*
947926
* This structure defines the management hooks for network devices.

include/net/tls.h

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,23 @@ struct tls_context {
277277
void (*unhash)(struct sock *sk);
278278
};
279279

280+
enum tls_offload_ctx_dir {
281+
TLS_OFFLOAD_CTX_DIR_RX,
282+
TLS_OFFLOAD_CTX_DIR_TX,
283+
};
284+
285+
struct tlsdev_ops {
286+
int (*tls_dev_add)(struct net_device *netdev, struct sock *sk,
287+
enum tls_offload_ctx_dir direction,
288+
struct tls_crypto_info *crypto_info,
289+
u32 start_offload_tcp_sn);
290+
void (*tls_dev_del)(struct net_device *netdev,
291+
struct tls_context *ctx,
292+
enum tls_offload_ctx_dir direction);
293+
void (*tls_dev_resync_rx)(struct net_device *netdev,
294+
struct sock *sk, u32 seq, u64 rcd_sn);
295+
};
296+
280297
struct tls_offload_context_rx {
281298
/* sw must be the first member of tls_offload_context_rx */
282299
struct tls_sw_context_rx sw;
@@ -317,7 +334,6 @@ int tls_set_device_offload(struct sock *sk, struct tls_context *ctx);
317334
int tls_device_sendmsg(struct sock *sk, struct msghdr *msg, size_t size);
318335
int tls_device_sendpage(struct sock *sk, struct page *page,
319336
int offset, size_t size, int flags);
320-
void tls_device_sk_destruct(struct sock *sk);
321337
void tls_device_free_resources_tx(struct sock *sk);
322338
void tls_device_init(void);
323339
void tls_device_cleanup(void);
@@ -336,7 +352,6 @@ static inline u32 tls_record_start_seq(struct tls_record_info *rec)
336352
return rec->end_seq - rec->len;
337353
}
338354

339-
void tls_sk_destruct(struct sock *sk, struct tls_context *ctx);
340355
int tls_push_sg(struct sock *sk, struct tls_context *ctx,
341356
struct scatterlist *sg, u16 first_offset,
342357
int flags);
@@ -547,7 +562,7 @@ static inline void tls_offload_rx_resync_request(struct sock *sk, __be32 seq)
547562
struct tls_context *tls_ctx = tls_get_ctx(sk);
548563
struct tls_offload_context_rx *rx_ctx = tls_offload_ctx_rx(tls_ctx);
549564

550-
atomic64_set(&rx_ctx->resync_req, ((((uint64_t)seq) << 32) | 1));
565+
atomic64_set(&rx_ctx->resync_req, ((u64)ntohl(seq) << 32) | 1);
551566
}
552567

553568

net/tls/tls_device.c

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -89,22 +89,6 @@ static void tls_device_gc_task(struct work_struct *work)
8989
}
9090
}
9191

92-
static void tls_device_attach(struct tls_context *ctx, struct sock *sk,
93-
struct net_device *netdev)
94-
{
95-
if (sk->sk_destruct != tls_device_sk_destruct) {
96-
refcount_set(&ctx->refcount, 1);
97-
dev_hold(netdev);
98-
ctx->netdev = netdev;
99-
spin_lock_irq(&tls_device_lock);
100-
list_add_tail(&ctx->list, &tls_device_list);
101-
spin_unlock_irq(&tls_device_lock);
102-
103-
ctx->sk_destruct = sk->sk_destruct;
104-
sk->sk_destruct = tls_device_sk_destruct;
105-
}
106-
}
107-
10892
static void tls_device_queue_ctx_destruction(struct tls_context *ctx)
10993
{
11094
unsigned long flags;
@@ -199,7 +183,7 @@ static void tls_icsk_clean_acked(struct sock *sk, u32 acked_seq)
199183
* socket and no in-flight SKBs associated with this
200184
* socket, so it is safe to free all the resources.
201185
*/
202-
void tls_device_sk_destruct(struct sock *sk)
186+
static void tls_device_sk_destruct(struct sock *sk)
203187
{
204188
struct tls_context *tls_ctx = tls_get_ctx(sk);
205189
struct tls_offload_context_tx *ctx = tls_offload_ctx_tx(tls_ctx);
@@ -217,7 +201,6 @@ void tls_device_sk_destruct(struct sock *sk)
217201
if (refcount_dec_and_test(&tls_ctx->refcount))
218202
tls_device_queue_ctx_destruction(tls_ctx);
219203
}
220-
EXPORT_SYMBOL(tls_device_sk_destruct);
221204

222205
void tls_device_free_resources_tx(struct sock *sk)
223206
{
@@ -584,7 +567,7 @@ void handle_device_resync(struct sock *sk, u32 seq, u64 rcd_sn)
584567

585568
rx_ctx = tls_offload_ctx_rx(tls_ctx);
586569
resync_req = atomic64_read(&rx_ctx->resync_req);
587-
req_seq = ntohl(resync_req >> 32) - ((u32)TLS_HEADER_SIZE - 1);
570+
req_seq = (resync_req >> 32) - ((u32)TLS_HEADER_SIZE - 1);
588571
is_req_pending = resync_req;
589572

590573
if (unlikely(is_req_pending) && req_seq == seq &&
@@ -682,6 +665,22 @@ int tls_device_decrypted(struct sock *sk, struct sk_buff *skb)
682665
tls_device_reencrypt(sk, skb);
683666
}
684667

668+
static void tls_device_attach(struct tls_context *ctx, struct sock *sk,
669+
struct net_device *netdev)
670+
{
671+
if (sk->sk_destruct != tls_device_sk_destruct) {
672+
refcount_set(&ctx->refcount, 1);
673+
dev_hold(netdev);
674+
ctx->netdev = netdev;
675+
spin_lock_irq(&tls_device_lock);
676+
list_add_tail(&ctx->list, &tls_device_list);
677+
spin_unlock_irq(&tls_device_lock);
678+
679+
ctx->sk_destruct = sk->sk_destruct;
680+
sk->sk_destruct = tls_device_sk_destruct;
681+
}
682+
}
683+
685684
int tls_set_device_offload(struct sock *sk, struct tls_context *ctx)
686685
{
687686
u16 nonce_size, tag_size, iv_size, rec_seq_size;
@@ -865,8 +864,6 @@ int tls_set_device_offload_rx(struct sock *sk, struct tls_context *ctx)
865864
}
866865

867866
if (!(netdev->features & NETIF_F_HW_TLS_RX)) {
868-
pr_err_ratelimited("%s: netdev %s with no TLS offload\n",
869-
__func__, netdev->name);
870867
rc = -ENOTSUPP;
871868
goto release_netdev;
872869
}
@@ -894,11 +891,8 @@ int tls_set_device_offload_rx(struct sock *sk, struct tls_context *ctx)
894891
rc = netdev->tlsdev_ops->tls_dev_add(netdev, sk, TLS_OFFLOAD_CTX_DIR_RX,
895892
&ctx->crypto_recv.info,
896893
tcp_sk(sk)->copied_seq);
897-
if (rc) {
898-
pr_err_ratelimited("%s: The netdev has refused to offload this socket\n",
899-
__func__);
894+
if (rc)
900895
goto free_sw_resources;
901-
}
902896

903897
tls_device_attach(ctx, sk, netdev);
904898
goto release_netdev;

0 commit comments

Comments
 (0)