mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-30 21:42:06 -06:00
net/vmxnet3: Refactor 'vmxnet_rx_pkt_attach_data'
Separate RX packet protocol parsing out of 'vmxnet_rx_pkt_attach_data'. Signed-off-by: Shmulik Ladkani <shmulik.ladkani@ravellosystems.com> Message-id: 1436864116-19154-2-git-send-email-shmulik.ladkani@ravellosystems.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
091f1f5296
commit
fcf0cdc362
3 changed files with 21 additions and 3 deletions
|
@ -1897,6 +1897,7 @@ vmxnet3_receive(NetClientState *nc, const uint8_t *buf, size_t size)
|
||||||
get_eth_packet_type(PKT_GET_ETH_HDR(buf)));
|
get_eth_packet_type(PKT_GET_ETH_HDR(buf)));
|
||||||
|
|
||||||
if (vmxnet3_rx_filter_may_indicate(s, buf, size)) {
|
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);
|
vmxnet_rx_pkt_attach_data(s->rx_pkt, buf, size, s->rx_vlan_stripping);
|
||||||
bytes_indicated = vmxnet3_indicate_packet(s) ? size : -1;
|
bytes_indicated = vmxnet3_indicate_packet(s) ? size : -1;
|
||||||
if (bytes_indicated < size) {
|
if (bytes_indicated < size) {
|
||||||
|
|
|
@ -92,9 +92,6 @@ void vmxnet_rx_pkt_attach_data(struct VmxnetRxPkt *pkt, const void *data,
|
||||||
}
|
}
|
||||||
|
|
||||||
pkt->tci = tci;
|
pkt->tci = tci;
|
||||||
|
|
||||||
eth_get_protocols(data, len, &pkt->isip4, &pkt->isip6,
|
|
||||||
&pkt->isudp, &pkt->istcp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void vmxnet_rx_pkt_dump(struct VmxnetRxPkt *pkt)
|
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;
|
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,
|
void vmxnet_rx_pkt_get_protocols(struct VmxnetRxPkt *pkt,
|
||||||
bool *isip4, bool *isip6,
|
bool *isip4, bool *isip6,
|
||||||
bool *isudp, bool *istcp)
|
bool *isudp, bool *istcp)
|
||||||
|
|
|
@ -54,6 +54,17 @@ void vmxnet_rx_pkt_init(struct VmxnetRxPkt **pkt, bool has_virt_hdr);
|
||||||
*/
|
*/
|
||||||
size_t vmxnet_rx_pkt_get_total_len(struct VmxnetRxPkt *pkt);
|
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
|
* fetches packet analysis results
|
||||||
*
|
*
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue