mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-06 06:21:31 +00:00
[NET] NETNS: Omit net_device->nd_net without CONFIG_NET_NS.
Introduce per-net_device inlines: dev_net(), dev_net_set(). Without CONFIG_NET_NS, no namespace other than &init_net exists. Let's explicitly define them to help compiler optimizations. Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
This commit is contained in:
parent
7cbca67c07
commit
c346dca108
87 changed files with 251 additions and 228 deletions
|
@ -708,8 +708,10 @@ struct net_device
|
|||
void (*poll_controller)(struct net_device *dev);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_NET_NS
|
||||
/* Network namespace this network device is inside */
|
||||
struct net *nd_net;
|
||||
#endif
|
||||
|
||||
/* bridge stuff */
|
||||
struct net_bridge_port *br_port;
|
||||
|
@ -737,6 +739,27 @@ struct net_device
|
|||
#define NETDEV_ALIGN 32
|
||||
#define NETDEV_ALIGN_CONST (NETDEV_ALIGN - 1)
|
||||
|
||||
/*
|
||||
* Net namespace inlines
|
||||
*/
|
||||
static inline
|
||||
struct net *dev_net(const struct net_device *dev)
|
||||
{
|
||||
#ifdef CONFIG_NET_NS
|
||||
return dev->nd_net;
|
||||
#else
|
||||
return &init_net;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline
|
||||
void dev_net_set(struct net_device *dev, const struct net *net)
|
||||
{
|
||||
#ifdef CONFIG_NET_NS
|
||||
dev->nd_dev = net;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* netdev_priv - access network device private data
|
||||
* @dev: network device
|
||||
|
@ -813,7 +836,7 @@ static inline struct net_device *next_net_device(struct net_device *dev)
|
|||
struct list_head *lh;
|
||||
struct net *net;
|
||||
|
||||
net = dev->nd_net;
|
||||
net = dev_net(dev);
|
||||
lh = dev->dev_list.next;
|
||||
return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue