>From: Kavanagh, Mark B >Sent: Tuesday, December 12, 2017 1:18 PM >To: Chandran, Sugesh <[email protected]>; [email protected]; >[email protected] >Cc: Stokes, Ian <[email protected]>; Loftus, Ciara ><[email protected]>; [email protected] >Subject: RE: [ovs-dev][RFC PATCH V4 6/9] dp-packet: copy mbuf info for packet >copy > > > >>-----Original Message----- >>From: Chandran, Sugesh >>Sent: Friday, December 8, 2017 6:01 PM >>To: Kavanagh, Mark B <[email protected]>; [email protected]; >>[email protected] >>Cc: Stokes, Ian <[email protected]>; Loftus, Ciara >><[email protected]>; [email protected] >>Subject: RE: [ovs-dev][RFC PATCH V4 6/9] dp-packet: copy mbuf info for packet >>copy >> >> >> >>Regards >>_Sugesh >> >> >>> -----Original Message----- >>> From: Kavanagh, Mark B >>> Sent: Friday, December 8, 2017 12:02 PM >>> To: [email protected]; [email protected] >>> Cc: Stokes, Ian <[email protected]>; Loftus, Ciara >><[email protected]>; >>> [email protected]; Chandran, Sugesh >>> <[email protected]>; Kavanagh, Mark B >>> <[email protected]> >>> Subject: [ovs-dev][RFC PATCH V4 6/9] dp-packet: copy mbuf info for packet >>> copy >>> >>> From: Michael Qiu <[email protected]> >>> >>> Currently, when doing packet copy, lots of DPDK mbuf's info will be missed, >>like >>> packet type, ol_flags, etc. >>> Those information is very important for DPDK to do packets processing. >>> >>> Co-authored-by: Mark Kavanagh <[email protected]> >>> [[email protected] rebased] >>> >>> Signed-off-by: Michael Qiu <[email protected]> >>> Signed-off-by: Mark Kavanagh <[email protected]> >>> --- >>> lib/dp-packet.c | 3 +++ >>> lib/netdev-dpdk.c | 4 ++++ >>> 2 files changed, 7 insertions(+) >>> >>> diff --git a/lib/dp-packet.c b/lib/dp-packet.c index ad71486..d628037 >100644 >>> --- a/lib/dp-packet.c >>> +++ b/lib/dp-packet.c >>> @@ -178,6 +178,9 @@ dp_packet_clone_with_headroom(const struct >>> dp_packet *buffer, size_t headroom) >>> >>> #ifdef DPDK_NETDEV >>> new_buffer->mbuf.ol_flags = buffer->mbuf.ol_flags; >>> + new_buffer->mbuf.tx_offload = buffer->mbuf.tx_offload; >>> + new_buffer->mbuf.packet_type = buffer->mbuf.packet_type; >>> + new_buffer->mbuf.nb_segs = buffer->mbuf.nb_segs; >>[Sugesh] This function get lot many #if, #else with DPDK. It must need a >>cleanup. >>What do you think? > >During implementation, I had thought about separating out the code into two >separate dp_packet_clone_headroom() functions: DPDK-based, and non-DPDK-based, >within compiler guards. This would improve readability, but at the expense of >repeated code; I'll do this in the next version, and see how it is received. > >>Also will it would better if we keep all the mbuf field copy into a different >>function, something like >>copy_dpdk_mbuf_flags(..)? > >Do you think that is still warranted if there are two separate >dp_packet_clone_with_headroom() functions, as previously described? >
Edit: I'll add a function for this, since the same code is repeated in dpdk_do_tx_copy(). -Mark >Thanks, >Mark > >> >>> #else >>> new_buffer->rss_hash_valid = buffer->rss_hash_valid; #endif diff -- >git >>> a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index 4167497..8a81690 100644 >>> --- a/lib/netdev-dpdk.c >>> +++ b/lib/netdev-dpdk.c >>> @@ -1866,6 +1866,10 @@ dpdk_do_tx_copy(struct netdev *netdev, int qid, >>> struct dp_packet_batch *batch) >>> memcpy(rte_pktmbuf_mtod(pkts[txcnt], void *), >>> dp_packet_data(packet), size); >>> dp_packet_set_size((struct dp_packet *)pkts[txcnt], size); >>> + pkts[txcnt]->nb_segs = packet->mbuf.nb_segs; >>> + pkts[txcnt]->ol_flags = packet->mbuf.ol_flags; >>> + pkts[txcnt]->packet_type = packet->mbuf.packet_type; >>> + pkts[txcnt]->tx_offload = packet->mbuf.tx_offload; >>> >>> txcnt++; >>> } >>> -- >>> 1.9.3 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
