Bjørn Mork <bj...@mork.no> writes: > Probably. I don't know how to do that. Is there an IP family setting > for qmicli? Another alternative is modifying the 802.3 default in > ModemManager. That would be this part of src/mm-port-qmi.c: > > if (ctx->set_data_format) > flags |= (QMI_DEVICE_OPEN_FLAGS_NET_802_3 | > QMI_DEVICE_OPEN_FLAGS_NET_NO_QOS_HEADER); > > Changing it to something like > > if (ctx->set_data_format) > flags |= (QMI_DEVICE_OPEN_FLAGS_NET_RAW_IP | > QMI_DEVICE_OPEN_FLAGS_NET_NO_QOS_HEADER); > > should do for a simple test. I don't think you can use NM to configure > the netdev, though. So you'll have to do that manually after connecting.
I guess it's too late now, but testing this with MM is actually much easier. I was able to successfully change the mode after MM had opened the device by using qmicli -p -d /dev/cdc-wdm1 --device-open-net='net-raw-ip|net-no-qos-header' --get-service-version-info in aother terminal. This must be done after MM probes and opens the modem, but before connecting. (Note: I am testing this on a modem without WDA, which is why I use the '--device-open-net=' command. Any modem with WDA support should use '--wda-set-data-format=' instead.) Did this to test the fix for the missing IPv6 link local address, with the attached patch. Yuck, I do now see the major drawback with the random ifid-method: For some reason I imagined it would create an ifid once and then use it for all prefixes added. Cannot explain where I got that idea from. The ifid code is called for every prefix, and if it succeeds then we won't try to inherit an existing ifid. So the result is different ifids for every prefix: nemi:/home/bjorn# ifconfig wwan1 wwan1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.126.247.221 P-t-P:10.126.247.221 Mask:255.255.255.0 inet6 addr: fe80::c277:9246:bac8:195a/64 Scope:Link inet6 addr: 2a02:2121:81:8d4d:3209:fb71:3275:ce5/64 Scope:Global UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:60 errors:0 dropped:0 overruns:0 frame:0 TX packets:159 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:5188 (5.0 KiB) TX bytes:10620 (10.3 KiB) Bringing the interface down and up again results in two new, unrelated, ifids: nemi:/home/bjorn# ifconfig wwan1 down nemi:/home/bjorn# ifconfig wwan1 up nemi:/home/bjorn# ifconfig wwan1 wwan1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.126.247.221 P-t-P:10.126.247.221 Mask:255.255.255.0 inet6 addr: 2a02:2121:81:8d4d:7eea:c498:60eb:edee/64 Scope:Global inet6 addr: fe80::8f0b:4ca6:e22e:7149/64 Scope:Link UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:61 errors:0 dropped:0 overruns:0 frame:0 TX packets:160 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:5292 (5.1 KiB) TX bytes:10668 (10.4 KiB) That's not good... Maybe it's better to let the driver add an address after all. Unless there is a way to make the addrconf code always consider inheritance. Bjørn
>From 7776a8161fca6de07d45d3c1bde11836bacde0c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bj...@mork.no> Date: Mon, 30 Nov 2015 11:06:40 +0100 Subject: [RFC] ipv6: use a random ifid for headerless devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Generating a random ifid for devices with no L2 header at all, allowing such devices to take part in IPv6 autoconfiguration. The tuntap driver is one example of a driver where such an ifid would be useful. Note that as there is no persistence, new addresses will be generated every time an interface is brought up: # ip -6 addr show dev tun0 8: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 state UNKNOWN qlen 500 inet6 fe80::eef2:111c:f270:92ba/64 scope link valid_lft forever preferred_lft forever # ip link set tun0 down # ip link set tun0 up # ip -6 addr show dev tun0 8: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 state UNKNOWN qlen 500 inet6 fe80::eec0:48d0:6b52:8835/64 scope link valid_lft forever preferred_lft forever Signed-off-by: Bjørn Mork <bj...@mork.no> --- net/ipv6/addrconf.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index d84742f003a9..6cf3cae691a5 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -53,6 +53,7 @@ #include <linux/if_arp.h> #include <linux/if_arcnet.h> #include <linux/if_infiniband.h> +#include <linux/random.h> #include <linux/route.h> #include <linux/inetdevice.h> #include <linux/init.h> @@ -2026,6 +2027,13 @@ static int addrconf_ifid_ip6tnl(u8 *eui, struct net_device *dev) return 0; } +static int addrconf_ifid_random(u8 *eui, struct net_device *dev) +{ + get_random_bytes(eui, 8); + eui[0] |= 0x02; + return 0; +} + static int ipv6_generate_eui64(u8 *eui, struct net_device *dev) { switch (dev->type) { @@ -2047,6 +2055,8 @@ static int ipv6_generate_eui64(u8 *eui, struct net_device *dev) return addrconf_ifid_ieee1394(eui, dev); case ARPHRD_TUNNEL6: return addrconf_ifid_ip6tnl(eui, dev); + case ARPHRD_NONE: + return addrconf_ifid_random(eui, dev); } return -1; } @@ -3069,8 +3079,8 @@ static void addrconf_dev_config(struct net_device *dev) (dev->type != ARPHRD_IEEE802154) && (dev->type != ARPHRD_IEEE1394) && (dev->type != ARPHRD_TUNNEL6) && - (dev->type != ARPHRD_6LOWPAN)) { - /* Alas, we support only Ethernet autoconfiguration. */ + (dev->type != ARPHRD_6LOWPAN) && + (dev->type != ARPHRD_NONE)) { return; } -- 2.1.4
_______________________________________________ networkmanager-list mailing list networkmanager-list@gnome.org https://mail.gnome.org/mailman/listinfo/networkmanager-list