- Sep 19, 2022
-
-
Martin Kepplinger authored
-
Martin Kepplinger authored
Merge branches '6.0-rc6/librem5_cam', '6.0-rc6/librem5_cpuidle', '6.0-rc6/librem5_deb', '6.0-rc6/librem5_hdmi_dp', '6.0-rc6/librem5_misc_bc12' and '6.0-rc6/librem5_redpine' into 6.0-rc6/librem5__integration
-
Martin Kepplinger authored
-
Martin Kepplinger authored
-
Martin Kepplinger authored
-
Martin Kepplinger authored
-
Martin Kepplinger authored
-
Martin Kepplinger authored
during transitioning to system suspend, we currently see "randomly" and "sometimes" this workqueue nullpoint deref which hangs the system: [ 318.579976] OOM killer disabled. [ 318.583221] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done. [ 318.594515] redpine_91x: <==== Interface DOWN ====> [ 318.625240] redpine_91x: SDIO Bus suspend ===> [ 318.629748] Unable to handle kernel NULL pointer dereference at virtual address 000000000000001b <snip> [ 318.695169] Modules linked in: <snip> [ 318.803954] CPU: 2 PID: 1633 Comm: kworker/u8:11 <snip> [ 318.814893] Hardware name: Purism Librem 5r4 (DT) [ 318.819660] Workqueue: events_unbound async_run_entry_fn [ 318.825147] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 318.832135] pc : redpine_mac80211_hw_scan_cancel+0x60/0x114 [redpine_91x] [ 318.839165] lr : redpine_mac80211_hw_scan_cancel+0x50/0x114 [redpine_91x] <snip> [ 318.921141] Call trace: [ 318.923629] redpine_mac80211_hw_scan_cancel+0x60/0x114 [redpine_91x] [ 318.930139] rsi_suspend+0x6c/0x1d0 [redpine_sdio] [ 318.935005] pm_generic_suspend+0x38/0x50 [ 318.939068] dpm_run_callback+0x60/0x1f0 [ 318.943012] __device_suspend+0x128/0x570 [ 318.947064] async_suspend+0x34/0xb0 [ 318.950680] async_run_entry_fn+0x40/0x150 [ 318.954813] process_one_work+0x204/0x480 [ 318.958892] worker_thread+0x154/0x450 [ 318.962685] kthread+0x118/0x120 [ 318.965966] ret_from_fork+0x10/0x20 [ 318.969609] Code: 52800020 390ee2c0 3969ea60 340000e0 (39406ee0) [ 318.975776] ---[ end trace 0000000000000000 ]--- To work around this, use the piece of code that the mainline rsi driver uses in this function instead. This is a totally hacky workaround without a real solution in mind. With this, the above error and hang don't happen anymore, but instead of this, (so only "sometimes") a kernel warning during *resume*: WARNING: CPU: 1 PID: 1661 at net/mac80211/scan.c:433 __ieee80211_scan_completed+0x274/0x2 d0 [mac80211] that is not as critical, as wifi connection is preserved and userspace doesn't seem to notice anything.
-
Martin Kepplinger authored
-
Martin Kepplinger authored
see cead1855
-
Martin Kepplinger authored
trying to work around the following situation when resuming from suspend: [ 846.920253] INFO: task kworker/u8:19:1715 blocked for more than 120 seconds. [ 846.927351] Tainted: G C 5.15.3-librem5-00348-g1c083b116187 #680 [ 846.935224] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [ 846.943084] task:kworker/u8:19 state:D stack: 0 pid: 1715 ppid: 2 flags:0x00000008 [ 846.943105] Workqueue: phy0 ieee80211_iface_work [mac80211] [ 846.943384] Call trace: [ 846.943388] __switch_to+0x138/0x190 [ 846.943406] __schedule+0x288/0x6ec [ 846.943420] schedule+0x7c/0x110 [ 846.943435] schedule_preempt_disabled+0x30/0x4c [ 846.943450] __mutex_lock.constprop.0+0x194/0x570 [ 846.943463] __mutex_lock_slowpath+0x1c/0x30 [ 846.943474] mutex_lock+0x54/0x60 [ 846.943483] rsi_mac80211_ampdu_action+0x84/0x31c [redpine_91x] [ 846.943531] drv_ampdu_action+0x6c/0x270 [mac80211] [ 846.943729] ___ieee80211_start_rx_ba_session+0x3ec/0x630 [mac80211] [ 846.943922] ieee80211_process_addba_request+0xf4/0x1a0 [mac80211] [ 846.944140] ieee80211_iface_work+0x3ac/0x3dc [mac80211] [ 846.944335] process_one_work+0x208/0x4bc [ 846.944349] worker_thread+0x148/0x47c [ 846.944359] kthread+0x15c/0x170 [ 846.944369] ret_from_fork+0x10/0x20
-
Martin Kepplinger authored
-
If we don't wait a bit longer the bluetooth part of the firmware does not become active on some devices. Signed-off-by: Angus Ainslie <angus@akkea.ca>
-
Firmware 2.0024 broke BLE Signed-off-by: Angus Ainslie <angus@akkea.ca>
-
Use "or" so the defaults aren't overwritten Signed-off-by: Angus Ainslie <angus@akkea.ca>
-
In a case where the RS9116 module fails to reflash load the firmware to RAM. Signed-off-by: Angus Ainslie <angus@akkea.ca>
-
If there is a RS9116 FW file in /lib/firmware load and flash it. Signed-off-by: Angus Ainslie <angus@akkea.ca>
-
Check the module FW version in both code paths Signed-off-by: Angus Ainslie <angus@akkea.ca>
-
If there is no firmware file in the rootfs try loading the flash firmware Signed-off-by: Angus Ainslie <angus@akkea.ca>
-
Martin Kepplinger authored
see commit 6417f031 ("module: remove never implemented MODULE_SUPPORTED_DEVICE")
-
By lowering the power save periods the interface is responsive during power_save. It still sufers from low throughput. Signed-off-by: Angus Ainslie <angus@akkea.ca>
-
The original version layout seems to have changed with the driver upgrade so print out the old layout as well as the new one. Signed-off-by: Angus Ainslie <angus@akkea.ca>
-
As suggested by Marek Vasut <marex@denx.de> the COEX test should and not an or. Signed-off-by: Angus Ainslie <angus@akkea.ca>
-
In file included from /var/lib/dkms/rs9116/1.2.20/build/rsi_91x_hal.c:37: /var/lib/dkms/rs9116/1.2.20/build/rsi_sdio.h:44: error: "SDIO_VENDOR_ID_RSI" redefined [-Werror] #define SDIO_VENDOR_ID_RSI 0x041B In file included from /var/lib/dkms/rs9116/1.2.20/build/rsi_sdio.h:40, from /var/lib/dkms/rs9116/1.2.20/build/rsi_91x_hal.c:37: ./include/linux/mmc/sdio_ids.h:124: note: this is the location of the previous definition #define SDIO_VENDOR_ID_RSI 0x041b
-
Signed-off-by: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm> Signed-off-by: Angus Ainslie <angus@akkea.ca>
-
Also drop the HW_SCAN_OFFLOAD Signed-off-by: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm> Signed-off-by: Angus Ainslie <angus@akkea.ca>
-
Import the updated driver from here https://github.com/SiliconLabs/RS911X-nLink-OSD Signed-off-by: Angus Ainslie <angus@akkea.ca>
-
Clean up in preperation for a new code drop Signed-off-by: Angus Ainslie <angus@akkea.ca>
-
The interrupt handling of the RS911x is particularly heavy. For each RX packet, the card does three SDIO transactions, one to read interrupt status register, one to RX buffer length, one to read the RX packet(s). This translates to ~330 uS per one cycle of interrupt handler. In case there is more incoming traffic, this will be more. The drivers/mmc/core/sdio_irq.c has the following comment, quote "Just like traditional hard IRQ handlers, we expect SDIO IRQ handlers to be quick and to the point, so that the holding of the host lock does not cover too much work that doesn't require that lock to be held." The RS911x interrupt handler does not fit that. This patch therefore changes it such that the entire IRQ handler is moved to the RX thread instead, and the interrupt handler only wakes the RX thread. This is OK, because the interrupt handler only does things which can also be done in the RX thread, that is, it checks for firmware loading error(s), it checks buffer status, it checks whether a packet arrived and if so, reads out the packet and passes it to network stack. Moreover, this change permits removal of a code which allocated an skbuff only to get 4-byte-aligned buffer, read up to 8kiB of data into the skbuff, queue this skbuff into local private queue, then in RX thread, this buffer is dequeued, the data in the skbuff as passed to the RSI driver core, and the skbuff is deallocated. All this is replaced by directly calling the RSI driver core with local buffer. Signed-off-by: Marek Vasut <marex@denx.de>
-
Martin Kepplinger authored
-
Martin Kepplinger authored
-
This is not an ERR print so move it to the INFO zone Signed-off-by: Angus Ainslie <angus@akkea.ca>
-
When power save mode is enabled it generates a lot of noise in dmesg. Storing all this noise in the system journal is unlikely to be power efficient.
-
This seems to fix/workaround issues with WiFi connection being dropped after enabling power_save mode with some networks.
-
Martin Kepplinger authored
at least in the mainline rsi driver, this is the implemented logic.
-
Martin Kepplinger authored
-
Martin Kepplinger authored
-
Imported patch from Redpine, see: https://source.puri.sm/Librem5/linux-next/issues/69#note_73932
-
Read the version number from the flash module Signed-off-by: Angus Ainslie (Purism) <angus@akkea.ca>
-
Refer to line 2308 in https://git.kernel.org/pub/scm/linux/kernel/git/jberg/iw.git/tree/scan.c Signed-off-by: Angus Ainslie (Purism) <angus@akkea.ca>
-