Blame view
include/linux/if_macvlan.h
2.93 KB
b863ceb7d [NET]: Add macvla... |
1 2 |
#ifndef _LINUX_IF_MACVLAN_H #define _LINUX_IF_MACVLAN_H |
fc0663d6b macvlan: allow mu... |
3 4 5 6 7 |
#include <linux/if_link.h> #include <linux/list.h> #include <linux/netdevice.h> #include <linux/netlink.h> #include <net/netlink.h> |
bc66154ef macvlan: 64 bit r... |
8 |
#include <linux/u64_stats_sync.h> |
fc0663d6b macvlan: allow mu... |
9 |
|
501c774cb net/macvtap: add ... |
10 11 12 13 14 15 16 17 18 19 20 21 |
#if defined(CONFIG_MACVTAP) || defined(CONFIG_MACVTAP_MODULE) struct socket *macvtap_get_socket(struct file *); #else #include <linux/err.h> #include <linux/errno.h> struct file; struct socket; static inline struct socket *macvtap_get_socket(struct file *f) { return ERR_PTR(-EINVAL); } #endif /* CONFIG_MACVTAP */ |
fc0663d6b macvlan: allow mu... |
22 23 24 25 |
struct macvlan_port; struct macvtap_queue; /** |
8ffab51b3 macvlan: lockless... |
26 |
* struct macvlan_pcpu_stats - MACVLAN percpu stats |
fc0663d6b macvlan: allow mu... |
27 28 |
* @rx_packets: number of received packets * @rx_bytes: number of received bytes |
bc66154ef macvlan: 64 bit r... |
29 |
* @rx_multicast: number of received multicast packets |
8ffab51b3 macvlan: lockless... |
30 31 |
* @tx_packets: number of transmitted packets * @tx_bytes: number of transmitted bytes |
bc66154ef macvlan: 64 bit r... |
32 |
* @syncp: synchronization point for 64bit counters |
8ffab51b3 macvlan: lockless... |
33 34 |
* @rx_errors: number of rx errors * @tx_dropped: number of tx dropped packets |
fc0663d6b macvlan: allow mu... |
35 |
*/ |
8ffab51b3 macvlan: lockless... |
36 |
struct macvlan_pcpu_stats { |
bc66154ef macvlan: 64 bit r... |
37 38 39 |
u64 rx_packets; u64 rx_bytes; u64 rx_multicast; |
8ffab51b3 macvlan: lockless... |
40 41 |
u64 tx_packets; u64 tx_bytes; |
bc66154ef macvlan: 64 bit r... |
42 |
struct u64_stats_sync syncp; |
8ffab51b3 macvlan: lockless... |
43 44 |
u32 rx_errors; u32 tx_dropped; |
fc0663d6b macvlan: allow mu... |
45 |
}; |
1565c7c1c macvtap: Implemen... |
46 47 48 49 50 |
/* * Maximum times a macvtap device can be opened. This can be used to * configure the number of receive queue, e.g. for multiqueue virtio. */ #define MAX_MACVTAP_QUEUES (NR_CPUS < 16 ? NR_CPUS : 16) |
fc0663d6b macvlan: allow mu... |
51 52 53 54 55 56 |
struct macvlan_dev { struct net_device *dev; struct list_head list; struct hlist_node hlist; struct macvlan_port *port; struct net_device *lowerdev; |
8ffab51b3 macvlan: lockless... |
57 |
struct macvlan_pcpu_stats __percpu *pcpu_stats; |
fc0663d6b macvlan: allow mu... |
58 59 60 |
enum macvlan_mode mode; int (*receive)(struct sk_buff *skb); int (*forward)(struct net_device *dev, struct sk_buff *skb); |
1565c7c1c macvtap: Implemen... |
61 62 |
struct macvtap_queue *taps[MAX_MACVTAP_QUEUES]; int numvtaps; |
fc0663d6b macvlan: allow mu... |
63 64 65 66 67 68 |
}; static inline void macvlan_count_rx(const struct macvlan_dev *vlan, unsigned int len, bool success, bool multicast) { |
fc0663d6b macvlan: allow mu... |
69 |
if (likely(success)) { |
8ffab51b3 macvlan: lockless... |
70 71 72 73 74 75 |
struct macvlan_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; |
fc0663d6b macvlan: allow mu... |
76 |
if (multicast) |
8ffab51b3 macvlan: lockless... |
77 78 |
pcpu_stats->rx_multicast++; u64_stats_update_end(&pcpu_stats->syncp); |
fc0663d6b macvlan: allow mu... |
79 |
} else { |
8ffab51b3 macvlan: lockless... |
80 |
this_cpu_inc(vlan->pcpu_stats->rx_errors); |
fc0663d6b macvlan: allow mu... |
81 82 |
} } |
8a35747a5 macvtap: Limit pa... |
83 |
extern void macvlan_common_setup(struct net_device *dev); |
fc0663d6b macvlan: allow mu... |
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
extern int macvlan_common_newlink(struct net *src_net, struct net_device *dev, struct nlattr *tb[], struct nlattr *data[], int (*receive)(struct sk_buff *skb), int (*forward)(struct net_device *dev, struct sk_buff *skb)); extern void macvlan_count_rx(const struct macvlan_dev *vlan, unsigned int len, bool success, bool multicast); extern void macvlan_dellink(struct net_device *dev, struct list_head *head); extern int macvlan_link_register(struct rtnl_link_ops *ops); extern netdev_tx_t macvlan_start_xmit(struct sk_buff *skb, struct net_device *dev); |
b863ceb7d [NET]: Add macvla... |
100 |
#endif /* _LINUX_IF_MACVLAN_H */ |