kaloz / mwlwifi

mac80211 driver for the Marvell 88W8864 802.11ac chip
397 stars 119 forks source link

hif/pcie/pcie.c: Added checking for result code #401

Closed ghost closed 3 years ago

ghost commented 3 years ago
- pcie_wait_complete():
  We ckeck the result code form the WiFi chip, instead of the command
  in the wait routine and print the result, when the timeout is elapsed.

Signed-off-by: Johannes Krottmayer krjdev@gmail.com

ghost commented 3 years ago

With this diff, the correct result code is returned. A side effect: It also fixes the WiFi issue on my WRT-32X.

See this thread in the official OpenWrt forum for details.

lucize commented 3 years ago

guess, I'll get the dust off my wrt3200acm router and see about this annoying issue, mostly happening on wpa3

rmandrad commented 3 years ago

can someone test this PR with the Openwrt master branch ? @krjdev have you had any similar issues with 5.10 prior to apply your fix

ghost commented 3 years ago

@rmandrad

I had this issues with the current stable release 21.02.0 with Linux 5.4. Used the firmware selector for flashing my router. I applied the fix on the Git tag v21.02.0 from OpenWrt to test my modification:

$ cat /etc/os-release
NAME="OpenWrt"
VERSION="21.02.0"
ID="openwrt"
ID_LIKE="lede openwrt"
PRETTY_NAME="OpenWrt 21.02.0"
VERSION_ID="21.02.0"
HOME_URL="https://openwrt.org/"
BUG_URL="https://bugs.openwrt.org/"
SUPPORT_URL="https://forum.openwrt.org/"
BUILD_ID="r16279-5cc0535800"
OPENWRT_BOARD="mvebu/cortexa9"
OPENWRT_ARCH="arm_cortex-a9_vfpv3-d16"
OPENWRT_TAINTS="no-all"
OPENWRT_DEVICE_MANUFACTURER="OpenWrt"
OPENWRT_DEVICE_MANUFACTURER_URL="https://openwrt.org/"
OPENWRT_DEVICE_PRODUCT="Generic"
OPENWRT_DEVICE_REVISION="v0"
OPENWRT_RELEASE="OpenWrt 21.02.0 r16279-5cc0535800"
$ uname -a
Linux wrt32x 5.4.143 #0 SMP Tue Aug 31 22:20:08 2021 armv7l GNU/Linux
$

The (solved) issues:

After enabling WiFi the clients could only connect for a few minutes, but then they loses the connection. Also the LuCI WebUI was no longer accessible after this issue. These were the main issues with the stable release on my WRT32X.

I will test the fix with the current master branch from OpenWrt on my router. But I can only test this on my device. Because the driver supports multiple WiFi devices, somebody should compare (verify) this fix with the other supported devices too.

WRT32X with Marvell/NXP 88W8964 and Firmware 9.3.2.12 works for me.

anomeome commented 3 years ago

Data point RE: other devices. Tested with master build r17525-a46fa5c3a, kernel 5.10.66, on a mamba. Nothing noted as having been broken by patch.

ghost commented 3 years ago

I will revert the pull request, because I haven't considered that the new check breaks the driver. It works interestingly on WRT32X. But it should not work.

The reason: Each command is constructed with memset, which sets also the result code to 0. But the result code 0 is also HOSTCMD_RESULT_OK. So the wait routine always passes, also when the command to the chip isn't successfully executed.

I will work on a new modification.

PLEASE don't use this pull request any more.

MrCsabaToth commented 2 years ago

Was there a follow-up to this?