** Description changed:

  Impact:
  
  The wcn36xx driver in Xenial/linux-snapdragon had an ability to
- autogerenate its MAC address upon boot, or read it from a file
+ autogenerate its MAC address upon boot, or read it from a file
  (/lib/firmware/wlan/macaddr0). The linux-snapdragon kernel in Bionic
- doesn't have this ability.
+ doesn't have this feature.
  
- While by itself it's not a bug (Xenial used a QCOM provided custom
- driver, while Bionic uses the upstream wcn36xx driver) and can be
- easility workarounded by specifying the hw address in
- /etc/network/interfaces, or set via ifconfig on the commandline, it
- turned out to be a real problem on ubuntu core:
+ While by itself not a bug (Xenial used a QCOM provided custom driver,
+ while Bionic uses the upstream wcn36xx driver), it can be easily work-
+ arounded by specifying the hw address in /etc/network/interfaces, or set
+ using ifconfig on the command line, but it turned out to be a real
+ problem on ubuntu core:
  
- 1) upon boot, with now MAC address assigned, the wcn36xx assigns itself
- the empty value "00:00:00:00:00" and that prevents the network interface
- to work at all, until a valid address is set
+ 1) upon boot, with no MAC address assigned, the wcn36xx assigns itself the
+ dummy address "00:00:00:00:00" and that prevents the network interface from 
working at all, until a valid address is set
  
- 2) the ubuntu core installed doesn't have any knowledge about this, it
- tris to 'up' the interface and upon failure, it simply marks it as 'not
- working'
+ 2) the ubuntu core installer doesn't have any knowledge about this
+ behaviour, it simply tries to bring up the interface and on failure, it
+ marks it as 'not working'
  
- On top of that, ubuntu core ships a small script in initramfs that
+ On top of that, ubuntu core ships a small script in initramfs, that
  generates the /lib/firmware/wlan/macaddr0 file starting from the android
  boot serial, effectively generating a unique MAC address per board:
- clearly, without driver support for this feature, the ubuntu core
- efforts fall flat.
+ clearly, without driver support, this ubuntu core feature doesn't work.
  
  Fix:
  
- Import back from Xenial the MAC generation mechanism: the pseudo random
- generation and parsing of /lib/firmware/wlan/macaddr0 - see the attached
- patch.
+ Import back the MAC generation mechanism from Xenial: the pseudo random
+ generation and the parsing of /lib/firmware/wlan/macaddr0 - see the attached 
patch.
  
  How to test:
  
  Unpon boot, if no /lib/firmware/wlan/macaddr0 is present, the kernel
  will print:
  
- [   10.612701] wcn36xx a204000.wcnss:smd-edge:wcnss:wifi: Direct firmware 
load for wlan/macaddr0 failed with error -2
- [   10.612713] wcn36xx a204000.wcnss:smd-edge:wcnss:wifi: Failed (-2) to read 
macaddressfile wlan/macaddr0, using a random address instead
+ [ 10.612701] wcn36xx a204000.wcnss:smd-edge:wcnss:wifi: Direct firmware load 
for wlan/macaddr0 failed with error -2
+ [ 10.612713] wcn36xx a204000.wcnss:smd-edge:wcnss:wifi: Failed (-2) to read 
macaddressfile wlan/macaddr0, using a random address instead
  
  ubuntu@dragon410c:~$ ifconfig wlan0
- wlan0: flags=4098<BROADCAST,MULTICAST>  mtu 1500
-         ether 00:0a:f5:d5:54:d7  txqueuelen 1000  (Ethernet)
-         RX packets 0  bytes 0 (0.0 B)
-         RX errors 0  dropped 0  overruns 0  frame 0
-         TX packets 0  bytes 0 (0.0 B)
-         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
+ wlan0: flags=4098<BROADCAST,MULTICAST> mtu 1500
+         ether 00:0a:f5:d5:54:d7 txqueuelen 1000 (Ethernet)
+         RX packets 0 bytes 0 (0.0 B)
+         RX errors 0 dropped 0 overruns 0 frame 0
+         TX packets 0 bytes 0 (0.0 B)
+         TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  
+ else, if /lib/firmware/wlan/macaddr0 is present, its content will be
+ used to generate wlan0 MAC address:
  
- else, if /lib/firmware/wlan/macaddr0 is present, its content will be used to 
generate wlan0 MAC address:
- 
- ubuntu@dragon410c:~$ cat /lib/firmware/wlan/macaddr0 
+ ubuntu@dragon410c:~$ cat /lib/firmware/wlan/macaddr0
  fe:1a:19:77:d9:88
  
  ubuntu@dragon410c:~$ ifconfig wlan0
- wlan0: flags=4098<BROADCAST,MULTICAST>  mtu 1500
-         ether fe:1a:19:77:d9:88  txqueuelen 1000  (Ethernet)
-         RX packets 0  bytes 0 (0.0 B)
-         RX errors 0  dropped 0  overruns 0  frame 0
-         TX packets 0  bytes 0 (0.0 B)
-         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
- 
+ wlan0: flags=4098<BROADCAST,MULTICAST> mtu 1500
+         ether fe:1a:19:77:d9:88 txqueuelen 1000 (Ethernet)
+         RX packets 0 bytes 0 (0.0 B)
+         RX errors 0 dropped 0 overruns 0 frame 0
+         TX packets 0 bytes 0 (0.0 B)
+         TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  
  Regression potential:
  
  Low - the patch is small and the code is wrapped in a Kconfig option
- (WCN36XX_SNAPDRAGON_HACKS) that only affects the linux-snapdragon
- flavour, leaving the generic kernel untouched.
+ (WCN36XX_SNAPDRAGON_HACKS) that only affects the linux-snapdragon flavour,
+ leaving the generic kernel untouched.
  
  ---

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1776491

Title:
  linux-snapdragon: wcn36xx: mac address generation on boot

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1776491/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to