Commit graph

43098 commits

Author SHA1 Message Date
Sreekanth Reddy
47a360ff22 bnxt_en: Thor2 Ring counters not incrementing during traffic
The ctx_hw_stats_ext DMA address was not correctly passed to the
firmware during the HWRM_STAT_CTX_ALLOC allocation, causing stats to not
populate for Thor2.  Passing the correct DMA length resolved the issue

MFC-After: 3 days
Differential-Revision: https://reviews.freebsd.org/D49732
(cherry picked from commit fec0e2064818f991867c9851a837012ea31774da)
2025-04-27 16:02:59 -06:00
Sreekanth Reddy
4ed8c41831 bnxt_en: Unhandled async event type 76
The completion event type 76 is not supported by the driver. Instead of
flooding the dmesg with "Unknown event type" messages when this event
occurs, move the print under debug level.

MFC-After: 3 days
Differential-Revision: https://reviews.freebsd.org/D49731
(cherry picked from commit 6450d937955fcd1ab9034c49d53306e882c4a281)
2025-04-27 16:02:59 -06:00
Sreekanth Reddy
ced1133739 bnxt_en: Thor2 Specific Doorbell related changes
Doorbell offset :
For Thor controllers doorbell offset was always hardcoded to 0x10000 for
PF devices where as for Thor2 controllers doorbell offset will be
legacy_l2_db_size_kb value provided by firmware through hwrm_func_qcfg
command.

CQ Toggle & Epoch bits support :
In order to handle out of order doorbell handling as part of Dropped
Doorbell Recovery, HW expects two changes in the driver in data path.

- First change is the epoch bit changes while updating the producer
indexes of Tx. This epoch bit is toggled by the driver, each time the
queue is wrapped for that specific doorbell.

- The second change is to add a toggle bit pair to each ARM type
doorbell.  This includes the CQ_ARMALL, CQ_ARMSE, CQ_ARMENA
doorbells. The toggle bit pair in context is incremented by the chip
each time a new NQE completion is generated by the chip. To keep the
driver in-sync, the toggle bit pair will be passed in the NQE to the
host completion. This will be the toggle bit pair value that the host
must use to setup the next NQE operation. The driver will pass that
latest toggle bit pair value into the ARM type doorbells it generates to
the chip. The doorbell clients will compare the toggle bit pair in each
doorbell with the value in context.  If the values match, the doorbell
will be honored. If the values do not match, the doorbell will be
discarded.

MFC-After: 3 days
Differential-Revision: https://reviews.freebsd.org/D49730
(cherry picked from commit 39c0b8b7994b0d339bffb0b17291c4a2b14cae3a)
2025-04-27 16:02:59 -06:00
Sreekanth Reddy
32fdad17f0 bnxt_en: 400G speed support
Added 400G speed module support.

MFC-After: 3 days
Differential-Revision: https://reviews.freebsd.org/D49729
(cherry picked from commit dac78335c42dce2ce9daf5856539510a42d7d8cd)
2025-04-27 16:02:59 -06:00
Sreekanth Reddy
dd6c9bcdcc if_bnxt: add support for RX completion record type V3
Added support for  RX V3 completion record types-
CMPL_BASE_TYPE_RX_TPA_START_V3 and CMPL_BASE_TYPE_RX_L2_V3.

MFC-After: 3 days
Differential-Revision: https://reviews.freebsd.org/D49728
(cherry picked from commit 526d74f6ca55c7a4b9c0c745d13e94c7a7bb6e0b)
2025-04-27 16:02:58 -06:00
Sreekanth Reddy
baa2ff7ac8 bnxt_en: Add backing store V2 support
Add backing store V2 support.
Thor2 controllers supports only the V2 support.

MFC-After: 3 days
Reviewed-by: Warner Losh <imp@FreeBSD.org>
Differential-Revision: https://reviews.freebsd.org/D49727
(cherry picked from commit d5ce906da7c55085f93fce096ebb8bc44a3cffe5)
2025-04-27 16:02:58 -06:00
Sreekanth Reddy
e2692e8aa2 bnxt_en: Update HSI header
Update HSI header to support Thor2 controllers.

MFC-After: 3 days
Differential-Revision: https://reviews.freebsd.org/D49726
(cherry picked from commit bb90baed6c275495b03adc5569346a59fce2a3c8)
2025-04-27 16:02:58 -06:00
Sreekanth Reddy
45e161020c bnxt_en: Add 5760X (Thor2) PCI IDs support
Add Thor2 PCI IDs.

Reviewed-by: Warner Losh <imp@FreeBSD.org>
Reviewed-by: Sumit Saxena <sumit.saxena@broadcom.com>
MFC-After: 3 days
Differential-Revision: https://reviews.freebsd.org/D49725
(cherry picked from commit 26bd37da01cff2b2024f3f63b9ca318bf3a01669)
2025-04-27 16:02:58 -06:00
Krzysztof Galazka
7313d4a3dc iflib(4): Replace admin taskqueue group with per-interface taskqueues
Using one taskqueue group with single thread to execute all admin
tasks may lead to unexpected timeouts when long running task (e.g.
handling a reset after FW update) for one interface prevents
tasks from other interfaces being executed. Taskqueue group API
doesn't let to dynamically add threads, and pre-allocating thread
for each CPU as it's done for traffic queues would be a waste
of resources on systems with small number of interfaces. Replace
global taskqueue group for admin tasks with taskqueue allocated
for each interface to allow independent execution.

Signed-off-by: Krzysztof Galazka <krzysztof.galazka@intel.com>
Reviewed by: imp, jhb
Pull Request: https://github.com/freebsd/freebsd-src/pull/1336
(cherry picked from commit 3ad01642fe9e241124553f2f18fd365ffea5d20b)
2025-04-27 16:02:58 -06:00
Vinícius Ferrão
54f842ed88 /sys/dev/bnxt: Enable NPAR support on BCM57504
This commit enables NPAR support for Broadcom 57504 10/25GbE NICs

Signed-off-by: Vinícius Ferrão <vinicius@ferrao.net.br>
Reviewed by: imp,ssaxena,nightquick@proton.me
Pull Request: https://github.com/freebsd/freebsd-src/pull/1306
(cherry picked from commit 0bff716674418ec9f8c48131fb34cafc0af671e8)
2025-04-27 16:02:58 -06:00
Colin Percival
b0bbefc465 pci: Add hw.pci.intx_reroute sysctl/tunable
INTRng can leak resources when INTx interrupts are re-routed, which is
typically harmless but can be fatal when devices are (repeatedly) hot
plugged into PCI buses on INTRng systems.  Re-routing INTx interrupts
is nonetheless still necessary on some systems, and identifying whether
the re-routing should be enabled or disabled seems to be nontrivial.

Add a hw.pci.intx_reroute sysctl/tunable so systems which don't want
legacy PCI interrupt re-routing can turn it off.  This is probably not
the best fix but it's something which can be safely included in FreeBSD
14.3.

Co-Authored-by:	jhb
Reviewed by:	bz, jhb
MFC after:	3 days
Sponsored by:	Amazon
Differential Revision:	https://reviews.freebsd.org/D49849

(cherry picked from commit 2187ec93ada1c7399f2f3537920f6277bec4a0ef)
2025-04-26 12:21:03 -07:00
Aaron LI
ba560cd8fb wg: Improve wg_peer_alloc() to simplify the calling
Move the necessary extra logics (i.e., noise_remote_enable() and
TAILQ_INSERT_TAIL()) from wg_ioctl_set() to wg_peer_alloc(), and thus
make it easier to be called.  Actually, the updated version is more
asymmetric to wg_peer_destroy() and thus less likely to be misused.
Meanwhile, rename it to wg_peer_create() to look more consistent with
wg_peer_destroy().

Reviewed by:	aly_aaronly.me (diff), markj
Obtained from:	DragonflyBSD 902964ab24ba (with some changes)

(cherry picked from commit 7121e9414f294d116caeadd07ebd969136d3a631)
2025-04-25 22:19:47 -05:00
Navdeep Parhar
47cdd7a9eb cxgbe(4): Add two new transceiver types.
Future firmwares will report these types to the driver.  These
transceivers work already but are misidentified as a different type.

Sponsored by:	Chelsio Communications

(cherry picked from commit c22b297062e1440676973a8aa89cbad1571e22f9)
2025-04-22 04:12:46 -07:00
Navdeep Parhar
ca9d5b10eb cxgbe(4): Perform Conventional Reset instead of FLR on the device.
The driver uses bus_reset_child on its parent to reset itself but that
performs an FLR whereas the hardware needs a Conventional Reset[1] for
full re-initialization.  Add routines that perform conventional hot
reset and use them instead.  The available reset mechanisms are:
* PCIe secondary bus reset (default)
* PCIe link bounce

hw.cxgbe.reset_method can be used to override the default.  The internal
PL_RST is also available but is for testing only.

[1] 6.6.1 in PCI Express® Base Specification 5.0 version 1.0

Sponsored by:	Chelsio Communications

(cherry picked from commit 011e3d0b8b90a4330f14b2cb7da45ed7b805ed10)
2025-04-22 04:12:46 -07:00
Navdeep Parhar
516fee5422 cxgbe(4): Block most access to the hardware as soon as the adapter stops.
Add a new hw_all_ok() routine and use it to avoid hardware access in the
public control interfaces (ifnet ioctls, ifmedia calls, etc.).  Continue
to use hw_off_limits() in the private ioctls/sysctls and other debug
code.  Retire adapter_stopped() as it's of no use by itself.

This fixes problems where ifnet slow-path operations would enter a
synch_op just before set_adapter_hwstatus(false) and touch the hardware
when it's not safe to do so.

Sponsored by:	Chelsio Communications

(cherry picked from commit e19d84979a183deb37ce6d7e385c3ccf02a3c8c7)
2025-04-22 04:12:46 -07:00
Navdeep Parhar
4e9f829561 cxgbe(4): Use correct priority in begin_synchronized_op.
It was always set to PCATCH because the driver tested (INTR_OK) instead
of (flags & INTR_OK).  Fit a WITNESS_WARN in a single line while here.

Sponsored by:	Chelsio Communications

(cherry picked from commit 04bf43505bae1bb20d315a44e977d97aed3e5733)
2025-04-22 04:12:46 -07:00
Navdeep Parhar
db403eb80e cxgbe(4): Remove some unused PCI routines and associated headers.
Sponsored by:	Chelsio Communications

(cherry picked from commit 9d76f6d042feecf16775a200ee79c4e50fc533ba)
2025-04-22 04:12:45 -07:00
Navdeep Parhar
f2c75b13f3 cxgb(4): Use routines from pci(9) instead of hand rolled equivalents.
There is no need to include private PCI headers in the driver.

Sponsored by:	Chelsio Communications

(cherry picked from commit 762d32354a18517c28933ddc29f9d3d855e450b1)
2025-04-22 04:12:45 -07:00
Navdeep Parhar
b5a68e0641 cxgbe(4): Remove smt_idx from the L2 table entry structure.
An L2 table entry isn't associated with a particular SMT (Source MAC
Table) entry.

Sponsored by:	Chelsio Communications

(cherry picked from commit f79fba05a016d53e054d6f587213889c3e31b4db)
2025-04-22 04:12:45 -07:00
Navdeep Parhar
4599a3c0b8 cxgbe(4): Make sure suspend/resume works in recovery mode.
The driver does minimal initialization in this mode and suspend/resume
should ignore resources that aren't setup.  This is for debug only.

kenv hw.cxgbe.sos="1"
kldload if_cxgbe
devctl suspend t6nex0
devctl resume t6nex0

Sponsored by:	Chelsio Communications

(cherry picked from commit f4ab14044c1de35b1aefad5449bddc5a1272f8d9)
2025-04-22 04:12:45 -07:00
Vee Agarwal
9a24acc6c8 gve: Add feature to change TX/RX ring size
This change introduces new sysctl handlers that allow the user to change
RX/TX ring sizes. As before, the default ring sizes will come from the
device (usually 1024). We also get the max/min limits from the device.
In the case min values are not provided we have statically defined
constants for the min values. Additionally, if the modify ring option is
not enabled on the device, changing ring sizes via sysctl will not be
possible.  When changing ring sizes, the interface turns down
momentarily while allocating/freeing resources as necessary.

Signed-off-by: Vee Agarwal <veethebee@google.com>

Reviewed by:	markj
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D49428

