On 5/1/17, 11:10 PM, "[email protected] on behalf of Michael Qiu" 
<[email protected] on behalf of [email protected]> wrote:

    From: Michael Qiu <[email protected]>
    
    When building with DPDK, and using xmalloc() to get a new packet,
    field mbuf of the packet will not be initialized, but it's very important 
for
    DPDK port when copying the data to DPDK mbuf, because if ol_flags
    and other info are random values, DPDK driver may hang.
    
    Signed-off-by: Michael Qiu <[email protected]>
    ---
     lib/dp-packet.c | 3 +++
     1 file changed, 3 insertions(+)
    
    diff --git a/lib/dp-packet.c b/lib/dp-packet.c
    index 793b54f..109947c 100644
    --- a/lib/dp-packet.c
    +++ b/lib/dp-packet.c
    @@ -132,6 +132,9 @@ struct dp_packet *
     dp_packet_new(size_t size)
     {
         struct dp_packet *b = xmalloc(sizeof *b);
    +#ifdef DPDK_NETDEV
    +    memset(&(b->mbuf), 0, sizeof(struct rte_mbuf));

In addition to the comment Ben had for this patch, can you also investigate:

1) Which fields need initializing for multi-seg to work
and potentially only initialize those, if there are only a few, for example,
rather than memset the whole struct.


    +#endif
         dp_packet_init(b, size);
         return b;
     }
    -- 
    1.8.3.1
    
    _______________________________________________
    dev mailing list
    [email protected]
    https://mail.openvswitch.org/mailman/listinfo/ovs-dev
    

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to