From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48262) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZHEoz-0006Y5-7i for qemu-devel@nongnu.org; Mon, 20 Jul 2015 13:25:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZHEow-0000pJ-1P for qemu-devel@nongnu.org; Mon, 20 Jul 2015 13:25:45 -0400 Received: from mx1.redhat.com ([209.132.183.28]:38149) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZHEov-0000oz-CI for qemu-devel@nongnu.org; Mon, 20 Jul 2015 13:25:41 -0400 From: Stefan Hajnoczi Date: Mon, 20 Jul 2015 18:25:20 +0100 Message-Id: <1437413125-24888-3-git-send-email-stefanha@redhat.com> In-Reply-To: <1437413125-24888-1-git-send-email-stefanha@redhat.com> References: <1437413125-24888-1-git-send-email-stefanha@redhat.com> Subject: [Qemu-devel] [PULL for-2.4 2/7] net/vmxnet3: Refactor 'vmxnet_rx_pkt_attach_data' List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Peter Maydell , Shmulik Ladkani , Stefan Hajnoczi From: Shmulik Ladkani Separate RX packet protocol parsing out of 'vmxnet_rx_pkt_attach_data'. Signed-off-by: Shmulik Ladkani Message-id: 1436864116-19154-2-git-send-email-shmulik.ladkani@ravellosystems.com Signed-off-by: Stefan Hajnoczi --- 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 -- 2.4.3