* Re: [PATCH 12/14] qtnfmac: fix debugfs entries for multiple cards on the same host
From: Sergey Matyukevich @ 2019-03-20 15:16 UTC (permalink / raw)
To: Kalle Valo; +Cc: linux-wireless@vger.kernel.org, Igor Mitsyanko
In-Reply-To: <874l7xzlmo.fsf@purkki.adurom.net>
> > Fix creation of debugfs entries for qtnfmac wireless card: use separate
> > directories for different wireless cards. This commit enables support
> > for multiple qtnfmac wireless cards on the same PCIe host.
> >
> > Signed-off-by: Sergey Matyukevich <sergey.matyukevich.os@quantenna.com>
> > ---
> > drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c | 6 +++++-
> > 1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c b/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
> > index b561b75e4433..56fc6d49c121 100644
> > --- a/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
> > +++ b/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
> > @@ -130,6 +130,8 @@ static int qtnf_dbg_shm_stats(struct seq_file *s, void *data)
> >
> > int qtnf_pcie_fw_boot_done(struct qtnf_bus *bus)
> > {
> > + struct qtnf_pcie_bus_priv *priv = get_bus_priv(bus);
> > + char card_id[64];
> > int ret;
> >
> > bus->fw_state = QTNF_FW_STATE_BOOT_DONE;
> > @@ -137,7 +139,9 @@ int qtnf_pcie_fw_boot_done(struct qtnf_bus *bus)
> > if (ret) {
> > pr_err("failed to attach core\n");
> > } else {
> > - qtnf_debugfs_init(bus, DRV_NAME);
> > + snprintf(card_id, sizeof(card_id), "%s:%s",
> > + DRV_NAME, pci_name(priv->pdev));
>
> Can you give an example for the path?
>
For instance: /sys/kernel/debug/qtnfmac_pcie:0000:01:00.0
Regards,
Sergey
^ permalink raw reply
* Re: [PATCH 14/14] qtnfmac: use scan duration param for different scan types
From: Sergey Matyukevich @ 2019-03-20 15:21 UTC (permalink / raw)
To: Kalle Valo; +Cc: linux-wireless@vger.kernel.org, Igor Mitsyanko
In-Reply-To: <87zhppy6xi.fsf@purkki.adurom.net>
> > From: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
> >
> > Use scan duration param for both active and passive scan dwell times.
> > Document what different types of dwell times are used for. Explicitly
> > specify that if unset, automatic selection by device firmware
> > will be used.
> >
> > Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
> > ---
> > drivers/net/wireless/quantenna/qtnfmac/commands.c | 49 ++++++++++++++++++-----
> > drivers/net/wireless/quantenna/qtnfmac/qlink.h | 11 ++++-
> > 2 files changed, 49 insertions(+), 11 deletions(-)
> >
> > diff --git a/drivers/net/wireless/quantenna/qtnfmac/commands.c b/drivers/net/wireless/quantenna/qtnfmac/commands.c
> > index 62edddb8551e..e58495403dde 100644
> > --- a/drivers/net/wireless/quantenna/qtnfmac/commands.c
> > +++ b/drivers/net/wireless/quantenna/qtnfmac/commands.c
> > @@ -11,6 +11,13 @@
> > #include "bus.h"
> > #include "commands.h"
> >
> > +#define QTNF_SCAN_TIME_AUTO 0
> > +
> > +/* Let device itself to select best values for current conditions */
> > +#define QTNF_SCAN_DWELL_ACTIVE_DEFAULT QTNF_SCAN_TIME_AUTO
> > +#define QTNF_SCAN_DWELL_PASSIVE_DEFAULT QTNF_SCAN_TIME_AUTO
> > +#define QTNF_SCAN_SAMPLE_DURATION_DEFAULT QTNF_SCAN_TIME_AUTO
>
> These three defines look odd. Why not just use QTNF_SCAN_TIME_AUTO
> directly?
Well, this is to be able to tweak their defaults independently if needed.
Regards,
Sergey
^ permalink raw reply
* Re: [PATCH] ath10k: Fix ASPM L1 state on QCA988X
From: Tom Psyborg @ 2019-03-20 15:48 UTC (permalink / raw)
To: Ben Greear; +Cc: linux-wireless, kvalo, Sujith Manoharan
In-Reply-To: <2715bcef-5b03-fc19-e665-3c6f90a7d123@candelatech.com>
On 20/03/2019, Ben Greear <greearb@candelatech.com> wrote:
> On 3/19/19 12:59 PM, Tomislav Požega wrote:
>> On some systems there are heavy crashes if the kernel config
>> option CONFIG_PCIEASPM_PERFORMANCE is not set. Patch provided by
>> Sujith for ath9k fixes this issue and the card operates without
>> crashes with kernel default CONFIG_PCIEASPM_DEFAULT option that uses
>> BIOS provided ASPM settings. Tested with QCA9862 mPCIe card.
>
> Hello,
>
> Were these firmware crashes or system crashes or both? Can you
> describe that a bit more so we can better understand what bugs this
> is fixing?
>
>
> Thanks,
> Ben
>
These were system crashes that rendered firmware restart feature useless.
With default kernel config pinging router took ~0.70ms and sometimes
it was possible to load some smaller web pages. Any larger page load
caused immediate crash.
Enabling kernel option CONFIG_PCIEASPM_PERFORMANCE and rebuilding
reduced ping time to the router to ~0.55ms and connection was stable.
This patch provides fix to the ASPM so that the card works fine
without forcing ASPM performance configuration. Ping to the router was
the same, about 0.55ms.
So, as Sujith already explained in his original patchwork this really
fixes L1 latency issue that impacts card communication with the host.
Here is my log from yesterday while testing, what happens without this
patch, or without CONFIG_PCIEASPM_PERFORMANCE enabled: (failed to
flush transmit queue was first message on every occasion this
happened)
Mar 19 17:09:02 ubuntu kernel: [ 258.528040] ath10k_pci 0000:03:00.0:
failed to flush transmit queue (skip 0 ar-state 1): 0
Mar 19 17:09:05 ubuntu kernel: [ 261.536042] ath10k_pci 0000:03:00.0:
failed to install key for vdev 0 peer 10:fe:ed:e5:73:42: -110
Mar 19 17:09:08 ubuntu kernel: [ 264.544053] ath10k_pci 0000:03:00.0:
wmi command 36893 timeout, restarting hardware
Mar 19 17:09:08 ubuntu kernel: [ 264.544067] ath10k_pci 0000:03:00.0:
failed to delete peer 10:fe:ed:e5:73:42 for vdev 0: -11
Mar 19 17:09:08 ubuntu kernel: [ 264.544071] ath10k_pci 0000:03:00.0:
found sta peer 10:fe:ed:e5:73:42 (ptr ffff88013a466e00 id 63) entry on
vdev 0 after it was supposedly removed
Mar 19 17:09:08 ubuntu kernel: [ 264.544085] ------------[ cut here
]------------
Mar 19 17:09:08 ubuntu kernel: [ 264.544142] WARNING: CPU: 1 PID: 744
at net/mac80211/sta_info.c:970 __sta_info_destroy_part2+0x18b/0x190
[mac80211]
Mar 19 17:09:08 ubuntu kernel: [ 264.544151] Modules linked in:
xt_limit xt_tcpudp xt_DSCP ipt_REJECT nf_reject_ipv4 nf_conntrack_irc
nf_conntrack_ftp nf_conntrack_ipv4 nf_defrag_ipv4 xt_state
nf_conntrack ctr binfmt_misc vboxpci(O) vboxnetadp(O) vboxnetflt(O)
vboxdrv(O) deflate camellia_generic cast5_generic cast_common cmac
rmd160 ccm serpent_generic blowfish_generic blowfish_x86_64
blowfish_common twofish_generic twofish_x86_64_3way xts twofish_x86_64
twofish_common xcbc sha512_generic des_generic ablk_helper cryptd lrw
gf128mul glue_helper aes_x86_64 xfrm_user ah4 esp4 xfrm4_mode_beet
xfrm4_tunnel tunnel4 xfrm4_mode_tunnel xfrm4_mode_transport ipcomp
xfrm_ipcomp af_key xfrm_algo arc4 rfcomm bridge stp llc bnep
tpm_infineon snd_hda_codec_analog snd_hda_codec_generic ath3k btusb
btintel bluetooth snd_hda_intel snd_hda_codec snd_hda_core
Mar 19 17:09:08 ubuntu kernel: [ 264.544207] iptable_mangle
snd_hwdep iptable_filter snd_pcm ip_tables x_tables radeon
snd_seq_midi snd_rawmidi ttm ath10k_pci ath10k_core mac80211
drm_kms_helper snd_seq_midi_event ath psmouse snd_seq video serio_raw
drm fb_sys_fops tg3 cfg80211 snd_seq_device sysimgblt snd_timer
sysfillrect syscopyarea i2c_algo_bit ptp snd wmi rfkill pps_core
k10temp hp_accel sp5100_tco lis3lv02d soundcore i2c_piix4
input_polldev tpm_tis tpm_tis_core
Mar 19 17:09:08 ubuntu kernel: [ 264.544237] CPU: 1 PID: 744 Comm:
wpa_supplicant Tainted: G O 4.9.135 #49
Mar 19 17:09:08 ubuntu kernel: [ 264.544238] Hardware name:
Hewlett-Packard HP Compaq 6735b (NA961ET#ABD)/30E3, BIOS 68GTT Ver.
F.15 10/25/2010
Mar 19 17:09:08 ubuntu kernel: [ 264.544240] ffffc900006a3a50
ffffffff81353fc6 0000000000000000 0000000000000000
Mar 19 17:09:08 ubuntu kernel: [ 264.544243] ffffc900006a3a90
ffffffff81146689 00000009a0270b13 ffff880133a9f000
Mar 19 17:09:08 ubuntu kernel: [ 264.544246] ffff880137bc0700
ffff880137c908c0 ffff880137bc0c58 ffff880137bc0c58
Mar 19 17:09:08 ubuntu kernel: [ 264.544249] Call Trace:
Mar 19 17:09:08 ubuntu kernel: [ 264.544258] [<ffffffff81353fc6>]
dump_stack+0x4d/0x67
Mar 19 17:09:08 ubuntu kernel: [ 264.544265] [<ffffffff81146689>]
__warn.cold.10+0x91/0xb6
Mar 19 17:09:08 ubuntu kernel: [ 264.544270] [<ffffffff8105117d>]
warn_slowpath_null+0x1d/0x20
Mar 19 17:09:08 ubuntu kernel: [ 264.544305] [<ffffffffa0275c0b>]
__sta_info_destroy_part2+0x18b/0x190 [mac80211]
Mar 19 17:09:08 ubuntu kernel: [ 264.544341] [<ffffffffa0275f0d>]
__sta_info_flush+0x12d/0x190 [mac80211]
Mar 19 17:09:08 ubuntu kernel: [ 264.544378] [<ffffffffa02bc0cc>]
ieee80211_set_disassoc+0xbc/0x410 [mac80211]
Mar 19 17:09:08 ubuntu kernel: [ 264.544411] [<ffffffffa02cf23e>]
ieee80211_mgd_deauth.cold.48+0x15e/0x1ae [mac80211]
Mar 19 17:09:08 ubuntu kernel: [ 264.544444] [<ffffffffa0289ea8>]
ieee80211_deauth+0x18/0x20 [mac80211]
Mar 19 17:09:08 ubuntu kernel: [ 264.544494] [<ffffffffa00d5637>]
cfg80211_mlme_deauth+0x97/0x150 [cfg80211]
Mar 19 17:09:08 ubuntu kernel: [ 264.544529] [<ffffffffa00d99da>]
cfg80211_disconnect+0x9a/0x1f0 [cfg80211]
Mar 19 17:09:08 ubuntu kernel: [ 264.544562] [<ffffffffa00f54f3>]
cfg80211_wext_siwmlme+0x83/0x9a [cfg80211]
Mar 19 17:09:08 ubuntu kernel: [ 264.544595] [<ffffffffa00f5470>] ?
cfg80211_wext_siwgenie+0x120/0x120 [cfg80211]
Mar 19 17:09:08 ubuntu kernel: [ 264.544600] [<ffffffff81670991>]
ioctl_standard_iw_point+0x241/0x300
Mar 19 17:09:08 ubuntu kernel: [ 264.544602] [<ffffffff81670af7>]
ioctl_standard_call+0xa7/0xb0
Mar 19 17:09:08 ubuntu kernel: [ 264.544606] [<ffffffff812cec1e>] ?
security_capable+0x4e/0x70
Mar 19 17:09:08 ubuntu kernel: [ 264.544613] [<ffffffff81670a50>] ?
ioctl_standard_iw_point+0x300/0x300
Mar 19 17:09:08 ubuntu kernel: [ 264.544618] [<ffffffff81670739>]
wireless_process_ioctl.constprop.12+0xd9/0xf0
Mar 19 17:09:08 ubuntu kernel: [ 264.544623] [<ffffffff81670c32>]
wext_handle_ioctl+0x62/0xa0
Mar 19 17:09:08 ubuntu kernel: [ 264.544625] [<ffffffff815db7aa>]
dev_ioctl+0x2aa/0x5d0
Mar 19 17:09:08 ubuntu kernel: [ 264.544629] [<ffffffff811b88d6>] ?
do_readv_writev+0x196/0x260
Mar 19 17:09:08 ubuntu kernel: [ 264.544632] [<ffffffff815a1908>]
sock_ioctl+0x98/0x280
Mar 19 17:09:08 ubuntu kernel: [ 264.544635] [<ffffffff811cc8f9>]
do_vfs_ioctl+0x99/0x5d0
Mar 19 17:09:08 ubuntu kernel: [ 264.544637] [<ffffffff811cceaa>]
SyS_ioctl+0x7a/0x90
Mar 19 17:09:08 ubuntu kernel: [ 264.544640] [<ffffffff81002a61>]
do_syscall_64+0x61/0xc0
Mar 19 17:09:08 ubuntu kernel: [ 264.544643] [<ffffffff8168977e>]
entry_SYSCALL_64_after_swapgs+0x58/0xc6
Mar 19 17:09:08 ubuntu kernel: [ 264.544646] ---[ end trace
9403fa149caf04b7 ]---
Mar 19 17:09:08 ubuntu kernel: [ 264.556724] ath10k_pci 0000:03:00.0:
failed to read hi_board_data address: -16
Mar 19 17:09:14 ubuntu kernel: [ 270.595420] ath10k_pci 0000:03:00.0:
failed to wait for target init: -110
Mar 19 17:09:14 ubuntu kernel: [ 270.600649] ieee80211 phy0: Hardware
restart was requested
Mar 19 17:09:14 ubuntu kernel: [ 270.600691] ath10k_pci 0000:03:00.0:
failed to recalculate rts/cts prot for vdev 0: -108
Mar 19 17:09:14 ubuntu kernel: [ 270.600695] ath10k_pci 0000:03:00.0:
failed to set cts protection for vdev 0: -108
Mar 19 17:09:14 ubuntu kernel: [ 270.600698] ath10k_pci 0000:03:00.0:
failed to set erp slot for vdev 0: -108
Mar 19 17:09:14 ubuntu kernel: [ 270.600701] ath10k_pci 0000:03:00.0:
failed to set preamble for vdev 0: -108
Mar 19 17:09:14 ubuntu kernel: [ 270.600704] ath10k_pci 0000:03:00.0:
failed to down vdev 0: -108
Mar 19 17:09:14 ubuntu kernel: [ 270.600710] ath10k_pci 0000:03:00.0:
failed to set wmm params: -108
Mar 19 17:09:14 ubuntu kernel: [ 270.600712] ath10k_pci 0000:03:00.0:
failed to set wmm params: -108
Mar 19 17:09:14 ubuntu kernel: [ 270.600714] ath10k_pci 0000:03:00.0:
failed to set wmm params: -108
Mar 19 17:09:14 ubuntu kernel: [ 270.600717] ath10k_pci 0000:03:00.0:
failed to set wmm params: -108
Mar 19 17:09:14 ubuntu kernel: [ 270.600722] ath10k_pci 0000:03:00.0:
failed to stop WMI vdev 0: -108
Mar 19 17:09:14 ubuntu kernel: [ 270.600724] ath10k_pci 0000:03:00.0:
failed to stop vdev 0: -108
Mar 19 17:09:14 ubuntu kernel: [ 270.600734] ath10k_pci 0000:03:00.0:
failed to flush transmit queue (skip 1 ar-state 2): 5000
Mar 19 17:09:20 ubuntu kernel: [ 276.645402] ath10k_pci 0000:03:00.0:
failed to wait for target init: -110
Mar 19 17:09:20 ubuntu kernel: [ 276.645405] ath10k_pci 0000:03:00.0:
failed to warm reset attempt 1 of 3: -110
Mar 19 17:09:27 ubuntu kernel: [ 282.780276] ath10k_pci 0000:03:00.0:
failed to wait for target init: -110
Mar 19 17:09:27 ubuntu kernel: [ 282.780278] ath10k_pci 0000:03:00.0:
failed to warm reset attempt 2 of 3: -110
Mar 19 17:09:33 ubuntu kernel: [ 288.818402] ath10k_pci 0000:03:00.0:
failed to wait for target init: -110
Mar 19 17:09:33 ubuntu kernel: [ 288.818404] ath10k_pci 0000:03:00.0:
failed to warm reset attempt 3 of 3: -110
Mar 19 17:09:36 ubuntu kernel: [ 291.863324] ath10k_pci 0000:03:00.0:
failed to wait for target after cold reset: -110
Mar 19 17:09:36 ubuntu kernel: [ 291.863339] ------------[ cut here
]------------
Mar 19 17:09:36 ubuntu kernel: [ 291.863393] WARNING: CPU: 1 PID: 38
at net/mac80211/util.c:1863 ieee80211_reconfig+0x7a/0x1340 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.863394] Hardware became
unavailable during restart.
Mar 19 17:09:36 ubuntu kernel: [ 291.863395] Modules linked in:
xt_limit xt_tcpudp xt_DSCP ipt_REJECT nf_reject_ipv4 nf_conntrack_irc
nf_conntrack_ftp nf_conntrack_ipv4 nf_defrag_ipv4 xt_state
nf_conntrack ctr binfmt_misc vboxpci(O) vboxnetadp(O) vboxnetflt(O)
vboxdrv(O) deflate camellia_generic cast5_generic cast_common cmac
rmd160 ccm serpent_generic blowfish_generic blowfish_x86_64
blowfish_common twofish_generic twofish_x86_64_3way xts twofish_x86_64
twofish_common xcbc sha512_generic des_generic ablk_helper cryptd lrw
gf128mul glue_helper aes_x86_64 xfrm_user ah4 esp4 xfrm4_mode_beet
xfrm4_tunnel tunnel4 xfrm4_mode_tunnel xfrm4_mode_transport ipcomp
xfrm_ipcomp af_key xfrm_algo arc4 rfcomm bridge stp llc bnep
tpm_infineon snd_hda_codec_analog snd_hda_codec_generic ath3k btusb
btintel bluetooth snd_hda_intel snd_hda_codec snd_hda_core
Mar 19 17:09:36 ubuntu kernel: [ 291.863439] iptable_mangle
snd_hwdep iptable_filter snd_pcm ip_tables x_tables radeon
snd_seq_midi snd_rawmidi ttm ath10k_pci ath10k_core mac80211
drm_kms_helper snd_seq_midi_event ath psmouse snd_seq video serio_raw
drm fb_sys_fops tg3 cfg80211 snd_seq_device sysimgblt snd_timer
sysfillrect syscopyarea i2c_algo_bit ptp snd wmi rfkill pps_core
k10temp hp_accel sp5100_tco lis3lv02d soundcore i2c_piix4
input_polldev tpm_tis tpm_tis_core
Mar 19 17:09:36 ubuntu kernel: [ 291.863468] CPU: 1 PID: 38 Comm:
kworker/1:1 Tainted: G W O 4.9.135 #49
Mar 19 17:09:36 ubuntu kernel: [ 291.863470] Hardware name:
Hewlett-Packard HP Compaq 6735b (NA961ET#ABD)/30E3, BIOS 68GTT Ver.
F.15 10/25/2010
Mar 19 17:09:36 ubuntu kernel: [ 291.863502] Workqueue:
events_freezable ieee80211_restart_work [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.863504] ffffc90000167cf0
ffffffff81353fc6 ffffc90000167d40 0000000000000000
Mar 19 17:09:36 ubuntu kernel: [ 291.863507] ffffc90000167d30
ffffffff81146689 00000009816862dc ffff880137bc0f88
Mar 19 17:09:36 ubuntu kernel: [ 291.863510] ffff880137bc0f88
ffff880137bc0700 ffff880137bc0700 00000000ffffff92
Mar 19 17:09:36 ubuntu kernel: [ 291.863513] Call Trace:
Mar 19 17:09:36 ubuntu kernel: [ 291.863519] [<ffffffff81353fc6>]
dump_stack+0x4d/0x67
Mar 19 17:09:36 ubuntu kernel: [ 291.863523] [<ffffffff81146689>]
__warn.cold.10+0x91/0xb6
Mar 19 17:09:36 ubuntu kernel: [ 291.863526] [<ffffffff810510ff>]
warn_slowpath_fmt+0x4f/0x60
Mar 19 17:09:36 ubuntu kernel: [ 291.863558] [<ffffffffa0270515>] ?
drv_start+0x45/0x110 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.863591] [<ffffffffa02a249a>]
ieee80211_reconfig+0x7a/0x1340 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.863596] [<ffffffff810b51cb>] ?
try_to_del_timer_sync+0x4b/0x60
Mar 19 17:09:36 ubuntu kernel: [ 291.863627] [<ffffffffa026d847>]
ieee80211_restart_work+0xa7/0xe0 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.863631] [<ffffffff8106a5fa>]
process_one_work+0x1fa/0x460
Mar 19 17:09:36 ubuntu kernel: [ 291.863633] [<ffffffff8106ac62>]
worker_thread+0x32/0x4e0
Mar 19 17:09:36 ubuntu kernel: [ 291.863635] [<ffffffff8106ac30>] ?
rescuer_thread+0x3d0/0x3d0
Mar 19 17:09:36 ubuntu kernel: [ 291.863638] [<ffffffff8106f9b9>]
kthread+0xd9/0xf0
Mar 19 17:09:36 ubuntu kernel: [ 291.863641] [<ffffffff81689884>] ?
__switch_to_asm+0x24/0x60
Mar 19 17:09:36 ubuntu kernel: [ 291.863644] [<ffffffff8106f8e0>] ?
kthread_park+0x60/0x60
Mar 19 17:09:36 ubuntu kernel: [ 291.863646] [<ffffffff81689914>]
ret_from_fork+0x54/0x60
Mar 19 17:09:36 ubuntu kernel: [ 291.863648] ---[ end trace
9403fa149caf04b8 ]---
Mar 19 17:09:36 ubuntu kernel: [ 291.864616] ------------[ cut here
]------------
Mar 19 17:09:36 ubuntu kernel: [ 291.864663] WARNING: CPU: 1 PID: 38
at net/mac80211/driver-ops.h:17 drv_remove_interface+0x10c/0x120
[mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.864680] wlan6: Failed
check-sdata-in-driver check, flags: 0x4
Mar 19 17:09:36 ubuntu kernel: [ 291.864680] Modules linked in:
xt_limit xt_tcpudp xt_DSCP ipt_REJECT nf_reject_ipv4 nf_conntrack_irc
nf_conntrack_ftp nf_conntrack_ipv4 nf_defrag_ipv4 xt_state
nf_conntrack ctr binfmt_misc vboxpci(O) vboxnetadp(O) vboxnetflt(O)
vboxdrv(O) deflate camellia_generic cast5_generic cast_common cmac
rmd160 ccm serpent_generic blowfish_generic blowfish_x86_64
blowfish_common twofish_generic twofish_x86_64_3way xts twofish_x86_64
twofish_common xcbc sha512_generic des_generic ablk_helper cryptd lrw
gf128mul glue_helper aes_x86_64 xfrm_user ah4 esp4 xfrm4_mode_beet
xfrm4_tunnel tunnel4 xfrm4_mode_tunnel xfrm4_mode_transport ipcomp
xfrm_ipcomp af_key xfrm_algo arc4 rfcomm bridge stp llc bnep
tpm_infineon snd_hda_codec_analog snd_hda_codec_generic ath3k btusb
btintel bluetooth snd_hda_intel snd_hda_codec snd_hda_core
Mar 19 17:09:36 ubuntu kernel: [ 291.864742] iptable_mangle
snd_hwdep iptable_filter snd_pcm ip_tables x_tables radeon
snd_seq_midi snd_rawmidi ttm ath10k_pci ath10k_core mac80211
drm_kms_helper snd_seq_midi_event ath psmouse snd_seq video serio_raw
drm fb_sys_fops tg3 cfg80211 snd_seq_device sysimgblt snd_timer
sysfillrect syscopyarea i2c_algo_bit ptp snd wmi rfkill pps_core
k10temp hp_accel sp5100_tco lis3lv02d soundcore i2c_piix4
input_polldev tpm_tis tpm_tis_core
Mar 19 17:09:36 ubuntu kernel: [ 291.864778] CPU: 1 PID: 38 Comm:
kworker/1:1 Tainted: G W O 4.9.135 #49
Mar 19 17:09:36 ubuntu kernel: [ 291.864779] Hardware name:
Hewlett-Packard HP Compaq 6735b (NA961ET#ABD)/30E3, BIOS 68GTT Ver.
F.15 10/25/2010
Mar 19 17:09:36 ubuntu kernel: [ 291.864810] Workqueue:
events_freezable ieee80211_restart_work [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.864812] ffffc90000167b58
ffffffff81353fc6 ffffc90000167ba8 0000000000000000
Mar 19 17:09:36 ubuntu kernel: [ 291.864815] ffffc90000167b98
ffffffff81146689 0000000900167b68 ffff880137c90c88
Mar 19 17:09:36 ubuntu kernel: [ 291.864818] ffff880137bc0fe8
ffff880137bc0700 ffff880137c91410 ffff880137bc0700
Mar 19 17:09:36 ubuntu kernel: [ 291.864820] Call Trace:
Mar 19 17:09:36 ubuntu kernel: [ 291.864824] [<ffffffff81353fc6>]
dump_stack+0x4d/0x67
Mar 19 17:09:36 ubuntu kernel: [ 291.864827] [<ffffffff81146689>]
__warn.cold.10+0x91/0xb6
Mar 19 17:09:36 ubuntu kernel: [ 291.864830] [<ffffffff810510ff>]
warn_slowpath_fmt+0x4f/0x60
Mar 19 17:09:36 ubuntu kernel: [ 291.864833] [<ffffffff815aa229>] ?
skb_dequeue+0x59/0x70
Mar 19 17:09:36 ubuntu kernel: [ 291.864864] [<ffffffffa0270a6c>]
drv_remove_interface+0x10c/0x120 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.864897] [<ffffffffa0284d92>]
ieee80211_do_stop+0x552/0x860 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.864900] [<ffffffff8168943a>] ?
_raw_spin_unlock_bh+0x1a/0x20
Mar 19 17:09:36 ubuntu kernel: [ 291.864933] [<ffffffffa02850ba>]
ieee80211_stop+0x1a/0x20 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.864935] [<ffffffff815ba7fd>]
__dev_close_many+0x8d/0xc0
Mar 19 17:09:36 ubuntu kernel: [ 291.864937] [<ffffffff815ba8ad>]
dev_close_many+0x7d/0x110
Mar 19 17:09:36 ubuntu kernel: [ 291.864940] [<ffffffff815bc7eb>]
dev_close.part.96+0x3b/0x50
Mar 19 17:09:36 ubuntu kernel: [ 291.864942] [<ffffffff815bc81a>]
dev_close+0x1a/0x20
Mar 19 17:09:36 ubuntu kernel: [ 291.864995] [<ffffffffa00abdcb>]
cfg80211_shutdown_all_interfaces+0x7b/0xa0 [cfg80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.865028] [<ffffffffa029ff22>]
ieee80211_handle_reconfig_failure+0x92/0xa0 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.865062] [<ffffffffa02a24a2>]
ieee80211_reconfig+0x82/0x1340 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.865066] [<ffffffff810b51cb>] ?
try_to_del_timer_sync+0x4b/0x60
Mar 19 17:09:36 ubuntu kernel: [ 291.865097] [<ffffffffa026d847>]
ieee80211_restart_work+0xa7/0xe0 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.865100] [<ffffffff8106a5fa>]
process_one_work+0x1fa/0x460
Mar 19 17:09:36 ubuntu kernel: [ 291.865103] [<ffffffff8106ac62>]
worker_thread+0x32/0x4e0
Mar 19 17:09:36 ubuntu kernel: [ 291.865105] [<ffffffff8106ac30>] ?
rescuer_thread+0x3d0/0x3d0
Mar 19 17:09:36 ubuntu kernel: [ 291.865108] [<ffffffff8106f9b9>]
kthread+0xd9/0xf0
Mar 19 17:09:36 ubuntu kernel: [ 291.865110] [<ffffffff81689884>] ?
__switch_to_asm+0x24/0x60
Mar 19 17:09:36 ubuntu kernel: [ 291.865112] [<ffffffff8106f8e0>] ?
kthread_park+0x60/0x60
Mar 19 17:09:36 ubuntu kernel: [ 291.865114] [<ffffffff81689914>]
ret_from_fork+0x54/0x60
Mar 19 17:09:36 ubuntu kernel: [ 291.865171] ---[ end trace
9403fa149caf04b9 ]---
Mar 19 17:09:36 ubuntu kernel: [ 291.865178] ------------[ cut here
]------------
Mar 19 17:09:36 ubuntu kernel: [ 291.865210] WARNING: CPU: 1 PID: 38
at net/mac80211/driver-ops.c:39 drv_stop+0xf8/0x100 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.865211] Modules linked in:
xt_limit xt_tcpudp xt_DSCP ipt_REJECT nf_reject_ipv4 nf_conntrack_irc
nf_conntrack_ftp nf_conntrack_ipv4 nf_defrag_ipv4 xt_state
nf_conntrack ctr binfmt_misc vboxpci(O) vboxnetadp(O) vboxnetflt(O)
vboxdrv(O) deflate camellia_generic cast5_generic cast_common cmac
rmd160 ccm serpent_generic blowfish_generic blowfish_x86_64
blowfish_common twofish_generic twofish_x86_64_3way xts twofish_x86_64
twofish_common xcbc sha512_generic des_generic ablk_helper cryptd lrw
gf128mul glue_helper aes_x86_64 xfrm_user ah4 esp4 xfrm4_mode_beet
xfrm4_tunnel tunnel4 xfrm4_mode_tunnel xfrm4_mode_transport ipcomp
xfrm_ipcomp af_key xfrm_algo arc4 rfcomm bridge stp llc bnep
tpm_infineon snd_hda_codec_analog snd_hda_codec_generic ath3k btusb
btintel bluetooth snd_hda_intel snd_hda_codec snd_hda_core
Mar 19 17:09:36 ubuntu kernel: [ 291.865243] iptable_mangle
snd_hwdep iptable_filter snd_pcm ip_tables x_tables radeon
snd_seq_midi snd_rawmidi ttm ath10k_pci ath10k_core mac80211
drm_kms_helper snd_seq_midi_event ath psmouse snd_seq video serio_raw
drm fb_sys_fops tg3 cfg80211 snd_seq_device sysimgblt snd_timer
sysfillrect syscopyarea i2c_algo_bit ptp snd wmi rfkill pps_core
k10temp hp_accel sp5100_tco lis3lv02d soundcore i2c_piix4
input_polldev tpm_tis tpm_tis_core
Mar 19 17:09:36 ubuntu kernel: [ 291.865265] CPU: 1 PID: 38 Comm:
kworker/1:1 Tainted: G W O 4.9.135 #49
Mar 19 17:09:36 ubuntu kernel: [ 291.865266] Hardware name:
Hewlett-Packard HP Compaq 6735b (NA961ET#ABD)/30E3, BIOS 68GTT Ver.
F.15 10/25/2010
Mar 19 17:09:36 ubuntu kernel: [ 291.865296] Workqueue:
events_freezable ieee80211_restart_work [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.865298] ffffc90000167b98
ffffffff81353fc6 0000000000000000 0000000000000000
Mar 19 17:09:36 ubuntu kernel: [ 291.865300] ffffc90000167bd8
ffffffff81146689 0000000900167ba0 ffff880137bc0700
Mar 19 17:09:36 ubuntu kernel: [ 291.865303] ffff880137bc0fe8
0000000000000000 ffff880137c91410 ffff880137bc0700
Mar 19 17:09:36 ubuntu kernel: [ 291.865305] Call Trace:
Mar 19 17:09:36 ubuntu kernel: [ 291.865308] [<ffffffff81353fc6>]
dump_stack+0x4d/0x67
Mar 19 17:09:36 ubuntu kernel: [ 291.865310] [<ffffffff81146689>]
__warn.cold.10+0x91/0xb6
Mar 19 17:09:36 ubuntu kernel: [ 291.865312] [<ffffffff8105117d>]
warn_slowpath_null+0x1d/0x20
Mar 19 17:09:36 ubuntu kernel: [ 291.865343] [<ffffffffa02706d8>]
drv_stop+0xf8/0x100 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.865377] [<ffffffffa02a2413>]
ieee80211_stop_device+0x43/0x50 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.865410] [<ffffffffa0284dbf>]
ieee80211_do_stop+0x57f/0x860 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.865412] [<ffffffff8168943a>] ?
_raw_spin_unlock_bh+0x1a/0x20
Mar 19 17:09:36 ubuntu kernel: [ 291.865450] [<ffffffffa02850ba>]
ieee80211_stop+0x1a/0x20 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.865455] [<ffffffff815ba7fd>]
__dev_close_many+0x8d/0xc0
Mar 19 17:09:36 ubuntu kernel: [ 291.865460] [<ffffffff815ba8ad>]
dev_close_many+0x7d/0x110
Mar 19 17:09:36 ubuntu kernel: [ 291.865465] [<ffffffff815bc7eb>]
dev_close.part.96+0x3b/0x50
Mar 19 17:09:36 ubuntu kernel: [ 291.865469] [<ffffffff815bc81a>]
dev_close+0x1a/0x20
Mar 19 17:09:36 ubuntu kernel: [ 291.865501] [<ffffffffa00abdcb>]
cfg80211_shutdown_all_interfaces+0x7b/0xa0 [cfg80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.865537] [<ffffffffa029ff22>]
ieee80211_handle_reconfig_failure+0x92/0xa0 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.865573] [<ffffffffa02a24a2>]
ieee80211_reconfig+0x82/0x1340 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.865579] [<ffffffff810b51cb>] ?
try_to_del_timer_sync+0x4b/0x60
Mar 19 17:09:36 ubuntu kernel: [ 291.865612] [<ffffffffa026d847>]
ieee80211_restart_work+0xa7/0xe0 [mac80211]
Mar 19 17:09:36 ubuntu kernel: [ 291.865617] [<ffffffff8106a5fa>]
process_one_work+0x1fa/0x460
Mar 19 17:09:36 ubuntu kernel: [ 291.865622] [<ffffffff8106ac62>]
worker_thread+0x32/0x4e0
Mar 19 17:09:36 ubuntu kernel: [ 291.865627] [<ffffffff8106ac30>] ?
rescuer_thread+0x3d0/0x3d0
Mar 19 17:09:36 ubuntu kernel: [ 291.865632] [<ffffffff8106f9b9>]
kthread+0xd9/0xf0
Mar 19 17:09:36 ubuntu kernel: [ 291.865638] [<ffffffff81689884>] ?
__switch_to_asm+0x24/0x60
Mar 19 17:09:36 ubuntu kernel: [ 291.865643] [<ffffffff8106f8e0>] ?
kthread_park+0x60/0x60
Mar 19 17:09:36 ubuntu kernel: [ 291.865645] [<ffffffff81689914>]
ret_from_fork+0x54/0x60
Mar 19 17:09:36 ubuntu kernel: [ 291.865647] ---[ end trace
9403fa149caf04ba ]---
^ permalink raw reply
* Re: [PATCH] ath10k: Fix ASPM L1 state on QCA988X
From: Ben Greear @ 2019-03-20 15:59 UTC (permalink / raw)
To: Tom Psyborg; +Cc: linux-wireless, kvalo, Sujith Manoharan
In-Reply-To: <CAKR_QVKfb5vkT1xmmEyvJzeb+VnPx8T3ZpkdLPTMx+agtSBYMg@mail.gmail.com>
On 3/20/19 8:48 AM, Tom Psyborg wrote:
> On 20/03/2019, Ben Greear <greearb@candelatech.com> wrote:
>> On 3/19/19 12:59 PM, Tomislav Požega wrote:
>>> On some systems there are heavy crashes if the kernel config
>>> option CONFIG_PCIEASPM_PERFORMANCE is not set. Patch provided by
>>> Sujith for ath9k fixes this issue and the card operates without
>>> crashes with kernel default CONFIG_PCIEASPM_DEFAULT option that uses
>>> BIOS provided ASPM settings. Tested with QCA9862 mPCIe card.
>>
>> Hello,
>>
>> Were these firmware crashes or system crashes or both? Can you
>> describe that a bit more so we can better understand what bugs this
>> is fixing?
>>
>>
>> Thanks,
>> Ben
>>
>
> These were system crashes that rendered firmware restart feature useless.
Those below are system warnings related to the firmware messing up, not
actually system crashes as far as I can tell.
Anyway, I'll add this to my kernel and do some testing and push it into
ath10k-ct assuming testing goes OK.
Thanks,
Ben
>
> With default kernel config pinging router took ~0.70ms and sometimes
> it was possible to load some smaller web pages. Any larger page load
> caused immediate crash.
>
> Enabling kernel option CONFIG_PCIEASPM_PERFORMANCE and rebuilding
> reduced ping time to the router to ~0.55ms and connection was stable.
>
> This patch provides fix to the ASPM so that the card works fine
> without forcing ASPM performance configuration. Ping to the router was
> the same, about 0.55ms.
>
> So, as Sujith already explained in his original patchwork this really
> fixes L1 latency issue that impacts card communication with the host.
> Here is my log from yesterday while testing, what happens without this
> patch, or without CONFIG_PCIEASPM_PERFORMANCE enabled: (failed to
> flush transmit queue was first message on every occasion this
> happened)
>
> Mar 19 17:09:02 ubuntu kernel: [ 258.528040] ath10k_pci 0000:03:00.0:
> failed to flush transmit queue (skip 0 ar-state 1): 0
> Mar 19 17:09:05 ubuntu kernel: [ 261.536042] ath10k_pci 0000:03:00.0:
> failed to install key for vdev 0 peer 10:fe:ed:e5:73:42: -110
> Mar 19 17:09:08 ubuntu kernel: [ 264.544053] ath10k_pci 0000:03:00.0:
> wmi command 36893 timeout, restarting hardware
> Mar 19 17:09:08 ubuntu kernel: [ 264.544067] ath10k_pci 0000:03:00.0:
> failed to delete peer 10:fe:ed:e5:73:42 for vdev 0: -11
> Mar 19 17:09:08 ubuntu kernel: [ 264.544071] ath10k_pci 0000:03:00.0:
> found sta peer 10:fe:ed:e5:73:42 (ptr ffff88013a466e00 id 63) entry on
> vdev 0 after it was supposedly removed
> Mar 19 17:09:08 ubuntu kernel: [ 264.544085] ------------[ cut here
> ]------------
> Mar 19 17:09:08 ubuntu kernel: [ 264.544142] WARNING: CPU: 1 PID: 744
> at net/mac80211/sta_info.c:970 __sta_info_destroy_part2+0x18b/0x190
> [mac80211]
> Mar 19 17:09:08 ubuntu kernel: [ 264.544151] Modules linked in:
> xt_limit xt_tcpudp xt_DSCP ipt_REJECT nf_reject_ipv4 nf_conntrack_irc
> nf_conntrack_ftp nf_conntrack_ipv4 nf_defrag_ipv4 xt_state
> nf_conntrack ctr binfmt_misc vboxpci(O) vboxnetadp(O) vboxnetflt(O)
> vboxdrv(O) deflate camellia_generic cast5_generic cast_common cmac
> rmd160 ccm serpent_generic blowfish_generic blowfish_x86_64
> blowfish_common twofish_generic twofish_x86_64_3way xts twofish_x86_64
> twofish_common xcbc sha512_generic des_generic ablk_helper cryptd lrw
> gf128mul glue_helper aes_x86_64 xfrm_user ah4 esp4 xfrm4_mode_beet
> xfrm4_tunnel tunnel4 xfrm4_mode_tunnel xfrm4_mode_transport ipcomp
> xfrm_ipcomp af_key xfrm_algo arc4 rfcomm bridge stp llc bnep
> tpm_infineon snd_hda_codec_analog snd_hda_codec_generic ath3k btusb
> btintel bluetooth snd_hda_intel snd_hda_codec snd_hda_core
> Mar 19 17:09:08 ubuntu kernel: [ 264.544207] iptable_mangle
> snd_hwdep iptable_filter snd_pcm ip_tables x_tables radeon
> snd_seq_midi snd_rawmidi ttm ath10k_pci ath10k_core mac80211
> drm_kms_helper snd_seq_midi_event ath psmouse snd_seq video serio_raw
> drm fb_sys_fops tg3 cfg80211 snd_seq_device sysimgblt snd_timer
> sysfillrect syscopyarea i2c_algo_bit ptp snd wmi rfkill pps_core
> k10temp hp_accel sp5100_tco lis3lv02d soundcore i2c_piix4
> input_polldev tpm_tis tpm_tis_core
> Mar 19 17:09:08 ubuntu kernel: [ 264.544237] CPU: 1 PID: 744 Comm:
> wpa_supplicant Tainted: G O 4.9.135 #49
> Mar 19 17:09:08 ubuntu kernel: [ 264.544238] Hardware name:
> Hewlett-Packard HP Compaq 6735b (NA961ET#ABD)/30E3, BIOS 68GTT Ver.
> F.15 10/25/2010
> Mar 19 17:09:08 ubuntu kernel: [ 264.544240] ffffc900006a3a50
> ffffffff81353fc6 0000000000000000 0000000000000000
> Mar 19 17:09:08 ubuntu kernel: [ 264.544243] ffffc900006a3a90
> ffffffff81146689 00000009a0270b13 ffff880133a9f000
> Mar 19 17:09:08 ubuntu kernel: [ 264.544246] ffff880137bc0700
> ffff880137c908c0 ffff880137bc0c58 ffff880137bc0c58
> Mar 19 17:09:08 ubuntu kernel: [ 264.544249] Call Trace:
> Mar 19 17:09:08 ubuntu kernel: [ 264.544258] [<ffffffff81353fc6>]
> dump_stack+0x4d/0x67
> Mar 19 17:09:08 ubuntu kernel: [ 264.544265] [<ffffffff81146689>]
> __warn.cold.10+0x91/0xb6
> Mar 19 17:09:08 ubuntu kernel: [ 264.544270] [<ffffffff8105117d>]
> warn_slowpath_null+0x1d/0x20
> Mar 19 17:09:08 ubuntu kernel: [ 264.544305] [<ffffffffa0275c0b>]
> __sta_info_destroy_part2+0x18b/0x190 [mac80211]
> Mar 19 17:09:08 ubuntu kernel: [ 264.544341] [<ffffffffa0275f0d>]
> __sta_info_flush+0x12d/0x190 [mac80211]
> Mar 19 17:09:08 ubuntu kernel: [ 264.544378] [<ffffffffa02bc0cc>]
> ieee80211_set_disassoc+0xbc/0x410 [mac80211]
> Mar 19 17:09:08 ubuntu kernel: [ 264.544411] [<ffffffffa02cf23e>]
> ieee80211_mgd_deauth.cold.48+0x15e/0x1ae [mac80211]
> Mar 19 17:09:08 ubuntu kernel: [ 264.544444] [<ffffffffa0289ea8>]
> ieee80211_deauth+0x18/0x20 [mac80211]
> Mar 19 17:09:08 ubuntu kernel: [ 264.544494] [<ffffffffa00d5637>]
> cfg80211_mlme_deauth+0x97/0x150 [cfg80211]
> Mar 19 17:09:08 ubuntu kernel: [ 264.544529] [<ffffffffa00d99da>]
> cfg80211_disconnect+0x9a/0x1f0 [cfg80211]
> Mar 19 17:09:08 ubuntu kernel: [ 264.544562] [<ffffffffa00f54f3>]
> cfg80211_wext_siwmlme+0x83/0x9a [cfg80211]
> Mar 19 17:09:08 ubuntu kernel: [ 264.544595] [<ffffffffa00f5470>] ?
> cfg80211_wext_siwgenie+0x120/0x120 [cfg80211]
> Mar 19 17:09:08 ubuntu kernel: [ 264.544600] [<ffffffff81670991>]
> ioctl_standard_iw_point+0x241/0x300
> Mar 19 17:09:08 ubuntu kernel: [ 264.544602] [<ffffffff81670af7>]
> ioctl_standard_call+0xa7/0xb0
> Mar 19 17:09:08 ubuntu kernel: [ 264.544606] [<ffffffff812cec1e>] ?
> security_capable+0x4e/0x70
> Mar 19 17:09:08 ubuntu kernel: [ 264.544613] [<ffffffff81670a50>] ?
> ioctl_standard_iw_point+0x300/0x300
> Mar 19 17:09:08 ubuntu kernel: [ 264.544618] [<ffffffff81670739>]
> wireless_process_ioctl.constprop.12+0xd9/0xf0
> Mar 19 17:09:08 ubuntu kernel: [ 264.544623] [<ffffffff81670c32>]
> wext_handle_ioctl+0x62/0xa0
> Mar 19 17:09:08 ubuntu kernel: [ 264.544625] [<ffffffff815db7aa>]
> dev_ioctl+0x2aa/0x5d0
> Mar 19 17:09:08 ubuntu kernel: [ 264.544629] [<ffffffff811b88d6>] ?
> do_readv_writev+0x196/0x260
> Mar 19 17:09:08 ubuntu kernel: [ 264.544632] [<ffffffff815a1908>]
> sock_ioctl+0x98/0x280
> Mar 19 17:09:08 ubuntu kernel: [ 264.544635] [<ffffffff811cc8f9>]
> do_vfs_ioctl+0x99/0x5d0
> Mar 19 17:09:08 ubuntu kernel: [ 264.544637] [<ffffffff811cceaa>]
> SyS_ioctl+0x7a/0x90
> Mar 19 17:09:08 ubuntu kernel: [ 264.544640] [<ffffffff81002a61>]
> do_syscall_64+0x61/0xc0
> Mar 19 17:09:08 ubuntu kernel: [ 264.544643] [<ffffffff8168977e>]
> entry_SYSCALL_64_after_swapgs+0x58/0xc6
> Mar 19 17:09:08 ubuntu kernel: [ 264.544646] ---[ end trace
> 9403fa149caf04b7 ]---
> Mar 19 17:09:08 ubuntu kernel: [ 264.556724] ath10k_pci 0000:03:00.0:
> failed to read hi_board_data address: -16
> Mar 19 17:09:14 ubuntu kernel: [ 270.595420] ath10k_pci 0000:03:00.0:
> failed to wait for target init: -110
> Mar 19 17:09:14 ubuntu kernel: [ 270.600649] ieee80211 phy0: Hardware
> restart was requested
> Mar 19 17:09:14 ubuntu kernel: [ 270.600691] ath10k_pci 0000:03:00.0:
> failed to recalculate rts/cts prot for vdev 0: -108
> Mar 19 17:09:14 ubuntu kernel: [ 270.600695] ath10k_pci 0000:03:00.0:
> failed to set cts protection for vdev 0: -108
> Mar 19 17:09:14 ubuntu kernel: [ 270.600698] ath10k_pci 0000:03:00.0:
> failed to set erp slot for vdev 0: -108
> Mar 19 17:09:14 ubuntu kernel: [ 270.600701] ath10k_pci 0000:03:00.0:
> failed to set preamble for vdev 0: -108
> Mar 19 17:09:14 ubuntu kernel: [ 270.600704] ath10k_pci 0000:03:00.0:
> failed to down vdev 0: -108
> Mar 19 17:09:14 ubuntu kernel: [ 270.600710] ath10k_pci 0000:03:00.0:
> failed to set wmm params: -108
> Mar 19 17:09:14 ubuntu kernel: [ 270.600712] ath10k_pci 0000:03:00.0:
> failed to set wmm params: -108
> Mar 19 17:09:14 ubuntu kernel: [ 270.600714] ath10k_pci 0000:03:00.0:
> failed to set wmm params: -108
> Mar 19 17:09:14 ubuntu kernel: [ 270.600717] ath10k_pci 0000:03:00.0:
> failed to set wmm params: -108
> Mar 19 17:09:14 ubuntu kernel: [ 270.600722] ath10k_pci 0000:03:00.0:
> failed to stop WMI vdev 0: -108
> Mar 19 17:09:14 ubuntu kernel: [ 270.600724] ath10k_pci 0000:03:00.0:
> failed to stop vdev 0: -108
> Mar 19 17:09:14 ubuntu kernel: [ 270.600734] ath10k_pci 0000:03:00.0:
> failed to flush transmit queue (skip 1 ar-state 2): 5000
> Mar 19 17:09:20 ubuntu kernel: [ 276.645402] ath10k_pci 0000:03:00.0:
> failed to wait for target init: -110
> Mar 19 17:09:20 ubuntu kernel: [ 276.645405] ath10k_pci 0000:03:00.0:
> failed to warm reset attempt 1 of 3: -110
> Mar 19 17:09:27 ubuntu kernel: [ 282.780276] ath10k_pci 0000:03:00.0:
> failed to wait for target init: -110
> Mar 19 17:09:27 ubuntu kernel: [ 282.780278] ath10k_pci 0000:03:00.0:
> failed to warm reset attempt 2 of 3: -110
> Mar 19 17:09:33 ubuntu kernel: [ 288.818402] ath10k_pci 0000:03:00.0:
> failed to wait for target init: -110
> Mar 19 17:09:33 ubuntu kernel: [ 288.818404] ath10k_pci 0000:03:00.0:
> failed to warm reset attempt 3 of 3: -110
> Mar 19 17:09:36 ubuntu kernel: [ 291.863324] ath10k_pci 0000:03:00.0:
> failed to wait for target after cold reset: -110
> Mar 19 17:09:36 ubuntu kernel: [ 291.863339] ------------[ cut here
> ]------------
> Mar 19 17:09:36 ubuntu kernel: [ 291.863393] WARNING: CPU: 1 PID: 38
> at net/mac80211/util.c:1863 ieee80211_reconfig+0x7a/0x1340 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.863394] Hardware became
> unavailable during restart.
> Mar 19 17:09:36 ubuntu kernel: [ 291.863395] Modules linked in:
> xt_limit xt_tcpudp xt_DSCP ipt_REJECT nf_reject_ipv4 nf_conntrack_irc
> nf_conntrack_ftp nf_conntrack_ipv4 nf_defrag_ipv4 xt_state
> nf_conntrack ctr binfmt_misc vboxpci(O) vboxnetadp(O) vboxnetflt(O)
> vboxdrv(O) deflate camellia_generic cast5_generic cast_common cmac
> rmd160 ccm serpent_generic blowfish_generic blowfish_x86_64
> blowfish_common twofish_generic twofish_x86_64_3way xts twofish_x86_64
> twofish_common xcbc sha512_generic des_generic ablk_helper cryptd lrw
> gf128mul glue_helper aes_x86_64 xfrm_user ah4 esp4 xfrm4_mode_beet
> xfrm4_tunnel tunnel4 xfrm4_mode_tunnel xfrm4_mode_transport ipcomp
> xfrm_ipcomp af_key xfrm_algo arc4 rfcomm bridge stp llc bnep
> tpm_infineon snd_hda_codec_analog snd_hda_codec_generic ath3k btusb
> btintel bluetooth snd_hda_intel snd_hda_codec snd_hda_core
> Mar 19 17:09:36 ubuntu kernel: [ 291.863439] iptable_mangle
> snd_hwdep iptable_filter snd_pcm ip_tables x_tables radeon
> snd_seq_midi snd_rawmidi ttm ath10k_pci ath10k_core mac80211
> drm_kms_helper snd_seq_midi_event ath psmouse snd_seq video serio_raw
> drm fb_sys_fops tg3 cfg80211 snd_seq_device sysimgblt snd_timer
> sysfillrect syscopyarea i2c_algo_bit ptp snd wmi rfkill pps_core
> k10temp hp_accel sp5100_tco lis3lv02d soundcore i2c_piix4
> input_polldev tpm_tis tpm_tis_core
> Mar 19 17:09:36 ubuntu kernel: [ 291.863468] CPU: 1 PID: 38 Comm:
> kworker/1:1 Tainted: G W O 4.9.135 #49
> Mar 19 17:09:36 ubuntu kernel: [ 291.863470] Hardware name:
> Hewlett-Packard HP Compaq 6735b (NA961ET#ABD)/30E3, BIOS 68GTT Ver.
> F.15 10/25/2010
> Mar 19 17:09:36 ubuntu kernel: [ 291.863502] Workqueue:
> events_freezable ieee80211_restart_work [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.863504] ffffc90000167cf0
> ffffffff81353fc6 ffffc90000167d40 0000000000000000
> Mar 19 17:09:36 ubuntu kernel: [ 291.863507] ffffc90000167d30
> ffffffff81146689 00000009816862dc ffff880137bc0f88
> Mar 19 17:09:36 ubuntu kernel: [ 291.863510] ffff880137bc0f88
> ffff880137bc0700 ffff880137bc0700 00000000ffffff92
> Mar 19 17:09:36 ubuntu kernel: [ 291.863513] Call Trace:
> Mar 19 17:09:36 ubuntu kernel: [ 291.863519] [<ffffffff81353fc6>]
> dump_stack+0x4d/0x67
> Mar 19 17:09:36 ubuntu kernel: [ 291.863523] [<ffffffff81146689>]
> __warn.cold.10+0x91/0xb6
> Mar 19 17:09:36 ubuntu kernel: [ 291.863526] [<ffffffff810510ff>]
> warn_slowpath_fmt+0x4f/0x60
> Mar 19 17:09:36 ubuntu kernel: [ 291.863558] [<ffffffffa0270515>] ?
> drv_start+0x45/0x110 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.863591] [<ffffffffa02a249a>]
> ieee80211_reconfig+0x7a/0x1340 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.863596] [<ffffffff810b51cb>] ?
> try_to_del_timer_sync+0x4b/0x60
> Mar 19 17:09:36 ubuntu kernel: [ 291.863627] [<ffffffffa026d847>]
> ieee80211_restart_work+0xa7/0xe0 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.863631] [<ffffffff8106a5fa>]
> process_one_work+0x1fa/0x460
> Mar 19 17:09:36 ubuntu kernel: [ 291.863633] [<ffffffff8106ac62>]
> worker_thread+0x32/0x4e0
> Mar 19 17:09:36 ubuntu kernel: [ 291.863635] [<ffffffff8106ac30>] ?
> rescuer_thread+0x3d0/0x3d0
> Mar 19 17:09:36 ubuntu kernel: [ 291.863638] [<ffffffff8106f9b9>]
> kthread+0xd9/0xf0
> Mar 19 17:09:36 ubuntu kernel: [ 291.863641] [<ffffffff81689884>] ?
> __switch_to_asm+0x24/0x60
> Mar 19 17:09:36 ubuntu kernel: [ 291.863644] [<ffffffff8106f8e0>] ?
> kthread_park+0x60/0x60
> Mar 19 17:09:36 ubuntu kernel: [ 291.863646] [<ffffffff81689914>]
> ret_from_fork+0x54/0x60
> Mar 19 17:09:36 ubuntu kernel: [ 291.863648] ---[ end trace
> 9403fa149caf04b8 ]---
> Mar 19 17:09:36 ubuntu kernel: [ 291.864616] ------------[ cut here
> ]------------
> Mar 19 17:09:36 ubuntu kernel: [ 291.864663] WARNING: CPU: 1 PID: 38
> at net/mac80211/driver-ops.h:17 drv_remove_interface+0x10c/0x120
> [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.864680] wlan6: Failed
> check-sdata-in-driver check, flags: 0x4
> Mar 19 17:09:36 ubuntu kernel: [ 291.864680] Modules linked in:
> xt_limit xt_tcpudp xt_DSCP ipt_REJECT nf_reject_ipv4 nf_conntrack_irc
> nf_conntrack_ftp nf_conntrack_ipv4 nf_defrag_ipv4 xt_state
> nf_conntrack ctr binfmt_misc vboxpci(O) vboxnetadp(O) vboxnetflt(O)
> vboxdrv(O) deflate camellia_generic cast5_generic cast_common cmac
> rmd160 ccm serpent_generic blowfish_generic blowfish_x86_64
> blowfish_common twofish_generic twofish_x86_64_3way xts twofish_x86_64
> twofish_common xcbc sha512_generic des_generic ablk_helper cryptd lrw
> gf128mul glue_helper aes_x86_64 xfrm_user ah4 esp4 xfrm4_mode_beet
> xfrm4_tunnel tunnel4 xfrm4_mode_tunnel xfrm4_mode_transport ipcomp
> xfrm_ipcomp af_key xfrm_algo arc4 rfcomm bridge stp llc bnep
> tpm_infineon snd_hda_codec_analog snd_hda_codec_generic ath3k btusb
> btintel bluetooth snd_hda_intel snd_hda_codec snd_hda_core
> Mar 19 17:09:36 ubuntu kernel: [ 291.864742] iptable_mangle
> snd_hwdep iptable_filter snd_pcm ip_tables x_tables radeon
> snd_seq_midi snd_rawmidi ttm ath10k_pci ath10k_core mac80211
> drm_kms_helper snd_seq_midi_event ath psmouse snd_seq video serio_raw
> drm fb_sys_fops tg3 cfg80211 snd_seq_device sysimgblt snd_timer
> sysfillrect syscopyarea i2c_algo_bit ptp snd wmi rfkill pps_core
> k10temp hp_accel sp5100_tco lis3lv02d soundcore i2c_piix4
> input_polldev tpm_tis tpm_tis_core
> Mar 19 17:09:36 ubuntu kernel: [ 291.864778] CPU: 1 PID: 38 Comm:
> kworker/1:1 Tainted: G W O 4.9.135 #49
> Mar 19 17:09:36 ubuntu kernel: [ 291.864779] Hardware name:
> Hewlett-Packard HP Compaq 6735b (NA961ET#ABD)/30E3, BIOS 68GTT Ver.
> F.15 10/25/2010
> Mar 19 17:09:36 ubuntu kernel: [ 291.864810] Workqueue:
> events_freezable ieee80211_restart_work [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.864812] ffffc90000167b58
> ffffffff81353fc6 ffffc90000167ba8 0000000000000000
> Mar 19 17:09:36 ubuntu kernel: [ 291.864815] ffffc90000167b98
> ffffffff81146689 0000000900167b68 ffff880137c90c88
> Mar 19 17:09:36 ubuntu kernel: [ 291.864818] ffff880137bc0fe8
> ffff880137bc0700 ffff880137c91410 ffff880137bc0700
> Mar 19 17:09:36 ubuntu kernel: [ 291.864820] Call Trace:
> Mar 19 17:09:36 ubuntu kernel: [ 291.864824] [<ffffffff81353fc6>]
> dump_stack+0x4d/0x67
> Mar 19 17:09:36 ubuntu kernel: [ 291.864827] [<ffffffff81146689>]
> __warn.cold.10+0x91/0xb6
> Mar 19 17:09:36 ubuntu kernel: [ 291.864830] [<ffffffff810510ff>]
> warn_slowpath_fmt+0x4f/0x60
> Mar 19 17:09:36 ubuntu kernel: [ 291.864833] [<ffffffff815aa229>] ?
> skb_dequeue+0x59/0x70
> Mar 19 17:09:36 ubuntu kernel: [ 291.864864] [<ffffffffa0270a6c>]
> drv_remove_interface+0x10c/0x120 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.864897] [<ffffffffa0284d92>]
> ieee80211_do_stop+0x552/0x860 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.864900] [<ffffffff8168943a>] ?
> _raw_spin_unlock_bh+0x1a/0x20
> Mar 19 17:09:36 ubuntu kernel: [ 291.864933] [<ffffffffa02850ba>]
> ieee80211_stop+0x1a/0x20 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.864935] [<ffffffff815ba7fd>]
> __dev_close_many+0x8d/0xc0
> Mar 19 17:09:36 ubuntu kernel: [ 291.864937] [<ffffffff815ba8ad>]
> dev_close_many+0x7d/0x110
> Mar 19 17:09:36 ubuntu kernel: [ 291.864940] [<ffffffff815bc7eb>]
> dev_close.part.96+0x3b/0x50
> Mar 19 17:09:36 ubuntu kernel: [ 291.864942] [<ffffffff815bc81a>]
> dev_close+0x1a/0x20
> Mar 19 17:09:36 ubuntu kernel: [ 291.864995] [<ffffffffa00abdcb>]
> cfg80211_shutdown_all_interfaces+0x7b/0xa0 [cfg80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.865028] [<ffffffffa029ff22>]
> ieee80211_handle_reconfig_failure+0x92/0xa0 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.865062] [<ffffffffa02a24a2>]
> ieee80211_reconfig+0x82/0x1340 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.865066] [<ffffffff810b51cb>] ?
> try_to_del_timer_sync+0x4b/0x60
> Mar 19 17:09:36 ubuntu kernel: [ 291.865097] [<ffffffffa026d847>]
> ieee80211_restart_work+0xa7/0xe0 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.865100] [<ffffffff8106a5fa>]
> process_one_work+0x1fa/0x460
> Mar 19 17:09:36 ubuntu kernel: [ 291.865103] [<ffffffff8106ac62>]
> worker_thread+0x32/0x4e0
> Mar 19 17:09:36 ubuntu kernel: [ 291.865105] [<ffffffff8106ac30>] ?
> rescuer_thread+0x3d0/0x3d0
> Mar 19 17:09:36 ubuntu kernel: [ 291.865108] [<ffffffff8106f9b9>]
> kthread+0xd9/0xf0
> Mar 19 17:09:36 ubuntu kernel: [ 291.865110] [<ffffffff81689884>] ?
> __switch_to_asm+0x24/0x60
> Mar 19 17:09:36 ubuntu kernel: [ 291.865112] [<ffffffff8106f8e0>] ?
> kthread_park+0x60/0x60
> Mar 19 17:09:36 ubuntu kernel: [ 291.865114] [<ffffffff81689914>]
> ret_from_fork+0x54/0x60
> Mar 19 17:09:36 ubuntu kernel: [ 291.865171] ---[ end trace
> 9403fa149caf04b9 ]---
> Mar 19 17:09:36 ubuntu kernel: [ 291.865178] ------------[ cut here
> ]------------
> Mar 19 17:09:36 ubuntu kernel: [ 291.865210] WARNING: CPU: 1 PID: 38
> at net/mac80211/driver-ops.c:39 drv_stop+0xf8/0x100 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.865211] Modules linked in:
> xt_limit xt_tcpudp xt_DSCP ipt_REJECT nf_reject_ipv4 nf_conntrack_irc
> nf_conntrack_ftp nf_conntrack_ipv4 nf_defrag_ipv4 xt_state
> nf_conntrack ctr binfmt_misc vboxpci(O) vboxnetadp(O) vboxnetflt(O)
> vboxdrv(O) deflate camellia_generic cast5_generic cast_common cmac
> rmd160 ccm serpent_generic blowfish_generic blowfish_x86_64
> blowfish_common twofish_generic twofish_x86_64_3way xts twofish_x86_64
> twofish_common xcbc sha512_generic des_generic ablk_helper cryptd lrw
> gf128mul glue_helper aes_x86_64 xfrm_user ah4 esp4 xfrm4_mode_beet
> xfrm4_tunnel tunnel4 xfrm4_mode_tunnel xfrm4_mode_transport ipcomp
> xfrm_ipcomp af_key xfrm_algo arc4 rfcomm bridge stp llc bnep
> tpm_infineon snd_hda_codec_analog snd_hda_codec_generic ath3k btusb
> btintel bluetooth snd_hda_intel snd_hda_codec snd_hda_core
> Mar 19 17:09:36 ubuntu kernel: [ 291.865243] iptable_mangle
> snd_hwdep iptable_filter snd_pcm ip_tables x_tables radeon
> snd_seq_midi snd_rawmidi ttm ath10k_pci ath10k_core mac80211
> drm_kms_helper snd_seq_midi_event ath psmouse snd_seq video serio_raw
> drm fb_sys_fops tg3 cfg80211 snd_seq_device sysimgblt snd_timer
> sysfillrect syscopyarea i2c_algo_bit ptp snd wmi rfkill pps_core
> k10temp hp_accel sp5100_tco lis3lv02d soundcore i2c_piix4
> input_polldev tpm_tis tpm_tis_core
> Mar 19 17:09:36 ubuntu kernel: [ 291.865265] CPU: 1 PID: 38 Comm:
> kworker/1:1 Tainted: G W O 4.9.135 #49
> Mar 19 17:09:36 ubuntu kernel: [ 291.865266] Hardware name:
> Hewlett-Packard HP Compaq 6735b (NA961ET#ABD)/30E3, BIOS 68GTT Ver.
> F.15 10/25/2010
> Mar 19 17:09:36 ubuntu kernel: [ 291.865296] Workqueue:
> events_freezable ieee80211_restart_work [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.865298] ffffc90000167b98
> ffffffff81353fc6 0000000000000000 0000000000000000
> Mar 19 17:09:36 ubuntu kernel: [ 291.865300] ffffc90000167bd8
> ffffffff81146689 0000000900167ba0 ffff880137bc0700
> Mar 19 17:09:36 ubuntu kernel: [ 291.865303] ffff880137bc0fe8
> 0000000000000000 ffff880137c91410 ffff880137bc0700
> Mar 19 17:09:36 ubuntu kernel: [ 291.865305] Call Trace:
> Mar 19 17:09:36 ubuntu kernel: [ 291.865308] [<ffffffff81353fc6>]
> dump_stack+0x4d/0x67
> Mar 19 17:09:36 ubuntu kernel: [ 291.865310] [<ffffffff81146689>]
> __warn.cold.10+0x91/0xb6
> Mar 19 17:09:36 ubuntu kernel: [ 291.865312] [<ffffffff8105117d>]
> warn_slowpath_null+0x1d/0x20
> Mar 19 17:09:36 ubuntu kernel: [ 291.865343] [<ffffffffa02706d8>]
> drv_stop+0xf8/0x100 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.865377] [<ffffffffa02a2413>]
> ieee80211_stop_device+0x43/0x50 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.865410] [<ffffffffa0284dbf>]
> ieee80211_do_stop+0x57f/0x860 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.865412] [<ffffffff8168943a>] ?
> _raw_spin_unlock_bh+0x1a/0x20
> Mar 19 17:09:36 ubuntu kernel: [ 291.865450] [<ffffffffa02850ba>]
> ieee80211_stop+0x1a/0x20 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.865455] [<ffffffff815ba7fd>]
> __dev_close_many+0x8d/0xc0
> Mar 19 17:09:36 ubuntu kernel: [ 291.865460] [<ffffffff815ba8ad>]
> dev_close_many+0x7d/0x110
> Mar 19 17:09:36 ubuntu kernel: [ 291.865465] [<ffffffff815bc7eb>]
> dev_close.part.96+0x3b/0x50
> Mar 19 17:09:36 ubuntu kernel: [ 291.865469] [<ffffffff815bc81a>]
> dev_close+0x1a/0x20
> Mar 19 17:09:36 ubuntu kernel: [ 291.865501] [<ffffffffa00abdcb>]
> cfg80211_shutdown_all_interfaces+0x7b/0xa0 [cfg80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.865537] [<ffffffffa029ff22>]
> ieee80211_handle_reconfig_failure+0x92/0xa0 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.865573] [<ffffffffa02a24a2>]
> ieee80211_reconfig+0x82/0x1340 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.865579] [<ffffffff810b51cb>] ?
> try_to_del_timer_sync+0x4b/0x60
> Mar 19 17:09:36 ubuntu kernel: [ 291.865612] [<ffffffffa026d847>]
> ieee80211_restart_work+0xa7/0xe0 [mac80211]
> Mar 19 17:09:36 ubuntu kernel: [ 291.865617] [<ffffffff8106a5fa>]
> process_one_work+0x1fa/0x460
> Mar 19 17:09:36 ubuntu kernel: [ 291.865622] [<ffffffff8106ac62>]
> worker_thread+0x32/0x4e0
> Mar 19 17:09:36 ubuntu kernel: [ 291.865627] [<ffffffff8106ac30>] ?
> rescuer_thread+0x3d0/0x3d0
> Mar 19 17:09:36 ubuntu kernel: [ 291.865632] [<ffffffff8106f9b9>]
> kthread+0xd9/0xf0
> Mar 19 17:09:36 ubuntu kernel: [ 291.865638] [<ffffffff81689884>] ?
> __switch_to_asm+0x24/0x60
> Mar 19 17:09:36 ubuntu kernel: [ 291.865643] [<ffffffff8106f8e0>] ?
> kthread_park+0x60/0x60
> Mar 19 17:09:36 ubuntu kernel: [ 291.865645] [<ffffffff81689914>]
> ret_from_fork+0x54/0x60
> Mar 19 17:09:36 ubuntu kernel: [ 291.865647] ---[ end trace
> 9403fa149caf04ba ]---
>
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply
* Re: [PATCH] ath9k: Differentiate between max combined and per chain power
From: Sven Eckelmann @ 2019-03-20 17:25 UTC (permalink / raw)
To: Tom Psyborg; +Cc: linux-wireless, Kalle Valo, QCA ath9k Development
In-Reply-To: <CAKR_QV+eHK4FN6V5aduS9vc8Zd2kbK5Ry3NO35Q1BwY58arZug@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1145 bytes --]
On Wednesday, 20 March 2019 14:49:57 CET Tom Psyborg wrote:
> On 20/03/2019, Sven Eckelmann <sven@narfation.org> wrote:
>
> > This also means that a device with multiple tx chains is even limited
> > further:
> >
> > * 1 chain: 31 dBm per chain
> > * 2 chains: 28 dBm per chain
> > * 3 chains: 26 dBm per chain
> >
>
> This is flawed theory and should be reverted instead of making further
> complications. Simplest way would be to remove
> POWER_CORRECTION_FOR_TWO_CHAIN and POWER_CORRECTION_FOR_THREE_CHAIN;
> from driver
You can of course propose a patch for that. But I will not participate in the
discussion how EIRP should be measured (per antenna/per system, on max point/
via integral over all positions, ...).
And you should also discuss it with QCA to find out whether they will also
remove the power correction from their closed source firmware. At least it
would also affect ath10k... maybe even their other drivers with closed source
components.
And your change would also not completely supersede my change. You forget that
the antennagain reduction is also done by scaled ath9k_hw_get_scaled_power.
Kind regards,
Sven
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply
* Re: [PATCH] cfg80211: Change an 'else if' into an 'else' in cfg80211_calculate_bitrate_he
From: Nathan Chancellor @ 2019-03-20 19:10 UTC (permalink / raw)
To: Johannes Berg
Cc: linux-wireless, David S. Miller, netdev, linux-kernel,
clang-built-linux, Nick Desaulniers
In-Reply-To: <20190307235735.31487-1-natechancellor@gmail.com>
On Thu, Mar 07, 2019 at 04:57:35PM -0700, Nathan Chancellor wrote:
> When building with -Wsometimes-uninitialized, Clang warns:
>
> net/wireless/util.c:1223:11: warning: variable 'result' is used
> uninitialized whenever 'if' condition is false
> [-Wsometimes-uninitialized]
>
> Clang can't evaluate at this point that WARN(1, ...) always returns true
> because __ret_warn_on is defined as !!(condition), which isn't
> immediately evaluated as 1. Change this branch to else so that it's
> clear to Clang that we intend to bail out here.
>
> Link: https://github.com/ClangBuiltLinux/linux/issues/382
> Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
> Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
> ---
> net/wireless/util.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/net/wireless/util.c b/net/wireless/util.c
> index e4b8db5e81ec..75899b62bdc9 100644
> --- a/net/wireless/util.c
> +++ b/net/wireless/util.c
> @@ -1220,9 +1220,11 @@ static u32 cfg80211_calculate_bitrate_he(struct rate_info *rate)
> else if (rate->bw == RATE_INFO_BW_HE_RU &&
> rate->he_ru_alloc == NL80211_RATE_INFO_HE_RU_ALLOC_26)
> result = rates_26[rate->he_gi];
> - else if (WARN(1, "invalid HE MCS: bw:%d, ru:%d\n",
> - rate->bw, rate->he_ru_alloc))
> + else {
> + WARN(1, "invalid HE MCS: bw:%d, ru:%d\n",
> + rate->bw, rate->he_ru_alloc);
> return 0;
> + }
>
> /* now scale to the appropriate MCS */
> tmp = result;
> --
> 2.21.0
>
Gentle ping (if there was a response to this, I didn't receive it). I
know I sent it in the middle of a merge window so I get if it slipped
through the cracks.
Thanks,
Nathan
^ permalink raw reply
* Re: [PATCH] NFC: st21nfca: Fix a couple of fall-through warnings
From: Gustavo A. R. Silva @ 2019-03-20 19:20 UTC (permalink / raw)
To: Samuel Ortiz; +Cc: linux-wireless, linux-kernel, Kees Cook
In-Reply-To: <20190212173902.GA6829@embeddedor>
Hi all,
If no one cares, I'll add this to my tree for 5.2
Thanks
--
Gustavo
On 2/12/19 11:39 AM, Gustavo A. R. Silva wrote:
> In preparation to enabling -Wimplicit-fallthrough, mark switch
> cases where we are expecting to fall through.
>
> This patch fixes the following warnings by adding a missing break
> and a fall-through annotation:
>
> drivers/nfc/st21nfca/dep.c: In function ‘st21nfca_tm_event_send_data’:
> drivers/nfc/st21nfca/dep.c:391:3: warning: this statement may fall through [-Wimplicit-fallthrough=]
> switch (cmd1) {
> ^~~~~~
> drivers/nfc/st21nfca/dep.c:404:2: note: here
> default:
> ^~~~~~~
> In file included from ./include/linux/kernel.h:15,
> from ./include/linux/skbuff.h:17,
> from ./include/net/nfc/hci.h:21,
> from drivers/nfc/st21nfca/dep.c:17:
> drivers/nfc/st21nfca/dep.c: In function ‘st21nfca_im_recv_dep_res_cb’:
> ./include/linux/printk.h:303:2: warning: this statement may fall through [-Wimplicit-fallthrough=]
> printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/nfc/st21nfca/dep.c:622:4: note: in expansion of macro ‘pr_err’
> pr_err("Received a ACK/NACK PDU\n");
> ^~~~~~
> drivers/nfc/st21nfca/dep.c:623:3: note: here
> case ST21NFCA_NFC_DEP_PFB_I_PDU:
> ^~~~
>
> Warning level 3 was used: -Wimplicit-fallthrough=3
>
> This patch is part of the ongoing efforts to enable
> -Wimplicit-fallthrough.
>
> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
> ---
> drivers/nfc/st21nfca/dep.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/nfc/st21nfca/dep.c b/drivers/nfc/st21nfca/dep.c
> index 3420c5104c94..60f013063f80 100644
> --- a/drivers/nfc/st21nfca/dep.c
> +++ b/drivers/nfc/st21nfca/dep.c
> @@ -401,6 +401,7 @@ static int st21nfca_tm_event_send_data(struct nfc_hci_dev *hdev,
> default:
> return 1;
> }
> + break;
> default:
> return 1;
> }
> @@ -620,6 +621,7 @@ static void st21nfca_im_recv_dep_res_cb(void *context, struct sk_buff *skb,
> switch (ST21NFCA_NFC_DEP_PFB_TYPE(dep_res->pfb)) {
> case ST21NFCA_NFC_DEP_PFB_ACK_NACK_PDU:
> pr_err("Received a ACK/NACK PDU\n");
> + /* fall through */
> case ST21NFCA_NFC_DEP_PFB_I_PDU:
> info->dep_info.curr_nfc_dep_pni =
> ST21NFCA_NFC_DEP_PFB_PNI(dep_res->pfb + 1);
>
^ permalink raw reply
* Re: [PATCH] NFC: pn533: mark expected switch fall-throughs
From: Gustavo A. R. Silva @ 2019-03-20 19:21 UTC (permalink / raw)
To: Samuel Ortiz, Kees Cook; +Cc: linux-wireless, linux-kernel
In-Reply-To: <20190213185741.GA5047@embeddedor>
Hi all,
If no one cares, I'll add this to my tree for 5.2
Thanks
--
Gustavo
On 2/13/19 12:57 PM, Gustavo A. R. Silva wrote:
> In preparation to enabling -Wimplicit-fallthrough, mark switch
> cases where we are expecting to fall through.
>
> This patch fixes the following warnings:
>
> drivers/nfc/pn533/pn533.c: In function ‘pn533_transceive’:
> drivers/nfc/pn533/pn533.c:2142:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
> if (dev->tgt_active_prot == NFC_PROTO_FELICA) {
> ^
> drivers/nfc/pn533/pn533.c:2150:2: note: here
> default:
> ^~~~~~~
> drivers/nfc/pn533/pn533.c: In function ‘pn533_wq_mi_recv’:
> drivers/nfc/pn533/pn533.c:2267:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
> if (dev->tgt_active_prot == NFC_PROTO_FELICA) {
> ^
> drivers/nfc/pn533/pn533.c:2276:2: note: here
> default:
> ^~~~~~~
>
> Warning level 3 was used: -Wimplicit-fallthrough=3
>
> This patch is part of the ongoing efforts to enable
> -Wimplicit-fallthrough.
>
> Addresses-Coverity-ID: 1230487 ("Missing break in switch")
> Addresses-Coverity-ID: 1230488 ("Missing break in switch")
> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
> ---
> drivers/nfc/pn533/pn533.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/nfc/pn533/pn533.c b/drivers/nfc/pn533/pn533.c
> index a0cc1cc45292..5961f14259e5 100644
> --- a/drivers/nfc/pn533/pn533.c
> +++ b/drivers/nfc/pn533/pn533.c
> @@ -2147,6 +2147,7 @@ static int pn533_transceive(struct nfc_dev *nfc_dev,
>
> break;
> }
> + /* fall through */
> default:
> /* jumbo frame ? */
> if (skb->len > PN533_CMD_DATAEXCH_DATA_MAXLEN) {
> @@ -2273,6 +2274,7 @@ static void pn533_wq_mi_recv(struct work_struct *work)
>
> break;
> }
> + /* fall through */
> default:
> skb_put_u8(skb, 1); /*TG*/
>
>
^ permalink raw reply
* Re: [PATCH 12/14] qtnfmac: fix debugfs entries for multiple cards on the same host
From: Kalle Valo @ 2019-03-21 7:35 UTC (permalink / raw)
To: Sergey Matyukevich; +Cc: linux-wireless@vger.kernel.org, Igor Mitsyanko
In-Reply-To: <20190320151641.3477cx3kuc3ipqam@bars>
Sergey Matyukevich <sergey.matyukevich.os@quantenna.com> writes:
>> > Fix creation of debugfs entries for qtnfmac wireless card: use separate
>> > directories for different wireless cards. This commit enables support
>> > for multiple qtnfmac wireless cards on the same PCIe host.
>> >
>> > Signed-off-by: Sergey Matyukevich <sergey.matyukevich.os@quantenna.com>
>> > ---
>> > drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c | 6 +++++-
>> > 1 file changed, 5 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c b/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
>> > index b561b75e4433..56fc6d49c121 100644
>> > --- a/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
>> > +++ b/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
>> > @@ -130,6 +130,8 @@ static int qtnf_dbg_shm_stats(struct seq_file *s, void *data)
>> >
>> > int qtnf_pcie_fw_boot_done(struct qtnf_bus *bus)
>> > {
>> > + struct qtnf_pcie_bus_priv *priv = get_bus_priv(bus);
>> > + char card_id[64];
>> > int ret;
>> >
>> > bus->fw_state = QTNF_FW_STATE_BOOT_DONE;
>> > @@ -137,7 +139,9 @@ int qtnf_pcie_fw_boot_done(struct qtnf_bus *bus)
>> > if (ret) {
>> > pr_err("failed to attach core\n");
>> > } else {
>> > - qtnf_debugfs_init(bus, DRV_NAME);
>> > + snprintf(card_id, sizeof(card_id), "%s:%s",
>> > + DRV_NAME, pci_name(priv->pdev));
>>
>> Can you give an example for the path?
>>
>
> For instance: /sys/kernel/debug/qtnfmac_pcie:0000:01:00.0
TBH not really fond of that. What about
"/sys/kernel/debug/qtnfmac/pcie:0000:01:00.0"? IIRC iwlwifi used
something like that.
And please add an example path to the commit log.
--
Kalle Valo
^ permalink raw reply
* Re: [PATCH 12/14] qtnfmac: fix debugfs entries for multiple cards on the same host
From: Sergey Matyukevich @ 2019-03-21 8:26 UTC (permalink / raw)
To: Kalle Valo; +Cc: linux-wireless@vger.kernel.org, Igor Mitsyanko
In-Reply-To: <8736ngsms9.fsf@codeaurora.org>
Hello Kalle,
> >> > Fix creation of debugfs entries for qtnfmac wireless card: use separate
> >> > directories for different wireless cards. This commit enables support
> >> > for multiple qtnfmac wireless cards on the same PCIe host.
> >> >
> >> > Signed-off-by: Sergey Matyukevich <sergey.matyukevich.os@quantenna.com>
> >> > ---
> >> > drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c | 6 +++++-
> >> > 1 file changed, 5 insertions(+), 1 deletion(-)
> >> >
> >> > diff --git a/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c b/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
> >> > index b561b75e4433..56fc6d49c121 100644
> >> > --- a/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
> >> > +++ b/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
> >> > @@ -130,6 +130,8 @@ static int qtnf_dbg_shm_stats(struct seq_file *s, void *data)
> >> >
> >> > int qtnf_pcie_fw_boot_done(struct qtnf_bus *bus)
> >> > {
> >> > + struct qtnf_pcie_bus_priv *priv = get_bus_priv(bus);
> >> > + char card_id[64];
> >> > int ret;
> >> >
> >> > bus->fw_state = QTNF_FW_STATE_BOOT_DONE;
> >> > @@ -137,7 +139,9 @@ int qtnf_pcie_fw_boot_done(struct qtnf_bus *bus)
> >> > if (ret) {
> >> > pr_err("failed to attach core\n");
> >> > } else {
> >> > - qtnf_debugfs_init(bus, DRV_NAME);
> >> > + snprintf(card_id, sizeof(card_id), "%s:%s",
> >> > + DRV_NAME, pci_name(priv->pdev));
> >>
> >> Can you give an example for the path?
> >>
> >
> > For instance: /sys/kernel/debug/qtnfmac_pcie:0000:01:00.0
>
> TBH not really fond of that. What about
> "/sys/kernel/debug/qtnfmac/pcie:0000:01:00.0"? IIRC iwlwifi used
> something like that.
>
> And please add an example path to the commit log.
Ok, will be fixed and resubmitted in v2.
Or, alternatively, if the other patches are ok for you,
feel free to drop the questionable ones and apply all
the others. I will rework the rejected pieces and
resubmit them, adding more pending fixes.
Regards,
Sergey
^ permalink raw reply
* Re: [RFC] mt76: usb: reduce locking in mt76u_tx_tasklet
From: Lorenzo Bianconi @ 2019-03-21 9:02 UTC (permalink / raw)
To: Stanislaw Gruszka; +Cc: Lorenzo Bianconi, nbd, linux-wireless
In-Reply-To: <20190320081127.GA17841@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 3196 bytes --]
> On Tue, Mar 19, 2019 at 05:23:25PM +0100, Lorenzo Bianconi wrote:
> > > On Tue, Mar 19, 2019 at 01:58:13PM +0100, Lorenzo Bianconi wrote:
> > > > > On Mon, Mar 18, 2019 at 12:09:32PM +0100, Lorenzo Bianconi wrote:
> > > > > > Similar to pci counterpart, reduce locking in mt76u_tx_tasklet since
> > > > > > q->head is managed just in mt76u_tx_tasklet and q->queued is updated
> > > > > > holding q->lock
> > > > > >
> > > > > > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> > > > > > ---
> > > > > > drivers/net/wireless/mediatek/mt76/usb.c | 18 +++++++++++-------
> > > > > > 1 file changed, 11 insertions(+), 7 deletions(-)
> > > > > >
> > > > > > diff --git a/drivers/net/wireless/mediatek/mt76/usb.c b/drivers/net/wireless/mediatek/mt76/usb.c
> > > > > > index ac03acdae279..8cd70c32d77a 100644
> > > > > > --- a/drivers/net/wireless/mediatek/mt76/usb.c
> > > > > > +++ b/drivers/net/wireless/mediatek/mt76/usb.c
> > > > > > @@ -634,29 +634,33 @@ static void mt76u_tx_tasklet(unsigned long data)
> > > > > > int i;
> > > > > >
> > > > > > for (i = 0; i < IEEE80211_NUM_ACS; i++) {
> > > > > > + u32 n_queued = 0, n_sw_queued = 0;
> > > > > > +
> > > > > > sq = &dev->q_tx[i];
> > > > > > q = sq->q;
> > > > > >
> > > > > > - spin_lock_bh(&q->lock);
> > > > > > - while (true) {
> > > > > > + while (q->queued > n_queued) {
> > > > > > buf = &q->entry[q->head].ubuf;
> > > > > > - if (!buf->done || !q->queued)
> > > > > > + if (!buf->done)
> > > > > > break;
> > > > >
> > > > > I'm still thinking if this is safe or not. Is somewhat tricky to
> > > > > read variable outside the lock because in such case there is no time
> > > > > guarantee when variable written on one CPU gets updated value on
> > > > > different CPU. And for USB is not only q->queued but also buf->done.
> > > >
> > > > Hi Stanislaw,
> > > >
> > > > I was wondering if this is safe as well, but q->queued is updated holding q->lock
> > > > and I guess it will ensure to not overlap tx and status code path.
> > >
> > > Overlap will not happen, at worst what can happen is q->queued will be
> > > smaller on tx_tasklet than on tx_queue_skb.
> >
> > Yes, that is the point :)
> >
> > >
> > > > Regarding buf->done, it is already updated without holding the lock in mt76u_complete_tx
> > >
> > > That's actually a bug, but it's not important, if tx_tasklet will not
> > > see updated buf->done <- true value by mt76u_complete_tx on different
> > > cpu, it will not complete skb. It will be done on next tx_tasklet iteration.
> > > Worse thing would be opposite situation.
> >
> > Can this really occur?
> I was thinking about that and yes it can occur. If q->queued and
> buf->done writes/read will be reordered by CPUs. To prevent that you
> will need to use smp_wmb/smp_rmb pair, but it's just simpler and more
> convenient to use lock.
good point, I will go through it.
Regards,
Lorenzo
>
> > (since queued is update holding the lock)
> Holding the lock on one thread without holding it on concurrent thread
> is irrelevant, it's the same as not holding any lock at all.
>
> Stanislaw
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply
* Re: [RFC] mt76: usb: reduce locking in mt76u_tx_tasklet
From: Felix Fietkau @ 2019-03-21 9:10 UTC (permalink / raw)
To: Lorenzo Bianconi, Stanislaw Gruszka; +Cc: Lorenzo Bianconi, linux-wireless
In-Reply-To: <20190321090243.GA15941@localhost.localdomain>
On 2019-03-21 10:02, Lorenzo Bianconi wrote:
>> On Tue, Mar 19, 2019 at 05:23:25PM +0100, Lorenzo Bianconi wrote:
>> > > On Tue, Mar 19, 2019 at 01:58:13PM +0100, Lorenzo Bianconi wrote:
>> > > > > On Mon, Mar 18, 2019 at 12:09:32PM +0100, Lorenzo Bianconi wrote:
>> > > > > > Similar to pci counterpart, reduce locking in mt76u_tx_tasklet since
>> > > > > > q->head is managed just in mt76u_tx_tasklet and q->queued is updated
>> > > > > > holding q->lock
>> > > > > >
>> > > > > > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
>> > > > > > ---
>> > > > > > drivers/net/wireless/mediatek/mt76/usb.c | 18 +++++++++++-------
>> > > > > > 1 file changed, 11 insertions(+), 7 deletions(-)
>> > > > > >
>> > > > > > diff --git a/drivers/net/wireless/mediatek/mt76/usb.c b/drivers/net/wireless/mediatek/mt76/usb.c
>> > > > > > index ac03acdae279..8cd70c32d77a 100644
>> > > > > > --- a/drivers/net/wireless/mediatek/mt76/usb.c
>> > > > > > +++ b/drivers/net/wireless/mediatek/mt76/usb.c
>> > > > > > @@ -634,29 +634,33 @@ static void mt76u_tx_tasklet(unsigned long data)
>> > > > > > int i;
>> > > > > >
>> > > > > > for (i = 0; i < IEEE80211_NUM_ACS; i++) {
>> > > > > > + u32 n_queued = 0, n_sw_queued = 0;
>> > > > > > +
>> > > > > > sq = &dev->q_tx[i];
>> > > > > > q = sq->q;
>> > > > > >
>> > > > > > - spin_lock_bh(&q->lock);
>> > > > > > - while (true) {
>> > > > > > + while (q->queued > n_queued) {
>> > > > > > buf = &q->entry[q->head].ubuf;
>> > > > > > - if (!buf->done || !q->queued)
>> > > > > > + if (!buf->done)
>> > > > > > break;
>> > > > >
>> > > > > I'm still thinking if this is safe or not. Is somewhat tricky to
>> > > > > read variable outside the lock because in such case there is no time
>> > > > > guarantee when variable written on one CPU gets updated value on
>> > > > > different CPU. And for USB is not only q->queued but also buf->done.
>> > > >
>> > > > Hi Stanislaw,
>> > > >
>> > > > I was wondering if this is safe as well, but q->queued is updated holding q->lock
>> > > > and I guess it will ensure to not overlap tx and status code path.
>> > >
>> > > Overlap will not happen, at worst what can happen is q->queued will be
>> > > smaller on tx_tasklet than on tx_queue_skb.
>> >
>> > Yes, that is the point :)
>> >
>> > >
>> > > > Regarding buf->done, it is already updated without holding the lock in mt76u_complete_tx
>> > >
>> > > That's actually a bug, but it's not important, if tx_tasklet will not
>> > > see updated buf->done <- true value by mt76u_complete_tx on different
>> > > cpu, it will not complete skb. It will be done on next tx_tasklet iteration.
>> > > Worse thing would be opposite situation.
>> >
>> > Can this really occur?
>> I was thinking about that and yes it can occur. If q->queued and
>> buf->done writes/read will be reordered by CPUs. To prevent that you
>> will need to use smp_wmb/smp_rmb pair, but it's just simpler and more
>> convenient to use lock.
>
> good point, I will go through it.
Another simple solution would be to set buf->done = false in
mt76u_tx_tasklet after tx_complete_skb instead of doing it at enqueue time.
- Felix
^ permalink raw reply
* Re: [PATCH] ath9k: Check for errors when reading SREV register
From: Kalle Valo @ 2019-03-21 10:02 UTC (permalink / raw)
To: Tim Schumacher
Cc: QCA ath9k Development, David S. Miller, linux-wireless, netdev,
linux-kernel
In-Reply-To: <20190318190557.21599-1-timschumi@gmx.de>
Tim Schumacher <timschumi@gmx.de> writes:
> Right now, if an error is encountered during the SREV register
> read (i.e. an EIO in ath9k_regread()), that error code gets
> passed all the way to __ath9k_hw_init(), where it is visible
> during the "Chip rev not supported" message.
>
> ath9k_htc 1-1.4:1.0: ath9k_htc: HTC initialized with 33 credits
> ath: phy2: Mac Chip Rev 0x0f.3 is not supported by this driver
> ath: phy2: Unable to initialize hardware; initialization status: -95
> ath: phy2: Unable to initialize hardware; initialization status: -95
> ath9k_htc: Failed to initialize the device
>
> Check for -EIO explicitly in ath9k_hw_read_revisions() and return
> a boolean based on the success of the operation. Check for that in
> __ath9k_hw_init() and abort with a more debugging-friendly message
> if reading the revisions wasn't successful.
>
> ath9k_htc 1-1.4:1.0: ath9k_htc: HTC initialized with 33 credits
> ath: phy2: Failed to read SREV register
> ath: phy2: Could not read hardware revision
> ath: phy2: Unable to initialize hardware; initialization status: -95
> ath: phy2: Unable to initialize hardware; initialization status: -95
> ath9k_htc: Failed to initialize the device
>
> This helps when debugging by directly showing the first point of
> failure and it could prevent possible errors if a 0x0f.3 revision
> is ever supported.
>
> Signed-off-by: Tim Schumacher <timschumi@gmx.de>
[...]
> - val = REG_READ(ah, AR_SREV) & AR_SREV_ID;
> + srev = REG_READ(ah, AR_SREV);
> +
> + if (srev == -EIO) {
> + ath_err(ath9k_hw_common(ah),
> + "Failed to read SREV register");
> + return false;
> + }
I really don't like how the error handling is implemented in REG_READ().
If the register has value 0xfffffffb (= -EIO ==-5) won't this interpret
that as an error?
--
Kalle Valo
^ permalink raw reply
* Re: [PATCH 12/14] qtnfmac: fix debugfs entries for multiple cards on the same host
From: Arend Van Spriel @ 2019-03-21 10:14 UTC (permalink / raw)
To: Kalle Valo, Sergey Matyukevich
Cc: linux-wireless@vger.kernel.org, Igor Mitsyanko
In-Reply-To: <8736ngsms9.fsf@codeaurora.org>
On 3/21/2019 8:35 AM, Kalle Valo wrote:
> Sergey Matyukevich <sergey.matyukevich.os@quantenna.com> writes:
>
>>>> Fix creation of debugfs entries for qtnfmac wireless card: use separate
>>>> directories for different wireless cards. This commit enables support
>>>> for multiple qtnfmac wireless cards on the same PCIe host.
>>>>
>>>> Signed-off-by: Sergey Matyukevich <sergey.matyukevich.os@quantenna.com>
>>>> ---
>>>> drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c | 6 +++++-
>>>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c b/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
>>>> index b561b75e4433..56fc6d49c121 100644
>>>> --- a/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
>>>> +++ b/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
>>>> @@ -130,6 +130,8 @@ static int qtnf_dbg_shm_stats(struct seq_file *s, void *data)
>>>>
>>>> int qtnf_pcie_fw_boot_done(struct qtnf_bus *bus)
>>>> {
>>>> + struct qtnf_pcie_bus_priv *priv = get_bus_priv(bus);
>>>> + char card_id[64];
>>>> int ret;
>>>>
>>>> bus->fw_state = QTNF_FW_STATE_BOOT_DONE;
>>>> @@ -137,7 +139,9 @@ int qtnf_pcie_fw_boot_done(struct qtnf_bus *bus)
>>>> if (ret) {
>>>> pr_err("failed to attach core\n");
>>>> } else {
>>>> - qtnf_debugfs_init(bus, DRV_NAME);
>>>> + snprintf(card_id, sizeof(card_id), "%s:%s",
>>>> + DRV_NAME, pci_name(priv->pdev));
>>>
>>> Can you give an example for the path?
>>>
>>
>> For instance: /sys/kernel/debug/qtnfmac_pcie:0000:01:00.0
>
> TBH not really fond of that. What about
> "/sys/kernel/debug/qtnfmac/pcie:0000:01:00.0"? IIRC iwlwifi used
> something like that.
In brcmfmac we used to have it like that, but I changed it to use wiphy
debugfs, ie. /sys/kernel/debug/ieee80211/phyX/.
Gr. AvS
^ permalink raw reply
* wlcore: sdio: wl12xx_sdio_power_on: failed to get_sync(-13)
From: Urs Kofmel @ 2019-03-21 10:31 UTC (permalink / raw)
To: linux-wireless@vger.kernel.org
Hi
After switching from 4.14.14 to 4.19.y branch I get "wl12xx_sdio_power_on: failed to get_sync(-13)" in dmesg and no firmware is loaded, hence no wlan interface.
This is on armhf (imx6dl on a solidrun module with custom baseboard)
It would be great if someone could fix this.
Let me know if more information is needed.
Thanks
dmesg:
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.19.30 (root@ubuntu-bionic) (gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11)) #5.75 SMP Tue Mar 19 14:09:36 UTC 2019
[ 0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c5387d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] OF: fdt: Machine model: Viollier v-box (SOM v1.5)
[ 0.000000] Memory policy: Data cache writealloc
[ 0.000000] cma: Reserved 256 MiB at 0x40000000
[ 0.000000] On node 0 totalpages: 262144
[ 0.000000] Normal zone: 2304 pages used for memmap
[ 0.000000] Normal zone: 0 pages reserved
[ 0.000000] Normal zone: 262144 pages, LIFO batch:63
[ 0.000000] random: get_random_bytes called from start_kernel+0xa0/0x420 with crng_init=0
[ 0.000000] percpu: Embedded 17 pages/cpu @(ptrval) s37068 r8192 d24372 u69632
[ 0.000000] pcpu-alloc: s37068 r8192 d24372 u69632 alloc=17*4096
[ 0.000000] pcpu-alloc: [0] 0 [0] 1
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 259840
[ 0.000000] Kernel command line: root=UUID=3af6a091-bd9e-48d3-9810-e2c4be866135 rootfstype=ext4 rootwait console=ttymxc0,115200 consoleblank=0 video=mxcfb0:dev=hdmi,1920x1080m60,if=RGB24,bpp=32 rd.dm=0 rd.luks=0 rd.lvm=0 raid=noautodetect pci=nomsi vt.global_cursor_default=0 loglevel=1
[ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[ 0.000000] Memory: 754516K/1048576K available (11264K kernel code, 324K rwdata, 2316K rodata, 1024K init, 449K bss, 31916K reserved, 262144K cma-reserved, 0K highmem)
[ 0.000000] Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
vmalloc : 0xc0800000 - 0xff800000 (1008 MB)
lowmem : 0x80000000 - 0xc0000000 (1024 MB)
pkmap : 0x7fe00000 - 0x80000000 ( 2 MB)
modules : 0x7f000000 - 0x7fe00000 ( 14 MB)
.text : 0x(ptrval) - 0x(ptrval) (12256 kB)
.init : 0x(ptrval) - 0x(ptrval) (1024 kB)
.data : 0x(ptrval) - 0x(ptrval) ( 325 kB)
.bss : 0x(ptrval) - 0x(ptrval) ( 450 kB)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU event tracing is enabled.
[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
[ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] L2C-310 erratum 769419 enabled
[ 0.000000] L2C-310 enabling early BRESP for Cortex-A9
[ 0.000000] L2C-310 full line of zeros enabled for Cortex-A9
[ 0.000000] L2C-310 ID prefetch enabled, offset 16 lines
[ 0.000000] L2C-310 dynamic clock gating enabled, standby mode enabled
[ 0.000000] L2C-310 cache controller enabled, 16 ways, 512 kB
[ 0.000000] L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76450001
[ 0.000000] Switching to timer-based delay loop, resolution 333ns
[ 0.000007] sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 715827882841ns
[ 0.000020] clocksource: mxc_timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 637086815595 ns
[ 0.001008] Console: colour dummy device 80x30
[ 0.001034] Calibrating delay loop (skipped), value calculated using timer frequency.. 6.00 BogoMIPS (lpj=12000)
[ 0.001046] pid_max: default: 32768 minimum: 301
[ 0.001191] Security Framework initialized
[ 0.001201] AppArmor: AppArmor disabled by boot time parameter
[ 0.001265] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.001283] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.002028] CPU: Testing write buffer coherency: ok
[ 0.002060] CPU0: Spectre v2: using BPIALL workaround
[ 0.002451] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[ 0.003170] Setting up static identity map for 0x10100000 - 0x10100060
[ 0.003344] rcu: Hierarchical SRCU implementation.
[ 0.004291] smp: Bringing up secondary CPUs ...
[ 0.005102] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[ 0.005108] CPU1: Spectre v2: using BPIALL workaround
[ 0.005241] smp: Brought up 1 node, 2 CPUs
[ 0.005251] SMP: Total of 2 processors activated (12.00 BogoMIPS).
[ 0.005255] CPU: All CPU(s) started in SVC mode.
[ 0.006408] devtmpfs: initialized
[ 0.014613] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
[ 0.014863] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[ 0.014879] futex hash table entries: 512 (order: 3, 32768 bytes)
[ 0.026464] xor: measuring software checksum speed
[ 0.063682] arm4regs : 1216.000 MB/sec
[ 0.103678] 8regs : 922.000 MB/sec
[ 0.143679] 32regs : 1021.000 MB/sec
[ 0.183678] neon : 892.000 MB/sec
[ 0.183683] xor: using function: arm4regs (1216.000 MB/sec)
[ 0.183766] pinctrl core: initialized pinctrl subsystem
[ 0.184634] NET: Registered protocol family 16
[ 0.194250] DMA: preallocated 2048 KiB pool for atomic coherent allocations
[ 0.194706] audit: initializing netlink subsys (disabled)
[ 0.194919] audit: type=2000 audit(0.192:1): state=initialized audit_enabled=0 res=1
[ 0.195370] cpuidle: using governor ladder
[ 0.195396] cpuidle: using governor menu
[ 0.195722] CPU identified as i.MX6DL, silicon rev 1.3
[ 0.202439] vdd1p1: supplied by regulator-dummy
[ 0.202897] vdd3p0: supplied by regulator-dummy
[ 0.203348] vdd2p5: supplied by regulator-dummy
[ 0.203809] vddarm: supplied by regulator-dummy
[ 0.204289] vddpu: supplied by regulator-dummy
[ 0.204728] vddsoc: supplied by regulator-dummy
[ 0.213356] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
[ 0.213362] hw-breakpoint: maximum watchpoint size is 4 bytes.
[ 0.214054] imx6dl-pinctrl 20e0000.iomuxc: initialized IMX pinctrl driver
[ 0.291827] raid6: int32x1 gen() 143 MB/s
[ 0.359766] raid6: int32x1 xor() 136 MB/s
[ 0.427773] raid6: int32x2 gen() 164 MB/s
[ 0.495690] raid6: int32x2 xor() 162 MB/s
[ 0.563734] raid6: int32x4 gen() 207 MB/s
[ 0.631790] raid6: int32x4 xor() 173 MB/s
[ 0.699715] raid6: int32x8 gen() 230 MB/s
[ 0.767727] raid6: int32x8 xor() 157 MB/s
[ 0.835727] raid6: neonx1 gen() 614 MB/s
[ 0.903681] raid6: neonx1 xor() 567 MB/s
[ 0.971700] raid6: neonx2 gen() 642 MB/s
[ 1.039724] raid6: neonx2 xor() 672 MB/s
[ 1.107749] raid6: neonx4 gen() 664 MB/s
[ 1.175703] raid6: neonx4 xor() 672 MB/s
[ 1.243720] raid6: neonx8 gen() 508 MB/s
[ 1.311710] raid6: neonx8 xor() 522 MB/s
[ 1.311716] raid6: using algorithm neonx4 gen() 664 MB/s
[ 1.311721] raid6: .... xor() 672 MB/s, rmw enabled
[ 1.311725] raid6: using neon recovery algorithm
[ 1.323612] mxs-dma 110000.dma-apbh: initialized
[ 1.325167] v_usb2: supplied by v_5v0
[ 1.325379] vcc_3v3: supplied by v_5v0
[ 1.325437] nvcc_sd1: supplied by vcc_3v3
[ 1.325692] v_usb1: supplied by v_5v0
[ 1.326592] SCSI subsystem initialized
[ 1.326635] libata version 3.00 loaded.
[ 1.326843] usbcore: registered new interface driver usbfs
[ 1.326898] usbcore: registered new interface driver hub
[ 1.327010] usbcore: registered new device driver usb
[ 1.327968] i2c i2c-0: IMX I2C adapter registered
[ 1.327982] i2c i2c-0: can't use DMA, using PIO instead.
[ 1.328145] videodev: Linux video capture interface: v2.00
[ 1.328188] pps_core: LinuxPPS API ver. 1 registered
[ 1.328193] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 1.328210] PTP clock support registered
[ 1.328414] Advanced Linux Sound Architecture Driver Initialized.
[ 1.329525] clocksource: Switched to clocksource mxc_timer1
[ 1.329711] VFS: Disk quotas dquot_6.6.0
[ 1.329779] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 1.338618] NET: Registered protocol family 2
[ 1.339305] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes)
[ 1.339336] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[ 1.339414] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[ 1.339552] TCP: Hash tables configured (established 8192 bind 8192)
[ 1.339731] UDP hash table entries: 512 (order: 2, 16384 bytes)
[ 1.339772] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[ 1.340022] NET: Registered protocol family 1
[ 1.340744] RPC: Registered named UNIX socket transport module.
[ 1.340750] RPC: Registered udp transport module.
[ 1.340753] RPC: Registered tcp transport module.
[ 1.340757] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 1.340964] Trying to unpack rootfs image as initramfs...
[ 1.703662] Freeing initrd memory: 4948K
[ 1.704170] hw perfevents: no interrupt-affinity property for /pmu, guessing.
[ 1.704410] hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available
[ 1.706113] Initialise system trusted keyrings
[ 1.706359] workingset: timestamp_bits=14 max_order=18 bucket_order=4
[ 1.712822] NFS: Registering the id_resolver key type
[ 1.712856] Key type id_resolver registered
[ 1.712861] Key type id_legacy registered
[ 1.712874] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[ 1.712878] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
[ 1.713966] JFS: nTxBlock = 7981, nTxLock = 63850
[ 1.720377] SGI XFS with ACLs, security attributes, realtime, no debug enabled
[ 1.730765] Key type asymmetric registered
[ 1.730773] Asymmetric key parser 'x509' registered
[ 1.730840] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[ 1.731018] io scheduler noop registered
[ 1.731024] io scheduler deadline registered
[ 1.731194] io scheduler cfq registered (default)
[ 1.734746] imx-pgc-pd imx-pgc-power-domain.0: DMA mask not set
[ 1.734807] imx-pgc-pd imx-pgc-power-domain.0: Linked as a consumer to 20dc000.gpc
[ 1.734857] imx-pgc-pd imx-pgc-power-domain.1: DMA mask not set
[ 1.734942] imx-pgc-pd imx-pgc-power-domain.1: Linked as a consumer to regulator.5
[ 1.735038] imx-pgc-pd imx-pgc-power-domain.1: Linked as a consumer to 20dc000.gpc
[ 1.739194] 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 25, base_baud = 5000000) is a IMX
[ 1.739257] console [ttymxc0] enabled
[ 1.740090] 21f0000.serial: ttymxc3 at MMIO 0x21f0000 (irq = 68, base_baud = 5000000) is a IMX
[ 1.743768] brd: module loaded
[ 1.751250] loop: module loaded
[ 1.754144] spi_imx 200c000.ecspi: probed
[ 1.755378] libphy: Fixed MDIO Bus: probed
[ 1.756727] fec 2188000.ethernet: 2188000.ethernet supply phy not found, using dummy regulator
[ 1.756810] fec 2188000.ethernet: Linked as a consumer to regulator.0
[ 1.760365] pps pps0: new PPS source ptp0
[ 1.770904] libphy: fec_enet_mii_bus: probed
[ 1.771417] fec 2188000.ethernet eth0: registered PHC device 0
[ 1.772096] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 1.772193] usbcore: registered new interface driver usb-storage
[ 1.773885] imx_usb 2184000.usb: Linked as a consumer to regulator.11
[ 1.777072] ci_hdrc ci_hdrc.0: EHCI Host Controller
[ 1.777104] ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
[ 1.789556] ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00
[ 1.789777] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.19
[ 1.789786] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.789794] usb usb1: Product: EHCI Host Controller
[ 1.789800] usb usb1: Manufacturer: Linux 4.19.30 ehci_hcd
[ 1.789806] usb usb1: SerialNumber: ci_hdrc.0
[ 1.790384] hub 1-0:1.0: USB hub found
[ 1.790425] hub 1-0:1.0: 1 port detected
[ 1.791263] imx_usb 2184200.usb: Linked as a consumer to regulator.10
[ 1.794973] ci_hdrc ci_hdrc.1: EHCI Host Controller
[ 1.795005] ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 2
[ 1.813550] ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00
[ 1.813743] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.19
[ 1.813752] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.813759] usb usb2: Product: EHCI Host Controller
[ 1.813765] usb usb2: Manufacturer: Linux 4.19.30 ehci_hcd
[ 1.813770] usb usb2: SerialNumber: ci_hdrc.1
[ 1.814358] hub 2-0:1.0: USB hub found
[ 1.814404] hub 2-0:1.0: 1 port detected
[ 1.815638] mousedev: PS/2 mouse device common for all mice
[ 1.820401] rtc-pcf8523 0-0068: rtc core: registered rtc-pcf8523 as rtc0
[ 1.821039] snvs_rtc 20cc000.snvs:snvs-rtc-lp: rtc core: registered 20cc000.snvs:snvs-rtc-lp as rtc1
[ 1.821187] i2c /dev entries driver
[ 1.822384] imx2-wdt 20bc000.wdog: timeout 60 sec (nowayout=0)
[ 1.822680] sdhci: Secure Digital Host Controller Interface driver
[ 1.822684] sdhci: Copyright(c) Pierre Ossman
[ 1.822687] sdhci-pltfm: SDHCI platform and OF driver helper
[ 1.824027] sdhci-esdhc-imx 2194000.usdhc: Got CD GPIO
[ 1.824159] sdhci-esdhc-imx 2194000.usdhc: Linked as a consumer to regulator.7
[ 1.857752] mmc0: SDHCI controller on 2194000.usdhc [2194000.usdhc] using ADMA
[ 1.862823] ledtrig-cpu: registered to indicate activity on CPUs
[ 1.862911] hidraw: raw HID events driver (C) Jiri Kosina
[ 1.863060] usbcore: registered new interface driver usbhid
[ 1.863064] usbhid: USB HID core driver
[ 1.863125] usbcore: registered new interface driver r8712u
[ 1.867083] NET: Registered protocol family 10
[ 1.885659] Segment Routing with IPv6
[ 1.885762] NET: Registered protocol family 17
[ 1.885977] lib80211: common routines for IEEE802.11 drivers
[ 1.885983] lib80211_crypt: registered algorithm 'NULL'
[ 1.885987] lib80211_crypt: registered algorithm 'WEP'
[ 1.885991] lib80211_crypt: registered algorithm 'CCMP'
[ 1.885994] lib80211_crypt: registered algorithm 'TKIP'
[ 1.886020] Key type dns_resolver registered
[ 1.886790] cpu cpu0: Linked as a consumer to regulator.4
[ 1.886873] cpu cpu0: Linked as a consumer to regulator.5
[ 1.886949] cpu cpu0: Linked as a consumer to regulator.6
[ 1.887678] Registering SWP/SWPB emulation handler
[ 1.888860] registered taskstats version 1
[ 1.888864] Loading compiled-in X.509 certificates
[ 1.892476] zswap: default zpool zbud not available
[ 1.892481] zswap: pool creation failed
[ 1.894678] Btrfs loaded, crc32c=crc32c-generic
[ 1.897661] mmc0: host does not support reading read-only switch, assuming write-enable
[ 1.903961] mmc0: new high speed SDHC card at address 59b4
[ 1.904991] mmcblk0: mmc0:59b4 NCard 15.1 GiB
[ 1.905353] Key type encrypted registered
[ 1.914986] mmcblk0: p1
[ 1.922571] imx_thermal tempmon: Commercial CPU temperature grade - max:95C critical:90C passive:85C
[ 1.924960] input: gpio-keys as /devices/soc0/gpio-keys/input/input0
[ 1.927228] rtc-pcf8523 0-0068: setting system clock to 2019-03-19 14:44:35 UTC (1553006675)
[ 1.928301] Duplicate name in testcase-data, renamed to "duplicate-name#1"
[ 1.930114] ### dt-test ### start of unittest - you will see error messages
[ 1.930631] OF: /testcase-data/phandle-tests/consumer-a: could not get #phandle-cells-missing for /testcase-data/phandle-tests/provider1
[ 1.930640] OF: /testcase-data/phandle-tests/consumer-a: could not get #phandle-cells-missing for /testcase-data/phandle-tests/provider1
[ 1.930673] OF: /testcase-data/phandle-tests/consumer-a: could not find phandle
[ 1.930696] OF: /testcase-data/phandle-tests/consumer-a: could not find phandle
[ 1.930704] OF: /testcase-data/phandle-tests/consumer-a: arguments longer than property
[ 1.930711] OF: /testcase-data/phandle-tests/consumer-a: arguments longer than property
[ 1.930850] OF: /testcase-data/phandle-tests/consumer-b: could not get #phandle-missing-cells for /testcase-data/phandle-tests/provider1
[ 1.930876] OF: /testcase-data/phandle-tests/consumer-b: could not find phandle
[ 1.930887] OF: /testcase-data/phandle-tests/consumer-b: arguments longer than property
[ 1.945759] OF: overlay: node_overlaps_later_cs: #6 overlaps with #7 @/testcase-data/overlay-node/test-bus/test-unittest8
[ 1.945764] OF: overlay: overlay #6 is not topmost
[ 1.953448] i2c i2c-4: Added multiplexed i2c bus 5
[ 1.956108] i2c i2c-4: Added multiplexed i2c bus 6
[ 1.962916] ### dt-test ### end of unittest - 210 passed, 0 failed
[ 1.963180] ALSA device list:
[ 1.963183] No soundcards found.
[ 1.965076] Freeing unused kernel memory: 1024K
[ 1.978365] Run /init as init process
[ 2.040732] random: systemd-udevd: uninitialized urandom read (16 bytes read)
[ 2.041343] random: systemd-udevd: uninitialized urandom read (16 bytes read)
[ 2.041460] random: systemd-udevd: uninitialized urandom read (16 bytes read)
[ 2.125642] usb 1-1: new high-speed USB device number 2 using ci_hdrc
[ 2.149630] usb 2-1: new high-speed USB device number 2 using ci_hdrc
[ 2.282907] usb 1-1: New USB device found, idVendor=0403, idProduct=6011, bcdDevice= 8.00
[ 2.282918] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2.282922] usb 1-1: Product: Quad RS232-HS
[ 2.282927] usb 1-1: Manufacturer: FTDI
[ 2.307523] usb 2-1: New USB device found, idVendor=04b4, idProduct=6570, bcdDevice=32.99
[ 2.307532] usb 2-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[ 2.307539] usb 2-1: Product: USB2.0 Hub
[ 2.308395] hub 2-1:1.0: USB hub found
[ 2.308769] hub 2-1:1.0: 4 ports detected
[ 2.406817] sdhci-esdhc-imx 2190000.usdhc: allocated mmc-pwrseq
[ 2.406897] sdhci-esdhc-imx 2190000.usdhc: Linked as a consumer to regulator.7
[ 2.614864] random: fast init done
[ 2.652270] mmc1: SDHCI controller on 2190000.usdhc [2190000.usdhc] using ADMA
[ 2.660458] sdhci-esdhc-imx 2190000.usdhc: card claims to support voltages below defined range
[ 2.699159] mmc1: new high speed SDIO card at address 0001
[ 2.958463] EXT4-fs (mmcblk0p1): mounted filesystem with writeback data mode. Opts: (null)
[ 3.857948] systemd[1]: systemd 232 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[ 3.858490] systemd[1]: Detected architecture arm.
[ 3.894543] systemd[1]: Set hostname to <vbd063b4014937>.
[ 4.160910] systemd[1]: Configuration file /lib/systemd/system/systemd-modules-load.service.d/10-timeout.conf is marked executable. Please remove executable permission bits. Proceeding anyway.
[ 4.186993] systemd[1]: Configuration file /lib/systemd/system/armbian-hardware-optimize.service is marked executable. Please remove executable permission bits. Proceeding anyway.
[ 4.188541] systemd[1]: Configuration file /lib/systemd/system/armbian-hardware-monitor.service is marked executable. Please remove executable permission bits. Proceeding anyway.
[ 4.321766] systemd[1]: Configuration file /lib/systemd/system/armbian-ramlog.service is marked executable. Please remove executable permission bits. Proceeding anyway.
[ 4.326345] systemd[1]: Configuration file /lib/systemd/system/armbian-zram-config.service is marked executable. Please remove executable permission bits. Proceeding anyway.
[ 4.390026] systemd[1]: Configuration file /lib/systemd/system/serial-getty@.service.d/10-term.conf is marked executable. Please remove executable permission bits. Proceeding anyway.
[ 4.394683] systemd[1]: Configuration file /lib/systemd/system/getty@tty1.service.d/10-noclear.conf is marked executable. Please remove executable permission bits. Proceeding anyway.
[ 4.841640] EXT4-fs (mmcblk0p1): re-mounted. Opts: commit=600,errors=remount-ro
[ 5.348293] systemd-journald[212]: Received request to flush runtime journal from PID 1
[ 6.273329] imx-ipuv3 2400000.ipu: IPUv3H probed
[ 6.329388] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 6.329396] [drm] No driver support for vblank timestamp query.
[ 6.330607] imx-drm display-subsystem: bound imx-ipuv3-crtc.2 (ops ipu_crtc_ops [imxdrm])
[ 6.330839] imx-drm display-subsystem: bound imx-ipuv3-crtc.3 (ops ipu_crtc_ops [imxdrm])
[ 6.330881] [drm] Cannot find any crtc or sizes
[ 6.331362] [drm] Initialized imx-drm 1.0.0 20120507 for display-subsystem on minor 0
[ 6.539311] fsl-ssi-dai 2030000.ssi: No cache defaults, reading back from HW
[ 6.556750] etnaviv etnaviv: bound 130000.gpu (ops gpu_ops [etnaviv])
[ 6.577552] etnaviv etnaviv: bound 134000.gpu (ops gpu_ops [etnaviv])
[ 6.577618] etnaviv-gpu 130000.gpu: model: GC880, revision: 5106
[ 6.620159] etnaviv-gpu 134000.gpu: model: GC320, revision: 5007
[ 6.621947] fsl-ssi-dai 2030000.ssi: No cache defaults, reading back from HW
[ 6.636524] fsl-ssi-dai 2030000.ssi: No cache defaults, reading back from HW
[ 6.687923] [drm] Initialized etnaviv 1.2.0 20151214 for etnaviv on minor 1
[ 6.688462] fsl-ssi-dai 2030000.ssi: No cache defaults, reading back from HW
[ 6.777267] fsl-ssi-dai 2030000.ssi: No cache defaults, reading back from HW
[ 6.801852] fsl-ssi-dai 2030000.ssi: No cache defaults, reading back from HW
[ 6.802270] caam 2100000.caam: Entropy delay = 3200
[ 6.863076] caam 2100000.caam: Instantiated RNG4 SH0
[ 6.923830] caam 2100000.caam: Instantiated RNG4 SH1
[ 6.923841] caam 2100000.caam: device ID = 0x0a16010000000100 (Era 4)
[ 6.923847] caam 2100000.caam: job rings = 2, qi = 0
[ 6.930819] imx-sdma 20ec000.sdma: loaded firmware 1.1
[ 7.032164] usbcore: registered new interface driver usbserial_generic
[ 7.032221] usbserial: USB Serial support registered for generic
[ 7.074020] usbcore: registered new interface driver ftdi_sio
[ 7.074082] usbserial: USB Serial support registered for FTDI USB Serial Device
[ 7.074217] ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected
[ 7.074340] usb 1-1: Detected FT4232H
[ 7.077867] usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0
[ 7.078115] ftdi_sio 1-1:1.1: FTDI USB Serial Device converter detected
[ 7.078264] usb 1-1: Detected FT4232H
[ 7.081767] usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB1
[ 7.095685] ftdi_sio 1-1:1.2: FTDI USB Serial Device converter detected
[ 7.095899] usb 1-1: Detected FT4232H
[ 7.103147] usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB2
[ 7.103386] ftdi_sio 1-1:1.3: FTDI USB Serial Device converter detected
[ 7.103537] usb 1-1: Detected FT4232H
[ 7.104979] usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB3
[ 7.161900] zram: Added device: zram0
[ 7.162651] zram: Added device: zram1
[ 7.165845] zram: Added device: zram2
[ 7.166683] zram: Added device: zram3
[ 7.220812] asoc-simple-card sound@2: ak4430 <-> 2030000.ssi mapping ok
[ 7.339086] zram1: detected capacity change from 0 to 261795840
[ 7.548611] Adding 255656k swap on /dev/zram1. Priority:5 extents:1 across:255656k SSFS
[ 7.555973] zram2: detected capacity change from 0 to 261795840
[ 7.732645] Adding 255656k swap on /dev/zram2. Priority:5 extents:1 across:255656k SSFS
[ 8.046034] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 8.094427] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 8.094645] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[ 8.094655] platform regulatory.0: Falling back to syfs fallback for: regulatory.db
[ 8.099460] cfg80211: failed to load regulatory.db
[ 8.123797] zram0: detected capacity change from 0 to 52428800
[ 8.209721] wl18xx_driver wl18xx.0.auto: Direct firmware load for ti-connectivity/wl1271-nvs.bin failed with error -2
[ 8.209736] wl18xx_driver wl18xx.0.auto: Falling back to syfs fallback for: ti-connectivity/wl1271-nvs.bin
[ 8.245628] wl1271_sdio mmc1:0001:2: wl12xx_sdio_power_on: failed to get_sync(-13)
[ 8.450637] EXT4-fs (zram0): mounted filesystem without journal. Opts: discard
[ 12.448773] random: crng init done
[ 12.448783] random: 7 urandom warning(s) missed due to ratelimiting
[ 12.911623] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 12.994849] Atheros 8035 ethernet 2188000.ethernet-1:00: attached PHY driver [Atheros 8035 ethernet] (mii_bus:phy_addr=2188000.ethernet-1:00, irq=POLL)
[ 12.994999] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 16.066091] fec 2188000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[ 16.066124] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 25.024267] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
________________________________
Confidentiality Note: This message is intended only for the use of the named recipient(s) and may contain confidential and/or privileged information. If you are not the/an intended recipient, please contact the sender and delete this message. Any unauthorized use of the information contained in this message is prohibited.
^ permalink raw reply
* Re: [PATCH 00/16] wilc1000: move out of staging
From: Ajay.Kathat @ 2019-03-21 12:49 UTC (permalink / raw)
To: linux-wireless, kvalo, johannes
Cc: gregkh, Adham.Abozaeid, Venkateswara.Kaja, Nicolas.Ferre,
Claudiu.Beznea
In-Reply-To: <1549696298-9795-1-git-send-email-ajay.kathat@microchip.com>
Hi Kalle/Johannes,
On 2/9/2019 12:42 PM, Ajay Kathat - I15481 wrote:
> From: Ajay Singh <ajay.kathat@microchip.com>
>
> This patch series is to review and move wilc1000 driver out of staging.
> Implemented the initial received review comments[1] and submitting the
> driver again. During this cleanup deleted around 3.3k lines of code.
>
> Below are the major items fixed in recent cleanup:
> - remove use of shadow buffer to keep scan result.
> - remove internal messaging flow to handle cfg80211_ops.
> - make use of cfg80211 provided API.
> - use structure for packing firmware commands.
> - make use of kernel provided API and macros.
> - remove unnecessary logs messages.
>
> Pending action item:
> - dynamically add/remove p2p interface.
>
> This item will take some time, we are planning to take it up after
> mainline.
>
> We hope it can be move out staging in v5.1.
> Please review and confirm if it is good to move out.
Do you have any update for this series. Please provide your inputs for
next step.
Regards,
Ajay
>
> [1]. https://www.spinics.net/lists/linux-wireless/msg177877.html
>
> Ajay Singh (16):
> wilc1000: add host_interface.h
> wilc1000: add host_interface.c
> wilc1000: add wilc_wlan_if.h
> wilc1000: add wilc_wlan_cfg.h
> wilc1000: add wilc_wlan_cfg.c
> wilc1000: add wilc_wfi_netdevice.h
> wilc1000: add wilc_wfi_cfgoperations.h
> wilc1000: add wilc_wfi_cfgoperations.c
> wilc1000: add wilc_netdev.c
> wilc1000: add wilc_mon.c
> wilc1000: add wilc_spi.c
> wilc1000: add wilc_wlan.c
> wilc1000: add wilc_wlan.h
> wilc1000: add wilc_sdio.c
> wilc1000: updated DT device binding for wilc1000 device
> wilc1000: add Makefile and Kconfig files for wilc1000 compilation
>
> .../net/wireless}/microchip,wilc1000,sdio.txt | 0
> .../net/wireless}/microchip,wilc1000,spi.txt | 0
> drivers/net/wireless/Kconfig | 1 +
> drivers/net/wireless/Makefile | 1 +
> drivers/net/wireless/microchip/Kconfig | 14 +
> drivers/net/wireless/microchip/Makefile | 2 +
> drivers/net/wireless/microchip/wilc1000/Kconfig | 42 +
> drivers/net/wireless/microchip/wilc1000/Makefile | 14 +
> .../wireless/microchip/wilc1000/host_interface.c | 2152 ++++++++++++++++++++
> .../wireless/microchip/wilc1000/host_interface.h | 247 +++
> drivers/net/wireless/microchip/wilc1000/wilc_mon.c | 258 +++
> .../net/wireless/microchip/wilc1000/wilc_netdev.c | 1079 ++++++++++
> .../net/wireless/microchip/wilc1000/wilc_sdio.c | 1140 +++++++++++
> drivers/net/wireless/microchip/wilc1000/wilc_spi.c | 1136 +++++++++++
> .../microchip/wilc1000/wilc_wfi_cfgoperations.c | 1878 +++++++++++++++++
> .../microchip/wilc1000/wilc_wfi_cfgoperations.h | 24 +
> .../microchip/wilc1000/wilc_wfi_netdevice.h | 292 +++
> .../net/wireless/microchip/wilc1000/wilc_wlan.c | 1346 ++++++++++++
> .../net/wireless/microchip/wilc1000/wilc_wlan.h | 313 +++
> .../wireless/microchip/wilc1000/wilc_wlan_cfg.c | 495 +++++
> .../wireless/microchip/wilc1000/wilc_wlan_cfg.h | 54 +
> .../net/wireless/microchip/wilc1000/wilc_wlan_if.h | 803 ++++++++
> drivers/staging/Kconfig | 2 -
> drivers/staging/Makefile | 1 -
> 24 files changed, 11291 insertions(+), 3 deletions(-)
> rename {drivers/staging/wilc1000 => Documentation/devicetree/bindings/net/wireless}/microchip,wilc1000,sdio.txt (100%)
> rename {drivers/staging/wilc1000 => Documentation/devicetree/bindings/net/wireless}/microchip,wilc1000,spi.txt (100%)
> create mode 100644 drivers/net/wireless/microchip/Kconfig
> create mode 100644 drivers/net/wireless/microchip/Makefile
> create mode 100644 drivers/net/wireless/microchip/wilc1000/Kconfig
> create mode 100644 drivers/net/wireless/microchip/wilc1000/Makefile
> create mode 100644 drivers/net/wireless/microchip/wilc1000/host_interface.c
> create mode 100644 drivers/net/wireless/microchip/wilc1000/host_interface.h
> create mode 100644 drivers/net/wireless/microchip/wilc1000/wilc_mon.c
> create mode 100644 drivers/net/wireless/microchip/wilc1000/wilc_netdev.c
> create mode 100644 drivers/net/wireless/microchip/wilc1000/wilc_sdio.c
> create mode 100644 drivers/net/wireless/microchip/wilc1000/wilc_spi.c
> create mode 100644 drivers/net/wireless/microchip/wilc1000/wilc_wfi_cfgoperations.c
> create mode 100644 drivers/net/wireless/microchip/wilc1000/wilc_wfi_cfgoperations.h
> create mode 100644 drivers/net/wireless/microchip/wilc1000/wilc_wfi_netdevice.h
> create mode 100644 drivers/net/wireless/microchip/wilc1000/wilc_wlan.c
> create mode 100644 drivers/net/wireless/microchip/wilc1000/wilc_wlan.h
> create mode 100644 drivers/net/wireless/microchip/wilc1000/wilc_wlan_cfg.c
> create mode 100644 drivers/net/wireless/microchip/wilc1000/wilc_wlan_cfg.h
> create mode 100644 drivers/net/wireless/microchip/wilc1000/wilc_wlan_if.h
>
^ permalink raw reply
* Re: [PATCH 00/16] wilc1000: move out of staging
From: Kalle Valo @ 2019-03-21 12:54 UTC (permalink / raw)
To: Ajay.Kathat
Cc: linux-wireless, johannes, gregkh, Adham.Abozaeid,
Venkateswara.Kaja, Nicolas.Ferre, Claudiu.Beznea
In-Reply-To: <5ac9d9bb-08e4-c46f-ce0a-40630e1d958e@microchip.com>
<Ajay.Kathat@microchip.com> writes:
> Hi Kalle/Johannes,
>
> On 2/9/2019 12:42 PM, Ajay Kathat - I15481 wrote:
>> From: Ajay Singh <ajay.kathat@microchip.com>
>>
>> This patch series is to review and move wilc1000 driver out of staging.
>> Implemented the initial received review comments[1] and submitting the
>> driver again. During this cleanup deleted around 3.3k lines of code.
>>
>> Below are the major items fixed in recent cleanup:
>> - remove use of shadow buffer to keep scan result.
>> - remove internal messaging flow to handle cfg80211_ops.
>> - make use of cfg80211 provided API.
>> - use structure for packing firmware commands.
>> - make use of kernel provided API and macros.
>> - remove unnecessary logs messages.
>>
>> Pending action item:
>> - dynamically add/remove p2p interface.
>>
>> This item will take some time, we are planning to take it up after
>> mainline.
>>
>> We hope it can be move out staging in v5.1.
>> Please review and confirm if it is good to move out.
>
> Do you have any update for this series. Please provide your inputs for
> next step.
rtw88 is taking priority in the new drivers "queue" so I doubt I can
take a look at this in the next few weeks.
--
Kalle Valo
^ permalink raw reply
* Re: [PATCH 00/16] wilc1000: move out of staging
From: Ajay.Kathat @ 2019-03-21 14:06 UTC (permalink / raw)
To: kvalo
Cc: linux-wireless, johannes, gregkh, Adham.Abozaeid,
Venkateswara.Kaja, Nicolas.Ferre, Claudiu.Beznea
In-Reply-To: <871s30pevc.fsf@codeaurora.org>
On 3/21/2019 6:24 PM, Kalle Valo wrote:
>
> <Ajay.Kathat@microchip.com> writes:
>
>> Hi Kalle/Johannes,
>>
>> On 2/9/2019 12:42 PM, Ajay Kathat - I15481 wrote:
>>> From: Ajay Singh <ajay.kathat@microchip.com>
>>>
>>> This patch series is to review and move wilc1000 driver out of staging.
>>> Implemented the initial received review comments[1] and submitting the
>>> driver again. During this cleanup deleted around 3.3k lines of code.
>>>
>>> Below are the major items fixed in recent cleanup:
>>> - remove use of shadow buffer to keep scan result.
>>> - remove internal messaging flow to handle cfg80211_ops.
>>> - make use of cfg80211 provided API.
>>> - use structure for packing firmware commands.
>>> - make use of kernel provided API and macros.
>>> - remove unnecessary logs messages.
>>>
>>> Pending action item:
>>> - dynamically add/remove p2p interface.
>>>
>>> This item will take some time, we are planning to take it up after
>>> mainline.
>>>
>>> We hope it can be move out staging in v5.1.
>>> Please review and confirm if it is good to move out.
>>
>> Do you have any update for this series. Please provide your inputs for
>> next step.
>
> rtw88 is taking priority in the new drivers "queue" so I doubt I can
> take a look at this in the next few weeks.
>
Thanks Kalle. I will wait for your next update.
Regards,
Ajay
^ permalink raw reply
* [RFC PATCH] mac80211/cfg80211: update bss channel on channel switch
From: Sergey Matyukevich @ 2019-03-21 15:19 UTC (permalink / raw)
To: linux-wireless@vger.kernel.org
Cc: Igor Mitsyanko, Arend van Spriel, Sergey Matyukevich
FullMAC STAs have no way to update bss channel after CSA channel switch
completion. As a result, user-space tools may provide inconsistent
channel info. For instance, consider the following two commands:
$ sudo iw dev wlan0 link
$ sudo iw dev wlan0 info
The latter command gets channel info from the hardware, so most probably
its output will be correct. However the former command gets channel info
from scan cache, so its output will contain outdated channel info.
In fact, current bss channel info will not be updated until the
next [re-]connect.
Note that mac80211 STAs have a workaround for this, but it requires
access to internal cfg80211 data, see ieee80211_chswitch_work:
/* XXX: shouldn't really modify cfg80211-owned data! */
ifmgd->associated->channel = sdata->csa_chandef.chan;
This patch suggests to convert mac80211 workaround to cfg80211 behavior
and to update current bss channel in cfg80211_ch_switch_notify.
Signed-off-by: Sergey Matyukevich <sergey.matyukevich.os@quantenna.com>
---
This issue has been observed for both qtnfmac and brcmfmac. Fix tested
for qtnfmac and iwlwifi, to make sure there is no regression for mac80211.
However this is not going to be enough to fix brcmfmac behavior as it
does not use cfg80211_ch_switch_notify. This issue may also affect
ath6kl and mwifiex, but I have no hardware to check.
---
net/mac80211/mlme.c | 3 ---
net/wireless/nl80211.c | 6 ++++++
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 2dbcf5d5512e..b7a9fe3d5fcb 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -1188,9 +1188,6 @@ static void ieee80211_chswitch_work(struct work_struct *work)
goto out;
}
- /* XXX: shouldn't really modify cfg80211-owned data! */
- ifmgd->associated->channel = sdata->csa_chandef.chan;
-
ifmgd->csa_waiting_bcn = true;
ieee80211_sta_reset_beacon_monitor(sdata);
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 25a9e3b5c154..1ca6930ddac0 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -15721,6 +15721,12 @@ void cfg80211_ch_switch_notify(struct net_device *dev,
wdev->chandef = *chandef;
wdev->preset_chandef = *chandef;
+
+ if (wdev->iftype == NL80211_IFTYPE_STATION) {
+ if (wdev->current_bss)
+ wdev->current_bss->pub.channel = chandef->chan;
+ }
+
nl80211_ch_switch_notify(rdev, dev, chandef, GFP_KERNEL,
NL80211_CMD_CH_SWITCH_NOTIFY, 0);
}
--
2.11.0
^ permalink raw reply related
* [PATCH 00/12] mt76usb: some cleanups and optimizations
From: Stanislaw Gruszka @ 2019-03-21 15:25 UTC (permalink / raw)
To: Felix Fietkau; +Cc: Lorenzo Bianconi, linux-wireless, Stanislaw Gruszka
Significant change is remove mt76u_buf and use urb directly
and allocate urb and sg as linear data for better cache usage.
Other that that, set consist only of some minor cleanups.
RFC -> v1:
- introduce mt76u_tx_setup_buffers
- calculate data_len differently
- fix *usb->sg bug on intermediate patches
- use (struct scatterlist *)(e->urb + 1) trick
Rebased on latest tree and
[PATCH v2 00/12] mt76x02: AP support for USB with PS
https://lore.kernel.org/linux-wireless/1552991867-5087-1-git-send-email-sgruszka@redhat.com/
Not rebased on
[PATCH 1/6] mt76: use mac80211 txq scheduling
https://lore.kernel.org/linux-wireless/20190316204242.73560-1-nbd@nbd.name/
It easer to rebase '[PATCH 5/6] mt76: move tx tasklet to struct mt76_dev'
from that set of top of my 2 pending sets.
Stanislaw Gruszka (12):
mt76usb: change mt76u_submit_buf
mt76: remove rx_page_lock
mt76usb: change mt76u_fill_rx_sg arguments
mt76usb: use usb_dev private data
mt76usb: remove mt76u_buf redundant fileds
mt76usb: move mt76u_buf->done to queue entry
mt76usb: remove mt76u_buf and use urb directly
mt76usb: remove MT_RXQ_MAIN queue from mt76u_urb_alloc
mt76usb: resue mt76u_urb_alloc for tx
mt76usb: remove unneded sg_init_table
mt76usb: allocate urb and sg as linear data
mt76usb: remove queue variable from rx_tasklet
drivers/net/wireless/mediatek/mt76/mt76.h | 15 +-
.../net/wireless/mediatek/mt76/mt76x0/usb.c | 2 +-
.../net/wireless/mediatek/mt76/mt76x2/usb.c | 4 +-
drivers/net/wireless/mediatek/mt76/usb.c | 243 ++++++++----------
4 files changed, 118 insertions(+), 146 deletions(-)
--
2.20.1
^ permalink raw reply
* [PATCH 01/12] mt76usb: change mt76u_submit_buf
From: Stanislaw Gruszka @ 2019-03-21 15:25 UTC (permalink / raw)
To: Felix Fietkau; +Cc: Lorenzo Bianconi, linux-wireless, Stanislaw Gruszka
In-Reply-To: <20190321152537.19105-1-sgruszka@redhat.com>
Remove unnecessery arguments and change the function name since is
now used only for RX.
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
drivers/net/wireless/mediatek/mt76/usb.c | 30 ++++++++++--------------
1 file changed, 12 insertions(+), 18 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/usb.c b/drivers/net/wireless/mediatek/mt76/usb.c
index 7b62bd63d395..ac4608f1422d 100644
--- a/drivers/net/wireless/mediatek/mt76/usb.c
+++ b/drivers/net/wireless/mediatek/mt76/usb.c
@@ -394,18 +394,6 @@ mt76u_fill_bulk_urb(struct mt76_dev *dev, int dir, int index,
complete_fn, context);
}
-static int
-mt76u_submit_buf(struct mt76_dev *dev, int dir, int index,
- struct mt76u_buf *buf, gfp_t gfp,
- usb_complete_t complete_fn, void *context)
-{
- mt76u_fill_bulk_urb(dev, dir, index, buf, complete_fn,
- context);
- trace_submit_urb(dev, buf->urb);
-
- return usb_submit_urb(buf->urb, gfp);
-}
-
static inline struct mt76u_buf
*mt76u_get_next_rx_entry(struct mt76_queue *q)
{
@@ -513,6 +501,16 @@ static void mt76u_complete_rx(struct urb *urb)
spin_unlock_irqrestore(&q->lock, flags);
}
+static int
+mt76u_submit_rx_buf(struct mt76_dev *dev, struct mt76u_buf *buf)
+{
+ mt76u_fill_bulk_urb(dev, USB_DIR_IN, MT_EP_IN_PKT_RX, buf,
+ mt76u_complete_rx, dev);
+ trace_submit_urb(dev, buf->urb);
+
+ return usb_submit_urb(buf->urb, GFP_ATOMIC);
+}
+
static void mt76u_rx_tasklet(unsigned long data)
{
struct mt76_dev *dev = (struct mt76_dev *)data;
@@ -534,9 +532,7 @@ static void mt76u_rx_tasklet(unsigned long data)
if (err < 0)
break;
}
- mt76u_submit_buf(dev, USB_DIR_IN, MT_EP_IN_PKT_RX,
- buf, GFP_ATOMIC,
- mt76u_complete_rx, dev);
+ mt76u_submit_rx_buf(dev, buf);
}
mt76_rx_poll_complete(dev, MT_RXQ_MAIN, NULL);
@@ -551,9 +547,7 @@ int mt76u_submit_rx_buffers(struct mt76_dev *dev)
spin_lock_irqsave(&q->lock, flags);
for (i = 0; i < q->ndesc; i++) {
- err = mt76u_submit_buf(dev, USB_DIR_IN, MT_EP_IN_PKT_RX,
- &q->entry[i].ubuf, GFP_ATOMIC,
- mt76u_complete_rx, dev);
+ err = mt76u_submit_rx_buf(dev, &q->entry[i].ubuf);
if (err < 0)
break;
}
--
2.20.1
^ permalink raw reply related
* [PATCH 02/12] mt76: remove rx_page_lock
From: Stanislaw Gruszka @ 2019-03-21 15:25 UTC (permalink / raw)
To: Felix Fietkau; +Cc: Lorenzo Bianconi, linux-wireless, Stanislaw Gruszka
In-Reply-To: <20190321152537.19105-1-sgruszka@redhat.com>
We can not run mt76u_alloc_buf() concurently, rx_tasklet is stooped
when mt76u_submit_rx_buffers(). We can remove rx_page_lock.
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
drivers/net/wireless/mediatek/mt76/mt76.h | 1 -
drivers/net/wireless/mediatek/mt76/usb.c | 8 +-------
2 files changed, 1 insertion(+), 8 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h
index c163ba68647e..67ff9bce94c0 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76.h
@@ -138,7 +138,6 @@ struct mt76_queue {
dma_addr_t desc_dma;
struct sk_buff *rx_head;
struct page_frag_cache rx_page;
- spinlock_t rx_page_lock;
};
struct mt76_sw_queue {
diff --git a/drivers/net/wireless/mediatek/mt76/usb.c b/drivers/net/wireless/mediatek/mt76/usb.c
index ac4608f1422d..3f21599d52de 100644
--- a/drivers/net/wireless/mediatek/mt76/usb.c
+++ b/drivers/net/wireless/mediatek/mt76/usb.c
@@ -292,7 +292,6 @@ mt76u_fill_rx_sg(struct mt76_dev *dev, struct mt76u_buf *buf,
struct urb *urb = buf->urb;
int i;
- spin_lock_bh(&q->rx_page_lock);
for (i = 0; i < nsgs; i++) {
struct page *page;
void *data;
@@ -306,7 +305,6 @@ mt76u_fill_rx_sg(struct mt76_dev *dev, struct mt76u_buf *buf,
offset = data - page_address(page);
sg_set_page(&urb->sg[i], page, sglen, offset);
}
- spin_unlock_bh(&q->rx_page_lock);
if (i < nsgs) {
int j;
@@ -569,7 +567,6 @@ static int mt76u_alloc_rx(struct mt76_dev *dev)
if (!usb->mcu.data)
return -ENOMEM;
- spin_lock_init(&q->rx_page_lock);
spin_lock_init(&q->lock);
q->entry = devm_kcalloc(dev->dev,
MT_NUM_RX_ENTRIES, sizeof(*q->entry),
@@ -597,15 +594,12 @@ static void mt76u_free_rx(struct mt76_dev *dev)
for (i = 0; i < q->ndesc; i++)
mt76u_buf_free(&q->entry[i].ubuf);
- spin_lock_bh(&q->rx_page_lock);
if (!q->rx_page.va)
- goto out;
+ return;
page = virt_to_page(q->rx_page.va);
__page_frag_cache_drain(page, q->rx_page.pagecnt_bias);
memset(&q->rx_page, 0, sizeof(q->rx_page));
-out:
- spin_unlock_bh(&q->rx_page_lock);
}
static void mt76u_stop_rx(struct mt76_dev *dev)
--
2.20.1
^ permalink raw reply related
* [PATCH 03/12] mt76usb: change mt76u_fill_rx_sg arguments
From: Stanislaw Gruszka @ 2019-03-21 15:25 UTC (permalink / raw)
To: Felix Fietkau; +Cc: Lorenzo Bianconi, linux-wireless, Stanislaw Gruszka
In-Reply-To: <20190321152537.19105-1-sgruszka@redhat.com>
We do not need to pass len and sglen to the function.
Additionally pass gfp to control allocation context.
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
drivers/net/wireless/mediatek/mt76/usb.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/usb.c b/drivers/net/wireless/mediatek/mt76/usb.c
index 3f21599d52de..56e7a2ca8930 100644
--- a/drivers/net/wireless/mediatek/mt76/usb.c
+++ b/drivers/net/wireless/mediatek/mt76/usb.c
@@ -285,11 +285,13 @@ mt76u_set_endpoints(struct usb_interface *intf,
}
static int
-mt76u_fill_rx_sg(struct mt76_dev *dev, struct mt76u_buf *buf,
- int nsgs, int len, int sglen)
+mt76u_fill_rx_sg(struct mt76_dev *dev, struct mt76u_buf *buf, int nsgs,
+ gfp_t gfp)
{
struct mt76_queue *q = &dev->q_rx[MT_RXQ_MAIN];
+ int sglen = SKB_WITH_OVERHEAD(q->buf_size);
struct urb *urb = buf->urb;
+
int i;
for (i = 0; i < nsgs; i++) {
@@ -297,7 +299,7 @@ mt76u_fill_rx_sg(struct mt76_dev *dev, struct mt76u_buf *buf,
void *data;
int offset;
- data = page_frag_alloc(&q->rx_page, len, GFP_ATOMIC);
+ data = page_frag_alloc(&q->rx_page, q->buf_size, gfp);
if (!data)
break;
@@ -326,8 +328,7 @@ mt76u_refill_rx(struct mt76_dev *dev, struct mt76_queue *q,
struct mt76u_buf *buf, int nsgs, gfp_t gfp)
{
if (dev->usb.sg_en) {
- return mt76u_fill_rx_sg(dev, buf, nsgs, q->buf_size,
- SKB_WITH_OVERHEAD(q->buf_size));
+ return mt76u_fill_rx_sg(dev, buf, nsgs, gfp);
} else {
buf->buf = page_frag_alloc(&q->rx_page, q->buf_size, gfp);
return buf->buf ? 0 : -ENOMEM;
--
2.20.1
^ permalink raw reply related
* [PATCH 04/12] mt76usb: use usb_dev private data
From: Stanislaw Gruszka @ 2019-03-21 15:25 UTC (permalink / raw)
To: Felix Fietkau; +Cc: Lorenzo Bianconi, linux-wireless, Stanislaw Gruszka
In-Reply-To: <20190321152537.19105-1-sgruszka@redhat.com>
Setup usb device private data. This allows to remove mt76u_buf->dev
and simplify some routines as no longer we need to get usb device
through usb interface.
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
drivers/net/wireless/mediatek/mt76/mt76.h | 4 +---
drivers/net/wireless/mediatek/mt76/mt76x0/usb.c | 2 +-
drivers/net/wireless/mediatek/mt76/mt76x2/usb.c | 4 +++-
drivers/net/wireless/mediatek/mt76/usb.c | 13 ++++---------
4 files changed, 9 insertions(+), 14 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h
index 67ff9bce94c0..ab93d7e94b36 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76.h
@@ -90,7 +90,6 @@ struct mt76_tx_info {
};
struct mt76u_buf {
- struct mt76_dev *dev;
struct urb *urb;
size_t len;
void *buf;
@@ -763,8 +762,7 @@ static inline int
mt76u_bulk_msg(struct mt76_dev *dev, void *data, int len, int *actual_len,
int timeout)
{
- struct usb_interface *intf = to_usb_interface(dev->dev);
- struct usb_device *udev = interface_to_usbdev(intf);
+ struct usb_device *udev = to_usb_device(dev->dev);
struct mt76_usb *usb = &dev->usb;
unsigned int pipe;
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c b/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c
index cf97bbd89485..c27769f062af 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c
@@ -234,7 +234,7 @@ static int mt76x0u_probe(struct usb_interface *usb_intf,
u32 asic_rev, mac_rev;
int ret;
- mdev = mt76_alloc_device(&usb_intf->dev, sizeof(*dev), &mt76x0u_ops,
+ mdev = mt76_alloc_device(&usb_dev->dev, sizeof(*dev), &mt76x0u_ops,
&drv_ops);
if (!mdev)
return -ENOMEM;
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2/usb.c b/drivers/net/wireless/mediatek/mt76/mt76x2/usb.c
index 1f0b1bebed79..b112b2f8342a 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x2/usb.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x2/usb.c
@@ -49,7 +49,7 @@ static int mt76x2u_probe(struct usb_interface *intf,
struct mt76_dev *mdev;
int err;
- mdev = mt76_alloc_device(&intf->dev, sizeof(*dev), &mt76x2u_ops,
+ mdev = mt76_alloc_device(&udev->dev, sizeof(*dev), &mt76x2u_ops,
&drv_ops);
if (!mdev)
return -ENOMEM;
@@ -59,6 +59,8 @@ static int mt76x2u_probe(struct usb_interface *intf,
udev = usb_get_dev(udev);
usb_reset_device(udev);
+ usb_set_intfdata(intf, dev);
+
mt76x02u_init_mcu(mdev);
err = mt76u_init(mdev, intf);
if (err < 0)
diff --git a/drivers/net/wireless/mediatek/mt76/usb.c b/drivers/net/wireless/mediatek/mt76/usb.c
index 56e7a2ca8930..28552c622fee 100644
--- a/drivers/net/wireless/mediatek/mt76/usb.c
+++ b/drivers/net/wireless/mediatek/mt76/usb.c
@@ -31,8 +31,7 @@ static int __mt76u_vendor_request(struct mt76_dev *dev, u8 req,
u8 req_type, u16 val, u16 offset,
void *buf, size_t len)
{
- struct usb_interface *intf = to_usb_interface(dev->dev);
- struct usb_device *udev = interface_to_usbdev(intf);
+ struct usb_device *udev = to_usb_device(dev->dev);
unsigned int pipe;
int i, ret;
@@ -247,8 +246,7 @@ mt76u_rd_rp(struct mt76_dev *dev, u32 base,
static bool mt76u_check_sg(struct mt76_dev *dev)
{
- struct usb_interface *intf = to_usb_interface(dev->dev);
- struct usb_device *udev = interface_to_usbdev(intf);
+ struct usb_device *udev = to_usb_device(dev->dev);
return (!disable_usb_sg && udev->bus->sg_tablesize > 0 &&
(udev->bus->no_sg_constraint ||
@@ -341,7 +339,6 @@ mt76u_buf_alloc(struct mt76_dev *dev, struct mt76u_buf *buf)
struct mt76_queue *q = &dev->q_rx[MT_RXQ_MAIN];
buf->len = SKB_WITH_OVERHEAD(q->buf_size);
- buf->dev = dev;
buf->urb = usb_alloc_urb(0, GFP_KERNEL);
if (!buf->urb)
@@ -379,8 +376,7 @@ mt76u_fill_bulk_urb(struct mt76_dev *dev, int dir, int index,
struct mt76u_buf *buf, usb_complete_t complete_fn,
void *context)
{
- struct usb_interface *intf = to_usb_interface(dev->dev);
- struct usb_device *udev = interface_to_usbdev(intf);
+ struct usb_device *udev = to_usb_device(dev->dev);
u8 *data = buf->urb->num_sgs ? NULL : buf->buf;
unsigned int pipe;
@@ -694,8 +690,8 @@ static void mt76u_tx_status_data(struct work_struct *work)
static void mt76u_complete_tx(struct urb *urb)
{
+ struct mt76_dev *dev = dev_get_drvdata(&urb->dev->dev);
struct mt76u_buf *buf = urb->context;
- struct mt76_dev *dev = buf->dev;
if (mt76u_urb_error(urb))
dev_err(dev->dev, "tx urb failed: %d\n", urb->status);
@@ -806,7 +802,6 @@ static int mt76u_alloc_tx(struct mt76_dev *dev)
q->ndesc = MT_NUM_TX_ENTRIES;
for (j = 0; j < q->ndesc; j++) {
buf = &q->entry[j].ubuf;
- buf->dev = dev;
buf->urb = usb_alloc_urb(0, GFP_KERNEL);
if (!buf->urb)
--
2.20.1
^ permalink raw reply related
* [PATCH 05/12] mt76usb: remove mt76u_buf redundant fileds
From: Stanislaw Gruszka @ 2019-03-21 15:25 UTC (permalink / raw)
To: Felix Fietkau; +Cc: Lorenzo Bianconi, linux-wireless, Stanislaw Gruszka
In-Reply-To: <20190321152537.19105-1-sgruszka@redhat.com>
Remove mt76u_buf->{len, buf} fields and operate on corresponding
urb fields directly.
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
drivers/net/wireless/mediatek/mt76/mt76.h | 2 -
drivers/net/wireless/mediatek/mt76/usb.c | 56 +++++++++++++----------
2 files changed, 31 insertions(+), 27 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h
index ab93d7e94b36..4cb01502f5b1 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76.h
@@ -91,8 +91,6 @@ struct mt76_tx_info {
struct mt76u_buf {
struct urb *urb;
- size_t len;
- void *buf;
bool done;
};
diff --git a/drivers/net/wireless/mediatek/mt76/usb.c b/drivers/net/wireless/mediatek/mt76/usb.c
index 28552c622fee..8bb660e0d65a 100644
--- a/drivers/net/wireless/mediatek/mt76/usb.c
+++ b/drivers/net/wireless/mediatek/mt76/usb.c
@@ -315,7 +315,7 @@ mt76u_fill_rx_sg(struct mt76_dev *dev, struct mt76u_buf *buf, int nsgs,
}
urb->num_sgs = max_t(int, i, urb->num_sgs);
- buf->len = urb->num_sgs * sglen,
+ urb->transfer_buffer_length = urb->num_sgs * sglen,
sg_init_marker(urb->sg, urb->num_sgs);
return i ? : -ENOMEM;
@@ -328,8 +328,11 @@ mt76u_refill_rx(struct mt76_dev *dev, struct mt76_queue *q,
if (dev->usb.sg_en) {
return mt76u_fill_rx_sg(dev, buf, nsgs, gfp);
} else {
- buf->buf = page_frag_alloc(&q->rx_page, q->buf_size, gfp);
- return buf->buf ? 0 : -ENOMEM;
+ buf->urb->transfer_buffer_length =
+ SKB_WITH_OVERHEAD(q->buf_size);
+ buf->urb->transfer_buffer =
+ page_frag_alloc(&q->rx_page, q->buf_size, gfp);
+ return buf->urb->transfer_buffer ? 0 : -ENOMEM;
}
}
@@ -338,8 +341,6 @@ mt76u_buf_alloc(struct mt76_dev *dev, struct mt76u_buf *buf)
{
struct mt76_queue *q = &dev->q_rx[MT_RXQ_MAIN];
- buf->len = SKB_WITH_OVERHEAD(q->buf_size);
-
buf->urb = usb_alloc_urb(0, GFP_KERNEL);
if (!buf->urb)
return -ENOMEM;
@@ -365,8 +366,8 @@ static void mt76u_buf_free(struct mt76u_buf *buf)
for (i = 0; i < urb->num_sgs; i++)
skb_free_frag(sg_virt(&urb->sg[i]));
- if (buf->buf)
- skb_free_frag(buf->buf);
+ if (urb->transfer_buffer)
+ skb_free_frag(urb->transfer_buffer);
usb_free_urb(buf->urb);
}
@@ -377,7 +378,6 @@ mt76u_fill_bulk_urb(struct mt76_dev *dev, int dir, int index,
void *context)
{
struct usb_device *udev = to_usb_device(dev->dev);
- u8 *data = buf->urb->num_sgs ? NULL : buf->buf;
unsigned int pipe;
if (dir == USB_DIR_IN)
@@ -385,8 +385,10 @@ mt76u_fill_bulk_urb(struct mt76_dev *dev, int dir, int index,
else
pipe = usb_sndbulkpipe(udev, dev->usb.out_ep[index]);
- usb_fill_bulk_urb(buf->urb, udev, pipe, data, buf->len,
- complete_fn, context);
+ buf->urb->dev = udev;
+ buf->urb->pipe = pipe;
+ buf->urb->complete = complete_fn;
+ buf->urb->context = context;
}
static inline struct mt76u_buf
@@ -426,8 +428,9 @@ mt76u_process_rx_entry(struct mt76_dev *dev, struct mt76u_buf *buf)
{
struct mt76_queue *q = &dev->q_rx[MT_RXQ_MAIN];
struct urb *urb = buf->urb;
- u8 *data = urb->num_sgs ? sg_virt(&urb->sg[0]) : buf->buf;
- int data_len, len, nsgs = 1;
+ u8 *data = urb->num_sgs ? sg_virt(&urb->sg[0]) : urb->transfer_buffer;
+ int data_len = urb->num_sgs ? urb->sg[0].length : urb->actual_length;
+ int len, nsgs = 1;
struct sk_buff *skb;
if (!test_bit(MT76_STATE_INITIALIZED, &dev->state))
@@ -437,7 +440,6 @@ mt76u_process_rx_entry(struct mt76_dev *dev, struct mt76u_buf *buf)
if (len < 0)
return 0;
- data_len = urb->num_sgs ? urb->sg[0].length : buf->len;
data_len = min_t(int, len, data_len - MT_DMA_HDR_LEN);
if (MT_DMA_HDR_LEN + data_len > SKB_WITH_OVERHEAD(q->buf_size))
return 0;
@@ -701,15 +703,21 @@ static void mt76u_complete_tx(struct urb *urb)
}
static int
-mt76u_tx_build_sg(struct mt76_dev *dev, struct sk_buff *skb,
- struct urb *urb)
+mt76u_tx_setup_buffers(struct mt76_dev *dev, struct sk_buff *skb,
+ struct urb *urb)
{
- if (!dev->usb.sg_en)
- return 0;
+ urb->transfer_buffer_length = skb->len;
- sg_init_table(urb->sg, MT_SG_MAX_SIZE);
- urb->num_sgs = skb_to_sgvec(skb, urb->sg, 0, skb->len);
- return urb->num_sgs;
+ if (!dev->usb.sg_en) {
+ urb->transfer_buffer = skb->data;
+ return 0;
+ } else {
+ sg_init_table(urb->sg, MT_SG_MAX_SIZE);
+ urb->num_sgs = skb_to_sgvec(skb, urb->sg, 0, skb->len);
+ if (urb->num_sgs == 0)
+ return -ENOMEM;
+ return urb->num_sgs;
+ }
}
static int
@@ -731,14 +739,12 @@ mt76u_tx_queue_skb(struct mt76_dev *dev, enum mt76_txq_id qid,
return err;
buf = &q->entry[idx].ubuf;
- buf->buf = skb->data;
- buf->len = skb->len;
- buf->done = false;
-
- err = mt76u_tx_build_sg(dev, skb, buf->urb);
+ err = mt76u_tx_setup_buffers(dev, skb, buf->urb);
if (err < 0)
return err;
+ buf->done = false;
+
mt76u_fill_bulk_urb(dev, USB_DIR_OUT, q2ep(q->hw_idx),
buf, mt76u_complete_tx, buf);
--
2.20.1
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox