mirror_ubuntu-kernels/drivers/net/wireless/ath/ath9k
Michael Walle 83216e3988 of: net: pass the dst buffer to of_get_mac_address()
of_get_mac_address() returns a "const void*" pointer to a MAC address.
Lately, support to fetch the MAC address by an NVMEM provider was added.
But this will only work with platform devices. It will not work with
PCI devices (e.g. of an integrated root complex) and esp. not with DSA
ports.

There is an of_* variant of the nvmem binding which works without
devices. The returned data of a nvmem_cell_read() has to be freed after
use. On the other hand the return of_get_mac_address() points to some
static data without a lifetime. The trick for now, was to allocate a
device resource managed buffer which is then returned. This will only
work if we have an actual device.

Change it, so that the caller of of_get_mac_address() has to supply a
buffer where the MAC address is written to. Unfortunately, this will
touch all drivers which use the of_get_mac_address().

Usually the code looks like:

  const char *addr;
  addr = of_get_mac_address(np);
  if (!IS_ERR(addr))
    ether_addr_copy(ndev->dev_addr, addr);

This can then be simply rewritten as:

  of_get_mac_address(np, ndev->dev_addr);

Sometimes is_valid_ether_addr() is used to test the MAC address.
of_get_mac_address() already makes sure, it just returns a valid MAC
address. Thus we can just test its return code. But we have to be
careful if there are still other sources for the MAC address before the
of_get_mac_address(). In this case we have to keep the
is_valid_ether_addr() call.

The following coccinelle patch was used to convert common cases to the
new style. Afterwards, I've manually gone over the drivers and fixed the
return code variable: either used a new one or if one was already
available use that. Mansour Moufid, thanks for that coccinelle patch!

<spml>
@a@
identifier x;
expression y, z;
@@
- x = of_get_mac_address(y);
+ x = of_get_mac_address(y, z);
  <...
- ether_addr_copy(z, x);
  ...>

@@
identifier a.x;
@@
- if (<+... x ...+>) {}

@@
identifier a.x;
@@
  if (<+... x ...+>) {
      ...
  }
- else {}

@@
identifier a.x;
expression e;
@@
- if (<+... x ...+>@e)
-     {}
- else
+ if (!(e))
      {...}

@@
expression x, y, z;
@@
- x = of_get_mac_address(y, z);
+ of_get_mac_address(y, z);
  ... when != x
</spml>

All drivers, except drivers/net/ethernet/aeroflex/greth.c, were
compile-time tested.

