eth_hw_addr_set() was added in Linux 5.15 but has now been backported
to 4.19.291, 5.4.251, and 5.10.188. This currently results in build
failure for these stable branches.
There's no simple way to test for the addition of this function since
LINUX_VERSION_CODE limits version components to 255.
Work around this by defining an inline function rtw_eth_hw_addr_set()
and a macro eth_hw_addr_set(). This effectively shadows any
backported definition of the eth_hw_addr_set() function without any
conflict.
Signed-off-by: Ben Hutchings <ben.hutchings@mind.be>
Commit 8954f2b8d8 added an unconditional:
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
For compatibility with old kernel versions, guard this declaration
with #ifdef MODULE_IMPORT_NS.
This specific symbol namespace is also Android-specific, so the
declaration should also be conditional on building for Android, but
there doesn't seem to be a single preprocessor symbol that indicates
that.
Signed-off-by: Ben Hutchings <ben.hutchings@mind.be>
Currently background scanning with wpa_supplicant does not work very
well because rtl8812au does not notify it about changes to RSSI. To
fix this:
* Implement the cfg80211_ops::set_cqm_rssi_config operation to set the
parameters for RSSI notifications.
* Add a rtw_cfg80211_cqm_rssi_update() function that calls
cfg80211_cqm_rssi_notify() if the RSSI has changed significantly
(based on those parameters).
* When connected in infrastructure mode, call
rtw_cfg80211_cqm_rssi_update() after processing a beacon and
updating the RSSI.
Signed-off-by: Ben Hutchings <ben.hutchings@mind.be>
This is done by specifying the ranges for 6.3 and 6.4 versions which need the fix.
Kernel 6.2, to my knowledge, is not used in other popular distros than Ubuntu.
Ubuntu had backported the change from kernel 6.5 to 6.2, which is why this is needed.
Added a comment instructing what to do if one wants to build the module
running kernel 6.2 on something else than Ubuntu.
It was broken due to kernel changes backported from 6.5 (torvalds/linux@e8c2af6).
Changes have been tested on the following configurations and observed to build:
- Debian Bullseye, kernel 6.1.38-4 (bullseye-backports)
- Debian Bookworm, kernel 6.1.52-1
- Ubuntu 23.04 Lunar, kernel 6.2.0-36
There are also other kernel versions which are affected up to some point in their history,
but there were a few reasons I ended up not including them:
- Kernel 6.2: Not in use on Debian, likely skipped in favor of 6.4+. Ubuntu though has backported the change to 6.2 on Lunar.
- Kernel 6.3: Not in use on Debian/Ubuntu, seems to have been skipped in favor of 6.4/6.5+.
- Kernel 6.4: Not in use on Ubuntu. Debian Bookworm has this available in backports, but they now also offer 6.5 which does not have the issue.
In case someone tries to build this module running kernel 6.2 on something other than Ubuntu, this fix is most likely necessary.
Kernel 4.10.x adjusted cfg80211_connect_bss to accept a timeout as the last
argument. Add a conditional statement which removes this extra parameter if the
kernel is less than version 4.10.x to fix build errors against version 4.9.x.
Note that the Jetson TX2 kernel is still version 4.9.x even though this version
is technically deprecated upstream.
Signed-off-by: Christian Stewart <christian@aperture.us>