diff options
author | Alex Williamson <alex.williamson@hp.com> | 2009-02-04 04:02:45 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-02-04 19:35:13 -0500 |
commit | f565a7c259d71cc186753653d978c646d2354b36 (patch) | |
tree | 67eac82cc9043d80e77c2627b3de862da1cca439 /include | |
parent | 2af7698e2dd698d452ab9d63a9ca5956bbe8fc3b (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.h | 23 |
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 | */ | ||
106 | struct 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 */ |