FreeBSD/src 4dcb33eusr.sbin/inetd inetd.c

inetd: only declare and use the mapped-address netconfig under INET6

In a WITHOUT_INET6 build the only assignment to netid2 is compiled out and
the non-INET6 arm returns early, so netid2 is unconditionally NULL and the
rpcb_set() call guarded by it is dead code. clang does not prove it dead
and reports nbuf2 as uninitialized where it is passed as a const pointer,

No functional change.

MFC after:      1 week
Reported by:    clang (-Wuninitialized-const-pointer)
Suggested by:   dim
Approved by: ngie (co-mentor)

Reviewed by:    ngie
Differential Revision:  https://reviews.freebsd.org/D59277
DeltaFile
+6-2usr.sbin/inetd/inetd.c
+6-21 files

FreeBSD/src b15ed4fsys/dev/aq aq_fw2x.c aq_main.c

aq(4): arm PHY thermal shutdown only where a sensor exists

aq_fw2x_thermal_arm() reached for a copper PHY register that the fibre
parts do not implement, so arming failed on every init and printed a
warning for a capability the hardware cannot have.  Return ENOTSUP when
the firmware does not advertise a temperature sensor, matching
aq_fw2x_get_temp(), and warn only for a genuine failure.

Signed-off-by: Nick Price <nprice at FreeBSD.org>
Accepted-by: adrian
Approved-by: adrian
(cherry picked from commit 6dbf809bafe1421fbf3cdd952748b15437b7c72a)
DeltaFile
+6-4sys/dev/aq/aq_main.c
+3-0sys/dev/aq/aq_fw2x.c
+9-42 files

FreeBSD/src af6139bsys/dev/aq aq_main.c

aq(4): probe the D100 device ID

The D100 device ID was defined and handled by aq_hw_capabilities(), but
had no entry in aq_vendor_info_array[], so the driver never probed it and
the card was left unattached.  Add the missing entry; the table lists the
fibre variant last within each group, so it follows D109 rather than
sorting numerically.

Signed-off-by: Nick Price <nprice at FreeBSD.org>
Accepted-by: adrian
Approved-by: adrian
(cherry picked from commit 1a78f5ae3917b770bd958010dae86574b15d97ff)
DeltaFile
+2-0sys/dev/aq/aq_main.c
+2-01 files

FreeBSD/src 4c44da6sys/dev/aq aq_dbg.c aq_fw.c

aq(4): observability controls and sysctl/header hygiene

Fold the driver's observability and infrastructure work.

Make aq_device.h self-contained: it declares struct aq_dev in terms of
iflib, bitstring, socket, and ethernet types but included none of the
headers that define them, compiling only because every includer happened
to pull those first.  Include what it uses.  No functional change.

Make the debug controls per-instance.  The debug and debug_categories
sysctls were registered per device but pointed at file-scope globals, so
writing dev.aq.1.debug also changed dev.aq.0.debug and a card could not
be traced in isolation.  Move the level and category mask into struct
aq_dev, reach them through the aq_dev back-pointer in struct aq_hw (wired
up in attach_pre before the first firmware trace and guarded against a
NULL deref), emit through device_printf() so each line carries its unit,
and seed initial values from per-unit device hints so attach can be
traced.


    [29 lines not shown]
DeltaFile
+67-14sys/dev/aq/aq_main.c
+65-15sys/dev/aq/aq_fw2x.c
+66-6sys/dev/aq/aq2_fw.c
+42-14sys/dev/aq/aq_dbg.h
+17-17sys/dev/aq/aq_fw.c
+7-11sys/dev/aq/aq_dbg.c
+264-776 files not shown
+307-8712 files

FreeBSD/src 5c64440share/man/man4 aq.4, sys/dev/aq aq_hw.h aq_fw.h

aq(4): report link transitions and previously silent failures

A link flap left nothing in the log to work from.  Both the link up and
link down messages were gated on bootverbose while the message for a
speed change that keeps carrier was not, so a default kernel was silent
about a flap yet loud about a downshift -- the inverse of what an
operator wants.  The generic message from if_link_state_change() carries
no speed, so gating the driver's own left the negotiated rate
unrecorded.  Report both transitions unconditionally.

