Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

wl18xx: show rx_frames_per_rates as an array as it really is

In struct wl18xx_acx_rx_rate_stat, rx_frames_per_rates field is an
array, not a number. This means WL18XX_DEBUGFS_FWSTATS_FILE can't be
used to display this field in debugfs (it would display a pointer, not
the actual data). Use WL18XX_DEBUGFS_FWSTATS_FILE_ARRAY instead.

This bug has been found by adding a __printf attribute to
wl1271_format_buffer. gcc complained about "format '%u' expects
argument of type 'unsigned int', but argument 5 has type 'u32 *'".

Fixes: c5d94169e818 ("wl18xx: use new fw stats structures")
Signed-off-by: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>

authored by

Nicolas Iooss and committed by
Kalle Valo
a3fa71c4 7daa54b7

+3 -3
+1 -1
drivers/net/wireless/ti/wl18xx/debugfs.c
··· 139 139 WL18XX_DEBUGFS_FWSTATS_FILE(rx_filter, accum_arp_pend_requests, "%u"); 140 140 WL18XX_DEBUGFS_FWSTATS_FILE(rx_filter, max_arp_queue_dep, "%u"); 141 141 142 - WL18XX_DEBUGFS_FWSTATS_FILE(rx_rate, rx_frames_per_rates, "%u"); 142 + WL18XX_DEBUGFS_FWSTATS_FILE_ARRAY(rx_rate, rx_frames_per_rates, 50); 143 143 144 144 WL18XX_DEBUGFS_FWSTATS_FILE_ARRAY(aggr_size, tx_agg_vs_rate, 145 145 AGGR_STATS_TX_AGG*AGGR_STATS_TX_RATE);
+2 -2
drivers/net/wireless/ti/wlcore/debugfs.h
··· 26 26 27 27 #include "wlcore.h" 28 28 29 - int wl1271_format_buffer(char __user *userbuf, size_t count, 30 - loff_t *ppos, char *fmt, ...); 29 + __printf(4, 5) int wl1271_format_buffer(char __user *userbuf, size_t count, 30 + loff_t *ppos, char *fmt, ...); 31 31 32 32 int wl1271_debugfs_init(struct wl1271 *wl); 33 33 void wl1271_debugfs_exit(struct wl1271 *wl);