(cherry picked from commit 22fe926a62b7bca771d46502dd6a8c202f25b5be)
2025-04-18 13:52:10 +00:00
Vee Agarwal
ecc250c600 gve: Add feature to adjust RX/TX queue counts
This change introduces new sysctl handlers that allow the user to change
RX/TX queue counts. As before, the default queue counts will be the max
value the device can support. When chaning queue counts, the interface turns
down momentarily while allocating/freeing resources as necessary.

Signed-off-by: Vee Agarwal <veethebee@google.com>

Reviewed by:	markj
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D49427

(cherry picked from commit e0464f74d5579e1538ce741b0a15e6604dbc53c4)
2025-04-18 13:52:09 +00:00
Vee Agarwal
890309a67b gve: Allocate qpl per ring at ring allocation time
Every tx and rx ring has its own queue-page-list (QPL) that serves as
the bounce buffer. Previously we were allocating QPLs for all queues
before the queues themselves were allocated and later associating a QPL
with a queue. This is avoidable complexity: it is much more natural for
each queue to allocate and free its own QPL.

Signed-off-by: Vee Agarwal <veethebee@google.com>

Reviewed by:	markj
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D49426

(cherry picked from commit f8ed8382daf4b9a97056b1dba4fe4e5cb4f7485c)
2025-04-18 13:52:07 +00:00
Colin Percival
217fce1377 pci: Make PCIe Eject timeout configurable
PCIe mandates a 5 second delay between when the "Attention Button" is
pressed and when the associated device is detached; this is to allow
for the button to be pressed a second time to cancel the ejection.  On
some systems this 5 second delay may not be desireable; so introduce a
hw.pci.pcie_hp_detach_timeout sysctl (which can also be set as a loader
tunable) which specifies the timeout in milliseconds (default 5000).
If set to zero, the device is detached immediately.

Reviewed by:	jhb
MFC after:	2 weeks
Sponsored by:	Amazon
Differential Revision:	https://reviews.freebsd.org/D49585

(cherry picked from commit 9be42ee6c9c741052bdc49f13bc953bf88a24423)
2025-04-15 20:15:00 -07:00
Ariel Ehrenberg
63697ff85a mlx5en: Use connector type instead of cable type for media detection
(cherry picked from commit 89e0e3814e8ca205db7523f6ce6c63cebe4bfb0d)
2025-04-16 04:41:49 +03:00
Mark Johnston
e6a3962d7d hyperv/storvsc: Avoid conditional asserts in storvsc_xferbuf_prepare()
whu@ cannot reproduce the assertion failure which led to these ifdefs
being added in the first place, and since they appear wrong, i.e., the
assertions ought to apply to all platforms, let's remove them.

This reverts commits 0af5a0cd27 and
6f7b1310b6.

PR:		285681
Tested by:	whu
MFC after:	2 weeks

(cherry picked from commit 54a3920dc9b3b5a47cdaaa3132b4fcf1c448a737)
2025-04-15 02:25:24 +00:00
Mark Johnston
07c5a2486c hyperv/storvsc: Fix busdma constraints
- The BUS_DMA_KEEP_PG_OFFSET flag is needed, since
  storvsc_xferbuf_prepare() assumes that only the first segment may have
  a non-zero offset, and that all following segments are page-sized and
  -aligned.
- storvsc_xferbuf_prepare() handles 64-bit bus addresses, so avoid
  unneeded bouncing on i386.

PR:		285681
Reported by:	dim
Tested by:	dim, whu
MFC after:	2 weeks

(cherry picked from commit a319ba694538a38429115aaaf1d4b3946ea3a8b5)
2025-04-15 02:25:24 +00:00
Colin Percival
43933d89a3 acpi_pci: Add quirk for DELAY-after-EJ0
On some EC2 instances, there is a race between removing a device from
the system and making the PCI bus stop reporting the presence of the
device.  As a result, a PCI BUS_RESCAN performed immediately after
the _EJ0 method returns "sees" the device which is being ejected, which
then causes problems later (e.g. we won't recognize a new device being
plugged into that slot because we never knew it was vacant).

On other operating systems the bus is synchronously marked as needing
to be rescanned but the rescan does not occur until O(1) seconds later.

