Re: [PATCH V4 0/6] Cypress license and firmware update

2018-06-06 Thread Josh Boyer
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

2018-06-06 Thread Reizer, Eyal
> > * 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


[PATCH 2/3] wireless-drivers: use BIT_ULL for NL80211_STA_INFO_* attribute types

2018-06-06 Thread Omer Efrat
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;
 

[PATCH 3/3] staging: use BIT_ULL for NL80211_STA_INFO_* attribute types

2018-06-06 Thread Omer Efrat
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

2018-06-06 Thread Omer Efrat
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 

proszę, chcę z tobą porozmawiać

2018-06-06 Thread KATIE


Re: How to let devcoredump know data has been read?

2018-06-06 Thread Ben Greear

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: How to let devcoredump know data has been read?

2018-06-06 Thread Arend van Spriel

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?

2018-06-06 Thread Arend van Spriel

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