Say more than the rate.  aq_hw_get_link_state() already negotiates flow
control and throws it away, and Atlantic 2 reports duplex and EEE in the
same link status word the rate comes from; decode them through a new
get_link_info firmware op and name all of it on the up transition.  EEE
matters for a flap: low power idle transitions are a common source of
marginal link trouble on multi-gigabit copper, and whether it was active
is otherwise invisible.

Give the down transition a cause.  The PHY global fault code was only

    [74 lines not shown]
DeltaFile
+114-9sys/dev/aq/aq_irq.c
+83-14sys/dev/aq/aq_main.c
+66-0sys/dev/aq/aq2_fw.c
+30-1share/man/man4/aq.4
+9-0sys/dev/aq/aq_fw.h
+6-0sys/dev/aq/aq_hw.h
+308-242 files not shown
+311-248 files

FreeBSD/src 9a9026fsys/dev/aq aq_device.h aq_fw1x.c

aq(4): mailbox, flow-control and firmware error-handling fixes

Fold the whole-driver-review correctness and hardening fixes for the
firmware and hardware layers.

Advance the firmware-mailbox address per word in aq_hw_fw_downld_dwords():
on B1 silicon each loop iteration waits for the mailbox address register
to differ from the expected address, but it was set once and never moved,
so after the first word every wait returned immediately and read stale
data.  Advance it four bytes per word.  B0 is unaffected (it polls the
busy bit).  The same function also left err set to ETIMEDOUT after
successfully force-recovering the RAM CPU semaphore; the transfer loop is
guarded by "--cnt && !err", so it ran zero iterations and returned a
timeout with an untouched buffer, making the recovery path dead code.

aq_hw_get_mac_permanent() ignored the get_mac_addr() error and then
examined a buffer the firmware op never wrote on failure.  A fresh softc
is zero, so the "invalid address" test fired, a random locally
administered MAC was substituted, and err was overwritten with 0 -- a

    [48 lines not shown]
DeltaFile
+58-27sys/dev/aq/aq_fw2x.c
+26-1sys/dev/aq/aq_irq.c
+15-4sys/dev/aq/aq_main.c
+12-1sys/dev/aq/aq_hw.c
+7-1sys/dev/aq/aq_fw1x.c
+3-0sys/dev/aq/aq_device.h
+121-346 files

FreeBSD/src fa12e6esys/dev/aq aq_hw.c aq_main.c

aq(4): PHY thermal-shutdown handling and correctness fixes

Fold the thermal-protection work and the correctness fixes that landed
alongside it.

Report and auto-recover from PHY thermal shutdown.  The Atlantic PHYs can
autonomously shut down on over-temperature, latching global fault 0x8007
and dropping the link; Atlantic 2 ships this armed, Atlantic 1 disabled.
Arm it on Atlantic 1 at interface init (1E.C478.A via the MAC's MDIO
controller), and recover from a trip automatically: the admin-status poll
detects the fault, logs the shutdown limit and measured temperature, and
holds the link down until the PHY cools, then restores it -- Atlantic 1
needs a PHY reset (1E.2681.0) with the MAC firmware running plus a full
re-init, Atlantic 2 recovers on the re-init alone.  New firmware ops
get_phy_fault, phy_reset, thermal_arm, and get_thermal_limit back the
state machine in aq_if_update_admin_status().

Make that Atlantic 1 thermal MDIO path address-correct and fail-safe.
The direct-MDIO helpers hardcoded the Clause-45 port address to 0, but it

    [31 lines not shown]
DeltaFile
+166-1sys/dev/aq/aq_fw2x.c
+100-3sys/dev/aq/aq_irq.c
+50-1sys/dev/aq/aq2_fw.c
+15-0sys/dev/aq/aq_fw.h
+11-3sys/dev/aq/aq_main.c
+12-1sys/dev/aq/aq_hw.c
+354-93 files not shown
+380-99 files

FreeBSD/src 098d981sys/dev/aq aq_device.h aq_main.c

aq(4): interface lifecycle and link-state fixes

aq_if_init() programmed the address captured at attach, so an address set
with "ifconfig ether" or by lagg(4) enslavement was never written to
unicast filter slot 0: the interface transmitted with the new address but
the MAC still filtered on the old one, so it received nothing.  Copy the
current if_getlladdr() the way the other iflib drivers do.

The link state could latch UP forever.  aq_if_stop() cleared linkup
before calling aq_if_update_admin_status(), which suppressed the
LINK_STATE_DOWN transition the "link was UP" branch would have made.
Announce the down transition directly from aq_if_stop() instead, and do
not poll the admin status there at all: the MAC has just been reset, so a
stale link reading would re-announce the link as up.

The admin task itself had to stop reporting a link on a stopped
interface.  iflib runs it while either IFF_DRV_RUNNING or IFF_DRV_OACTIVE
is set, and iflib_stop() sets OACTIVE, so the task kept polling after the
stop and re-announced LINK_STATE_UP behind the driver's back.  Treat a

    [24 lines not shown]
DeltaFile
+23-6sys/dev/aq/aq_irq.c
+10-2sys/dev/aq/aq_main.c
+1-0sys/dev/aq/aq_device.h
+34-83 files

FreeBSD/src 8ac0e35sys/dev/aq aq_dbg.c aq_irq.c

aq(4): clean up diagnostics and remove dead code

Non-functional cleanup, no change in behavior.

device_printf() already prefixes each line with the device name, so the
inline "atlantic:" token in the status and error messages produced a
doubled prefix and diverged from the trace macros; remove it so all
output carries one uniform "aqN:" prefix.  Compile the RX/TX descriptor
tracers only when AQ_CFG_DEBUG_LVL > 2 and make them no-op macros
otherwise, so the default build no longer pays a cross-TU call plus
argument evaluation per descriptor.

Drop enum aq_dev_state, struct aq_rx_filters, and struct aq_vlan_tag,
which have no remaining references now that VLAN state lives in a
bitstr_t.  Replace the four identical aq_sysctl_print_{tx,rx}_{head,tail}
handlers, each carrying a dead write path on a read-only oid, with one
aq_sysctl_print_ring_ptr that selects the accessor from arg2.  Reduce the
thermal and PHY-recovery comments to single terse lines that keep the
load-bearing register numbers and the A1-vs-A2 recovery difference.

    [7 lines not shown]
DeltaFile
+42-84sys/dev/aq/aq_main.c
+0-18sys/dev/aq/aq_device.h
+6-0sys/dev/aq/aq_dbg.h
+2-2sys/dev/aq/aq_irq.c
+3-0sys/dev/aq/aq_dbg.c
+53-1045 files

FreeBSD/src 6637527share/man/man4 aq.4

aq(4): Document the Atlantic 2 (AQC113/114/115/116) devices

List every AQC part aq_vendor_info_array[] probes, each with the
maximum speed aq_hw_capabilities() grants it.

Only the Atlantic 2 parts link at 10 Megabit.  The AQC100 and AQC100S
are the only SFP+ controllers; the rest are twisted pair.

Reviewed by:            adrian, ziaee
Signed-off-by:          Nick Price <nick at spun.io>
Differential Revision:  https://reviews.freebsd.org/D58144

(cherry picked from commit 1d89845e90867e2f970c651c342eb07da847b6e9)
DeltaFile
+37-8share/man/man4/aq.4
+37-81 files

FreeBSD/src 73f2d66sys/dev/aq aq_hw.h aq2_hw.h

aq(4): program the Atlantic 2 multiqueue datapath

Wire up the Atlantic 2 receive datapath: the action-resolver table (ART),
multiqueue RSS, QoS, and interrupt moderation.

