From nobody Fri Jan 16 19:40:35 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4dt9F01qxrz6NlLk for ; Fri, 16 Jan 2026 19:40:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4dt9Dz33Vqz3wrk for ; Fri, 16 Jan 2026 19:40:35 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1768592435; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=oP0n2ZoHcb9xofo2hN1e2SBWS3gagwlBXqoN8nFJEuI=; b=pqGuzwVgCQj1LYD85YBmiTpDnimbSKopP9+uNipYrW+RrUj1KnjGC8iOFui9Q66Ly0a6Dn qS4OsuulAhBc5MitakbjQGjIdr4RACN9ZUL2Gfxff9fqQyjkVAAKcWRJqQ0LfWNQ15pMUp LII6C32xr1VahSWwAS7x5AaQgfnglCHrZJ70mwJlCoMXCA/Gz4Xhy1iCksY+GY1Hr7C23x qgiwxZAzJo2OdFarAoMsvIO9kWNRIPcJQDtEdMZpbogpnw7mv0oFYx3xBP0auH5jAA6xs2 vsJPL3IaweTDQic2tz2W/iPE3xQLVYhCFZAcI0KshTzvy2p0sGeOK2IDBXi/7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1768592435; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=oP0n2ZoHcb9xofo2hN1e2SBWS3gagwlBXqoN8nFJEuI=; b=c54xH8AOSEm/lSgyEvfvFXF5KjEV2Q0czlfaikfZsYyiFn92R3RY2PAtRCyF/3N7Jz/G3Z dp4euw73NqjOUHFDd/u3JWXTkZ/TPMqlIpNu4VGBPqw+6mZNbQhk2bsazdG6XRO5mlYc+z Qlg7cJXMco9ToFDJ2bzaa+5hFOgMaMeTbaJ2V0kdMof4NnxcKorjuiLSHwNgY9j1lSZ/AK Adcc2pwtGCs91nQeo55VAJU/dOuDveCuXmLdjtDK+M0Mq5+ujXS7tAsbYndqCOcQr/ktC2 F0RLJD09vAVoFoIBECpVKI1Yr/H4H9aHD9hyRGH867Al40qw9QNiU/Fr9dCoEg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1768592435; a=rsa-sha256; cv=none; b=Q1QSAGw0K8tdNYUEX3zk/ldlwCGu/P13J2hCpZ11Mg9psFadcf59rRLcmkMPySlmq86JxR ofTFOB0MNlOKJehkaqnmKfWvCwAeM70W3zn4uMPOdfZPGTAxmM3E0yqeu7D5OtdnDrrnve Kn3UYnnH9lkBRjCmSMj80XRv1ILFEmCWEAX/n9fet8O5xa5ECK2VOq0R8x19qFNREyUGMI 87YylaI20aYSSudxdUnC9owjpZso8v+EtGbSFz3PyUK3iC1eNsefcy0G/jBezSWQpQZIKg RmCYU7K23gVKugO/paL1hzwCmgEbtwJeH3JjuvA815FrggMmpIZtI3e3sVRyXg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4dt9Dz2WBNzC10 for ; Fri, 16 Jan 2026 19:40:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id df43 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 16 Jan 2026 19:40:35 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Bjoern A. Zeeb Subject: git: 03cc8045e57a - stable/14 - LinuxKPI: 802.11: fill in sinfo for chains in case driver does not List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 03cc8045e57a5cba2e5e4aa109fdf5a903630d15 Auto-Submitted: auto-generated Date: Fri, 16 Jan 2026 19:40:35 +0000 Message-Id: <696a9433.df43.56c53e62@gitrepo.freebsd.org> The branch stable/14 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=03cc8045e57a5cba2e5e4aa109fdf5a903630d15 commit 03cc8045e57a5cba2e5e4aa109fdf5a903630d15 Author: Bjoern A. Zeeb AuthorDate: 2025-06-14 00:23:26 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-01-16 19:37:44 +0000 LinuxKPI: 802.11: fill in sinfo for chains in case driver does not We are getting per-packet information on the rx chains. Save them locally like we do for rx rate and add them to sinfo for the sysctl in case the driver does not fill in that information. Also note: chain_signal is a bitmask and not a number; treat it accordingly. Sponsored by: The FreeBSD Foundation (cherry picked from commit b3b61079ccc24792f1410840e42c36f71b9cab9f) --- sys/compat/linuxkpi/common/src/linux_80211.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/sys/compat/linuxkpi/common/src/linux_80211.c b/sys/compat/linuxkpi/common/src/linux_80211.c index 6ad53eb81bff..fb6d7dba28de 100644 --- a/sys/compat/linuxkpi/common/src/linux_80211.c +++ b/sys/compat/linuxkpi/common/src/linux_80211.c @@ -325,6 +325,14 @@ lkpi_80211_dump_stas(SYSCTL_HANDLER_ARGS) memcpy(&sinfo.rxrate, &lsta->sinfo.rxrate, sizeof(sinfo.rxrate)); sinfo.filled |= BIT_ULL(NL80211_STA_INFO_RX_BITRATE); } + /* If no CHAIN_SIGNAL is reported, try to fill it in from the lsta sinfo. */ + if ((sinfo.filled & BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL)) == 0 && + (lsta->sinfo.filled & BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL)) != 0) { + sinfo.chains = lsta->sinfo.chains; + memcpy(sinfo.chain_signal, lsta->sinfo.chain_signal, + sizeof(sinfo.chain_signal)); + sinfo.filled |= BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL); + } lkpi_nl80211_sta_info_to_str(&s, " nl80211_sta_info (valid fields)", sinfo.filled); sbuf_printf(&s, " connected_time %u inactive_time %u\n", @@ -341,11 +349,12 @@ lkpi_80211_dump_stas(SYSCTL_HANDLER_ARGS) sbuf_printf(&s, " signal %d signal_avg %d ack_signal %d avg_ack_signal %d\n", sinfo.signal, sinfo.signal_avg, sinfo.ack_signal, sinfo.avg_ack_signal); - - sbuf_printf(&s, " generation %d assoc_req_ies_len %zu chains %d\n", + sbuf_printf(&s, " generation %d assoc_req_ies_len %zu chains %#04x\n", sinfo.generation, sinfo.assoc_req_ies_len, sinfo.chains); - for (int i = 0; i < sinfo.chains && i < IEEE80211_MAX_CHAINS; i++) { + for (int i = 0; i < nitems(sinfo.chain_signal) && i < IEEE80211_MAX_CHAINS; i++) { + if (!(sinfo.chains & BIT(i))) + continue; sbuf_printf(&s, " chain[%d] signal %d signal_avg %d\n", i, (int8_t)sinfo.chain_signal[i], (int8_t)sinfo.chain_signal_avg[i]); } @@ -6881,9 +6890,17 @@ lkpi_convert_rx_status(struct ieee80211_hw *hw, struct lkpi_sta *lsta, rx_stats->c_pktflags |= IEEE80211_RX_F_FAIL_FCSCRC; #endif + /* Fill in some sinfo bits to fill gaps not reported byt the driver. */ if (lsta != NULL) { memcpy(&lsta->sinfo.rxrate, &rxrate, sizeof(rxrate)); lsta->sinfo.filled |= BIT_ULL(NL80211_STA_INFO_RX_BITRATE); + + if (rx_status->chains != 0) { + lsta->sinfo.chains = rx_status->chains; + memcpy(lsta->sinfo.chain_signal, rx_status->chain_signal, + sizeof(lsta->sinfo.chain_signal)); + lsta->sinfo.filled |= BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL); + } } }