lantiq: create ATM/PTM interfaces with dsl as netdev name
authorMathias Kresin <dev@kresin.me>
Sat, 6 Jan 2018 16:30:38 +0000 (17:30 +0100)
committerMathias Kresin <dev@kresin.me>
Wed, 10 Jan 2018 07:08:53 +0000 (08:08 +0100)
Renaming an atm etherbride using 'ip link' (via hotplug) is racy since the
original netdev might disappear before br2684ctl has finished appling it's
setting:

 local2.notice br2684ctl[1667]: Interface "nas0" created sucessfully
 local2.notice br2684ctl[1667]: Communicating over ATM 0.8.35, encapsulation: LLC
 kern.info kernel: dsl0: renamed from nas0
 kern.err kernel: br2684:br2684_regvcc: tried to attach to non-existent device
 local2.err br2684ctl[1667]: Could not configure interface:No such device or address

By passing the final used netdev name to br2684ctl_wrap another race
condition workaround will be enabled again.

Change the lantiq ptm driver to create a netdev with the name dsl as well.
Albeit the rename via 'ip link' works fine so far, using a different
approach for ptm then atm could be confusing.

Signed-off-by: Mathias Kresin <dev@kresin.me>
package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_adsl.c
package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_vdsl.c
target/linux/lantiq/base-files/etc/board.d/02_network
target/linux/lantiq/base-files/etc/uci-defaults/02_migrate_xdsl_iface

index b3803f9..f764eba 100644 (file)
@@ -254,7 +254,7 @@ static struct net_device_ops g_ptm_netdev_ops = {
 #endif
 
 static struct net_device *g_net_dev[2] = {0};
-static char *g_net_dev_name[2] = {"ptm0", "ptmfast0"};
+static char *g_net_dev_name[2] = {"dsl0", "dslfast0"};
 
 #ifdef CONFIG_IFX_PTM_RX_TASKLET
   static struct tasklet_struct g_ptm_tasklet[] = {
@@ -927,8 +927,8 @@ static int proc_read_wanmib(char *page, char **start, off_t off, int count, int
     int len = 0;
     int i;
     char *title[] = {
-        "ptm0\n",
-        "ptmfast0\n"
+        "dsl0\n",
+        "dslfast0\n"
     };
 
     for ( i = 0; i < ARRAY_SIZE(title); i++ ) {
index 22f1e23..4e10d72 100644 (file)
@@ -121,7 +121,7 @@ static struct net_device_ops g_ptm_netdev_ops = {
 };
 
 static struct net_device *g_net_dev[1] = {0};
-static char *g_net_dev_name[1] = {"ptm0"};
+static char *g_net_dev_name[1] = {"dsl0"};
 
 static int g_ptm_prio_queue_map[8];
 
index efe631c..ca974b0 100755 (executable)
@@ -229,7 +229,7 @@ buffalo,wbmr-300hpd)
 esac
 
 ls /lib/modules/$(uname -r)/ltq_atm* 1> /dev/null 2>&1 && \
-       ucidef_add_atm_bridge "$vpi" "$vci" "$encaps" "$payload"
+       ucidef_add_atm_bridge "$vpi" "$vci" "$encaps" "$payload" "dsl"
 
 if lantiq_is_vdsl_system; then
        ucidef_add_vdsl_modem "$annex" "$tone" "$xfer_mode"
index 292d407..3b0313d 100644 (file)
@@ -29,6 +29,17 @@ rename_xdsl_ifname()
        IFNAME_CHANGED=1
 }
 
+add_atm_bridge_nameprefix()
+{
+       local cfg="$1"
+
+       config_get nameprefix "$cfg" nameprefix
+       [ -z "$nameprefix" ] || return
+
+       uci set network.${cfg}.nameprefix="dsl"
+       IFNAME_CHANGED=1
+}
+
 migrate_network_xdsl_ifname()
 {
        rename_xdsl_ifname network "$1" ifname
@@ -42,6 +53,7 @@ migrate_led_xdsl_ifname()
 
 config_load network
 config_foreach migrate_network_xdsl_ifname
+config_foreach add_atm_bridge_nameprefix atm-bridge
 
 [ "$IFNAME_CHANGED" = "1" ] && uci commit network