Create a new ACPI_Q_DELAY_BEFORE_EJECT_RESCAN quirk and set it in EC2
AMIs, and add a 10 ms DELAY between _EJ0 and BUS_RESCAN when tht quirk
is set.

Reviewed by:	jhb
MFC after:	1 month
Sponsored by:	Amazon
Differential Revision:	https://reviews.freebsd.org/D49252

(cherry picked from commit 55c3348ed78fb1d0891e8bb51a8948f95da3560b)
2025-04-14 09:09:49 -07:00
Konstantin Belousov
e6a470ffcb efirt: add a tunable to disable printing faults during EFIRT calls
PR:	285797

(cherry picked from commit fd748c7d5b7aefbeda604403f203637b12ae89df)
2025-04-09 03:53:17 +03:00
Andrew Turner
ddf0b5666b acpi: Pass the correct device to acpi_pcib_osc
Fix a copy-and-paste error in acpi_pcib_request_feature where the
child device was passed into acpi_pcib_osc rather than the pcib
device.

Reviewed by:	garga, jhb
Fixes:	ba1904937d9a ("acpica: Extract _OSC parsing to a common file")
Sponsored by:	Arm Ltd
Differential Revision:	https://reviews.freebsd.org/D48285

(cherry picked from commit b714eacb790551f35de03831b88ad7b7e1502102)
2025-04-08 17:35:45 +00:00
Olivier Certner
cc1cb8e376
smbios: style(9): smbios_cksum()
Reduce some variables' lifecycle.  Remove useless casts.  Remove
superfluous braces.  Add some consts.

MFC after:      2 weeks
Sponsored by:   The FreeBSD Foundation

(cherry picked from commit ef446a8065ac0228a5da15f233cd2f964e4d7433)
2025-04-08 15:38:25 +02:00
Olivier Certner
55e8cdff14
smbios: Harden decoding of the BCD revision
bcd2bin() must not be called with a value greater or equal to
LIBKERN_LEN_BCD2BIN.

MFC after:      2 weeks
Sponsored by:   The FreeBSD Foundation

(cherry picked from commit 516e24e57987d184cce70e7f31443653aa1a5e63)
2025-04-08 15:38:25 +02:00
Olivier Certner
5d9f1bf830
smbios: Carefully print wrong entry point signature on identify
Using printf() with '%s' can lead to arbitrary long printing (although,
usually, a NUL byte should appear quite quickly) and trying to print
unprintable characters.

Instead, print in hexadecimal the exact bytes that are compared to the
expected signature.

MFC after:      2 weeks
Sponsored by:   The FreeBSD Foundation

(cherry picked from commit bb04712e37723d112b2fad28af4b035ef35a25be)
2025-04-08 15:38:24 +02:00
Olivier Certner
7dffa9db45
smbios: Print an error on unexpected entry point length on identify
This helps figuring out quickly why no SMBIOS device appears in this case.

MFC after:      2 weeks
Sponsored by:   The FreeBSD Foundation

(cherry picked from commit fdf08ac1e9f9baac4fcf4af8f3bf7a34d3ea0009)
2025-04-08 15:38:24 +02:00
Olivier Certner
8c9b142b38
smbios: Apply the v2.1's length fixup only on a 32-bit entry point
Only allow the length tolerance (0x1e instead of 0x1f) for a 32-bit
entry point, as there was no 64-bit entry point in the erroneous SMBIOS
v2.1 standard and assigning the length with 0x1f does not make sense in
this case.

While here, fix accessing the major/minor versions via 'eps' even in the
64-bit entry point case (not causing any practical problem thus far as
the entry point length is greater than any SMBIOS revisions in
existence, so the comparison guarding the fixup would not pass).

MFC after:      2 weeks
Sponsored by:   The FreeBSD Foundation

(cherry picked from commit f6cbd6b6d2ccd672e4807128ce0d07db333d4335)
2025-04-08 15:38:24 +02:00
Olivier Certner
62b6d8c625
smbios: Print an error on memory map failure on identify
Consistently with what the probe and attach methods are doing.

MFC after:      2 weeks
Sponsored by:   The FreeBSD Foundation

