Skip to content

Commit

Permalink
net/tls,core: export get_netdev_for_sock
Browse files Browse the repository at this point in the history
* remove netdev_sk_get_lowest_dev() from net/core
* move get_netdev_for_sock() from net/tls to net/core

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 DDGST offloads.

Suggested-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Ben Ben-Ishay <benishay@nvidia.com>
Signed-off-by: Shai Malin <smalin@nvidia.com>
Signed-off-by: Aurelien Aptel <aaptel@nvidia.com>
  • Loading branch information
aaptel authored and intel-lab-lkp committed Jan 9, 2023
1 parent 5c898d8 commit 7a17248
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 31 deletions.
3 changes: 1 addition & 2 deletions include/linux/netdevice.h
Expand Up @@ -3079,8 +3079,7 @@ int init_dummy_netdev(struct net_device *dev);
struct net_device *netdev_get_xmit_slave(struct net_device *dev,
struct sk_buff *skb,
bool all_slaves);
struct net_device *netdev_sk_get_lowest_dev(struct net_device *dev,
struct sock *sk);
struct net_device *get_netdev_for_sock(struct sock *sk);
struct net_device *dev_get_by_index(struct net *net, int ifindex);
struct net_device *__dev_get_by_index(struct net *net, int ifindex);
struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex);
Expand Down
26 changes: 13 additions & 13 deletions net/core/dev.c
Expand Up @@ -8152,27 +8152,27 @@ static struct net_device *netdev_sk_get_lower_dev(struct net_device *dev,
}

/**
* netdev_sk_get_lowest_dev - Get the lowest device in chain given device and socket
* @dev: device
* netdev_sk_get_lowest_dev - Get the lowest device in socket
* @sk: the socket
*
* %NULL is returned if no lower device is found.
* Assumes that the socket is already connected.
* Returns the lower device or %NULL if no lower device is found.
*/

struct net_device *netdev_sk_get_lowest_dev(struct net_device *dev,
struct sock *sk)
struct net_device *get_netdev_for_sock(struct sock *sk)
{
struct net_device *lower;
struct dst_entry *dst = sk_dst_get(sk);
struct net_device *dev, *lower;

lower = netdev_sk_get_lower_dev(dev, sk);
while (lower) {
if (unlikely(!dst))
return NULL;
dev = dst->dev;
while ((lower = netdev_sk_get_lower_dev(dev, sk)))
dev = lower;
lower = netdev_sk_get_lower_dev(dev, sk);
}

dev_hold(dev);
dst_release(dst);
return dev;
}
EXPORT_SYMBOL(netdev_sk_get_lowest_dev);
EXPORT_SYMBOL_GPL(get_netdev_for_sock);

static void netdev_adjacent_add_links(struct net_device *dev)
{
Expand Down
16 changes: 0 additions & 16 deletions net/tls/tls_device.c
Expand Up @@ -120,22 +120,6 @@ static void tls_device_queue_ctx_destruction(struct tls_context *ctx)
tls_device_free_ctx(ctx);
}

/* 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 = netdev_sk_get_lowest_dev(dst->dev, sk);
dev_hold(netdev);
}

dst_release(dst);

return netdev;
}

static void destroy_record(struct tls_record_info *record)
{
int i;
Expand Down

0 comments on commit 7a17248

Please sign in to comment.