Loading net/packet/af_packet.c +2 −34 Original line number Diff line number Diff line Loading @@ -1979,41 +1979,9 @@ static int __packet_rcv_vnet(const struct sk_buff *skb, { *vnet_hdr = (const struct virtio_net_hdr) { 0 }; if (skb_is_gso(skb)) { struct skb_shared_info *sinfo = skb_shinfo(skb); /* This is a hint as to how much should be linear. */ vnet_hdr->hdr_len = __cpu_to_virtio16(vio_le(), skb_headlen(skb)); vnet_hdr->gso_size = __cpu_to_virtio16(vio_le(), sinfo->gso_size); if (sinfo->gso_type & SKB_GSO_TCPV4) vnet_hdr->gso_type = VIRTIO_NET_HDR_GSO_TCPV4; else if (sinfo->gso_type & SKB_GSO_TCPV6) vnet_hdr->gso_type = VIRTIO_NET_HDR_GSO_TCPV6; else if (sinfo->gso_type & SKB_GSO_UDP) vnet_hdr->gso_type = VIRTIO_NET_HDR_GSO_UDP; else if (sinfo->gso_type & SKB_GSO_FCOE) return -EINVAL; else if (virtio_net_hdr_from_skb(skb, vnet_hdr, vio_le())) BUG(); if (sinfo->gso_type & SKB_GSO_TCP_ECN) vnet_hdr->gso_type |= VIRTIO_NET_HDR_GSO_ECN; } else vnet_hdr->gso_type = VIRTIO_NET_HDR_GSO_NONE; if (skb->ip_summed == CHECKSUM_PARTIAL) { vnet_hdr->flags = VIRTIO_NET_HDR_F_NEEDS_CSUM; vnet_hdr->csum_start = __cpu_to_virtio16(vio_le(), skb_checksum_start_offset(skb)); vnet_hdr->csum_offset = __cpu_to_virtio16(vio_le(), skb->csum_offset); } else if (skb->ip_summed == CHECKSUM_UNNECESSARY) { vnet_hdr->flags = VIRTIO_NET_HDR_F_DATA_VALID; } /* else everything is zero */ return 0; } Loading Loading
net/packet/af_packet.c +2 −34 Original line number Diff line number Diff line Loading @@ -1979,41 +1979,9 @@ static int __packet_rcv_vnet(const struct sk_buff *skb, { *vnet_hdr = (const struct virtio_net_hdr) { 0 }; if (skb_is_gso(skb)) { struct skb_shared_info *sinfo = skb_shinfo(skb); /* This is a hint as to how much should be linear. */ vnet_hdr->hdr_len = __cpu_to_virtio16(vio_le(), skb_headlen(skb)); vnet_hdr->gso_size = __cpu_to_virtio16(vio_le(), sinfo->gso_size); if (sinfo->gso_type & SKB_GSO_TCPV4) vnet_hdr->gso_type = VIRTIO_NET_HDR_GSO_TCPV4; else if (sinfo->gso_type & SKB_GSO_TCPV6) vnet_hdr->gso_type = VIRTIO_NET_HDR_GSO_TCPV6; else if (sinfo->gso_type & SKB_GSO_UDP) vnet_hdr->gso_type = VIRTIO_NET_HDR_GSO_UDP; else if (sinfo->gso_type & SKB_GSO_FCOE) return -EINVAL; else if (virtio_net_hdr_from_skb(skb, vnet_hdr, vio_le())) BUG(); if (sinfo->gso_type & SKB_GSO_TCP_ECN) vnet_hdr->gso_type |= VIRTIO_NET_HDR_GSO_ECN; } else vnet_hdr->gso_type = VIRTIO_NET_HDR_GSO_NONE; if (skb->ip_summed == CHECKSUM_PARTIAL) { vnet_hdr->flags = VIRTIO_NET_HDR_F_NEEDS_CSUM; vnet_hdr->csum_start = __cpu_to_virtio16(vio_le(), skb_checksum_start_offset(skb)); vnet_hdr->csum_offset = __cpu_to_virtio16(vio_le(), skb->csum_offset); } else if (skb->ip_summed == CHECKSUM_UNNECESSARY) { vnet_hdr->flags = VIRTIO_NET_HDR_F_DATA_VALID; } /* else everything is zero */ return 0; } Loading