cxgbetool: create one backend routine for all the loadX cmds
They are all doing almost the same thing so it makes sense to have one
common routine. The new routine supports non-regular files too. eg.
# cxgbetool chnex0 loadfw <(fetch -qo - http://srv/t7fw.bin)
MFC after: 1 week
Sponsored by: Chelsio Communications
Reviewed by: jhb
Differential Revision: https://reviews.freebsd.org/D55747
bsd.progs.mk: Fix incremental META_MODE for prog sources
This fixes recursed builds not having meta mode enabled for them which
disabled dependency and and command change tracking. We only want common
objects marked .NOMETA when recursing, not non-common objects. The
common code expects _PROGS_COMMON_SRCS does not contain the prog source
or else it will be marked .NOMETA.
Add comments explaining the intent and cases being covered.
Fixes: 4ea5e107b1 ("<bsd.progs.mk>: Allow using SRCS for common sources")
Differential Revision: https://reviews.freebsd.org/D55711
Reviewed by: vexeduxr, sjg
usb: umass: add SCSIEJECT quirk and fix RTW8821CU_CD (USB mode switch)
Several Realtek (and lots other) USB dongles present themselves as
CDROM device first. Upon eject they do a mode switch and suddenly
are a different kind of device (sometimes even with different IDs),
e.g., a wireless dongle.
In order to avoid the CDROM stage and rather than adding the quirk
handling to more drivers, add support to umass and if enabled
automatically eject the "CDROM" to make it the real device.
Longer-term some other drivers could stop using their hand-rolled
support for this. It is unclear as-to how much we need the list of
(eject) quirks from u3g here, or if these are very specific to that
kind of devices.
Sponsored by: The FreeBSD Foundation
Fixes: b3b6a959c85a, 9c0cce328363
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D54901
Merge commit 81b20e110b3f from llvm git (by Roland McGrath):
[libc++] Work around new GCC 15 type_traits builtins that can't be
used as Clang's can (#137871)
GCC 15 has added builtins for various C++ type traits that Clang
already had. Since `__has_builtin(...)` now finds these, the #if
branches previously only used for Clang are now used for GCC 15.
However, GCC 15 requires that these builtins only be used in type
aliases, not in template aliases.
For now, just don't use the `__has_builtin(...)` branches under newer
GCC versions, so both 14 and 15 work during the transition. This
can be cleaned up later to use all the GCC 15 builtins available.
Fixed: #137704
Fixed: #117319
Reviewed by: dim
[3 lines not shown]
iwlwifi: adjust driver description
Adjust the module driver descriptions for mvm and mld to make it clear
that this is not a driver for Linux but a Linux-based driver for FreeBSD.
Cleanup surroundings.
Sponsored by: The FreeBSD Foundation
(cherry picked from commit 782fe2f8d90488a61ecdbe1d4b245900a88bee56)
iwlwifi: mld: add LINUXKPI_PARAM_PREFIX
Add a LINUXKPI_PARAM_PREFIX to mld to properly export the
power_scheme module_param (sysctl). This is especially needed given
mvm has the same parameter and we need to avoid a clash.
Sponsored by: The FreeBSD Foundation
(cherry picked from commit 7db8503bda2724ae145475c3260d581bb98613ad)
iwlwifi: mld: move module_init() to SI_ORDER_SECOND
In FreeBSD the iwlwifi driver is a single kernel module.
As for iwlwifi/mvm we need to make sure the common "iwlwifi drv" code
is initialized before trying to register the mld sub-driver
in order for lists, etc. in the registration code to be initialized.
We do this by using an extended (FreeBSD specific) version of
module_init which overrides the order parameter of the SYSINIT.
Otherwise we can randomly (depending on SYSINIT run order) run into
a NULL pointer deref panic.
Sponsored by: The FreeBSD Foundation
PR: 291120
(cherry picked from commit 551c4cb74a807ceae55288bf273f5cfeb37c7c91)
LinuxKPI: 802.11: change teardown order of disassoc and sta rm
In lkpi_sta_auth_to_scan() we remove the sta from the firmware
for everything supporting (*sta_state).
We used to run into issues here with iwlwifi in that we had to
use a specific order: set vif->cfg.assoc = false, .aid = 0,
then remove the sta, and then send the mac update as otherwise
we would either have the sta silently removed (if we run
(*bss_info_change) first and fail then or silently not have the
sta removed and upon sta add we would trigger the fw crash.
The order of events seem to have changed now and especially BE200
(iwlwifi/mld) is picky about this and would crash the firmware with
something like:
iwlwifi0: 0x20103311 | ADVANCED_SYSASSERT
iwlwifi0: 0x00000000 | umac branchlink1
iwlwifi0: 0xC00808AA | umac branchlink2
[22 lines not shown]
LinuxKPI: 802.11: split (*bss_info_changed) up for more modern drivers
With the advent of MLO some of the updates (*bss_info_changed) would
have done are not per-link. This had (*vif_cfg_changed) and
(*link_conf_changed) introduced which are used by iwlwifi, rtw89,
select mt76 drivers, and ath12k currently it seems.
A driver normally only supports on or the other set.
Factor out the call to (*bss_info_changed) into an internal function.
There split the options up depending on whether they are for the
vif or a link and leave a fallback to (*bss_info_changed) for older
drivers.
Add the mac80211 ops implementations for the two new calls along with
a currently unused backup option for (*bss_info_changed) for each
as I assume we will eventually call the directly rather than from the
internal wrapper function.
Sponsored by: The FreeBSD Foundation
[2 lines not shown]
LinuxKPI: pass attrs in more places in dma-mapping.h
Various macros (dma_map_sg_attrs, dma_unmap_sg_attrs,
dma_map_single_attrs, and dma_unmap_single_attrs) currently supress
passing on the attrs argument. Their implementation (even though at
times still marked the argument __unused; we remove that) have long
gained support for handling the argument.
With ofed fixed (5edf24aac1d09), pass the argument through so that
other drivers using these functions may hopefully work just a bit
better as well.
Sponsored by: The FreeBSD Foundation
Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D55391
(cherry picked from commit 31c3cba807839a1a16e6f4bca91d530d9342b61a)
iwlwifi: fixup link_id for certain cases
In iwl_mvm_mld_vif_cfg_changed_station() if we do not do MLO (which we
do not do yet at all), dtim_period is not yet set but asssoc is
(our common case) the link_id can become -1 as active_links is always
0 for the non-MLO case.
This leads to logging of a WARN;
Invalid link ID for session protection: 4294967295
Fixup the link_id if it is -1 to be 0. This is the deflink link_id so
that should always be fine in this case.
For Linux 7.0-rc2 that code is already gone so this is a local temporary
stopgap measure for the mvm-mld devices (e.g., some AX210).
Sponosred by: The FreeBSD Foundation
(cherry picked from commit 760e0a18d3033152899fbd0e3f587dfe3c28d6bf)
net80211: sta: use IEEE80211_STATUS_SUCCESS instead of magic 0
Rather than using the status != 0 check use the way more descriptive
status != IEEE80211_STATUS_SUCCESS definition. This makes it a lot
more clear what is checked here. While here add a comment in case
aof the (Re)Assoc Resp failure as we do not update state in that case
but rely on a timeout which will bounce us back to State 1
(cf. 802.11-2024, Figure 11-23) which means SCAN in our case, rather
than possibly moving us back to AUTH. We will likely have to revisit
this when SAE hits the tree.
Sponsored by: The FreeBSD Foundation
Reviewed by: adrian
Differential Revision: https://reviews.freebsd.org/D55643
(cherry picked from commit 9b03cc2a70e4b6354c5f5b90e4c51b850b6b1dd2)
LinuxKPI: 802.11: improve prep_tx_info
Over time struct ieee80211_prep_tx_info has grown further fields.
One which is becoming mandatory is the subtype (of the mgmt frame).
iwlwifi(mld) has a WARN for it if it does not match, so we now have
to set this for proper operation. In addition we are tyring to improve
the situation of setting/unsetting (prepare_tx/complete_tx) in various
states and cleanup the use of other fields but link_id which we now
leave as a marker for the future everywhere.
The general problem we are facing is that our hook surface in this case
is the state machine but likely would have to be tx/rx mgmt frames but
we would alos have to driver the TX queues from there which is tricky.
The long-term answer is to change net80211.
Further the hardware flag DEAUTH_NEED_MGD_TX_PREP is dead and was
removed again in favour of leting drivers deal with it. iwlwifi(mvm)
likely being the only driver which ever used this.
Sponsored by: The FreeBSD Foundation
[2 lines not shown]
dpaa2: improve error messages and log requested cluster size
If m_getjcl() fails we want to know the size we requested in order to
have a chance to evaluate the problem better.
Reviewed by: tuexen
Differential Revision: https://reviews.freebsd.org/D55555
(cherry picked from commit c3577fcf3fd0494cc992021d4debbca09241a49e)
LinuxKPI: 802.11: move linuxkpi_ieee80211_handle_wake_tx_queue()
No functional changes. Just moved the function within the file.
Sponsored by: The FreeBSD Foundation
(cherry picked from commit 3d3303b756ad4ee3ae520f6d07df6978d049a871)
netinet6: Fix memory leak on auto_linklocal
release the refcount of link-local prefix information to ensure
it gets freed when the address is deleted.
Reviewed By: zlei, ivy
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D55593
(cherry picked from commit b55bffeaaf9bae5dc7aa21eae441d89c999ebab8)