>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

Reply via email to