On Thu, Jan 17, 2013 at 01:45:11PM +0800, Amos Kong wrote: > On Thu, Jan 17, 2013 at 11:49:20AM +1030, Rusty Russell wrote: > > akong@xxxxxxxxxx writes: > > > @@ -349,6 +351,14 @@ static int virtio_net_handle_mac(VirtIONet *n, uint8_t cmd, > > > { > > > struct virtio_net_ctrl_mac mac_data; > > > > > > + if (cmd == VIRTIO_NET_CTRL_MAC_ADDR_SET && elem->out_num == 2 && > > > + elem->out_sg[1].iov_len == ETH_ALEN) { > > > + /* Set MAC address */ > > > + memcpy(n->mac, elem->out_sg[1].iov_base, elem->out_sg[1].iov_len); > > > + qemu_format_nic_info_str(&n->nic->nc, n->mac); > > > + return VIRTIO_NET_OK; > > > + } > > > > Does the rest of the net device still rely on the layout of descriptors? > > No, only info string of net client relies on n->mac I think the question is whether the hw/virtio-net.c code makes assumptions about virtqueue descriptor layout (e.g. sg[0] is the header, sg[1] is the data buffer). The answer is yes, the control virtqueue function directly accesses iov[n]. Additional patches would be required to convert the existing hw/virtio-net.c code to make no assumptions about virtqueue descriptor layout. It's outside the scope of this series. Stefan -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html