RX action-resolver table: Atlantic 2 replaces Atlantic 1's discrete RX
filter registers with an ART -- hardware computes a per-packet
classification tag, then walks {tag, mask, action} rows to drop, assign a
queue, or assign a TC.  aq_hw_art_filter_set() installs one row under the
ART semaphore; aq_hw_init_rx_path() enables the resolver, tags L2
unicast/broadcast, installs the unicast/all-multicast and VLAN drop rows,
and assigns every 802.1p priority to TC 0 (mirroring the Atlantic 1
user-priority map, since our RX side is a single 8-ring group in TC 0).
Tag every enabled VLAN filter in the per-filter resolver-tag field -- a
register the BSD ports never write -- because the VLAN drop row matches
resolver tag 0, so without it all tagged receive was dead under VLAN
filtering.  Promiscuous mode disables the drop rows rather than toggling
the Atlantic 1 promiscuous bits; all ART callers surface a semaphore
timeout consistently.  The Atlantic 1 RX_TCP_RSS_HASH and TPO2

    [28 lines not shown]
DeltaFile
+183-17sys/dev/aq/aq_hw.c
+17-10sys/dev/aq/aq_main.c
+9-0sys/dev/aq/aq2_hw.h
+1-1sys/dev/aq/aq_hw.h
+210-284 files

FreeBSD/src 7d9bb76sys/dev/aq aq_hw.h aq2_fw.c

aq(4): correct Atlantic 2 register access

Four Atlantic 2 register-access corrections found in bring-up.

B0 aggregate octet counters: the B0 firmware statistics interface reports
only aggregate rx/tx good octets, not the per-cast breakdown A0 and
Atlantic 1 provide, so every octet sysctl read a permanent zero while
frame counters advanced.  Populate the aggregate octet fields from the B0
buffer; aq_update_hw_stats() accumulates them directly when the per-cast
octets are absent.

Drop the duplicate attach-time MCP reboot: aq_hw_mpi_create() already
reboots the A2 firmware to read its version and caps, then aq_hw_reset()
immediately rebooted it again -- a full MCP restart plus several
transaction-id-bracketed window reads, adding attach latency and a
duplicate banner.  Give aq_hw_reset() a reboot flag and pass reboot=false
for A2 at attach; the load-bearing down/stop reboot (which resyncs A2 RX
DMA across ifconfig down/up) keeps reboot=true.


    [16 lines not shown]
DeltaFile
+26-15sys/dev/aq/aq_hw.c
+2-2sys/dev/aq/aq_main.c
+1-1sys/dev/aq/aq_hw.h
+2-0sys/dev/aq/aq2_fw.c
+31-184 files

FreeBSD/src 8b08cf8sys/dev/aq aq_device.h aq_hw.c

aq(4): add Atlantic 2 (AQC113) device support

Add support for the Marvell Atlantic 2 (AQC113/114/115/116) controllers,
a new chip generation that is not register-compatible with the Atlantic 1
parts aq(4) supports today.  Adapted from the OpenBSD/NetBSD if_aq driver.

Register and device definitions (aq2_hw.h): the firmware handshake
(MIF_BOOT / MCP_HOST_REQ_INT / MIF_HOST_FINISHED), the 0x12000/0x13000
firmware interface windows, and the action-resolver table (ART) that
replaces Atlantic 1's discrete RX filters, plus the Atlantic 2 PCI device
ids and the aq_is_atlantic2() helper.  Reserve a chip-feature bit
(AQ_HW_CHIP_ATLANTIC2) and add the aq_hw fields the firmware fills at boot
(ART base index, statistics interface version A0/B0).  The per-VLAN-filter
resolver-tag field comes from the Linux driver; the BSD sources never
write it.

Firmware operations (aq_fwa2.c): Atlantic 2 talks to the management CPU
through the 0x12000/0x13000 register windows plus the boot handshake,
rather than Atlantic 1's mailbox in shared RAM.  Implement that as a third

    [33 lines not shown]
DeltaFile
+447-0sys/dev/aq/aq2_fw.c
+276-0sys/dev/aq/aq2_hw.h
+42-59sys/dev/aq/aq_media.c
+48-3sys/dev/aq/aq_main.c
+38-9sys/dev/aq/aq_hw.c
+11-7sys/dev/aq/aq_device.h
+862-784 files not shown
+881-8510 files

