cregit-Linux how code gets into the kernel

Release 4.18 include/linux/if_macvlan.h

Directory: include/linux
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_IF_MACVLAN_H

#define _LINUX_IF_MACVLAN_H

#include <linux/if_link.h>
#include <linux/if_vlan.h>
#include <linux/list.h>
#include <linux/netdevice.h>
#include <linux/netlink.h>
#include <net/netlink.h>
#include <linux/u64_stats_sync.h>

struct macvlan_port;


#define MACVLAN_MC_FILTER_BITS	8

#define MACVLAN_MC_FILTER_SZ	(1 << MACVLAN_MC_FILTER_BITS)


struct macvlan_dev {
	
struct net_device	*dev;
	
struct list_head	list;
	
struct hlist_node	hlist;
	
struct macvlan_port	*port;
	
struct net_device	*lowerdev;
	
void			*accel_priv;
	
struct vlan_pcpu_stats __percpu *pcpu_stats;

	DECLARE_BITMAP(mc_filter, MACVLAN_MC_FILTER_SZ);

	
netdev_features_t	set_features;
	
enum macvlan_mode	mode;
	
u16			flags;
	
int			nest_level;
	
unsigned int		macaddr_count;
#ifdef CONFIG_NET_POLL_CONTROLLER
	
struct netpoll		*netpoll;
#endif
};


static inline void macvlan_count_rx(const struct macvlan_dev *vlan, unsigned int len, bool success, bool multicast) { if (likely(success)) { struct vlan_pcpu_stats *pcpu_stats; pcpu_stats = this_cpu_ptr(vlan->pcpu_stats); u64_stats_update_begin(&pcpu_stats->syncp); pcpu_stats->rx_packets++; pcpu_stats->rx_bytes += len; if (multicast) pcpu_stats->rx_multicast++; u64_stats_update_end(&pcpu_stats->syncp); } else { this_cpu_inc(vlan->pcpu_stats->rx_errors); } }

Contributors

PersonTokensPropCommitsCommitProp
Arnd Bergmann5558.51%125.00%
Eric Dumazet3840.43%250.00%
Li RongQing11.06%125.00%
Total94100.00%4100.00%

extern void macvlan_common_setup(struct net_device *dev); extern int macvlan_common_newlink(struct net *src_net, struct net_device *dev, struct nlattr *tb[], struct nlattr *data[], struct netlink_ext_ack *extack); extern void macvlan_dellink(struct net_device *dev, struct list_head *head); extern int macvlan_link_register(struct rtnl_link_ops *ops); #if IS_ENABLED(CONFIG_MACVLAN)
static inline struct net_device * macvlan_dev_real_dev(const struct net_device *dev) { struct macvlan_dev *macvlan = netdev_priv(dev); return macvlan->lowerdev; }

Contributors

PersonTokensPropCommitsCommitProp
Michal Kubeček30100.00%1100.00%
Total30100.00%1100.00%

#else
static inline struct net_device * macvlan_dev_real_dev(const struct net_device *dev) { BUG(); return NULL; }

Contributors

PersonTokensPropCommitsCommitProp
Michal Kubeček21100.00%1100.00%
Total21100.00%1100.00%

#endif
static inline void *macvlan_accel_priv(struct net_device *dev) { struct macvlan_dev *macvlan = netdev_priv(dev); return macvlan->accel_priv; }

Contributors

PersonTokensPropCommitsCommitProp
Alexander Duyck28100.00%1100.00%
Total28100.00%1100.00%


static inline bool macvlan_supports_dest_filter(struct net_device *dev) { struct macvlan_dev *macvlan = netdev_priv(dev); return macvlan->mode == MACVLAN_MODE_PRIVATE || macvlan->mode == MACVLAN_MODE_VEPA || macvlan->mode == MACVLAN_MODE_BRIDGE; }

Contributors

PersonTokensPropCommitsCommitProp
Alexander Duyck41100.00%1100.00%
Total41100.00%1100.00%


static inline int macvlan_release_l2fw_offload(struct net_device *dev) { struct macvlan_dev *macvlan = netdev_priv(dev); macvlan->accel_priv = NULL; return dev_uc_add(macvlan->lowerdev, dev->dev_addr); }

Contributors

PersonTokensPropCommitsCommitProp
Alexander Duyck40100.00%1100.00%
Total40100.00%1100.00%

#endif /* _LINUX_IF_MACVLAN_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Arnd Bergmann16035.96%15.00%
Alexander Duyck11024.72%315.00%
Michal Kubeček6113.71%15.00%
Eric Dumazet5712.81%315.00%
Herbert Xu102.25%15.00%
Ding Tianhong102.25%15.00%
Patrick McHardy92.02%15.00%
Vlad Yasevich61.35%210.00%
John Fastabend61.35%210.00%
Li RongQing51.12%15.00%
David Ahern51.12%15.00%
Girish Moodalbail40.90%15.00%
Greg Kroah-Hartman10.22%15.00%
Tejun Heo10.22%15.00%
Total445100.00%20100.00%
Directory: include/linux
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.