(cherry picked from commit 3907feff7ab732b918ba3f5993e7a6718fffea14)
2025-04-08 15:38:24 +02:00
Olivier Certner
07b84d1f3f
smbios: Unmap memory on error on identify
While here, de-indent most of the code by simply bailing out if 'addr'
is still 0 after the various detection methods have been tried.

Reviewed by:    emaste, imp
MFC after:      2 weeks
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D49180

(cherry picked from commit 67d510f0c07afd89e51e337e5abec47f4483ecd9)
2025-04-08 15:38:23 +02:00
Olivier Certner
5e385079d3
smbios: On attach, print the entry point version and revision
Additionally, on verbose boot, print the entry point revision as
a diagnostic/debugging help.

PR:             284460
Reviewed by:    markj, imp (both older version)
MFC after:      2 weeks
Event:          February src bug-busting session
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D49179

(cherry picked from commit e421a6615dc257b71ac5255336dddf5c99cd12aa)
2025-04-08 15:38:23 +02:00
Olivier Certner
145ef4af15
smbios: Search for v3 (64-bit) entry point first on BIOS boot
When booted from BIOS (i.e., not EFI), also search for a 64-bit version
of the SMBIOS Entry Point.

This allows us to detect and report the proper SMBIOS version with
BIOSes that only provide the v3 table, as happens on Hetzner virtual
machines.

For machines that provide both, leverage the v3 table in priority
consistently with the EFI case.

PR:             284460
Reviewed by:    markj, imp (both older version)
MFC after:      2 weeks
Relnotes:       yes
Event:          February src bug-busting session
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D49179

(cherry picked from commit bc7f6508363c5cf4544044e00bbaf71de8f0168d)
2025-04-08 15:38:23 +02:00
Olivier Certner
e69052efa1
smbios: style(9): sizeof(): No space before the parenthesis
No functional change.

MFC after:      2 weeks
Sponsored by:   The FreeBSD Foundation

(cherry picked from commit 69cf9e9a451df3b0bff92f879365f604811e394b)
2025-04-08 15:38:23 +02:00
Andrew Gallatin
fb8bea55a5
smbios: handle smbios3 for arm64
Get smbios working on arm64 where it seems to be
exclusively smbios version 3.x

The "interesting" thing here is that the smbios table seems to be
RAM in the EFI runtime services table. This makes it owned by "ram0",
and not io memory. That prevents bus_alloc_resource() from being able
to claim it, since ram0 already owns it. According to jhb, this is
how things are supposed to work.  Eg, bus_alloc_resource() is meant
to be used with IO memory, not physical memory.  Following his
suggestion, I converted the driver to simply use pmap_mapbios().

This is a prerequisite for getting IPMI to attach via the SSIF
attachment on arm64 servers, where all IPMI that I've seen
uses SSIF.

Note that this change is based on initial work by Allan Jude in
https://reviews.freebsd.org/D28739.

Reviewed by: imp
Sponsored by: Netflix, Ampere Computing LLC (D28739)
Differential Revision: https://reviews.freebsd.org/D42592

(cherry picked from commit ba0e4d7971e05ee64281a4fc49a2fb408c8ad816)
2025-04-08 15:38:22 +02:00
Konstantin Belousov
477c394ce1 mlx5en: sync channel close with the rq completion processing
(cherry picked from commit f0adc907fc7d3eebfc692fd5f4987c97e61b103d)
2025-04-07 04:28:23 +03:00
Christos Margiolis
8c991c4b06 sound: Fix regression in pcm/feeder_mixer.c
This call was meant to be the default case in the first place, but
somehow missed this.

Reported by:	glebius
Fixes:		4021fa32d92d ("sound: Simplify pcm/feeder_mixer.c")
MFC after:	1 week
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit b6420b5ea5bcdeb859a2b3357e5dbaafe7aaff88)
2025-04-06 02:28:15 +02:00
Christos Margiolis
2254bef61b sound: Use bus_topo_lock() where appropriate
Lock around uses of devclass_*() and replace leftover
CTLFLAG_NEEDGIANTs with CTLFLAG_MPSAFE.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Reviewed by:	imp, jhb
Differential Revision:	https://reviews.freebsd.org/D46700