FreeBSD/src 5ef98cbcrypto/openssh sshd.8 ssh.1

openssh: Fix shosts.equiv path in manual pages

Change the path for the shosts.equiv file to consistently reflect
/etc/ssh/shosts.equiv across all manual pages.

This change stems from 35d4ccfb5576 ("Document FreeBSD defaults and
paths.")

Reviewed by:    bcr, emaste
Differential Revision:  https://reviews.freebsd.org/D52203

(cherry picked from commit 336cc041a492b03fde96fd89915ae694cf31b551)
DeltaFile
+2-2crypto/openssh/ssh.1
+1-1crypto/openssh/sshd.8
+3-32 files

FreeBSD/src 65e155busr.bin/ministat ministat.1 README

ministat.1: Match actual output

Fix a documentation discrepancy, where the implementation was updated to
use uncertainty propagation for the ratio of means, but the example
output in the manual page was left unchanged.

Update the manual page example from 70.7384% to 102.3% to reflect the
actual output.

While here, also update the example in the README.

Reviewed by:    ziaee
Fixes:          a304ad90e9ae ("Reduce the bogosity of ministat's % difference calculations.")
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D59157

(cherry picked from commit 595e665cb292a70f9d17b779c8ad0470ff3e3964)
DeltaFile
+2-5usr.bin/ministat/README
+2-2usr.bin/ministat/ministat.1
+4-72 files

FreeBSD/src cda01e2crypto/openssh sshd.8 ssh.1

openssh: Fix shosts.equiv path in manual pages

Change the path for the shosts.equiv file to consistently reflect
/etc/ssh/shosts.equiv across all manual pages.

This change stems from 35d4ccfb5576 ("Document FreeBSD defaults and
paths.")

Reviewed by:    bcr, emaste
Differential Revision:  https://reviews.freebsd.org/D52203

(cherry picked from commit 336cc041a492b03fde96fd89915ae694cf31b551)
DeltaFile
+2-2crypto/openssh/ssh.1
+1-1crypto/openssh/sshd.8
+3-32 files

FreeBSD/src 66c4540usr.bin/ministat ministat.1 README

ministat.1: Match actual output

Fix a documentation discrepancy, where the implementation was updated to
use uncertainty propagation for the ratio of means, but the example
output in the manual page was left unchanged.

Update the manual page example from 70.7384% to 102.3% to reflect the
actual output.

While here, also update the example in the README.

Reviewed by:    ziaee
Fixes:          a304ad90e9ae ("Reduce the bogosity of ministat's % difference calculations.")
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D59157

(cherry picked from commit 595e665cb292a70f9d17b779c8ad0470ff3e3964)
DeltaFile
+2-5usr.bin/ministat/README
+2-2usr.bin/ministat/ministat.1
+4-72 files

FreeBSD/src ef03c60sys/kern imgact_elf.c kern_mib.c, sys/sys imgact_elf.h

kern_mib: remove kern.fallback_elf_brand compat sysctl

This compatibility alias for kern.elf{32,64}.fallback_brand has been
marked for removal since FreeBSD 6.0.

Signed-off-by: Christos Longros <chris.longros at gmail.com>

Reviewed by:    kib, emaste
Differential Revision:  https://reviews.freebsd.org/D56085
DeltaFile
+0-6sys/kern/kern_mib.c
+0-3tools/tools/sysdoc/tunables.mdoc
+1-1sys/kern/imgact_elf.c
+0-1sys/sys/imgact_elf.h
+1-114 files

FreeBSD/src a017064sys/dev/aq aq_fw.c aq_common.h

aq(4): harden the attach, detach, and reset error paths

Correct several attach/detach/reset paths that either swallowed failures
or acted on undefined state.

MSI-X attach-failure double-free: aq_if_msix_intr_assign() freed the
per-RX-ring interrupts in its failure path and then returned an error, so
iflib's IFDI_DETACH freed the same irq structures again --
bus_teardown_intr() on a dangling tag and bus_release_resource() on an
already-released IRQ, panicking a box that should have simply failed to
attach.  Let iflib own the teardown; drop the failure-path loop and the
now-dead index bookkeeping.

Detach loop bound: aq_if_detach() freed the per-ring interrupts looping
to isc_nrxqsets while indexing rx_rings[], which is sized by
rx_rings_count; index by rx_rings_count to match every other RX-ring
loop.

AQ_HW_WAIT_FOR final poll: the macro derived its result from the loop

    [33 lines not shown]
DeltaFile
+10-7sys/dev/aq/aq_main.c
+13-4sys/dev/aq/aq_hw.c
+3-2sys/dev/aq/aq_common.h
+4-0sys/dev/aq/aq_fw.c
+30-134 files

FreeBSD/src 03037d0sys/dev/aq aq_fw1x.c aq_irq.c

aq(4): harden the interrupt and MAC-statistics paths

Firmware-statistics accounting and interrupt-routing fixes.

Stats delta underflow: guard the MAC statistics delta accumulation
against counter wrap or a firmware counter reset, so a snapshot smaller
than the previous one does not underflow into a huge spurious delta.

Skip stats on a failed read: aq_update_hw_stats() ignored
aq_hw_mpi_read_stats()'s return and committed the on-stack mbox into
last_stats unconditionally.  On a failed read that snapshot is garbage or
zero and poisons the delta baseline (a zeroed snapshot wipes last_stats,
so the next good read double-counts).  Check the return and skip the
accumulation and the last_stats commit on failure.

Mailbox/stats separation: struct aq_hw_stats served both as the raw fw1x
MCP mailbox layout and as the driver's canonical stats snapshot, so any
field added to it would silently shift the fw1x mailbox read.  Give the
fw1x mailbox its own raw layout in struct aq_hw_fw_mbox and let

    [25 lines not shown]
DeltaFile
+29-23sys/dev/aq/aq_hw.c
+39-13sys/dev/aq/aq_hw.h
+24-9sys/dev/aq/aq_irq.c
+8-9sys/dev/aq/aq_fw1x.c
+100-544 files

FreeBSD/src 239718dsys/dev/aq aq_hw.h aq_hw.c

aq(4): honor the kernel RSS policy and add a TX traffic-class helper

Align RX steering with the kernel RSS framework and factor out the
active-traffic-class count.

RSS key and indirection table: on an options RSS kernel the stack owns a
canonical hash key and a hash-to-bucket indirection table binding each
bucket to a CPU.  aq programmed a random arc4rand() key and a plain
i % rss_qs table, so the hash it stamped in iri_flowid and the queue it
steered a flow to did not match the CPU the stack chose -- defeating RSS
affinity.  Under #ifdef RSS take the key from rss_getkey() and each entry
from rss_get_indirection_to_bucket(), as e1000/ixgbe/ixl do; the non-RSS
build keeps the random key and round-robin table.

RSS hash-type policy: drop the private hw.aq.enable_rss_udp knob (RDTUN,
default on) and add aq_rss_hashconfig(), which under options RSS returns
rss_gethashconfig() and otherwise the same UDP-off default.  UDP 4-tuple
hashing scatters a fragmented datagram's pieces across queues because
only the first fragment carries the L4 ports, so it is now off by default

    [13 lines not shown]
DeltaFile
+23-13sys/dev/aq/aq_main.c
+12-2sys/dev/aq/aq_hw.c
+1-0sys/dev/aq/aq_hw.h
+36-153 files

FreeBSD/src 3da3a83sys/dev/aq aq_main.c aq_dbg.h

aq(4): remove dead code and tidy macros, diagnostics, and naming

Non-functional cleanup, with two diagnostic corrections.

Dead code: delete leftover commented-out AQ_DBG_ENTER/EXIT/PRINT calls
(aq_hw.c, aq_fw2x.c, aq_irq.c, aq_main.c), a commented-out aq_nic_cfg
local, the stale old-signature parameter blocks between the ring-init
declarations and their bodies (aq_ring.c), a trailing note on a live
statement, and the unused DumpHex() vendor debug helper (no callers; its
body only compiled under AQ_CFG_DEBUG_LVL > 3).

Register-write macros: parenthesize AQ_WRITE_REG_BIT's msk/shift/value
arguments so a compound argument cannot mis-bind, give AQ_HW_FLUSH() an
explicit hw parameter instead of capturing it from caller scope, and drop
the duplicate lowercase aq_hw_write_reg[_bit] aliases (converting the 43
call sites to the uppercase spelling) so there is a single form.

Diagnostics: the aq_log* family expanded through the base log macro, which
ignored its level and printed unconditionally, while the error traces

    [31 lines not shown]
DeltaFile
+43-43sys/dev/aq/aq_hw_llh.c
+34-36sys/dev/aq/aq_fw2x.c
+2-48sys/dev/aq/aq_dbg.c
+23-23sys/dev/aq/aq_fw1x.c
+11-12sys/dev/aq/aq_dbg.h
+9-11sys/dev/aq/aq_main.c
+122-1736 files not shown
+136-21112 files

FreeBSD/src 1a8240fsys/dev/aq aq_hw.c aq_hw_llh.h

aq(4): expand and correct offloads, fix VLAN/multicast filtering

Advertise the offloads the hardware already performs, correct the TX
descriptor's L3 family selection, and correct the VLAN and multicast
receive-filter paths.

Offloads: advertise IFCAP_HWCSUM_IPV6 (adding CSUM_IP6_TCP/UDP/TSO to
isc_tx_csum_flags) and IFCAP_VLAN_HWTSO, and enable the RX outer
(S-VLAN) tag parse mode in aq_hw_offload_set().

TX descriptor L3 family: aq_setup_offloads() derived tx_desc_cmd_ipv4
from CSUM_IP|CSUM_TSO, but CSUM_TSO is (CSUM_IP_TSO|CSUM_IP6_TSO) and
tcp_output() sets both bits without regard to address family, so an
IPv6 TSO frame matched on CSUM_IP_TSO and went out with the IPv4
header-checksum command set on a frame that carries no IPv4 header.
The checksum flags cannot distinguish the family; key the bit off
IPI_TX_IPV4 instead, which iflib derives from the parsed ethertype,
as the IPI_TX_INTR test below it already does.  Plain IPv6 checksum
offload was unaffected, as CSUM_IP6_TCP alone never matched the mask.

    [27 lines not shown]
DeltaFile
+27-16sys/dev/aq/aq_main.c
+13-0sys/dev/aq/aq_hw_llh_internal.h
+7-3sys/dev/aq/aq_ring.c
+8-0sys/dev/aq/aq_hw_llh.c
+4-0sys/dev/aq/aq_hw_llh.h
+3-0sys/dev/aq/aq_hw.c
+62-196 files

FreeBSD/src 9101ea2sys/dev/aq aq_main.c aq_fw.h

aq(4): naming and exposure

Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D57656

(cherry picked from commit e44579e23430ff2084b03c9b3d486f05e617e04f)
DeltaFile
+26-26sys/dev/aq/aq_fw2x.c
+18-22sys/dev/aq/aq_fw.c
+16-16sys/dev/aq/aq_fw1x.c
+1-1sys/dev/aq/aq_main.c
+2-0sys/dev/aq/aq_fw.h
+63-655 files

FreeBSD/src dcfe983sys/dev/aq aq_ring.c

aq(4): drop errored RX frames instead of resetting the interface

aq_isc_rxd_pkt_get() returned EBADMSG when a receive descriptor's
MAC/receive-error bit (rx_stat bit 0) was set.  iflib treats any error
from isc_rxd_pkt_get() as a fatal ring fault and answers with
IFC_DO_RESET -- a full interface reinitialization.  A per-frame receive
error is not a ring fault: on a marginal link or cable the Atlantic
delivers errored frames continuously, so each one triggered another
reset and the interface reset-stormed itself into carrying no traffic
instead of merely dropping the bad frames.

The Atlantic delivers errored frames to the host by design (Linux drops
them in software via buff->is_error), and iflib offers no per-frame
error return that isn't a reset.  Follow the vmxnet3 model: on a receive
error zero the fragment lengths and return success.  iflib then discards
the packet (assemble_segments() excludes zero-length fragments) while
still recycling the descriptors through the refill path -- no reset.
Also drop frames flagged with an RX-DMA fault (rdm_err), not just the
MAC-error bit; and keep iri_len non-zero on that drop path, since iflib

    [11 lines not shown]
DeltaFile
+21-5sys/dev/aq/aq_ring.c
+21-51 files

FreeBSD/src 0211e64sys/compat/linuxkpi/common/src linux_80211.c

LinuxKPI: 802.11: add != NULL check in ieee80211_tx_status_ext()

There seems to be another possible race with net80211 state machine
changing the bss from under us (another lvif_bss_synched case).
Just do the != NULL check to avoid a NULL pointer deref in
ieee80211_ratectl_rate().

(bz extended the original comment and wrote the commit message).

Sponosred by:   The FreeBSD Foundation (commit)
PR:             297184
MFC after:      3 days
DeltaFile
+9-1sys/compat/linuxkpi/common/src/linux_80211.c
+9-11 files

FreeBSD/src 523c399sys/contrib/dev/athk/ath10k pci.c

ath10k: remove some early FreeBSD-specific debugging

The extra DELAY seems to no longer be needed and the dump_stack()
is definitively a problem now.  Remove all this.

Sponsored by:   The FreeBSD Foundation
MFC after:      3 days
DeltaFile
+0-10sys/contrib/dev/athk/ath10k/pci.c
+0-101 files

FreeBSD/src 5a223aeusr.bin/fortune/fortune fortune.6

fortune: Fix tag width in fortune.6 man-page

Reported by: ziaee

Reviewed by:    ziaee
Differential Revision:  https://reviews.freebsd.org/D59242
DeltaFile
+1-1usr.bin/fortune/fortune/fortune.6
+1-11 files

FreeBSD/src 91eff10contrib/sqlite3 sqlite3rc.h VERSION, contrib/sqlite3/autosetup sqlite-config.tcl

sqlite3: Vendor import of sqlite3 3.53.3

Release notes at https://www.sqlite.org/releaselog/3_53_3.html.

Obtained from:  https://www.sqlite.org/2026/sqlite-autoconf-3530300.tar.gz

MFC after:      2 weeks

Merge commit 'e698feec080925c6cffa9ec31be884daa5cea536'

(cherry picked from commit 14e3daa72db7d6410877481a4ed2791603e2b99f)
DeltaFile
+1,198-445contrib/sqlite3/sqlite3.c
+109-44contrib/sqlite3/shell.c
+21-7contrib/sqlite3/sqlite3.h
+6-2contrib/sqlite3/autosetup/sqlite-config.tcl
+1-1contrib/sqlite3/sqlite3rc.h
+1-1contrib/sqlite3/VERSION
+1,336-5006 files

FreeBSD/src d461550contrib/sqlite3 sqlite3.h shell.c, contrib/sqlite3/autosetup sqlite-config.tcl proj.tcl

sqlite3: Vendor import of sqlite3 3.53.1

Release notes at https://www.sqlite.org/releaselog/3_53_1.html.

Obtained from:  https://www.sqlite.org/2026/sqlite-autoconf-3530100.tar.g

Merge commit 'b00eb376e3fb28e738f9370552dae9d92c1fdd76' into sqlite3

(cherry picked from commit 5b8f59e648431715e8f5f60ef09c0be4508b3ae6)
DeltaFile
+11,180-5,219contrib/sqlite3/sqlite3.c
+9,171-5,882contrib/sqlite3/shell.c
+753-193contrib/sqlite3/sqlite3.h
+454-141contrib/sqlite3/autosetup/proj.tcl
+505-57contrib/sqlite3/tea/generic/tclsqlite3.c
+182-77contrib/sqlite3/autosetup/sqlite-config.tcl
+22,245-11,56919 files not shown
+22,595-11,83825 files