From patchwork Sat Oct 14 16:32:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [v8] Support batman-adv meshing over 802.11s From: Fabian Blaese X-Patchwork-Id: 567 Message-Id: <20171014163208.29669-1-fabian@blaese.de> To: franken-dev@freifunk.net Cc: Adrian Schmutzler Date: Sat, 14 Oct 2017 18:32:08 +0200 Signed-off-by: Fabian Bläse Signed-off-by: Adrian Schmutzler Update in v2: - Add parentheses - Rename mesh_type variable Update in v3: - nothing Update in v4: - Fix wrong variable assignment introduced in v2 Update in v5: - Add returns to wifiAddMesh Update in v6: - Rename json mesh_type variable Update in v7: - Remove ath10k-ct - Remove changes to community file Update in v8: - Revert removing ath10k-ct kmod --- bsp/ar71xx/.config | 4 +-- .../fff/fff-hoods/files/usr/sbin/configurehood | 22 +++++++++--- .../fff-wireless/files/lib/functions/fff/wireless | 40 ++++++++++++++++++++-- 3 files changed, 57 insertions(+), 9 deletions(-) diff --git a/bsp/ar71xx/.config b/bsp/ar71xx/.config index b407f7d..0a5b9b9 100644 --- a/bsp/ar71xx/.config +++ b/bsp/ar71xx/.config @@ -7,9 +7,9 @@ CONFIG_TARGET_MULTI_PROFILE=y CONFIG_TARGET_DEVICE_ar71xx_generic_DEVICE_gl-ar150=y CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_generic_DEVICE_gl-ar150="" CONFIG_TARGET_DEVICE_ar71xx_generic_DEVICE_archer-c25-v1=y -CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_generic_DEVICE_archer-c25-v1="-kmod-ath10k kmod-ath10k-ct -ath10k-firmware-qca9887 ath10k-firmware-qca9887-ct" +CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_generic_DEVICE_archer-c25-v1="-kmod-ath10k kmod-ath10k-ct" CONFIG_TARGET_DEVICE_ar71xx_generic_DEVICE_archer-c7-v2=y -CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_generic_DEVICE_archer-c7-v2="-kmod-ath10k kmod-ath10k-ct -ath10k-firmware-qca988x ath10k-firmware-qca988x-ct" +CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_generic_DEVICE_archer-c7-v2="-kmod-ath10k kmod-ath10k-ct" CONFIG_TARGET_DEVICE_ar71xx_generic_DEVICE_cpe210-220=y CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_generic_DEVICE_cpe210-220="" CONFIG_TARGET_DEVICE_ar71xx_generic_DEVICE_cpe510-520=y diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood index 264a308..a464841 100755 --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood @@ -119,6 +119,7 @@ if [ -s /tmp/keyxchangev2data ]; then json_select hood json_get_var hood name + json_get_var mesh_id mesh_id json_get_var mesh_bssid mesh_bssid json_get_var mesh_essid mesh_essid json_get_var essid essid @@ -126,10 +127,10 @@ if [ -s /tmp/keyxchangev2data ]; then # i think the next things we don't active this in the first version! we can do it later #json_get_var channel2 channel2 #json_get_var mode2 mode2 - #json_get_var type2 type2 + json_get_var mesh_type2 mesh_type2 #json_get_var channel5 channel5 #json_get_var mode5 mode5 - #json_get_var type5 type5 + json_get_var mesh_type5 mesh_type5 #json_get_var protocol protocol json_select ".." # back to root @@ -155,9 +156,20 @@ if [ -s /tmp/keyxchangev2data ]; then # here we set a bit for add hidden AP touch /tmp/hiddenapflag - if ! wifiAddAdHocMesh "$radio" "$mesh_essid" "$mesh_bssid"; then - echo "Can't add AP interface on $radio." - exit 1 + # add 802.11s mesh if type == "802.11s" + if ( [ -n "$radio5" ] && [ "$mesh_type5" == "802.11s" ] ) || [ "$mesh_type2" == "802.11s" ]; then + if ! wifiAddMesh "$radio" "$mesh_id"; then + echo "Can't add Mesh interface on $radio." + exit 1 + fi + fi + + # add IBSS mesh if type == "ibss" + if ( [ -n "$radio5" ] && [ "$mesh_type5" == "ibss" ] ) || [ "$mesh_type2" == "ibss" ]; then + if ! wifiAddAdHocMesh "$radio" "$mesh_essid" "$mesh_bssid"; then + echo "Can't add AdHocMesh interface on $radio." + exit 1 + fi fi done diff --git a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless index 2c6dff8..4493b05 100644 --- a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless +++ b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless @@ -83,9 +83,9 @@ wifiAddAdHocMesh() { local bssid=$3 local channel=$(uci get "wireless.${radio}.channel") - local iface="w2mesh" + local iface="w2ibss" if [ "$channel" -gt "14" ]; then - iface="w5mesh" + iface="w5ibss" fi uci batch <<-__EOF__ @@ -177,4 +177,40 @@ wifiAddSta() { return 0 } +wifiAddMesh() { + if [ $# -ne "2" ] + then + echo "Usage: wifiAddMesh " + return 1 + fi + + local radio=$1 + local mesh_id=$2 + + local channel=$(uci get "wireless.${radio}.channel") + local iface="w2mesh" + if [ "$channel" -gt "14" ]; then + iface="w5mesh" + fi + uci batch <<-__EOF__ + set wireless.${iface}='wifi-iface' + set wireless.${iface}.device='${radio}' + set wireless.${iface}.network='${iface}' + set wireless.${iface}.ifname='${iface}' + set wireless.${iface}.mode='mesh' + set wireless.${iface}.mesh_id='${mesh_id}' + set wireless.${iface}.encryption='none' + set wireless.${iface}.mesh_fwding=0 + commit wireless + + set network.${iface}='interface' + set network.${iface}.mtu='1528' + set network.${iface}.proto='batadv' + set network.${iface}.mesh='bat0' + commit network + __EOF__ + + echo "${iface}" + return 0 +} # vim: set noexpandtab:tabstop=4