[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 2/6] hw/net/net_tx_pkt: helper function to get l2 hdr
From: |
Sriram Yagnaraman |
Subject: |
[PATCH v2 2/6] hw/net/net_tx_pkt: helper function to get l2 hdr |
Date: |
Thu, 29 Dec 2022 20:08:13 +0100 |
Also add return value for to send functions
Signed-off-by: Sriram Yagnaraman <sriram.yagnaraman@est.tech>
---
hw/net/net_tx_pkt.c | 17 +++++++++++------
hw/net/net_tx_pkt.h | 8 ++++++++
2 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/hw/net/net_tx_pkt.c b/hw/net/net_tx_pkt.c
index 1cb1125d9f..f2e14008b6 100644
--- a/hw/net/net_tx_pkt.c
+++ b/hw/net/net_tx_pkt.c
@@ -284,6 +284,12 @@ struct virtio_net_hdr *net_tx_pkt_get_vhdr(struct NetTxPkt
*pkt)
return &pkt->virt_hdr;
}
+struct eth_header *net_tx_pkt_get_l2hdr(struct NetTxPkt *pkt)
+{
+ assert(pkt);
+ return PKT_GET_ETH_HDR(&pkt->l2_hdr);
+}
+
static uint8_t net_tx_pkt_get_gso_type(struct NetTxPkt *pkt,
bool tso_enable)
{
@@ -551,13 +557,13 @@ static size_t net_tx_pkt_fetch_fragment(struct NetTxPkt
*pkt,
return fetched;
}
-static inline void net_tx_pkt_sendv(struct NetTxPkt *pkt,
+static inline ssize_t net_tx_pkt_sendv(struct NetTxPkt *pkt,
NetClientState *nc, const struct iovec *iov, int iov_cnt)
{
if (pkt->is_loopback) {
- qemu_receive_packet_iov(nc, iov, iov_cnt);
+ return qemu_receive_packet_iov(nc, iov, iov_cnt);
} else {
- qemu_sendv_packet(nc, iov, iov_cnt);
+ return qemu_sendv_packet(nc, iov, iov_cnt);
}
}
@@ -632,9 +638,8 @@ bool net_tx_pkt_send(struct NetTxPkt *pkt, NetClientState
*nc)
if (pkt->has_virt_hdr ||
pkt->virt_hdr.gso_type == VIRTIO_NET_HDR_GSO_NONE) {
net_tx_pkt_fix_ip6_payload_len(pkt);
- net_tx_pkt_sendv(pkt, nc, pkt->vec,
- pkt->payload_frags + NET_TX_PKT_PL_START_FRAG);
- return true;
+ return (net_tx_pkt_sendv(pkt, nc, pkt->vec,
+ pkt->payload_frags + NET_TX_PKT_PL_START_FRAG) >= 0);
}
return net_tx_pkt_do_sw_fragmentation(pkt, nc);
diff --git a/hw/net/net_tx_pkt.h b/hw/net/net_tx_pkt.h
index 4ec8bbe9bd..64fae67c58 100644
--- a/hw/net/net_tx_pkt.h
+++ b/hw/net/net_tx_pkt.h
@@ -52,6 +52,14 @@ void net_tx_pkt_uninit(struct NetTxPkt *pkt);
*/
struct virtio_net_hdr *net_tx_pkt_get_vhdr(struct NetTxPkt *pkt);
+/**
+ * get L2 header
+ *
+ * @pkt: packet
+ * @ret: L2 header
+ */
+struct eth_header *net_tx_pkt_get_l2hdr(struct NetTxPkt *pkt);
+
/**
* build virtio header (will be stored in module context)
*
--
2.34.1
- [PATCH v2 0/6] hw/net/igb: emulated network device with SR-IOV, Sriram Yagnaraman, 2022/12/29
- [PATCH v2 5/6] hw/net/igb: build support for igb/igbvf devices, Sriram Yagnaraman, 2022/12/29
- [PATCH v2 6/6] tests/qtest/igb-test: introduce qtest for igb, Sriram Yagnaraman, 2022/12/29
- [PATCH v2 4/6] hw/net/igb: emulated intel IGB (82576EB) network device, Sriram Yagnaraman, 2022/12/29
- [PATCH v2 1/6] pcie: add helper function to get number of VFs, Sriram Yagnaraman, 2022/12/29
- [PATCH v2 2/6] hw/net/net_tx_pkt: helper function to get l2 hdr,
Sriram Yagnaraman <=
- [PATCH v2 3/6] hw/net/igb: register definitions, Sriram Yagnaraman, 2022/12/29