qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/2] net/vmxnet3: Refactor 'vmxnet_rx_pkt_attach


From: Dmitry Fleytman
Subject: Re: [Qemu-devel] [PATCH 1/2] net/vmxnet3: Refactor 'vmxnet_rx_pkt_attach_data'
Date: Tue, 14 Jul 2015 12:22:10 +0300


> On Jul 14, 2015, at 11:55, Shmulik Ladkani <address@hidden> wrote:
> 
> Separate RX packet protocol parsing out of 'vmxnet_rx_pkt_attach_data'.
> 

Ack

> Signed-off-by: Shmulik Ladkani <address@hidden>
> ---
> hw/net/vmxnet3.c       |  1 +
> hw/net/vmxnet_rx_pkt.c | 12 +++++++++---
> hw/net/vmxnet_rx_pkt.h | 11 +++++++++++
> 3 files changed, 21 insertions(+), 3 deletions(-)
> 
> diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
> index 706e060..dd22a0a 100644
> --- a/hw/net/vmxnet3.c
> +++ b/hw/net/vmxnet3.c
> @@ -1897,6 +1897,7 @@ vmxnet3_receive(NetClientState *nc, const uint8_t *buf, 
> size_t size)
>         get_eth_packet_type(PKT_GET_ETH_HDR(buf)));
> 
>     if (vmxnet3_rx_filter_may_indicate(s, buf, size)) {
> +        vmxnet_rx_pkt_set_protocols(s->rx_pkt, buf, size);
>         vmxnet_rx_pkt_attach_data(s->rx_pkt, buf, size, s->rx_vlan_stripping);
>         bytes_indicated = vmxnet3_indicate_packet(s) ? size : -1;
>         if (bytes_indicated < size) {
> diff --git a/hw/net/vmxnet_rx_pkt.c b/hw/net/vmxnet_rx_pkt.c
> index acbca6a..aa54629 100644
> --- a/hw/net/vmxnet_rx_pkt.c
> +++ b/hw/net/vmxnet_rx_pkt.c
> @@ -92,9 +92,6 @@ void vmxnet_rx_pkt_attach_data(struct VmxnetRxPkt *pkt, 
> const void *data,
>     }
> 
>     pkt->tci = tci;
> -
> -    eth_get_protocols(data, len, &pkt->isip4, &pkt->isip6,
> -        &pkt->isudp, &pkt->istcp);
> }
> 
> void vmxnet_rx_pkt_dump(struct VmxnetRxPkt *pkt)
> @@ -131,6 +128,15 @@ size_t vmxnet_rx_pkt_get_total_len(struct VmxnetRxPkt 
> *pkt)
>     return pkt->tot_len;
> }
> 
> +void vmxnet_rx_pkt_set_protocols(struct VmxnetRxPkt *pkt, const void *data,
> +                                 size_t len)
> +{
> +    assert(pkt);
> +
> +    eth_get_protocols(data, len, &pkt->isip4, &pkt->isip6,
> +        &pkt->isudp, &pkt->istcp);
> +}
> +
> void vmxnet_rx_pkt_get_protocols(struct VmxnetRxPkt *pkt,
>                                  bool *isip4, bool *isip6,
>                                  bool *isudp, bool *istcp)
> diff --git a/hw/net/vmxnet_rx_pkt.h b/hw/net/vmxnet_rx_pkt.h
> index 5f8352a..a425846 100644
> --- a/hw/net/vmxnet_rx_pkt.h
> +++ b/hw/net/vmxnet_rx_pkt.h
> @@ -55,6 +55,17 @@ void vmxnet_rx_pkt_init(struct VmxnetRxPkt **pkt, bool 
> has_virt_hdr);
> size_t vmxnet_rx_pkt_get_total_len(struct VmxnetRxPkt *pkt);
> 
> /**
> + * parse and set packet analysis results
> + *
> + * @pkt:            packet
> + * @data:           pointer to the data buffer to be parsed
> + * @len:            data length
> + *
> + */
> +void vmxnet_rx_pkt_set_protocols(struct VmxnetRxPkt *pkt, const void *data,
> +                                 size_t len);
> +
> +/**
>  * fetches packet analysis results
>  *
>  * @pkt:            packet
> -- 
> 1.9.1
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]