Search Linux Wireless

Re: [REGRESSION] hostapd 2.4..2.7 broken with 4.18+

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/16/2019 1:51 PM, Russell King - ARM Linux admin wrote:
On Wed, Jan 16, 2019 at 01:08:21PM +0100, Arend Van Spriel wrote:
On 1/16/2019 1:12 AM, Russell King - ARM Linux admin wrote:
On Mon, Jan 14, 2019 at 12:49:09PM +0100, Arend Van Spriel wrote:
Could you try the compile and load test I suggested earlier. I will try to
replicate things over here as well.

I'm not sure that helps:

[588980.874745] brcmfmac: brcmf_sdio_bus_rxctl resumed on rxctl frame, got 286 expected 286
[588980.875776] brcmfmac: brcmf_sdio_bus_rxctl resumed on rxctl frame, got 281 expected 281
[588980.876925] brcmfmac: brcmf_sdio_bus_rxctl resumed on rxctl frame, got 2064 expected 2064
[589095.542690] brcmfmac: brcmf_netdev_wait_pend8021x: Timed out waiting for no pending 802.1x packets
[589098.262719] brcmfmac: send_key_to_dongle: wsec_key error (-110)
[589100.822465] brcmfmac: brcmf_cfg80211_del_station: SCB_DEAUTHENTICATE_FOR_REASON failed -110
[589101.814313] brcmfmac: brcmf_netdev_wait_pend8021x: Timed out waiting for no pending 802.1x packets
[589104.410194] brcmfmac: send_key_to_dongle: wsec_key error (-110)
[589106.970045] brcmfmac: brcmf_cfg80211_change_station: Setting SCB (de-)authorize failed, -110
[589109.530191] brcmfmac: brcmf_cfg80211_del_station: SCB_DEAUTHENTICATE_FOR_REASON failed -110
[589110.322685] brcmfmac: brcmf_sdio_bus_rxctl resumed on rxctl frame, got 28 expected 28
[601235.163954] br0: received packet on wlan0 with own address as source address (addr:6c:ad:f8:05:0d:81, vlan:0)
[601245.240024] brcmfmac: brcmf_sdio_bus_rxctl resumed on rxctl frame, got 28 expected 28
[601264.207886] brcmfmac: brcmf_sdio_bus_rxctl resumed on rxctl frame, got 28 expected 28
...
[605377.238304] brcmfmac: brcmf_sdio_bus_rxctl resumed on rxctl frame, got 28 expected 28
[605395.118751] brcmfmac: brcmf_sdio_bus_rxctl resumed on rxctl frame, got 28 expected 28
[605412.976951] brcmfmac: brcmf_sdio_bus_rxctl resumed on rxctl frame, got 28 expected 28

So actually it shows me that we are not getting responses. That and the
pend8021x is starting to look pretty fishy, but lacking console messages may
be build issue that I explain further down.

Looking at the time the messages (at 589095.542690) are produced, what
seems to cause this is when I head out with my LineageOS (TI WiLink
based) phone to the car and drive off.  I've suspected that's the case
with all the previous iterations of this problem too.

At this point, the LineageOS phone is completely unable to reassociate
with the AP, but it can see the AP with varying amounts of signal - it
shows medium signal, which drops to nothing when it tries to associate.
As soon as it stops, the indicated signal seems to come back... not
sure if that's a LineageOS thing or something that is really happening
on the Broadcom side.

It looks to me like the older firmware is not happy about a station
disappearing off into the distance... surely I can't be the only one
who takes an associated station out of range of a BRCM4330 in hostap
mode?

Thanks. Always good to have a scenario to trigger it. I tried setting it up
over here. Everything looks fine but my stations don't see any beacons
coming from it :-(

I don't seem to have any messages from the firmware, and I can't find
anything useful under /sys/kernel/debug for the driver - the only
thing I have is:

# tree /sys/kernel/debug/ieee80211/phy5
/sys/kernel/debug/ieee80211/phy5
├── features
├── fragmentation_threshold
├── fwcap
├── fws_stats
├── ht40allow_map
├── long_retry_limit
├── revinfo
├── rts_threshold
└── short_retry_limit

That is weird. For SDIO it should also have three additional files:

forensics
counters
console_interval

The fact that these are absent suggests that sdio.c was not build with DEBUG
define. How do you build the brcmfmac driver?

With a split build tree, and brcmfmac as a module.  I've just moved
drivers/net/broadcom/brcm80211 out of the way and re-built with verbose
mode enabled.  The gcc lines show that they are indeed passed -DDEBUG.

If I look inside the sdio.o object, I do find the strings:

intrcount:    %u
lastintrs:    %u
pollcnt:      %u
regfails:     %u

which are from brcmf_debugfs_sdio_count_read(), and is only built when
DEBUG is defined - so the build looks correct.  I also find this in the
module I have on the target system, so it too was indeed built with
-DDEBUG as intended.

Nope, your debugfs support can't possibly work for anyone in 4.20.

sdio.c sets up the debugfs stuff in brcmf_sdio_debugfs_create() which
wants wiphy->debugfsdir.  This is called via brcmf_bus_preinit() from
brcmf_sdio_bus_preinit().  This happens before brcmf_cfg80211_attach().

This is the key point - brcmf_cfg80211_attach() calls wiphy_register(),
which is where the wiphy's debugfs directory is setup:

         /* add to debugfs */
         rdev->wiphy.debugfsdir =
                 debugfs_create_dir(wiphy_name(&rdev->wiphy),
                                    ieee80211_debugfs_dir);

Consequently, at the time when brcmf_sdio_debugfs_create() is called,
the debugfs directory has not been setup, so the function merely
returns.

Crap. I totally missed that when reworking the code to use the wiphy debugfsdir.

Thanks,
Arend



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux