macvtap: Implement multiqueue for macvtap driver

Implement multiqueue facility for macvtap driver. The idea is that
a macvtap device can be opened multiple times and the fd's can be
used to register eg, as backend for vhost.

Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Krishna Kumar 2010-08-04 06:15:59 +00:00 committed by David S. Miller
parent bfb564e739
commit 1565c7c1c4
2 changed files with 90 additions and 18 deletions

View file

@ -40,6 +40,12 @@ struct macvlan_rx_stats {
unsigned long rx_errors;
};
/*
* 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)
struct macvlan_dev {
struct net_device *dev;
struct list_head list;
@ -50,7 +56,8 @@ struct macvlan_dev {
enum macvlan_mode mode;
int (*receive)(struct sk_buff *skb);
int (*forward)(struct net_device *dev, struct sk_buff *skb);
struct macvtap_queue *tap;
struct macvtap_queue *taps[MAX_MACVTAP_QUEUES];
int numvtaps;
};
static inline void macvlan_count_rx(const struct macvlan_dev *vlan,