Add ovs-vswitchd dpdk parameters and ovs_dpdk daemon calls. Signed-off-by: Radu Patriu Upstream-Status: Pending Index: git/openvswitch/utilities/ovs-ctl.in =================================================================== --- git.orig/openvswitch/utilities/ovs-ctl.in 2014-05-22 14:48:48.505319435 +0300 +++ git/openvswitch/utilities/ovs-ctl.in 2014-05-22 15:05:46.437302665 +0300 @@ -13,6 +13,15 @@ # See the License for the specific language governing permissions and # limitations under the License. +#OVS_DPDK_PARAMS_DEFAULT to be replaced by install script +OVS_DPDK_PARAMS=${OVS_DPDK_PARAMS:-"@OVS_DPDK_PARAMS_DEFAULT"} + +#OVS_VSWITCHD_PARAMS_DEFAULT to be replaced by install script +OVS_VSWITCHD_PARAMS=${OVS_VSWITCHD_PARAMS:-"@OVS_VSWITCHD_PARAMS_DEFAULT"} + +#OVS_DPDK_LOG_DEFAULT to be replaced by install script +OVS_DPDK_LOG=${OVS_DPDK_LOG:-"@OVS_DPDK_LOG_DEFAULT"} + case $0 in */*) dir0=`echo "$0" | sed 's,/[^/]*$,,'` ;; *) dir0=./ ;; @@ -106,7 +115,7 @@ set_system_ids () { set ovs_vsctl set Open_vSwitch . - OVS_VERSION=`ovs-vswitchd --version | sed 's/.*) //;1q'` + OVS_VERSION=`ovs-vswitchd -c 0x01 -n 4 --proc-type=auto -m 4 -- --version | sed -n 's/ovs-vswitchd (Open vSwitch) \(.*\)/\1/p'` set "$@" ovs-version="$OVS_VERSION" case $SYSTEM_ID in @@ -215,9 +224,39 @@ db:Open_vSwitch,Open_vSwitch,manager_options } +start_dpdk () { + if daemon_is_running ovs_dpdk; then + log_success_msg "ovs_dpdk is already running" + else + modprobe uio + test -e /sys/module/igb_uio || insmod $datadir/../openvswitchdpdk/kmod/igb_uio.ko + test -e /sys/module/rte_kni || insmod $datadir/../openvswitchdpdk/kmod/rte_kni.ko + rm -f $rundir/ovs_dpdk.pid + start-stop-daemon --start --quiet --background --make-pidfile --pidfile $rundir/ovs_dpdk.pid --exec /bin/sh -- -c "exec ovs_dpdk $OVS_DPDK_PARAMS >> $OVS_DPDK_LOG 2>&1" + #wait for ovs_dpdk to initialize before starting ovs-vswitchd + sleep 10 + fi +} + +stop_dpdk () { + pid=`cat "$rundir/ovs_dpdk.pid"` + rtemaps=`test -e /proc/$pid/maps && cat /proc/$pid/maps | grep -o '/.*rtemap_.*$'` + + stop_daemon ovs_dpdk + + #try to clean + for rtemap in $rtemaps + do + rm -f $rtemap + done + rm -f $rundir/ovs_dpdk.pid +} + start_forwarding () { check_force_cores + start_dpdk + insert_mod_if_required || return 1 if daemon_is_running ovs-vswitchd; then @@ -230,9 +269,9 @@ ulimit -n 7500 # Start ovs-vswitchd. - set ovs-vswitchd unix:"$DB_SOCK" + set ovs-vswitchd $OVS_VSWITCHD_PARAMS -- unix:"$DB_SOCK" set "$@" -vconsole:emer -vsyslog:err -vfile:info - if test X"$MLOCKALL" != Xno; then + if test -"$MLOCKALL" != Xno; then set "$@" --mlockall fi start_daemon "$OVS_VSWITCHD_PRIORITY" "$OVS_VSWITCHD_WRAPPER" "$@" @@ -249,6 +288,7 @@ stop_forwarding () { stop_daemon ovs-vswitchd + stop_dpdk } ## ----------------- ## @@ -505,8 +545,10 @@ MLOCKALL=yes OVSDB_SERVER_PRIORITY=-10 OVS_VSWITCHD_PRIORITY=-10 + OVS_DPDK_PRIORITY=-10 OVSDB_SERVER_WRAPPER= OVS_VSWITCHD_WRAPPER= + OVS_DPDK_WRAPPER= DB_FILE=$dbdir/conf.db DB_SOCK=$rundir/db.sock @@ -601,6 +643,8 @@ data files: @pkgdatadir@ (--pkgdatadir, OVS_PKGDATADIR) user binaries: @bindir@ (--bindir, OVS_BINDIR) system binaries: @sbindir@ (--sbindir, OVS_SBINDIR) + ovs_dpdk params: OVS_DPDK_PARAMS (env only) + ovs-vswitchd dpdk params: OVS_VSWITCHD_PARAMS (env only) Please report bugs to bugs@openvswitch.org (see REPORTING-BUGS for details). EOF @@ -622,7 +666,7 @@ } daemons () { - echo ovsdb-server ovs-vswitchd + echo ovsdb-server ovs-vswitchd ovs_dpdk } set_defaults