Message ID | 20210114180135.11556-2-tariqt@nvidia.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | TLS device offload for Bond | expand |
Context | Check | Description |
---|---|---|
netdev/cover_letter | success | Link |
netdev/fixes_present | success | Link |
netdev/patch_count | success | Link |
netdev/tree_selection | success | Clearly marked for net-next |
netdev/subject_prefix | success | Link |
netdev/cc_maintainers | warning | 7 maintainers not CCed: andriin@fb.com ap420073@gmail.com bjorn.topel@intel.com ast@kernel.org jiri@mellanox.com edumazet@google.com xiyou.wangcong@gmail.com |
netdev/source_inline | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Link |
netdev/module_param | success | Was 0 now: 0 |
netdev/build_32bit | success | Errors and warnings before: 7151 this patch: 7151 |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/verify_fixes | success | Link |
netdev/checkpatch | warning | WARNING: line length of 84 exceeds 80 columns WARNING: line length of 86 exceeds 80 columns |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 7560 this patch: 7560 |
netdev/header_inline | success | Link |
netdev/stable | success | Stable not CCed |
On Thu, 14 Jan 2021 20:01:28 +0200 Tariq Toukan wrote: > ndo_sk_get_slave returns the slave that corresponds to a given socket. > Additionally, we implement a helper netdev_sk_get_lowest_dev() to get > the lowest slave netdevice. Please don't add new uses of the word "slave" outside of the bond, and preferably even there.
On 1/17/2021 4:51 AM, Jakub Kicinski wrote: > On Thu, 14 Jan 2021 20:01:28 +0200 Tariq Toukan wrote: >> ndo_sk_get_slave returns the slave that corresponds to a given socket. >> Additionally, we implement a helper netdev_sk_get_lowest_dev() to get >> the lowest slave netdevice. > > Please don't add new uses of the word "slave" outside of the bond, > and preferably even there. > I'll fix this.
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 5b949076ed23..a7cd2619f034 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -1398,6 +1398,8 @@ struct net_device_ops { struct net_device* (*ndo_get_xmit_slave)(struct net_device *dev, struct sk_buff *skb, bool all_slaves); + struct net_device* (*ndo_sk_get_slave)(struct net_device *dev, + struct sock *sk); netdev_features_t (*ndo_fix_features)(struct net_device *dev, netdev_features_t features); int (*ndo_set_features)(struct net_device *dev, @@ -2858,6 +2860,8 @@ 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 *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); diff --git a/net/core/dev.c b/net/core/dev.c index 267c4a8daa55..523c51007096 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -8107,6 +8107,38 @@ struct net_device *netdev_get_xmit_slave(struct net_device *dev, } EXPORT_SYMBOL(netdev_get_xmit_slave); +static struct net_device *netdev_sk_get_slave(struct net_device *dev, struct sock *sk) +{ + const struct net_device_ops *ops = dev->netdev_ops; + + if (!ops->ndo_sk_get_slave) + return NULL; + return ops->ndo_sk_get_slave(dev, sk); +} + +/** + * netdev_sk_get_lowest_dev - Get the lowest device in chain given device and socket + * @dev: device + * @sk: the socket + * + * %NULL is returned if no slave is found. + */ + +struct net_device *netdev_sk_get_lowest_dev(struct net_device *dev, + struct sock *sk) +{ + struct net_device *slave; + + slave = netdev_sk_get_slave(dev, sk); + while (slave) { + dev = slave; + slave = netdev_sk_get_slave(dev, sk); + } + + return dev; +} +EXPORT_SYMBOL(netdev_sk_get_lowest_dev); + static void netdev_adjacent_add_links(struct net_device *dev) { struct netdev_adjacent *iter;