[PATCH net-next RFC v1 04/10] net/tls: expose get_netdev_for_sock
Boris Pismenny
borisp at mellanox.com
Wed Sep 30 12:20:04 EDT 2020
get_netdev_for_sock is a utility that is used to obtain
the net_device structure from a connected socket.
Later patches will use this for nvme-tcp DDP and DDP CRC offloads.
Signed-off-by: Boris Pismenny <borisp at mellanox.com>
---
include/net/sock.h | 17 +++++++++++++++++
net/tls/tls_device.c | 20 ++------------------
2 files changed, 19 insertions(+), 18 deletions(-)
diff --git a/include/net/sock.h b/include/net/sock.h
index a5c6ae78df77..e0a92187f9ea 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -2703,4 +2703,21 @@ void sock_set_sndtimeo(struct sock *sk, s64 secs);
int sock_bind_add(struct sock *sk, struct sockaddr *addr, int addr_len);
+/* Assume that the socket is already connected */
+static inline struct net_device *get_netdev_for_sock(struct sock *sk, bool hold)
+{
+ struct dst_entry *dst = sk_dst_get(sk);
+ struct net_device *netdev = NULL;
+
+ if (likely(dst)) {
+ netdev = dst->dev;
+ if (hold)
+ dev_hold(netdev);
+ }
+
+ dst_release(dst);
+
+ return netdev;
+}
+
#endif /* _SOCK_H */
diff --git a/net/tls/tls_device.c b/net/tls/tls_device.c
index b74e2741f74f..4df0de65db04 100644
--- a/net/tls/tls_device.c
+++ b/net/tls/tls_device.c
@@ -106,22 +106,6 @@ static void tls_device_queue_ctx_destruction(struct tls_context *ctx)
spin_unlock_irqrestore(&tls_device_lock, flags);
}
-/* We assume that the socket is already connected */
-static struct net_device *get_netdev_for_sock(struct sock *sk)
-{
- struct dst_entry *dst = sk_dst_get(sk);
- struct net_device *netdev = NULL;
-
- if (likely(dst)) {
- netdev = dst->dev;
- dev_hold(netdev);
- }
-
- dst_release(dst);
-
- return netdev;
-}
-
static void destroy_record(struct tls_record_info *record)
{
int i;
@@ -1086,7 +1070,7 @@ int tls_set_device_offload(struct sock *sk, struct tls_context *ctx)
if (skb)
TCP_SKB_CB(skb)->eor = 1;
- netdev = get_netdev_for_sock(sk);
+ netdev = get_netdev_for_sock(sk, true);
if (!netdev) {
pr_err_ratelimited("%s: netdev not found\n", __func__);
rc = -EINVAL;
@@ -1162,7 +1146,7 @@ int tls_set_device_offload_rx(struct sock *sk, struct tls_context *ctx)
if (ctx->crypto_recv.info.version != TLS_1_2_VERSION)
return -EOPNOTSUPP;
- netdev = get_netdev_for_sock(sk);
+ netdev = get_netdev_for_sock(sk, true);
if (!netdev) {
pr_err_ratelimited("%s: netdev not found\n", __func__);
return -EINVAL;
--
2.24.1
More information about the Linux-nvme
mailing list