Flavio, thank you so much for reviewing, I'll fix them per your comments in 
next version.  Some replies per your comments inline.

-----邮件原件-----
发件人: dev [mailto:ovs-dev-boun...@openvswitch.org] 代表 Flavio Leitner
发送时间: 2020年7月11日 3:42
收件人: yang_y...@163.com
抄送: ovs-dev@openvswitch.org
主题: Re: [ovs-dev] [PATCH v2 1/5] Fix dp_packet_set_size error for multi-seg mbuf


Hi Yi,

Thanks for putting this patch-set together.

On Wed, Jul 01, 2020 at 05:15:29PM +0800, yang_y...@163.com wrote:
> From: Yi Yang <yangy...@inspur.com>
> 
> For multi-seg mbuf, pkt_len isn't equal to data_len, data_len is 
> data_len of the first seg, pkt_len is sum of data_len of all the segs, 
> so for such packets, dp_packet_set_size shouldn't change data_len.
> 
> Signed-off-by: Yi Yang <yangy...@inspur.com>
> ---
>  lib/dp-packet.h | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/lib/dp-packet.h b/lib/dp-packet.h index 0430cca..070d111 
> 100644
> --- a/lib/dp-packet.h
> +++ b/lib/dp-packet.h
> @@ -575,7 +575,9 @@ dp_packet_set_size(struct dp_packet *b, uint32_t v)
>       * (and thus 'v') will always be <= UINT16_MAX; this means that there is 
> no
>       * loss of accuracy in assigning 'v' to 'data_len'.
>       */
> -    b->mbuf.data_len = (uint16_t)v;  /* Current seg length. */
> +    if (b->mbuf.nb_segs <= 1) {
> +        b->mbuf.data_len = (uint16_t)v;  /* Current seg length. */
> +    }
>      b->mbuf.pkt_len = v;             /* Total length of all segments linked 
> to
>                                        * this segment. */  }

Currently OVS doesn't support multi-seg mbuf, so although this patch wouldn't 
break anything it doesn't sound correct as it is.  It seems incomplete/limited 
as well.

I think at least the patch should add a comment explaining why and when that is 
needed. 

Another thing is that this change alone has no users.  Usually we do changes 
along with the first user. I am still reviewing the following patches, but I 
suspect this change is for GRO/GSO, so in my opinion it makes sense to be part 
of one of them.
Doing so helps to backtrack the reason for a specific change.

I think we should prioritize single mbuf as they carry less data, so OVS has 
less time to process them. Therefore, it seems appropriate to use OVS_LIKELY().

[Yi Yang] Make sense, I'll merge it in GRO patch, yes, GRO needs it, OVS_LIKELY 
will be better.
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to