Suggested-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Michael Walle <michael@walle.cc>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-04-13 14:35:02 -07:00
..
ahb.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
ani.c ath9k: Replace HTTP links with HTTPS ones 2020-08-14 17:44:14 +03:00
ani.h
antenna.c ath9k: fix RX_STAT_INC() etc macros 2018-10-13 20:27:35 +03:00
ar953x_initvals.h
ar955x_1p0_initvals.h
ar956x_initvals.h
ar5008_initvals.h ath9k: ar5008_initvals: Move ar5416Bank{0,1,2,3,7} to where they are used 2020-08-27 13:17:40 +03:00
ar5008_phy.c ath9k: ar5008_phy: Demote half completed function headers 2020-11-07 10:07:51 +02:00
ar9001_initvals.h ath9k: ar9001_initvals: Remove unused array 'ar5416Bank6_9100' 2020-08-27 13:17:35 +03:00
ar9002_calib.c ath9k: add calibration timeout for AR9002 2020-04-28 12:07:21 +03:00
ar9002_hw.c
ar9002_initvals.h ath9k: ar9002_initvals: Remove unused array 'ar9280PciePhy_clkreq_off_L1_9280' 2020-08-27 13:17:32 +03:00
ar9002_mac.c ath9k: Use fallthrough pseudo-keyword 2020-08-14 18:04:06 +03:00
ar9002_phy.c ath9k: Use fallthrough pseudo-keyword 2020-08-14 18:04:06 +03:00
ar9002_phy.h
ar9003_2p2_initvals.h ath9k: ar9003_2p2_initvals: Remove unused const variables 2020-11-07 10:07:48 +02:00
ar9003_aic.c ath9k: use true,false for bool variable 2020-01-26 12:19:02 +02:00
ar9003_aic.h
ar9003_buffalo_initvals.h
ar9003_calib.c
ar9003_eeprom.c ath9k_hw: fix uninitialized variable data 2019-10-01 14:18:43 +03:00
ar9003_eeprom.h ath9k: Read noise floor calibration data from eeprom 2018-01-25 07:33:36 +02:00
ar9003_hw.c net: Fix misspellings of "configure" and "configuration" 2019-10-28 13:41:01 -07:00
ar9003_mac.c ath9k: Use fallthrough pseudo-keyword 2020-08-14 18:04:06 +03:00
ar9003_mac.h
ar9003_mci.c ath9k: remove set but not used variable 'new_flags' 2018-11-05 13:18:34 +02:00
ar9003_mci.h
ar9003_paprd.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
ar9003_phy.c ath9k: drop redundant code in ar9003_hw_set_channel 2019-04-29 17:56:03 +03:00
ar9003_phy.h
ar9003_rtt.c
ar9003_rtt.h
ar9003_wow.c
ar9330_1p1_initvals.h ath9k: ar9330_1p1_initvals: Remove unused const variable 'ar9331_common_tx_gain_offset1_1' 2020-11-07 10:07:39 +02:00
ar9330_1p2_initvals.h
ar9340_initvals.h ath9k: ar9340_initvals: Remove unused const variable 'ar9340Modes_ub124_tx_gain_table_1p0' 2020-11-07 10:07:42 +02:00
ar9462_2p0_initvals.h
ar9462_2p1_initvals.h
ar9485_initvals.h ath9k: ar9485_initvals: Remove unused const variable 'ar9485_fast_clock_1_1_baseband_postamble' 2020-11-07 10:07:45 +02:00
ar9565_1p0_initvals.h
ar9565_1p1_initvals.h
ar9580_1p0_initvals.h ath9k: Remove set but not used variable 2020-09-29 11:29:20 +03:00
ath9k_pci_owl_loader.c ath9k: use iowrite32 over __raw_writel 2019-11-28 10:18:51 +02:00
ath9k.h ath9k: fix transmitting to stations in dynamic SMPS mode 2021-02-18 08:07:25 +02:00
beacon.c wireless-drivers-next patches for v5.10 2020-09-11 13:32:31 -07:00
btcoex.c
btcoex.h
calib.c ath9k: add calibration timeout for AR9002 2020-04-28 12:07:21 +03:00
calib.h
channel.c ath9k: Use fallthrough pseudo-keyword 2020-08-14 18:04:06 +03:00
common-beacon.c
common-beacon.h
common-debug.c ath9k: remove trailing semicolon in macro definition 2020-12-07 18:13:18 +02:00
common-debug.h ath9k: add counters for good and errorneous FFT/spectral frames 2018-10-02 07:43:32 +03:00
common-init.c ath9k: spelling s/premble/preamble/ 2018-03-26 18:22:44 +03:00
common-init.h
common-spectral.c ath9k: make relay callbacks const 2020-12-15 22:46:18 -08:00
common-spectral.h ath9k: fix and simplify FFT max index retrieval 2018-10-02 07:43:56 +03:00
common.c Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git 2017-05-19 11:47:44 +03:00
common.h
debug_sta.c ath9k: Switch to mac80211 TXQ scheduling and airtime APIs 2019-02-12 20:44:41 +02:00
debug.c ath9k: fix data bus crash when setting nf_override via debugfs 2021-02-11 08:49:45 +02:00
debug.h ath9k: Switch to mac80211 TXQ scheduling and airtime APIs 2019-02-12 20:44:41 +02:00
dfs_debug.c ath9k: remove trailing semicolon in macro definition 2020-12-07 18:13:18 +02:00
dfs_debug.h
dfs.c ath: add support to get the detected radar specifications 2018-05-25 13:15:21 +03:00
dfs.h
dynack.c ath9k: work around false-positive gcc warning 2020-11-10 20:12:42 +02:00
dynack.h ath9k: dynack: make ewma estimation faster 2018-11-06 18:26:50 +02:00
eeprom_4k.c ath9k: Differentiate between max combined and per chain power 2019-04-29 17:53:43 +03:00
eeprom_9287.c ath9k: move RELAY and DEBUG_FS to ATH9K[_HTC]_DEBUGFS 2017-01-13 15:29:24 +02:00
eeprom_def.c ath9k: Use fallthrough pseudo-keyword 2020-08-14 18:04:06 +03:00
eeprom.c ath9k: Differentiate between max combined and per chain power 2019-04-29 17:53:43 +03:00
eeprom.h ath9k: Add cast to u8 to FREQ2FBIN macro 2017-04-19 17:00:48 +03:00
gpio.c ath: Convert timers to use timer_setup() 2017-10-27 16:54:19 +03:00
hif_usb.c ath9k: hif_usb: fix race condition between usb_get_urb() and usb_kill_anchored_urbs() 2020-09-21 16:05:43 +03:00
hif_usb.h ath9k: Fix general protection fault in ath9k_hif_usb_rx_cb 2020-04-07 07:57:26 +03:00
htc_drv_beacon.c mac80211: rename csa counters to countdown counters 2020-08-27 14:12:15 +02:00
htc_drv_debug.c wireless: Use octal not symbolic permissions 2018-03-27 11:01:13 +03:00
htc_drv_gpio.c
htc_drv_init.c ath9k: convert tasklets to use new tasklet_setup() API 2020-08-27 13:16:18 +03:00
htc_drv_main.c ath: Modify ath_key_delete() to not need full key entry 2020-12-17 08:51:17 +02:00
htc_drv_txrx.c ath9k_htc: adhere to the DONT_REORDER transmit flag 2020-12-09 09:05:20 +02:00
htc_hst.c ath9k: Fix potential out of bounds in ath9k_htc_txcompletion_cb() 2020-08-17 13:24:01 +03:00
htc_hst.h
htc.h ath9k: convert tasklets to use new tasklet_setup() API 2020-08-27 13:16:18 +03:00
hw-ops.h
hw.c module: remove never implemented MODULE_SUPPORTED_DEVICE 2021-03-17 13:16:18 -07:00
hw.h ath9k: Postpone key cache entry deletion for TXQ frames reference it 2020-12-17 08:51:20 +02:00
init.c of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
Kconfig ath9k: fix build error with LEDS_CLASS=m 2021-01-28 09:29:34 +02:00
link.c ath: Convert timers to use timer_setup() 2017-10-27 16:54:19 +03:00
mac.c ath9k: add MSI support 2018-01-16 16:29:22 +02:00
mac.h mac80211: separate encoding/bandwidth from flags 2017-04-28 10:41:45 +02:00
main.c ath9k: Postpone key cache entry deletion for TXQ frames reference it 2020-12-17 08:51:20 +02:00
Makefile ath9k: add loader for AR92XX (and older) pci(e) 2019-09-04 09:12:35 +03:00
mci.c ath9k: remove cast to void pointer 2017-09-25 10:13:58 +03:00
mci.h
pci.c ath9k: Check the return value of pcie_capability_read_*() 2020-07-20 20:09:36 +03:00
phy.h
recv.c ath9k: Set RX filter based to allow broadcast Action frame RX 2020-05-30 17:17:20 +03:00
reg_aic.h
reg_mci.h
reg_wow.h
reg.h ath9k: add MSI support 2018-01-16 16:29:22 +02:00
rng.c ath9k: avoid potential freezing during random generator read 2017-06-28 19:54:38 +03:00
tx99.c ath9k: add back support for using active monitor interfaces for tx99 2018-10-02 07:54:26 +03:00
wmi.c ath9k: convert tasklets to use new tasklet_setup() API 2020-08-27 13:16:18 +03:00
wmi.h ath9k: convert tasklets to use new tasklet_setup() API 2020-08-27 13:16:18 +03:00
wow.c
xmit.c ath9k: fix transmitting to stations in dynamic SMPS mode 2021-02-18 08:07:25 +02:00