On Wed, Jan 29, 2020 at 08:15:11PM -0300, Flavio Leitner wrote:
> Usually TSO packets are close to 50k, 60k bytes long, so to
> to copy less bytes when receiving a packet from the kernel
> change the approach. Instead of extending the MTU sized
> packet received and append with remaining TSO data from
> the TSO buffer, allocate a TSO packet with enough headroom
> to prepend the std packet data.
> 
> Suggested-by: Ben Pfaff <b...@ovn.org>
> Signed-off-by: Flavio Leitner <f...@sysclose.org>

Did you test this with TSO packets?  I think I see an inconsistency.
netdev_linux_rxq_recv() constructs dp_packets like this with a size of 0
(and a tailroom of data_len):

> +            rx->aux_bufs[i] = dp_packet_new_with_headroom(data_len, std_len);

and then later on dp_packet_size() on the aux_bufs should report 0,
which won't work properly:

> +         if (iovlen == IOV_TSO_SIZE) {
> +             iovs[i][IOV_AUXBUF].iov_base = dp_packet_data(rx->aux_bufs[i]);
> +             iovs[i][IOV_AUXBUF].iov_len = dp_packet_size(rx->aux_bufs[i]);
> +         }

I think that the above should use dp_packet_tailroom() instead, and the
inconsistency makes me nervous.

Thanks,

Ben.
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to