(cherry picked from commit 35400672df83e337f8792df1972a15003b603930)
2025-04-06 02:28:14 +02:00
Christos Margiolis
831c30f09e sound: Improve afmt_tab
Reduce ifdefs, and add aliases for the unsigned formats.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Reviewed by:	dev_submerge.ch
Differential Revision:	https://reviews.freebsd.org/D48009

(cherry picked from commit a4aff024fd53a38ba08bbf5309589e1865ffe024)
2025-04-06 02:28:14 +02:00
Christos Margiolis
1728d26682 sound: Implement AFMT_FLOAT support
Even though the OSS manual [1] advises against using AFMT_FLOAT, there
are applications that expect the sound driver to support it, and might
not work properly without it.

This patch adds AFMT_F32_LE|BE (as well as AFMT_FLOAT for OSS
compatibility) in sys/soundcard.h and implements AFMT_F32_LE|BE <->
AFMT_S32_LE|BE conversion functions. As a result, applications can
write/read floats to/from sound(4), but internally, because sound(4)
works with integers, we convert floating point samples to integer ones,
before doing any processing.

The reason for encoding/decoding IEEE754s manually, instead of using
fpu_kern(9), is that fpu_kern(9) is not supported by all architectures,
and also introduces significant overhead.

The IEEE754 encoding/decoding implementation has been written by Ariff
Abdullah [2].

[1] http://manuals.opensound.com/developer/AFMT_FLOAT.html
[2] https://people.freebsd.org/~ariff/utils/ieee754.c

PR:		157050, 184380, 264973, 280612, 281390
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Reviewed by:	emaste
Differential Revision:	https://reviews.freebsd.org/D47638

(cherry picked from commit e1bbaa71d62c8681a576f9f5bedf475c7541bd35)
2025-04-06 02:28:14 +02:00
Christos Margiolis
e4c0d79614 sound: Fix vchanrate and vchanformat
Make vchanrate and vchanformat reflect the primary channel's software
buffer's rate and format respectively. Fix previous inconsistencies.

Get rid of the initializations in vchan_create() and move them to
chn_init().

Without the feeder_rate_round check in sysctl_dev_pcm_vchanrate(), we
can set the software rate to anything between feeder_rate_min and
feeder_rate_max. If we keep the check, however, the rate is limited to
whatever the driver's min/max is, which can be a problem if, for
example, the driver supports only a single rate, in which case we won't
be able to set anything other than the driver rate.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D48961

(cherry picked from commit e372211be5c56e218e974a4478be9aa80bfca064)
2025-04-06 02:28:14 +02:00
Norbert Ciosek
6e510d8fba ixgbe: fix mailbox ack handling
Check if CTS bit is set in the mailbox message before waiting for ACK.
Otherwise ACK will never be received causing the function to timeout. Add
a note for ixgbe_write_mbx that it should be called while holding a lock.

Fixes: 6d243d2 ("net/ixgbe/base: introduce new mailbox API")
Cc: stable@dpdk.org

Signed-off-by: Norbert Ciosek <norbertx.ciosek@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>

Obtained from:	DPDK (1f119e4)

(cherry picked from commit 1580f8d9c1740e0c54554e6c185573d34f2dcf76)
2025-04-04 20:43:39 -07:00
Konstantin Belousov
b01d15abba iommu_gas_map_region(): add comment explaining the ma array shift
(cherry picked from commit 45f70f98fc55b753b1e7a7374b4a061aa1f27392)
2025-04-04 03:54:06 +03:00
Eric Joyner
f034ddd2fa
igc(4): Fix attach for I226-K and LMVP devices
Summary:
The device IDs for these were in the driver's list of PCI ids to attach
to, but igc_set_mac_type() had never been setup to set the correct mac
type for these devices. Fix this by adding these IDs to the switch block
in order for them to be recognized by the driver instead of returning an
error.

This fixes the igc(4) attach for the I226-K LOM on the ASRock Z790
PG-ITX/TB4 motherboard, allowing it to be recognized and used.

Signed-off-by: Eric Joyner <erj@FreeBSD.org>

Reviewed by:	kbowling@
Relnotes:	yes
Differential Revision: https://reviews.freebsd.org/D49147

(cherry picked from commit 7ee310c80ea7b336972f53cc48b8c3d03029941e)
2025-04-03 12:59:47 -07:00