Hi, Ben

在 2017/5/5 7:00, Darrell Ball 写道:

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.

Now, we have four. So I chose to 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