aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorAlex Williamson <alex.williamson@hp.com>2009-02-04 04:02:45 -0500
committerDavid S. Miller <davem@davemloft.net>2009-02-04 19:35:13 -0500
commitf565a7c259d71cc186753653d978c646d2354b36 (patch)
tree67eac82cc9043d80e77c2627b3de862da1cca439 /include
parent2af7698e2dd698d452ab9d63a9ca5956bbe8fc3b (diff)
virtio_net: Add a MAC filter table
Make use of the MAC control virtqueue class to support a MAC filter table. The filter table is managed by the hypervisor. We consider the table to be available if the CTRL_RX feature bit is set. We leave it to the hypervisor to manage the table and enable promiscuous or all-multi mode as necessary depending on the resources available to it. Signed-off-by: Alex Williamson <alex.williamson@hp.com> Acked-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r--include/linux/virtio_net.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/include/linux/virtio_net.h b/include/linux/virtio_net.h
index 63b2461a40f1..ba82b653cace 100644
--- a/include/linux/virtio_net.h
+++ b/include/linux/virtio_net.h
@@ -88,4 +88,27 @@ typedef __u8 virtio_net_ctrl_ack;
88 #define VIRTIO_NET_CTRL_RX_PROMISC 0 88 #define VIRTIO_NET_CTRL_RX_PROMISC 0
89 #define VIRTIO_NET_CTRL_RX_ALLMULTI 1 89 #define VIRTIO_NET_CTRL_RX_ALLMULTI 1
90 90
91/*
92 * Control the MAC filter table.
93 *
94 * The MAC filter table is managed by the hypervisor, the guest should
95 * assume the size is infinite. Filtering should be considered
96 * non-perfect, ie. based on hypervisor resources, the guest may
97 * received packets from sources not specified in the filter list.
98 *
99 * In addition to the class/cmd header, the TABLE_SET command requires
100 * two out scatterlists. Each contains a 4 byte count of entries followed
101 * by a concatenated byte stream of the ETH_ALEN MAC addresses. The
102 * first sg list contains unicast addresses, the second is for multicast.
103 * This functionality is present if the VIRTIO_NET_F_CTRL_RX feature
104 * is available.
105 */
106struct virtio_net_ctrl_mac {
107 __u32 entries;
108 __u8 macs[][ETH_ALEN];
109} __attribute__((packed));
110
111#define VIRTIO_NET_CTRL_MAC 1
112 #define VIRTIO_NET_CTRL_MAC_TABLE_SET 0
113
91#endif /* _LINUX_VIRTIO_NET_H */ 114#endif /* _LINUX_VIRTIO_NET_H */