Thanks, Daniele.
This version works for me.
It should be rebased on top of current master. I'll try to review the code
more carefully soon.
For now:
Tested-by: Ilya Maximets <i.maxim...@samsung.com>

On 03.03.2016 04:33, Daniele Di Proietto wrote:
> Currently we treat set_multiq() calls specially in netdev and dpif-netdev:
> every pmd thread must be stopped and set_multiq() is allowed to destroy and
> recreate the device.
> 
> I think we can improve this by:
> * Generalizing the mechanism to allow changing other parameters at runtime
>   (such as MTU).
> * Involving less the above layer (dpif-netdev).  The request for changes
>   often comes from below (netdev_dpdk_set_config(), or the vhost new_device()
>   callback).  There's no need for dpif-netdev to remember the requested value,
>   all that it needs to know is that a configuration change is requested.
> 
> This series implements exactly this: a mechanism to allow a netdev provider
> to request configuration changes, to which dpif-netdev will respond by
> stopping rx/tx and calling a netdev function to appy the new configuration.
> 
> The new mechanism is used in this series to replace the set_multiq() call,
> but the idea is to use it also at least for:
> 
> * Changing the MTU at runtime
> * Automatically detecting the number of rx queues for a vhost-user device
> 
> The first commits also clean up some code in dpif-netdev and make the ports
> cmap fully RCU protected.
> 
> v2:
> * Fixed do_add_port(): we have to call netdev_reconfigure() before opening
>   the rxqs.  This prevents memory leaks, and makes sure that the datapath
>   polls the appropriate number of queues
> * Fixed netdev_dpdk_vhost_set_multiq(): it must call
>   netdev_request_reconfigure(). Since it is now equal to
>   netdev_dpdk_set_multiq(), the two function have been merged.
> * Fixed netdev_dpdk_set_config(): dev->requested_n_rxq is now accessed
>   while holding the appropriate mutex.
> * Fixed some outdated comments about rx queue configuration.
> 
> Daniele Di Proietto (11):
>   dpif-netdev: Proper error handling in do_add_port().
>   dpif-netdev: Keep count of elements in port->rxq[].
>   dpif-netdev: Do not keep refcount for ports.
>   dpif-netdev: Remove useless dpif-dummy/delete-port appctl.
>   dpif-netdev: Wait an RCU grace period before freeing ports.
>   ofproto-dpif: Call dpif_poll_threads_set() before dpif_run()
>   dpif-netdev: Change pmd thread configuration in dpif_netdev_run().
>   dpif-netdev: Document locking discipline for non_pmd_mutex.
>   dpif-netdev: Fix reconfigure_pmd_threads().
>   netdev: Add reconfigure request mechanism.
>   netdev-dpdk: Use ->reconfigure() call to change rx/tx queues.
> 
>  lib/dpif-netdev.c      | 435 
> +++++++++++++++++++++++++++----------------------
>  lib/dpif-provider.h    |   3 +-
>  lib/netdev-bsd.c       |   1 +
>  lib/netdev-dpdk.c      | 180 ++++++++++----------
>  lib/netdev-dummy.c     |   1 +
>  lib/netdev-linux.c     |   1 +
>  lib/netdev-provider.h  |  42 +++--
>  lib/netdev-vport.c     |   1 +
>  lib/netdev.c           |  59 ++++---
>  lib/netdev.h           |   7 +-
>  ofproto/ofproto-dpif.c |   4 +-
>  tests/bridge.at        |   4 +-
>  12 files changed, 406 insertions(+), 332 deletions(-)
> 
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to