|
@@ -44,6 +44,8 @@
|
|
|
#define VIRTIO_NET_F_CTRL_VLAN 19 /* Control channel VLAN filtering */
|
|
|
#define VIRTIO_NET_F_CTRL_RX_EXTRA 20 /* Extra RX mode control support */
|
|
|
|
|
|
+#define VIRTIO_NET_F_CTRL_MAC_ADDR 23 /* Set MAC address */
|
|
|
+
|
|
|
#define VIRTIO_NET_S_LINK_UP 1 /* Link is up */
|
|
|
|
|
|
#define TX_TIMER_INTERVAL 150000 /* 150 us */
|
|
@@ -106,7 +108,7 @@ typedef uint8_t virtio_net_ctrl_ack;
|
|
|
#define VIRTIO_NET_CTRL_RX_MODE_NOBCAST 5
|
|
|
|
|
|
/*
|
|
|
- * Control the MAC filter table.
|
|
|
+ * Control the MAC
|
|
|
*
|
|
|
* The MAC filter table is managed by the hypervisor, the guest should
|
|
|
* assume the size is infinite. Filtering should be considered
|
|
@@ -119,6 +121,10 @@ typedef uint8_t virtio_net_ctrl_ack;
|
|
|
* first sg list contains unicast addresses, the second is for multicast.
|
|
|
* This functionality is present if the VIRTIO_NET_F_CTRL_RX feature
|
|
|
* is available.
|
|
|
+ *
|
|
|
+ * The ADDR_SET command requests one out scatterlist, it contains a
|
|
|
+ * 6 bytes MAC address. This functionality is present if the
|
|
|
+ * VIRTIO_NET_F_CTRL_MAC_ADDR feature is available.
|
|
|
*/
|
|
|
struct virtio_net_ctrl_mac {
|
|
|
uint32_t entries;
|
|
@@ -126,6 +132,7 @@ struct virtio_net_ctrl_mac {
|
|
|
};
|
|
|
#define VIRTIO_NET_CTRL_MAC 1
|
|
|
#define VIRTIO_NET_CTRL_MAC_TABLE_SET 0
|
|
|
+ #define VIRTIO_NET_CTRL_MAC_ADDR_SET 1
|
|
|
|
|
|
/*
|
|
|
* Control VLAN filtering
|
|
@@ -158,5 +165,6 @@ struct virtio_net_ctrl_mac {
|
|
|
DEFINE_PROP_BIT("ctrl_vq", _state, _field, VIRTIO_NET_F_CTRL_VQ, true), \
|
|
|
DEFINE_PROP_BIT("ctrl_rx", _state, _field, VIRTIO_NET_F_CTRL_RX, true), \
|
|
|
DEFINE_PROP_BIT("ctrl_vlan", _state, _field, VIRTIO_NET_F_CTRL_VLAN, true), \
|
|
|
- DEFINE_PROP_BIT("ctrl_rx_extra", _state, _field, VIRTIO_NET_F_CTRL_RX_EXTRA, true)
|
|
|
+ DEFINE_PROP_BIT("ctrl_rx_extra", _state, _field, VIRTIO_NET_F_CTRL_RX_EXTRA, true), \
|
|
|
+ DEFINE_PROP_BIT("ctrl_mac_addr", _state, _field, VIRTIO_NET_F_CTRL_MAC_ADDR, true)
|
|
|
#endif
|