* [PATCH v2] net/af_packet: support Tx scattered mbuf input
@ 2017-08-07 9:10 Wenfeng Liu
0 siblings, 0 replies; only message in thread
From: Wenfeng Liu @ 2017-08-07 9:10 UTC (permalink / raw)
To: linville; +Cc: dev
Signed-off-by: Wenfeng Liu <liuwf@arraynetworks.com.cn>
---
v2:
* Fixed coding style issues reported by checkpatch
drivers/net/af_packet/rte_eth_af_packet.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c
index 9a47852..fabb915 100644
--- a/drivers/net/af_packet/rte_eth_af_packet.c
+++ b/drivers/net/af_packet/rte_eth_af_packet.c
@@ -216,7 +216,7 @@ struct pmd_internals {
mbuf = *bufs++;
/* drop oversized packets */
- if (rte_pktmbuf_data_len(mbuf) > pkt_q->frame_data_size) {
+ if (mbuf->pkt_len > pkt_q->frame_data_size) {
rte_pktmbuf_free(mbuf);
continue;
}
@@ -237,8 +237,17 @@ struct pmd_internals {
/* copy the tx frame data */
pbuf = (uint8_t *) ppd + TPACKET2_HDRLEN -
sizeof(struct sockaddr_ll);
- memcpy(pbuf, rte_pktmbuf_mtod(mbuf, void*), rte_pktmbuf_data_len(mbuf));
- ppd->tp_len = ppd->tp_snaplen = rte_pktmbuf_data_len(mbuf);
+
+ struct rte_mbuf *tmp_mbuf = mbuf;
+ while (tmp_mbuf) {
+ uint16_t data_len = rte_pktmbuf_data_len(tmp_mbuf);
+ memcpy(pbuf, rte_pktmbuf_mtod(tmp_mbuf, void*), data_len);
+ pbuf += data_len;
+ tmp_mbuf = tmp_mbuf->next;
+ }
+
+ ppd->tp_len = mbuf->pkt_len;
+ ppd->tp_snaplen = mbuf->pkt_len;
/* release incoming frame and advance ring buffer */
ppd->tp_status = TP_STATUS_SEND_REQUEST;
--
1.8.3.1
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2017-08-07 9:10 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-07 9:10 [PATCH v2] net/af_packet: support Tx scattered mbuf input Wenfeng Liu
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.