Re: [PATCH v4 21/42] virtio_net: get rid of virtio_net_hdr/skb_vnet_hdr
From: "Michael S. Tsirkin" <mst@redhat.com>
Date: 2014-11-26 13:12:17
Also in:
lkml, virtualization
On Wed, Nov 26, 2014 at 01:50:53PM +0100, Cornelia Huck wrote:
On Tue, 25 Nov 2014 18:42:53 +0200 "Michael S. Tsirkin" [off-list ref] wrote:quoted
virtio 1.0 doesn't use virtio_net_hdr anymore, and in fact, it's not really useful since virtio_net_hdr_mrg_rxbuf includes that as the first field anyway. Let's drop it, precalculate header len and store within vi instead. This way we can also remove struct skb_vnet_hdr. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- drivers/net/virtio_net.c | 90 ++++++++++++++++++++++-------------------------- 1 file changed, 41 insertions(+), 49 deletions(-)quoted
@@ -260,13 +256,11 @@ static struct sk_buff *page_to_skb(struct virtnet_info *vi, hdr = skb_vnet_hdr(skb); - if (vi->mergeable_rx_bufs) { - hdr_len = sizeof hdr->mhdr; - hdr_padded_len = sizeof hdr->mhdr; - } else { - hdr_len = sizeof hdr->hdr; + hdr_len = vi->hdr_len; + if (vi->mergeable_rx_bufs) + hdr_padded_len = sizeof *hdr;sizeof without () looks weird to me.
It's how it was originally, so I think I'd rather keep it. I kind of like it too: it stresses the fact that sizeof is not a function and so does not actually dereference the pointer even though it looks like it does. We can change it with a patch on top, but should then be changed everywhere in this file.
quoted
+ else hdr_padded_len = sizeof(struct padded_vnet_hdr); - } memcpy(hdr, p, hdr_len);Otherwise: Reviewed-by: Cornelia Huck <redacted>