From b5ab898afe5f1bc831dc8ead6f5b760aa770ddb6 Mon Sep 17 00:00:00 2001 From: Kiran KN Date: Tue, 25 Oct 2016 15:22:24 -0700 Subject: [PATCH] DPDK: Bond mode set incorrectly after upgrade Don't fetch bonding info from /proc/net/bonding if the dpdk.ini file is already setup with the required bonding information. Change-Id: I4008f671535487427a1a7ad391f0a815e8e3d363 Closes-Bug: 1625938 --- common/control_files/vrouter-functions.sh | 43 ++++++++++++----------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/common/control_files/vrouter-functions.sh b/common/control_files/vrouter-functions.sh index 21dab11ac..a506b7123 100755 --- a/common/control_files/vrouter-functions.sh +++ b/common/control_files/vrouter-functions.sh @@ -332,26 +332,29 @@ _dpdk_system_bond_info_collect() { _dpdk_vrouter_ini_update() { _dpdk_system_bond_info_collect - ## update virtual device (bond) configuration - dpdk_vdev="" - if [ -n "${DPDK_BOND_MODE}" -a -n "${DPDK_BOND_NUMA}" ]; then - echo "${0##*/}: updating bonding configuration in ${VROUTER_DPDK_INI}..." - - dpdk_vdev=" --vdev \"eth_bond_${DPDK_PHY},mode=${DPDK_BOND_MODE}" - dpdk_vdev="${dpdk_vdev},xmit_policy=${DPDK_BOND_POLICY}" - dpdk_vdev="${dpdk_vdev},socket_id=${DPDK_BOND_NUMA},mac=${DPDK_BOND_MAC}" - for SLAVE in ${DPDK_BOND_PCIS}; do - dpdk_vdev="${dpdk_vdev},slave=${SLAVE}" - done - dpdk_vdev="${dpdk_vdev}\"" - fi - ## always update the ini file, so we remove vdev argument - ## whenever Linux configuration has changed - sed -ri.bak \ - -e 's/(^ *command *=.*vrouter-dpdk.*) (--vdev +\"[^"]+\"|--vdev +[^ ]+)(.*) *$/\1\3/' \ - -e 's/(^ *command *=.*vrouter-dpdk.*) (--vdev +\"[^"]+\"|--vdev +[^ ]+)(.*) *$/\1\3/' \ - -e "s/(^ *command *=.*vrouter-dpdk.*)/\\1${dpdk_vdev}/" \ - ${VROUTER_DPDK_INI} + ## update virtual device (bond) configuration if needed + cat ${VROUTER_DPDK_INI} | grep "\-\-vdev" + if [ $? -ne 0 ]; + then + dpdk_vdev="" + if [ -n "${DPDK_BOND_MODE}" -a -n "${DPDK_BOND_NUMA}" ]; then + echo "${0##*/}: updating bonding configuration in ${VROUTER_DPDK_INI}..." + + dpdk_vdev=" --vdev \"eth_bond_${DPDK_PHY},mode=${DPDK_BOND_MODE}" + dpdk_vdev="${dpdk_vdev},xmit_policy=${DPDK_BOND_POLICY}" + dpdk_vdev="${dpdk_vdev},socket_id=${DPDK_BOND_NUMA},mac=${DPDK_BOND_MAC}" + for SLAVE in ${DPDK_BOND_PCIS}; do + dpdk_vdev="${dpdk_vdev},slave=${SLAVE}" + done + dpdk_vdev="${dpdk_vdev}\"" + fi + ## update the --vdev string if it does not exist + sed -ri.bak \ + -e 's/(^ *command *=.*vrouter-dpdk.*) (--vdev +\"[^"]+\"|--vdev +[^ ]+)(.*) *$/\1\3/' \ + -e 's/(^ *command *=.*vrouter-dpdk.*) (--vdev +\"[^"]+\"|--vdev +[^ ]+)(.*) *$/\1\3/' \ + -e "s/(^ *command *=.*vrouter-dpdk.*)/\\1${dpdk_vdev}/" \ + ${VROUTER_DPDK_INI} + fi ## update VLAN configuration