summaryrefslogtreecommitdiff
path: root/sys/dev
AgeCommit message (Collapse)Author
42 hoursdwc: add receive checksum offload for IPv6Michael Tuexen
This patch adds support for receive checksum offload for TCP/IPv6 and UDP/IPv6. Since receive checksum offload can't be configured separately for IPv4 and IPv6, IFCAP_RXCSUM and IFCAP_RXCSUM_IPV6 can't be changed independently. Reviewed by: Timo Völker MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D54756
42 hoursdwc: add transmit checksum offload for IPv6Michael Tuexen
This patch adds support for transmit checksum offload for TCP/IPv6 and UDP/IPv6. Reviewed by: Timo Völker MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D54754
44 hoursrockship: Fix a typo in a source code commentGordon Bergling
- s/vaues/values/ MFC after: 5 days
3 daysdwc: prepare for IPv6 transmit checksum offloadingMichael Tuexen
No functional change intended. MFC after: 3 days
3 daysmxge(4): avoid clang 21 warning in NO-IP configurationDimitry Andric
Building the LINT-NOIP kernel on amd64 with clang 21 results in a -Werror warning similar to: sys/dev/mxge/if_mxge.c:1846:44: error: variable 'sum' is uninitialized when passed as a const pointer argument here [-Werror,-Wuninitialized-const-pointer] 1846 | cksum_offset, sizeof(sum), (caddr_t)&sum); | ^~~ Indeed, if both `INET` and `INET6` are undefined, `sum` is never initialized. Initialize it to zero to silence the warning. Reviewed by: jhibbits MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D54730
3 dayssmartpqi: Avoid declaring extern inline functionsMark Johnston
Each C file is compiled separately so these functions can't be inlined except in the file where they are defined. Since these functions aren't used outside smartpqi_request.c, just do the simple thing and make them private to that file. Reported by: gcc Reviewed by: jrhall Fixes: c558eca47970 ("smartpqi: update to version 4660.0.2002") Differential Revision: https://reviews.freebsd.org/D54732
3 daysbge: disable TXCSUM if UDP transmit checksum offloading is disabledMichael Tuexen
The bge interface is special with respect to transmit checksumi offloading. In the default settings, an bge interface announces TXCSUM capabilities, but only supports TCP/IPv4 and not UDP/IPv4 due to limitations of some of the NICs. This results in problems when the bge interface becomes a member of a bridge. Since currently only the TXCSUM capabilities are synced when a member is added to a bridge and not the protocol specific capabilities, this can result in a situation where UDP packets are sent out using a bge interface without having a correct checksum. To mitigate this problem, initially don't announce TXCSUM capabilities, when UDP transmit checksum is disabled. It is still possible to enable TXCSUM capabilities via ifconfig. PR: 291420 Reviewed by: Timo Voelker MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D54486
3 daysdwc: improve IPv4 transmit checksum offloadingMichael Tuexen
This patch provides two improvements for TCP/IPv4 and UDP/IPv4 transmit checksum offloading: (1) Use *CIC_SEG instead of *CIC_FULL, since FreeBSD always provides a pseudo header checksum. (2) Don't make transmit IPv4 header checksum offloading a prerequisite for TCP/IPv4 or UDP/IPv4 transmit checksum offloading. This is the root cause of PR 291696, since right now the epair interface does not support transmit IPv4 header checksum offloading, but TCP/IPv4 and UDP/IPv4 transmit checksum offloading. PR: 291696 Reviewed by: Timo Voelker Tested by: Marek Benc MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D54395
4 daysacpi: Add a function to deregister all ioctl commands using the same functionJohn Baldwin
This simplifies detach/cleanup for drivers that add multiple ACPI ioctls. Reviewed by: imp Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D54420
4 daysnvme: Fix a typoMark Johnston
Fixes: 73c921ef1d44 ("nvme: Add ability to override ioq to put the request on")
4 daysnvme: Add ability to override ioq to put the request onWarner Losh
Sometimes the client device needs to manage the IOQ the request goes to. Expand the interface we have for the request to allow it to be set for this special use case. Sponsored by: Netflix Reviewed by: jhb Differential Revision: https://reviews.freebsd.org/D54714
5 daysasmc: Add support for MacBookPro11,5Abdelkader Boudih
Add support for the MacBookPro11,5 (Mid 2015, 15-inch with AMD Radeon R9 M370X GPU) to the Apple SMC driver. Debug testing revealed this model lacks several SMC keys present on MacBookPro11,4 (IBLC, ICMC, IC2C), that model-specific sensor definitions. Differential Revision: https://reviews.freebsd.org/D54665 Reviewed by: adrian
5 daysmtw(4): Fix warm reboot initialization failures for MT7601UAbdelkader Boudih
The mtw(4) driver works correctly on initial boot, but fails to initialize the MT7601U WiFi adapter after a warm reboot. Users must either physically unplug and replug the USB adapter, or perform a full power cycle to restore functionality, if usb power is always powered (only a replug works) The root cause is that warm reboot does not power-cycle USB devices, leaving the MT7601U in a stale state from the previous session. The MCU retains its ready flag and the device ignores initialization commands, resulting in timeout waiting for MCU to initialize errors. At the OS Level, pinging 1.1.1.1 will work, but the speed will be very slow. In addition in debug mode, we see thousand of error logs. This patch addresses the issue by: * Performing USB re-enumeration on attach to reset the device state * Detecting when the MCU is already marked ready (stale from previous session) and forcing a reset of the MCU before loading firmware * Increasing the firmware load timeout from 3s to 10s to accommodate slower initialization after reset * Increasing MCU ready poll attempts from 100 to 300 with longer delays to handle devices that take longer to become ready after reset Note: The increase was random, lower value might work. Test Plan: Tested on MacBook Pro (late-2015) and a MacMini with MediaTek MT7601U USB adapter across multiple warm reboot cycles. With the mac-mini and a another desktop, the issue happens only if connected via an always powered usb hub port in the monitor. The laptop don't power cycle it power. Differential Revision: https://reviews.freebsd.org/D54659 Reviewed by: adrian
6 daysvt(4): allow up to _SIG_MAXSIG (128) for VT_SETMODEQuentin Thébault
VT_SETMODE ioctl currently checks the provided signal numbers with its own ISSIGVALID macro that uses NSIG (32) as a maximum, although the code that will actually send the signal in sys/kern/kern_sig.c uses _SIG_VALID which allows up to _SIG_MAXSIG (128). This change aligns the vt code with the kernel internals and enables the use of higher signal numbers so that applications are not limited to SIGUSR1 and SIGUSR2 for vt release and acquire signals. Signed-off-by: Quentin Thébault <quentin.thebault@defenso.fr> Reviewed by: emaste, imp, kevans Differential Revision: https://reviews.freebsd.org/D53615
6 daysacpi: Suspend-to-idle support (s2idle)Aymeric Wibo
Implement STYPE_SUSPEND_TO_IDLE sleep type added in c43473dc9b83 ("sys/power: Generic sleep types"). This is a prerequisite for the firmware to enter the S0ix states. When suspending to idle, the system stays in an ACPI S0 state, but the CPUs are idled and devices are suspended/resumed before and after this as they would be when entering any other sleep type (except for AWAKE and POWEROFF). Factor out do_standby, do_sleep, and add a new do_idle function for idling the CPU (a future patch will make this an idle loop and not just a simple cpu_idle() call). In do_idle, SCIs (interrupt 9) are enabled to allow wake events to break the CPU out of idle. Record all the steps made instead of just the last one in slp_state, which allows for more flexible unwinding (will be useful to not have to goto breakout if the SPMC entry call fails when that is committed). A lot of this borrows from Ben Widawsky's patch: D17675. The main functional difference with that patch is that suspend-to-idle is a wholly separate sleep type in this one as opposed to being an alternative implementation for s2mem (S3). Reviewed by: emaste, olce Approved by: olce Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D48734
6 daysvm_object: remove the charge memberKonstantin Belousov
State that the object charge is zero if object->cred == NULL, or equal to the ptoa(object->size) otherwise. Besides being much simpler, the transition to use object->size corrects the architectural issue with the use of object->charge. The split operations effectively carve the holes in the charged regions, but single counter cannot properly express it. As result, coalescing anonymous mappings cannot calculate correctly if the extended mapping already backed by the existing object is already accounted or not [1]. To properly solve the issue, either we need to start tracking exact charged regions in the anonymous objects, which has the significant overhead and complications. Or give up on the slight over-accounting and charge the whole object unconditionally, as it is done in the patch. Reported by: mmel, pho [1] Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D54572
7 daysaq(4): style(9) cleanupEd Maste
7 dayssound: Replace MIN() with min()Christos Margiolis
We use min() in most places. No functional change intended. Sponsored by: The FreeBSD Foundation MFC after: 1 week
7 dayssound: Unlock around uiomove() in midi_{read,write}()Christos Margiolis
Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D54130
8 daysads111x: Convert driver to CTLFLAG_MPSAFEAbdelkader Boudih
Replace CTLFLAG_NEEDGIANT with CTLFLAG_MPSAFE for all ADC sensor sysctls. All of the sysctl handlers are serialized by a driver mutex. Sysctls converted: - dev.ads111x.X.channelN.gain_index (PGA setting) - dev.ads111x.X.channelN.rate_index (sample rate) - dev.ads111x.X.channelN.voltage (sampled voltage) - dev.ads111x.X.config (configuration register) - dev.ads111x.X.lo_thresh (comparator low threshold) - dev.ads111x.X.hi_thresh (comparator high threshold) Reviewed by: markj MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D54620
8 daysisl: Convert driver to CTLFLAG_MPSAFEAbdelkader Boudih
Replace CTLFLAG_NEEDGIANT with CTLFLAG_MPSAFE for all light sensor sysctls. All of the sysctl handlers are serialized by a driver mutex. Sysctls converted: - dev.isl.X.als (ambient light sensor) - dev.isl.X.ir (infrared sensor) - dev.isl.X.prox (proximity sensor) - dev.isl.X.resolution (sensor resolution) - dev.isl.X.range (sensor range) Reviewed by: markj MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D54621
8 daysjme: Convert driver to CTLFLAG_MPSAFEAbdelkader Boudih
Replace CTLFLAG_NEEDGIANT with CTLFLAG_MPSAFE for all interrupt coalescing sysctls. The driver uses jme_mtx mutex for proper synchronization and does not require Giant lock. Sysctls converted: - dev.jme.X.tx_coal_to (TX coalescing timeout) - dev.jme.X.tx_coal_pkt (TX coalescing packet count) - dev.jme.X.rx_coal_to (RX coalescing timeout) - dev.jme.X.rx_coal_pkt (RX coalescing packet count) - dev.jme.X.process_limit (max RX events to process) Reviewed by: markj MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D54618
9 dayscxgbe(4): Move CPL-specific handling out of eth_rxNavdeep Parhar
IPsec rx uses a new CPL and this prepares eth_rx for IPsec support in future commits. Tidy up the comment and code around M_TSTMP while here. MFC after: 1 week Sponsored by: Chelsio Communications
9 dayscxgbe(4): Update shared code and config filesNavdeep Parhar
Obtained from: Chelsio Communications MFC after: 1 week Sponsored by: Chelsio Communications
9 dayssmartpqi: Make pqisrc_is_supported_write staticNavdeep Parhar
This fixes a build error with -O0 and matches all the other pqisrc_is_* routines in the file. --- kernel.full --- ld: error: undefined symbol: pqisrc_is_supported_write >>> referenced by smartpqi_request.c:1799 (/.../smartpqi_request.c:1799) >>> smartpqi_request.o:(pqisrc_build_scsi_cmd_raidbypass)
10 daysata-serverworks: Fix incorrect port count for BCM5770 SATA controllerDmitry Borisov
The 1166:0241 PCI device has 8 ports instead of 4. Signed-off-by: Dmitry Borisov <di.sean@protonmail.com> Reviewed by: imp, jlduran Pull Request: https://github.com/freebsd/freebsd-src/pull/1883
10 daysacpi_ibm: register all appropriate sysctls as uintQuentin Thébault
All sysctls except thermal sensor readings and the handlerevents whitelist-separated string are bitmasks or small integers. This avoids some bitmasks being erroneously displayed as negative values. Signed-off-by: Quentin Thébault <quentin.thebault@defenso.fr> Reviewed by: imp Pull Request: https://github.com/freebsd/freebsd-src/pull/1824
10 daysnvme: Add APST payload overridingAlexey Sukhoguzov
The apst_data tunable allows APST configuration to be adjusted during controller initialization. It accepts an array of encoded integers, each defining specific transition parameters. Relnotes: YES Signed-off-by: Alexey Sukhoguzov <sap@eseipi.net> Reviewed by: imp Pull Request: https://github.com/freebsd/freebsd-src/pull/1444
10 daysnvme: Support Autonomous Power State Transition (APST)Alexey Sukhoguzov
APST is an optional NVMe power-saving feature that allows devices to autonomously enter higher non-operational power states after a certain amount of idle time, reducing the controller's overall power consumption. Signed-off-by: Alexey Sukhoguzov <sap@eseipi.net> Reviewed by: imp Pull Request: https://github.com/freebsd/freebsd-src/pull/1444
10 daysnvme: Handle get/set feature payloadsAlexey Sukhoguzov
Signed-off-by: Alexey Sukhoguzov <sap@eseipi.net> Reviewed by: imp Pull Request: https://github.com/freebsd/freebsd-src/pull/1444
10 dayssdio: add sdio_{read,write}_2Minsoo Choo
This is equivalent of sdio_readw and sdio_writew in linuxkpi Signed-off-by: Minsoo Choo <minsoochoo0122@proton.me> Reviewed by: imp Pull Request: https://github.com/freebsd/freebsd-src/pull/1951
10 dayssmartpqi: update to version 4660.0.2002John Hall
This updates the smartpqi driver to Microchip's latest available public release. Reviewed by: imp Approved by: imp Sponsored by: Microchip Technology Inc. Differential Revision: https://reviews.freebsd.org/D52507
10 daysbnxt: Fix up ioctl opcodes to support IOC_VOID along with IOC_INSumit Saxena
The driver and applications currently use hard-coded numeric ioctl command opcodes. These opcodes are interpreted as having the IOC_IN direction (data copied from the user application to the driver), regardless of the actual packet size. Consequently, when the packet size is zero and the direction is set to IOC_IN, the kernel fails these ioctls if COMPAT is disabled. While the driver and applications should ideally set the direction correctly— for example, using IOC_VOID when the packet size is zero—the driver will now be updated to define ioctl opcodes using the _IOC macro to support both IOC_VOID and IOC_IN. This change ensures backward compatibility with older applications that exclusively use IOC_IN. Reviewed by: gallatin Differential Revision: https://reviews.freebsd.org/D54601 MFC after: 3 days
10 daysmpr: Add a probe on completionWarner Losh
cam::mpr:complete(union ccb *, struct mpr_command *, u_int, u32); Where u_int is scsas->flags u32 is the device_info. This can't be done as an fbt because the data needed for it isn't present out a function boundary. Sponsored by: Netflix
10 daysmps: Add a probe on completionWarner Losh
cam::mps:complete(union ccb *, struct mps_command *, u_int, u32); Where u_int is scsas->flags u32 is the device_info. This can't be done as an fbt because the data needed for it isn't present out a function boundary. Sponsored by: Netflix
10 daysmps/mpr: Remove bogus sys/cdefs.h includesWarner Losh
These are left over from the $FreeBSD$ stuff. Sponsored by: Netflix
10 dayskshim/usb: Prefer memset to bzeroWarner Losh
Replace bzero with the equivalent memset(x,0,x) since the latter is available in the kshim environment and we have a soft goal of migrating to standard interfaces when there's a reason... Sponsored by: Netflix
11 daysvmm: Add an include to vmm_ktr.h for vm_name()Mark Johnston
Required when KTR is configured. Remove the pcpu.h include while here, as it seems to be unneeded. Reported by: Jenkins Fixes: 5f13d6b60740 ("vmm: Move common accessors and vm_eventinfo into sys/dev/vmm")
11 daysvmm: Move common accessors and vm_eventinfo into sys/dev/vmmMark Johnston
Now that struct vm and struct vcpu are defined in headers, provide inline accessors. We could just remove the accessors outright, but they don't hurt and it would result in unneeded churn. As a part of this, consolidate definitions related to struct vm_eventinfo as well. I'm not sure if struct vm_eventinfo is really needed anymore, now that vmmops_run implementations can directly access vm and vcpu fields, but this can be resolved later. No functional change intended. MFC after: 2 months Sponsored by: The FreeBSD Foundation Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D53586
11 daysvmm: Deduplicate VM and vCPU state management codeMark Johnston
Now that the machine-independent fields of struct vm and struct vcpu are available in a header, we can move lots of duplicated code into sys/dev/vmm/vmm_vm.c. This change does exactly that. No functional change intended. MFC after: 2 months Sponsored by: The FreeBSD Foundation Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D53585
11 daysvmm: Consolidate vm and vcpu definitionsMark Johnston
There is quite a lot of duplication of code between amd64, arm64 and riscv with respect to VM and vCPU state management. This is a bit tricky to resolve since struct vm and struct vcpu are private to vmm.c and both structures contain a mix of machine-dependent and machine-independent fields. To allow deduplication without also introducing a lot of churn, follow the approach of struct pcpu and 1) lift the definitions of those structures into a new header, sys/dev/vmm/vmm_vm.h, and 2) define machine-dependent macros, VMM_VM_MD_FIELDS and VMM_VCPU_MD_FIELDS which lay out the machine-dependent fields. One disadvantage of this approach is that the two structures are no longer private to vmm.c, but I think this is acceptable. No functional change intended. A follow-up change will move a good deal of machine/vmm/vmm.c into sys/dev/vmm/vmm_vm.c. MFC after: 2 months Sponsored by: The FreeBSD Foundation Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D53584
11 daysbnxt: fix i2c read to allow access to different addressesAndrew Gallatin
Allow reading of i2c addresses other than A0. A0 does provide most information, but doesn't provide things like module temps, and optical signal levels. Sponsored by: Netflix Reviewed by: sumit.saxena_broadcom.com Differential Revision: https://reviews.freebsd.org/D54590 MFC after: 3 days
11 daysacpi: Make taskqueue only run on BSPAymeric Wibo
This is needed because when we add the suspend-to-idle loop, we only want to break the BSP out of idle to process the taskqueue while keeping all the others idled. Currently assuming BSP to be CPU0, which may not always be the case on non-x86. Reviewed by: kib Approved by: kib Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D54406
12 dayssdhci_pci(4): Remove incorrect __unusedMarius Strobl
The slot parameter actually is used as index into the memory resource. Fixes: c11bbc7d
12 daysif_rge: sync with up to date OpenBSD codeBrad Smith
a0b4d9e5bd63984bc3ad25b7f2881741e0d73980 Add support for RTL8126 chip revision 0x64a00000 from Carl Henriksson. While here, update and add microcode for the RTL8126 chipset variant. 46810ff569a9416642fc5f8e86501028008a2e95 For RTL8125, there's no need to check whether RGE_CMD_STOPREQ has been completed. As with other chip variants, RGE_CMD_STOPREQ never acknowledges completion. 5729fb17b5eeba56781da0b5c0525c198c5c2cd8 remove duplicate RGE_PHYSTAT_5000MBPS test Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D54517 Obtained from: OpenBSD
13 daysmfi(4): Add subvendor and subdevice for Fujitsu RAID Controller SAS 6Gbit/s ↵Michael Osipov
1GB (D3116) This is an OEM card from Fujitsu using an LSI SAS2208 ROC controller shipped with many Fujitsu PRIMERGY servers like RX300 S7. This chip is also recognized by mrsas(4) under the generic name for the controller chip. Controller description: https://www.fujitsu.com/global/products/computing/servers/primergy/blades/connection/cb-pmod-110426.html Reviewed by: ziaee MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D54520
14 daysAdd ASMC_DEBUG make optionEnji Cooper
This allows folks to enable debug statements in asmc(4) using kernel configs via the `options ASMC_DEBUG` directive. While here, remove a duplicate `device vt_efifb` directive in `NOTES` as it's already handled in the `GENERIC` config MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D54511
14 daysixl: verify flowid is valid before setting rsstype & flowidAndrew Gallatin
According to section 8.3.2.2.1 of the XL710 datasheet, FLTSTAT indicates if RSS hashing was used (or flow director or nothing) to arrive at the flowid it is reporting. We need to check this before reporting the flowid and setting the rss type. Not checking this allows invalid flowids (0s) to be reported for some TCP traffic (it seems to mostly impact incoming connections). This leads to the inp flowid being 0, and egress traffic being unbalanced (going to tx queue 0, and NIC 0 of an lacp bundle). Differential Revision: https://reviews.freebsd.org/D54442 Reviewed by: adrian, kbowling Sponsored by: Netflix MFC after: 2 weeks
14 daysasmc: add per-fan manual mode control via sysctlAbdelkader Boudih
Add per-fan manual mode control via dev.asmc.0.fan.N.manual sysctl. Apple SMCs support manual fan control via the FS! SMC key, a 16-bit bitmask where each bit controls one fan (0=auto, 1=manual). This change adds a new sysctl per fan: dev.asmc.0.fan.N.manual (0=auto, 1=manual) When set to manual mode (1), the fan runs at the speed set via dev.asmc.0.fan.N.targetspeed instead of automatic thermal control. When set to auto mode (0), the SMC controls fan speed automatically. The FS! key was already defined in asmcvar.h but not accessible. This exposes it for debugging, testing, and advanced fan control. Implementation uses read-modify-write to allow independent control of each fan without affecting others. Reviewed by: adrian, markj MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D54437
14 daysaq(4): Style, whitespace and misc cleanupEd Maste
The compiled objects do not change other than a few diagnostic messages that include __LINE__. Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D54304