Bjørn Mork <bjorn mork no> writes:
But I believe I implemented it the last time this was discussed. I'll see if I can dig up the old code for a demo. Not going to rush this anyway. I'd like everyone to be happy with the result. And it's going to be immutable once it's in.
git is a wonderful tool. Nothing is ever lost :)
I found my example code in an old v3.2 based branch, and turned it into
a demo on the bus to job. Note that this requires a minor change to
usbnet.c as well, to prevent it from doing eth_type_trans() on the rx
skbs we pass on to it. Therefore two, eh.. three, patches.
Warning: Trying the qmi_wwan raw-ip feature without the usbnet patch is
a sure path to an oops.
Works for me(tm). Only tested on an E392 for now:
nemi:/tmp# ifconfig wwan1
wwan1 Link encap:Ethernet HWaddr 92:b9:2a:c0:4f:96
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
nemi:/tmp# cat /sys/class/net/wwan1/qmi/raw_ip
N
nemi:/tmp# echo 1 >/sys/class/net/wwan1/qmi/raw_ip
nemi:/tmp# ifconfig wwan1
wwan1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
POINTOPOINT NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
nemi:/tmp# cat /sys/class/net/wwan1/qmi/raw_ip
Y
bjorn nemi:~$ qmicli -d /dev/cdc-wdm1 --device-open-net='net-raw-ip|net-no-qos-header'
--wds-start-network=apn=telenor --wds-follow-network
[/dev/cdc-wdm1] Network started
Packet data handle: '34967784'
Ctrl+C will stop the network
[/dev/cdc-wdm1] Connection status: 'connected'
bjorn nemi:~$ qmicli -d /dev/cdc-wdm1 --client-cid=1 --client-no-release-cid --wds-get-current-settings
[/dev/cdc-wdm1] Current settings retrieved:
IP Family: IPv4
IPv4 address: 46.157.38.113
IPv4 subnet mask: 255.255.255.252
IPv4 gateway address: 46.157.38.114
IPv4 primary DNS: 193.213.112.4
IPv4 secondary DNS: 130.67.15.198
MTU: 1500
Domains: none
[/dev/cdc-wdm1] Client ID not released:
Service: 'wds'
CID: '1'
nemi:/tmp# ifconfig wwan1 46.157.38.113
nemi:/tmp# 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:46.157.38.113 P-t-P:46.157.38.113 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
nemi:/tmp# ip route add 148.122.171.130 dev wwan1
nemi:/tmp# ping -c3 148.122.171.130
PING 148.122.171.130 (148.122.171.130) 56(84) bytes of data.
64 bytes from 148.122.171.130: icmp_seq=1 ttl=58 time=156 ms
64 bytes from 148.122.171.130: icmp_seq=2 ttl=58 time=24.5 ms
64 bytes from 148.122.171.130: icmp_seq=3 ttl=58 time=27.5 ms
--- 148.122.171.130 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 24.568/69.492/156.345/61.426 ms
nemi:/tmp# tshark -nxxi wwan1
tshark: Lua: Error during loading:
[string "/usr/share/wireshark/init.lua"]:46: dofile has been disabled due to running Wireshark as superuser.
See http://wiki.wireshark.org/CaptureSetup/CapturePrivileges for help in running Wireshark as an unprivileged
user.
Running as user "root" and group "root". This could be dangerous.
Capturing on 'wwan1'
0000 45 00 00 54 75 99 40 00 40 01 30 05 2e 9d 26 71 E Tu @.0...&q
0010 94 7a ab 82 08 00 4d e4 6e c0 00 01 6e 77 55 56 .z....M.n...nwUV
0020 00 00 00 00 ad b9 0b 00 00 00 00 00 10 11 12 13 ................
0030 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 ............ !"#
0040 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 $%&'()*+,-./0123
0050 34 35 36 37 4567
0000 45 04 00 54 01 98 00 00 3a 01 ea 02 94 7a ab 82 E..T....:....z..
0010 2e 9d 26 71 00 00 55 e4 6e c0 00 01 6e 77 55 56 ..&q..U.n...nwUV
0020 00 00 00 00 ad b9 0b 00 00 00 00 00 10 11 12 13 ................
0030 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 ............ !"#
0040 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 $%&'()*+,-./0123
0050 34 35 36 37 4567
0000 45 00 00 54 76 2f 40 00 40 01 2f 6f 2e 9d 26 71 E..Tv/@ /o..&q
0010 94 7a ab 82 08 00 73 dc 6e c0 00 02 6f 77 55 56 .z....s.n...owUV
0020 00 00 00 00 86 c0 0b 00 00 00 00 00 10 11 12 13 ................
0030 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 ............ !"#
0040 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 $%&'()*+,-./0123
0050 34 35 36 37 4567
0000 45 04 00 54 01 f6 00 00 3a 01 e9 a4 94 7a ab 82 E..T....:....z..
0010 2e 9d 26 71 00 00 7b dc 6e c0 00 02 6f 77 55 56 ..&q..{.n...owUV
0020 00 00 00 00 86 c0 0b 00 00 00 00 00 10 11 12 13 ................
0030 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 ............ !"#
0040 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 $%&'()*+,-./0123
0050 34 35 36 37 4567
0000 45 00 00 54 76 7f 40 00 40 01 2f 1f 2e 9d 26 71 E Tv @./...&q
0010 94 7a ab 82 08 00 b7 d8 6e c0 00 03 70 77 55 56 .z......n...pwUV
0020 00 00 00 00 41 c3 0b 00 00 00 00 00 10 11 12 13 ....A...........
0030 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 ............ !"#
0040 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 $%&'()*+,-./0123
0050 34 35 36 37 4567
0000 45 04 00 54 02 bb 00 00 3a 01 e8 df 94 7a ab 82 E..T....:....z..
0010 2e 9d 26 71 00 00 bf d8 6e c0 00 03 70 77 55 56 ..&q....n...pwUV
0020 00 00 00 00 41 c3 0b 00 00 00 00 00 10 11 12 13 ....A...........
0030 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 ............ !"#
0040 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 $%&'()*+,-./0123
0050 34 35 36 37 4567
Judgement time coming up :) What do you think? Yes, this might not be
the correct forum for kernel patches, but I believe it is where this has
any meaning. The load is on userspace here, and there is absolutely no
reason to submit this to the kernel unless it is going to be used by
NM/MM.
Bjørn
Attachment:
0001-usbnet-allow-mini-drivers-to-consume-L2-headers.patch
Description: Text Data
Attachment:
0002-net-qmi_wwan-support-raw-IP-mode.patch
Description: Text Data
Attachment:
0003-net-qmi_wwan-document-the-qmi-raw_ip-sysfs-file.patch
Description: Text Data