datapath: Fix race against workqueue in dp_dev and simplify code.
[sliver-openvswitch.git] / datapath / dp_dev.h
1 /*
2  * Copyright (c) 2009 Nicira Networks.
3  * Distributed under the terms of the GNU GPL version 2.
4  *
5  * Significant portions of this file may be copied from parts of the Linux
6  * kernel, by Linus Torvalds and others.
7  */
8
9 #ifndef DP_DEV_H
10 #define DP_DEV_H 1
11
12 #include <linux/percpu.h>
13
14 struct dp_dev {
15         struct datapath *dp;
16         int port_no;
17
18         struct net_device *dev;
19         struct net_device_stats stats;
20 };
21
22 static inline struct dp_dev *dp_dev_priv(struct net_device *netdev)
23 {
24         return netdev_priv(netdev);
25 }
26
27 struct net_device *dp_dev_create(struct datapath *, const char *, int port_no);
28 void dp_dev_destroy(struct net_device *);
29 int dp_dev_recv(struct net_device *, struct sk_buff *);
30 int is_dp_dev(struct net_device *);
31 struct datapath *dp_dev_get_dp(struct net_device *);
32
33 #endif /* dp_dev.h */