[ovs-dev] [PATCH v6 00/12] Reconfigure netdev at runtime
Kavanagh, Mark B
mark.b.kavanagh at intel.com
Wed Mar 30 14:41:55 UTC 2016
Hi Daniele,
Thanks for addressing my comments; all LGTM now.
=> Acked-by: Mark Kavanagh <mark.b.kavanagh at intel.com>
BTW, any idea if Ben is planning to review this patchset soon?
Thanks,
Mark
>
>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.
>
>The series is also available here:
>
>https://github.com/ddiproietto/ovs/tree/configchangesv6
>
>v6:
>* Rebased against master.
>* Check return value of netdev_rxq_open().
>* Fix comment.
>
>v5:
>* Style fixes.
>* Fixed a bug in dp_netdev_free() in patch 6.
>
>v4:
>* Added another patch to uniform names of variables in netdev-dpdk (no
> functional change)
>* Update some netdev comments to document the relation between
> netdev_set_multiq() and netdev_reconfigure()
>* Clarify that when netdev_reconfigure() is called no call to netdev_send()
> or netdev_rxq_recv() must be issued.
>* Move check to skip reconfiguration in netdev_dpdk_reconfigure() before
> rte_eth_dev_stop().
>
>v3:
>* Fixed another outdated comment about rx queue configuration, as pointed out
> by Mark
>* Removed unnecessary and buggy initialization of requested_n_rxq in
> reconfigure_pmd_threads().
>* Removed unused 'err' variable in netdev_dpdk_set_multiq().
>* Changed comparison in netdev_set_multiq() to use previous
> 'netdev->requested_n_txq' instead of 'netdev->up.n_txq'
>* Return immediately in netdev_dpdk_reconfigure() if configuration didn't
> change anything.
>
>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 (12):
> netdev-dpdk: Consistent variable naming.
> 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 | 441 ++++++++++++++++++---------------
> lib/dpif-provider.h | 3 +-
> lib/netdev-bsd.c | 1 +
> lib/netdev-dpdk.c | 660 +++++++++++++++++++++++++------------------------
> lib/netdev-dummy.c | 1 +
> lib/netdev-linux.c | 1 +
> lib/netdev-provider.h | 50 ++--
> lib/netdev-vport.c | 1 +
> lib/netdev.c | 72 ++++--
> lib/netdev.h | 7 +-
> ofproto/ofproto-dpif.c | 4 +-
> tests/bridge.at | 4 +-
> 12 files changed, 675 insertions(+), 570 deletions(-)
>
>--
>2.1.4
More information about the dev
mailing list