ena: Fix RSS sysctl panic when the RSS table is destroyed
ena_set_io_queue_count() destroys the ena-com RSS state but left
ENA_FLAG_RSS_ACTIVE set. The RSS sysctl handlers gate on that flag, so
they ran against state that was gone.
This causes 2 types of issues:
1. Kernel panic when reading dev.ena.0.rss.key or writing to
dev.ena.0.rss.indir_table
2. Returning a stale cached RSS table when reading
dev.ena.0.rss.indir_table, or a bogus 1 when reading
dev.ena.0.rss.indir_table_size
ena_set_io_queue_count() is called in 2 cases:
1. The io_queues_nb sysctl.
2. Device restore when the device comes back with fewer MSI-X vectors
than before.
Clear ENA_FLAG_RSS_ACTIVE when the RSS table is destroyed. The handlers
[12 lines not shown]
ena: Update driver version to v2.8.6
Bug Fixes:
* Revert "Reinit RSS components during queue count change flow"
* Fix RSS sysctl panic when the RSS table is destroyed
* Set ENA_FLAG_RSS_ACTIVE only when RSS is really configured
Reviewed by: cperciva
MFC after: 3 days
Sponsored by: Amazon, Inc.
Differential Revision: https://reviews.freebsd.org/D61059
Revert "ena: Reinit RSS components during queue count change flow"
This reverts commit 2a27dd0076c5.
Changing the IO queue count destroys the RSS table, and if this is done
while the device is down a new table is not rebuilt until the next
ena_up(). That leaves 2 problems in the meantime:
1. A stale copy of the destroyed table is still returned via sysctl.
2. Reading the destroyed key, or writing the table, panics.
That commit addressed 1 by creating a new RSS table, so that sysctl
returns a fresh default table with the new number of queues. It did not
set out to fix 2, but the rebuild hid it by accident.
The rebuilt table is the default round-robin one, wired to no queues and
unusable: a write still fails, because programming the device needs the
IO queues that only exist after ena_up(). ena_up() builds that same
table anyway.
[10 lines not shown]
ena: Set ENA_FLAG_RSS_ACTIVE only when RSS is really configured
If the device does not report support for the RSS indirection table,
ena_rss_init_default() destroys the RSS state and returns EOPNOTSUPP.
ena_rss_configure() treats EOPNOTSUPP as success and returns 0, and
ena_up_complete() sets ENA_FLAG_RSS_ACTIVE on any 0 return.
Reading dev.ena.N.rss.key at this point causes kernel panic.
Every current device reports the indirection table, so reaching this
needs a device that is broken or misreporting.
The SYSINIT removed by a6205766b300 called ena_rss_init_default()
directly, saw the EOPNOTSUPP and cleared the flag. Routing the decision
through ena_rss_configure(), which hides EOPNOTSUPP, lost that.
Move the flag set into ena_rss_configure(), which can see whether a
table exists, and clear it when tbl_log_size is 0.
Reviewed by: cperciva
[4 lines not shown]
editors/openoffice-4: Switch to bundled lucene.
Use bundled lucene instead of the lucene port and amend DEPRECATED.
MFH: 2026Q4
(cherry picked from commit 77dc9dabebd898241d5f641dfb3e58029a7f1298)
editors/openoffice-devel: upgrade to new snapshot
Upgrade to a newer snapshot of the upstream trunk branch.
Wiki Publisher no longer uses apache-commons-codec or the insecure
apache-commons-httpclient so unbreak and re-enable the WIKI_PUBLISHER_
option.
These patches have been upstreamed:
patch-bridges_source_cpp__uno_gcc3__freebsd__powerpc64_call.s
patch-bridges_source_cpp__uno_gcc3__freebsd__powerpc64_cpp2uno.cxx
patch-bridges_source_cpp__uno_gcc3__freebsd__powerpc64_share.hxx
patch-bridges_source_cpp__uno_gcc3__freebsd__powerpc64_uno2cpp.cxx
patch-jvmfwk_plugins_sunmajor_pluginlib_vendorbase.hxx
patch-set_soenv.in
patch-source__soenv.sh
Use bundled lucene instead of the lucene port and remove DEPRECATED.
[2 lines not shown]
editors/openoffice-*: enable on powerpc64le
OpenJDK keeps its libraries in jre/lib/ppc64le on little-endian, and
source_soenv.sh in -devel only knew the big-endian triple.
(cherry picked from commit cfb4eff2c826bcd0a780fe925be1894d4bc1369b)
editors/openoffice-*: don't require libjawt.so
openjdk8 keeps libjawt.so under jre/lib, where pkg doesn't register it
as provided, so pkg add of the package fails with "Missing shlib
libjawt.so". openjdk8 is already a run dependency.
(cherry picked from commit e1c869f4c1d4a0c358c5115b92440c7613c230e3)
igc: Count packets dropped for want of a receive descriptor
When a receive ring is full the hardware drops the packet and counts it
in RQDPC, a per-queue register the driver never read. Such drops were
invisible: MPC counts packet buffer overflows, not descriptor
exhaustion, so an overloaded queue lost packets with nothing to show for
it. With several receive queues this is the common overload signature,
since RSS loads the queues unevenly and one saturated queue drops while
the others idle.
Read RQDPC for each queue with the other statistics and account the
drops per queue as dev.igc.N.queue_rx_M.rx_drops and in total as the
interface's input queue drop counter (netstat -d, Idrop), as ixgbe does
with QPRDC. Write the register back to zero after reading; the I210
documents it as read/write rather than read-to-clear.
Reviewed by: kbowling
MFC after: 2 weeks
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D61004
devel/py-curio: Fix import on Python 3.12 and 3.13
Python 3.12 made multiprocessing.connection's CHALLENGE, WELCOME and
FAILURE private and removed ssl.wrap_socket, and Python 3.13 removed
telnetlib, so importing curio fails. Backport upstream commit a5590bb
("Add support for Python 3.12"), which upstream never released, and
replace the telnetlib based monitor client with a small socket +
selectors loop.
While here, document the patches.
Obtained from: upstream
PR: 300285
Approved by: portmgr@ (unbreak; blanket)