Re: How to let devcoredump know data has been read?
On 6/6/2018 12:53 AM, Brian Norris wrote: Unfortunately, devcoredump is a bit lacking in documentation. Arend was writing a bit for the new trigger mechanism at least. I did indeed write ABI doc for user-space trigger mechanism and you brought up the need to have ABI doc for devcoredump. I agree it would be useful and it is dangling at the bottom of my todo list so I did not get to it (yet). Hopefully I can spend a moment on it. Regards, Arend
Re: How to let devcoredump know data has been read?
On 6/6/2018 7:04 PM, Ben Greear wrote: On 06/05/2018 03:53 PM, Brian Norris wrote: Hi, On Tue, Jun 05, 2018 at 03:27:28PM -0700, Ben Greear wrote: I have been testing ath10k on 4.16, which uses the devcoredump API to notify about dumps. I am able to see the binary crash dump at /sys/class/devcoredump/devcd2/data, for instance, but if I do another crash quickly, I get no new uevent sent and no new crash. I see there is a 5 minute timer on the coredump data, but it also seems to indicate that if I read the crash, the data should be cleared and ready to be recreated again? How do you notify the system that the crash data has been read? I tried 'cat' on the data file, but that did not seem to clear anything. Try *writing* to it? https://elixir.bootlin.com/linux/v4.16/source/drivers/base/devcoredump.c#L91 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=833c95456a70826d1384883b73fd23aff24d366f The dumped data will be readable in sysfs in the virtual device's data file under /sys/class/devcoredump/devcd*/. Writing to it will free the data and remove the device, as does a 5-minute timeout. e.g.: # ls -l /sys/class/devcoredump/devcd1 lrwxrwxrwx. 1 root root 0 Jun 5 15:49 /sys/class/devcoredump/devcd1 -> ../../devices/virtual/devcoredump/devcd1 # echo 1 > /sys/class/devcoredump/devcd1/data # ls -l /sys/class/devcoredump/devcd1 ls: cannot access '/sys/class/devcoredump/devcd1': No such file or directory Thanks to all who responded. That indeed works just fine. Just in case you know a quick answer: I opened a netlink socket to listen to uevents so I would know when FW crashed. It receives the kernel messages, but also receives 'libudev' events which seem to have some binary header in them (which I could not google any info about how to decode it). Is there an easy way to tell the socket to not send the libudev events? Hi Ben, When I was playing with..eh..implementing devcoredump functionality in brcmfmac, I created a small app for it based on [1]. I should have put it under version control so I can not make it easier for you. Regards, Arend [1] http://www.signal11.us/oss/udev/
Re: How to let devcoredump know data has been read?
On 06/05/2018 03:53 PM, Brian Norris wrote: Hi, On Tue, Jun 05, 2018 at 03:27:28PM -0700, Ben Greear wrote: I have been testing ath10k on 4.16, which uses the devcoredump API to notify about dumps. I am able to see the binary crash dump at /sys/class/devcoredump/devcd2/data, for instance, but if I do another crash quickly, I get no new uevent sent and no new crash. I see there is a 5 minute timer on the coredump data, but it also seems to indicate that if I read the crash, the data should be cleared and ready to be recreated again? How do you notify the system that the crash data has been read? I tried 'cat' on the data file, but that did not seem to clear anything. Try *writing* to it? https://elixir.bootlin.com/linux/v4.16/source/drivers/base/devcoredump.c#L91 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=833c95456a70826d1384883b73fd23aff24d366f The dumped data will be readable in sysfs in the virtual device's data file under /sys/class/devcoredump/devcd*/. Writing to it will free the data and remove the device, as does a 5-minute timeout. e.g.: # ls -l /sys/class/devcoredump/devcd1 lrwxrwxrwx. 1 root root 0 Jun 5 15:49 /sys/class/devcoredump/devcd1 -> ../../devices/virtual/devcoredump/devcd1 # echo 1 > /sys/class/devcoredump/devcd1/data # ls -l /sys/class/devcoredump/devcd1 ls: cannot access '/sys/class/devcoredump/devcd1': No such file or directory Thanks to all who responded. That indeed works just fine. Just in case you know a quick answer: I opened a netlink socket to listen to uevents so I would know when FW crashed. It receives the kernel messages, but also receives 'libudev' events which seem to have some binary header in them (which I could not google any info about how to decode it). Is there an easy way to tell the socket to not send the libudev events? Thanks, Ben -- Ben Greear Candela Technologies Inc http://www.candelatech.com
Re: [PATCH V4 0/6] Cypress license and firmware update
On Wed, May 30, 2018 at 3:27 AM Chi-Hsien Lin wrote: > > Update Cypress license termination clause and several firmware files. > > Chi-Hsien Lin (6): > Update Cypress license termination clause > brcm: update firmware for bcm43430 sdio > brcm: update firmware for bcm43340 sdio > brcm: update firmware for bcm43362 sdio > brcm: update firmware for bcm4354 sdio > brcm: update firmware for bcm4356 pcie > > LICENCE.cypress | 5 ++--- > WHENCE | 10 +- > brcm/brcmfmac43340-sdio.bin | Bin 402210 -> 400864 bytes > brcm/brcmfmac43362-sdio.bin | Bin 219557 -> 200801 bytes > brcm/brcmfmac43430-sdio.bin | Bin 369577 -> 388739 bytes > brcm/brcmfmac4354-sdio.bin | Bin 626589 -> 605388 bytes > brcm/brcmfmac4356-pcie.bin | Bin 661999 -> 648770 bytes > 7 files changed, 7 insertions(+), 8 deletions(-) I've applied the series and pushed it out. Thank you! josh
RE: [EXTERNAL] Re: [RFT 3/6] wlcore: Add support for runtime PM
> > * Tony Lindgren [180605 04:22]: > > > * Reizer, Eyal [180603 06:07]: > > > > I have noticed the following recovery a couple of times on my setup > > when the board was > > > > just sitting for a long time with just pings > > > > It starts with a firmware recovery started from the interrupt handler > but > > the recovery fails > > > > > > Sounds like the recovery needs some more work :) > > > > > > > leaving the sdio stuck. > > > > At this stage the only way to get out of it is unload/load of the driver > > modules. > > > > Have you seen this on your side as well? > > > > > > Hmm I don't think I've seen this one yet. > > > > > > > 64 bytes from 192.168.100.1: seq=32772 ttl=64 time=9.644 ms > > > > 64 bytes from 192.168.100.1: seq=32773 ttl=64 time=9.572 ms > > > > 64 bytes from 192.168.100.1: seq=32774 ttl=64 time=10.974 ms > > > > 64 bytes from 192.168.100.1: seq=32775 ttl=64 time=9.618 ms > > > > [127899.040526] wlcore: ERROR SW watchdog interrupt received! > starting > > recovery. > > > > > > Do you know what does the SW watchdog means here? Does it mean the > > > interrupt did not get delivered to wlcore? Or a spurious IRQ to wlcore? > > > Or a timeout waiting for the ELP wake interrupt? > > > > Also, can you check if patch "[RFT 7/6] wlcore: Make sure firmware is > > initialized > > in wl1271_op_add_interface()" already fixes this issue if you did not have > > it > > already applied? > > > Sure will do. The firmware that showed this issue has some extra debugging > info > Enabled in it and this may have been the cause of the recovery (Infernal > logging error). > The fact that it didn't recover was the issue itself. I am now running with > the > latest's > firmware 8.9.0.0.78 and will see if I can still replicate it. > If I see it, I will try applying patch 7 and see if it helps. Right now I > don't yet > have > It applied. > Latest wl18xx firmware was running fine for two days without the crash, so it was indeed just a logging issue in this case. However, trying a wl1281 module and enabling PLT mode it boots ok but after a couple of seconds the below crash is seen. Seems like a similar crash to the one I have seen before,right? I do have patch 7/6 applied now. sh-4.4# calibrator wlan0 plt power_mode on [ 57.198492] wlcore: power up [ 57.757871] wlcore: firmware booted in PLT mode PLT_ON (PLT 7.3.10.2.142) sh-4.4# sh-4.4# sh-4.4# ca[ 86.485020] [ cut here ] [ 86.490334] WARNING: CPU: 0 PID: 502 at drivers/net/wireless/ti/wlcore/main.c:806 wl12xx_queue_recovery_work+0x64/0x6c [wlcore] [ 86.502047] Modules linked in: arc4 pru_rproc wl12xx pruss_intc wlcore mac80211 cfg80211 pruss ti_am335x_tsc ti_am335x_adc musb_dsps musb_hdrc udc_core usbcore phy_am335x phy_generic phy_am335x_control usb_common pm33xx wkup_m3_ipc snd_soc_simple_card snd_soc_simple_card_utils wkup_m3_rproc remoteproc omap_aes_driver crypto_engine omap_sham omap_crypto ti_emif_sram pruss_soc_bus snd_soc_tlv320aic3x wlcore_sdio matrix_keypad rtc_omap ti_am335x_tscadc omap_wdt matrix_keymap musb_am335x sch_fq_codel [ 86.546686] CPU: 0 PID: 502 Comm: irq/71-wl12xx Not tainted 4.14.40-01415-g47241db-dirty #119 [ 86.555312] Hardware name: Generic AM33XX (Flattened Device Tree) [ 86.561540] Backtrace: [ 86.564119] [] (dump_backtrace) from [] (show_stack+0x18/0x1c) [ 86.571838] r6: r5:bf30a5fc r4: r3: [ 86.577661] [] (show_stack) from [] (dump_stack+0x20/0x28) [ 86.584994] [] (dump_stack) from [] (__warn+0xdc/0x104) [ 86.592121] [] (__warn) from [] (warn_slowpath_null+0x28/0x30) [ 86.599838] r10:c0d4ea79 r8:c0169590 r7:db0f1558 r6:dc716ec8 r5:dc716d38 r4:dc716d00 [ 86.608019] [] (warn_slowpath_null) from [] (wl12xx_queue_recovery_work+0x64/0x6c [wlcore]) [ 86.618630] [] (wl12xx_queue_recovery_work [wlcore]) from [] (wlcore_irq+0x21c/0x234 [wlcore]) [ 86.629157] r4:dc716d00 r3:db164010 [ 86.633009] [] (wlcore_irq [wlcore]) from [] (irq_thread_fn+0x24/0x3c) [ 86.641441] r7:db0f1558 r6:db0f1500 r5:0001 r4:db1b8680 [ 86.647236] [] (irq_thread_fn) from [] (irq_thread+0x10c/0x1ec) [ 86.655044] r6:db0f1500 r5:0001 r4:db1b8680 r3:db623600 [ 86.660875] [] (irq_thread) from [] (kthread+0x11c/0x154) [ 86.668148] r10:c0169154 r8:db1b8680 r7:db1b8958 r6:db1b8600 r5: r4:db1b8940 [ 86.676104] [] (kthread) from [] (ret_from_fork+0x14/0x2c) [ 86.683479] r10: r9: r8: r7: r6: r5:c0145150 [ 86.691451] r4:db1b8600 r3: [ 86.695099] ---[ end trace dea7def5777109c9 ]--- BR, Eyal
proszę, chcę z tobą porozmawiać
[PATCH 3/3] staging: use BIT_ULL for NL80211_STA_INFO_* attribute types
Since 'filled' member in station_info changed to u64, BIT_ULL macro should be used with NL80211_STA_INFO_* attribute types instead of BIT. The BIT macro uses unsigned long type which some architectures handle as 32bit and this results in compilation warnings such as: net/mac80211/sta_info.c:2223:2: warning: left shift count >= width of type sinfo->filled |= BIT(NL80211_STA_INFO_TID_STATS); ^ Signed-off-by: Omer Efrat diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c index 46bc2e5..d0c5dbd 100644 --- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c +++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c @@ -1281,16 +1281,16 @@ static int cfg80211_rtw_get_station(struct wiphy *wiphy, goto exit; } - sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL); sinfo->signal = translate_percentage_to_dbm(padapter->recvpriv.signal_strength); - sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_BITRATE); sinfo->txrate.legacy = rtw_get_cur_max_rate(padapter); - sinfo->filled |= BIT(NL80211_STA_INFO_RX_PACKETS); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_PACKETS); sinfo->rx_packets = sta_rx_data_pkts(psta); - sinfo->filled |= BIT(NL80211_STA_INFO_TX_PACKETS); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_PACKETS); sinfo->tx_packets = psta->sta_stats.tx_pkts; } @@ -3021,7 +3021,7 @@ static intcfg80211_rtw_dump_station(struct wiphy *wiphy, struct net_device *nde goto exit; } memcpy(mac, psta->hwaddr, ETH_ALEN); - sinfo->filled = BIT(NL80211_STA_INFO_SIGNAL); + sinfo->filled = BIT_ULL(NL80211_STA_INFO_SIGNAL); sinfo->signal = psta->rssi; exit: diff --git a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c index 730d64f..830b48c 100644 --- a/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c +++ b/drivers/staging/wilc1000/wilc_wfi_cfgoperations.c @@ -1184,7 +1184,7 @@ static int get_station(struct wiphy *wiphy, struct net_device *dev, return -ENOENT; } - sinfo->filled |= BIT(NL80211_STA_INFO_INACTIVE_TIME); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_INACTIVE_TIME); wilc_get_inactive_time(vif, mac, _time); sinfo->inactive_time = 1000 * inactive_time; @@ -1195,11 +1195,11 @@ static int get_station(struct wiphy *wiphy, struct net_device *dev, wilc_get_statistics(vif, ); - sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL) | - BIT(NL80211_STA_INFO_RX_PACKETS) | - BIT(NL80211_STA_INFO_TX_PACKETS) | - BIT(NL80211_STA_INFO_TX_FAILED) | - BIT(NL80211_STA_INFO_TX_BITRATE); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL) | + BIT_ULL(NL80211_STA_INFO_RX_PACKETS) | + BIT_ULL(NL80211_STA_INFO_TX_PACKETS) | + BIT_ULL(NL80211_STA_INFO_TX_FAILED) | + BIT_ULL(NL80211_STA_INFO_TX_BITRATE); sinfo->signal = stats.rssi; sinfo->rx_packets = stats.rx_cnt; @@ -1776,7 +1776,7 @@ static int dump_station(struct wiphy *wiphy, struct net_device *dev, priv = wiphy_priv(wiphy); vif = netdev_priv(priv->dev); - sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL); wilc_get_rssi(vif, >signal); diff --git a/drivers/staging/wlan-ng/cfg80211.c b/drivers/staging/wlan-ng/cfg80211.c index 4291225..07c52e3 100644 --- a/drivers/staging/wlan-ng/cfg80211.c +++ b/drivers/staging/wlan-ng/cfg80211.c @@ -282,9 +282,9 @@ static int prism2_get_station(struct wiphy *wiphy, struct net_device *dev, if (result == 0) { sinfo->txrate.legacy = quality.txrate.data; - sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_BITRATE); sinfo->signal = quality.level.data; - sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL); } return result; -- 2.7.4
[PATCH 1/3] net: use BIT_ULL for NL80211_STA_INFO_* attribute types
Since 'filled' member in station_info changed to u64, BIT_ULL macro should be used with NL80211_STA_INFO_* attribute types instead of BIT. The BIT macro uses unsigned long type which some architectures handle as 32bit and this results in compilation warnings such as: net/mac80211/sta_info.c:2223:2: warning: left shift count >= width of type sinfo->filled |= BIT(NL80211_STA_INFO_TID_STATS); ^ Signed-off-by: Omer Efrat diff --git a/net/batman-adv/bat_v_elp.c b/net/batman-adv/bat_v_elp.c index 71c20c1..71e6474 100644 --- a/net/batman-adv/bat_v_elp.c +++ b/net/batman-adv/bat_v_elp.c @@ -114,7 +114,7 @@ static u32 batadv_v_elp_get_throughput(struct batadv_hardif_neigh_node *neigh) } if (ret) goto default_throughput; - if (!(sinfo.filled & BIT(NL80211_STA_INFO_EXPECTED_THROUGHPUT))) + if (!(sinfo.filled & BIT_ULL(NL80211_STA_INFO_EXPECTED_THROUGHPUT))) goto default_throughput; return sinfo.expected_throughput / 100; diff --git a/net/mac80211/ethtool.c b/net/mac80211/ethtool.c index 690c142..5ac7438 100644 --- a/net/mac80211/ethtool.c +++ b/net/mac80211/ethtool.c @@ -116,16 +116,16 @@ static void ieee80211_get_stats(struct net_device *dev, data[i++] = sta->sta_state; - if (sinfo.filled & BIT(NL80211_STA_INFO_TX_BITRATE)) + if (sinfo.filled & BIT_ULL(NL80211_STA_INFO_TX_BITRATE)) data[i] = 10ULL * cfg80211_calculate_bitrate(); i++; - if (sinfo.filled & BIT(NL80211_STA_INFO_RX_BITRATE)) + if (sinfo.filled & BIT_ULL(NL80211_STA_INFO_RX_BITRATE)) data[i] = 10ULL * cfg80211_calculate_bitrate(); i++; - if (sinfo.filled & BIT(NL80211_STA_INFO_SIGNAL_AVG)) + if (sinfo.filled & BIT_ULL(NL80211_STA_INFO_SIGNAL_AVG)) data[i] = (u8)sinfo.signal_avg; i++; } else { diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c index 6428f1a..656a838 100644 --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c @@ -2101,38 +2101,38 @@ void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo, drv_sta_statistics(local, sdata, >sta, sinfo); - sinfo->filled |= BIT(NL80211_STA_INFO_INACTIVE_TIME) | -BIT(NL80211_STA_INFO_STA_FLAGS) | -BIT(NL80211_STA_INFO_BSS_PARAM) | -BIT(NL80211_STA_INFO_CONNECTED_TIME) | -BIT(NL80211_STA_INFO_RX_DROP_MISC); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_INACTIVE_TIME) | +BIT_ULL(NL80211_STA_INFO_STA_FLAGS) | +BIT_ULL(NL80211_STA_INFO_BSS_PARAM) | +BIT_ULL(NL80211_STA_INFO_CONNECTED_TIME) | +BIT_ULL(NL80211_STA_INFO_RX_DROP_MISC); if (sdata->vif.type == NL80211_IFTYPE_STATION) { sinfo->beacon_loss_count = sdata->u.mgd.beacon_loss_count; - sinfo->filled |= BIT(NL80211_STA_INFO_BEACON_LOSS); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_BEACON_LOSS); } sinfo->connected_time = ktime_get_seconds() - sta->last_connected; sinfo->inactive_time = jiffies_to_msecs(jiffies - ieee80211_sta_last_active(sta)); - if (!(sinfo->filled & (BIT(NL80211_STA_INFO_TX_BYTES64) | - BIT(NL80211_STA_INFO_TX_BYTES { + if (!(sinfo->filled & (BIT_ULL(NL80211_STA_INFO_TX_BYTES64) | + BIT_ULL(NL80211_STA_INFO_TX_BYTES { sinfo->tx_bytes = 0; for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) sinfo->tx_bytes += sta->tx_stats.bytes[ac]; - sinfo->filled |= BIT(NL80211_STA_INFO_TX_BYTES64); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_BYTES64); } - if (!(sinfo->filled & BIT(NL80211_STA_INFO_TX_PACKETS))) { + if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_PACKETS))) { sinfo->tx_packets = 0; for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) sinfo->tx_packets += sta->tx_stats.packets[ac]; - sinfo->filled |= BIT(NL80211_STA_INFO_TX_PACKETS); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_PACKETS); } - if (!(sinfo->filled & (BIT(NL80211_STA_INFO_RX_BYTES64) | - BIT(NL80211_STA_INFO_RX_BYTES { + if (!(sinfo->filled & (BIT_ULL(NL80211_STA_INFO_RX_BYTES64) | + BIT_ULL(NL80211_STA_INFO_RX_BYTES { sinfo->rx_bytes += sta_get_stats_bytes(>rx_stats); if (sta->pcpu_rx_stats) { @@ -2144,10 +2144,10 @@ void
[PATCH 2/3] wireless-drivers: use BIT_ULL for NL80211_STA_INFO_* attribute types
Since 'filled' member in station_info changed to u64, BIT_ULL macro should be used with NL80211_STA_INFO_* attribute types instead of BIT. The BIT macro uses unsigned long type which some architectures handle as 32bit and this results in compilation warnings such as: net/mac80211/sta_info.c:2223:2: warning: left shift count >= width of type sinfo->filled |= BIT(NL80211_STA_INFO_TID_STATS); ^ Signed-off-by: Omer Efrat diff --git a/drivers/net/wireless/ath/ath6kl/cfg80211.c b/drivers/net/wireless/ath/ath6kl/cfg80211.c index 2ba8cf3..360c8d1 100644 --- a/drivers/net/wireless/ath/ath6kl/cfg80211.c +++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c @@ -1811,20 +1811,20 @@ static int ath6kl_get_station(struct wiphy *wiphy, struct net_device *dev, if (vif->target_stats.rx_byte) { sinfo->rx_bytes = vif->target_stats.rx_byte; - sinfo->filled |= BIT(NL80211_STA_INFO_RX_BYTES64); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_BYTES64); sinfo->rx_packets = vif->target_stats.rx_pkt; - sinfo->filled |= BIT(NL80211_STA_INFO_RX_PACKETS); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_PACKETS); } if (vif->target_stats.tx_byte) { sinfo->tx_bytes = vif->target_stats.tx_byte; - sinfo->filled |= BIT(NL80211_STA_INFO_TX_BYTES64); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_BYTES64); sinfo->tx_packets = vif->target_stats.tx_pkt; - sinfo->filled |= BIT(NL80211_STA_INFO_TX_PACKETS); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_PACKETS); } sinfo->signal = vif->target_stats.cs_rssi; - sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL); rate = vif->target_stats.tx_ucast_rate; @@ -1857,12 +1857,12 @@ static int ath6kl_get_station(struct wiphy *wiphy, struct net_device *dev, return 0; } - sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_BITRATE); if (test_bit(CONNECTED, >flags) && test_bit(DTIM_PERIOD_AVAIL, >flags) && vif->nw_type == INFRA_NETWORK) { - sinfo->filled |= BIT(NL80211_STA_INFO_BSS_PARAM); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_BSS_PARAM); sinfo->bss_param.flags = 0; sinfo->bss_param.dtim_period = vif->assoc_bss_dtim_period; sinfo->bss_param.beacon_interval = vif->assoc_bss_beacon_int; diff --git a/drivers/net/wireless/ath/wil6210/cfg80211.c b/drivers/net/wireless/ath/wil6210/cfg80211.c index 78946f2..013d056 100644 --- a/drivers/net/wireless/ath/wil6210/cfg80211.c +++ b/drivers/net/wireless/ath/wil6210/cfg80211.c @@ -302,14 +302,14 @@ int wil_cid_fill_sinfo(struct wil6210_vif *vif, int cid, sinfo->generation = wil->sinfo_gen; - sinfo->filled = BIT(NL80211_STA_INFO_RX_BYTES) | - BIT(NL80211_STA_INFO_TX_BYTES) | - BIT(NL80211_STA_INFO_RX_PACKETS) | - BIT(NL80211_STA_INFO_TX_PACKETS) | - BIT(NL80211_STA_INFO_RX_BITRATE) | - BIT(NL80211_STA_INFO_TX_BITRATE) | - BIT(NL80211_STA_INFO_RX_DROP_MISC) | - BIT(NL80211_STA_INFO_TX_FAILED); + sinfo->filled = BIT_ULL(NL80211_STA_INFO_RX_BYTES) | + BIT_ULL(NL80211_STA_INFO_TX_BYTES) | + BIT_ULL(NL80211_STA_INFO_RX_PACKETS) | + BIT_ULL(NL80211_STA_INFO_TX_PACKETS) | + BIT_ULL(NL80211_STA_INFO_RX_BITRATE) | + BIT_ULL(NL80211_STA_INFO_TX_BITRATE) | + BIT_ULL(NL80211_STA_INFO_RX_DROP_MISC) | + BIT_ULL(NL80211_STA_INFO_TX_FAILED); sinfo->txrate.flags = RATE_INFO_FLAGS_60G; sinfo->txrate.mcs = le16_to_cpu(reply.evt.bf_mcs); @@ -322,7 +322,7 @@ int wil_cid_fill_sinfo(struct wil6210_vif *vif, int cid, sinfo->tx_failed = stats->tx_errors; if (test_bit(wil_vif_fwconnected, vif->status)) { - sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL); + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL); if (test_bit(WMI_FW_CAPABILITY_RSSI_REPORTING, wil->fw_capabilities)) sinfo->signal = reply.evt.rssi; diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index b6122aa..24c4e18 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -2434,7 +2434,7 @@ static void brcmf_convert_sta_flags(u32 fw_sta_flags, struct station_info *si) struct nl80211_sta_flag_update *sfu;