Kevin Traynor, Jun 15, 2023 at 12:53:
> >       new_n_rxq = MAX(smap_get_int(args, "n_rxq", NR_QUEUE), 1);
> > +    if (dev->requested_rx_steer_flags != 0) {
> > +        new_n_rxq += 1;
>
> If rx-steering is set for the port and the flow has previously not been 
> able to be offloaded, the dev->requested_n_rxq will always be different 
> than the netdev->n_rxq. That means this device will do a  reconfigure 
> anytime there is a config change on any device.
>
> e.g. If rx sterring on device A and device A cannot offload flows (this 
> is acceptable). Any config change to device B will result in reconfigure 
> of device A, not based on flags but based on num of rxqs.

This is why I had added an intermediate dev->user_n_rxq field in v10.
I tried to get rid of it as you suggested but it causes this issue.

Also, I think there's another side effect that is actually worse, if the
rte flow offload fails, dev->requested_n_rxq is decremented by one. If
netdev_dpdk_reconfigure() is called without reinitializing
dev->requested_n_rxq (mtu change or some other event), the value will
eventually drop down to zero and then to negative values.

I'll reintroduce user_n_rxq as an intermediate value that cannot be
modified other by than the user so that these problems cannot occur.

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

Reply via email to