From nobody Fri Apr 18 14:37:27 2025 X-Original-To: dev-commits-src-branches@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 4ZfHRD0v8Pz5stXl; Fri, 18 Apr 2025 14:37:28 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZfHRC3GSnz3L6b; Fri, 18 Apr 2025 14:37:27 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1744987047; 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=6uLnYaNIsQI7a277T+CYG13A51BXvsiAWJhnmpVJQ54=; b=wqMz+SUKCRCtEDbdUK3tO2tnl3gGeueBIpml2V2s3PumzwxtwyOB7d66Go8RzGoWkLssqy VOGZsMmP49gGOHbNa3VFT4R6c6/9psU3ZOYsJvbB8pc74IXpKPutFYs3og82Ul/Qpn2BTt KQztL/Yrz0A0ka9Qr1MwgqpyCTXyi6WxfgMjHu/VEiyIsKIVawl7dbHY6Fuy+u53jbz/uN N/ByUKp3q5qizF5BQE36bTHDWLWOOvEjBaiwptFs1S7nxeoSuzDPSLQysJ8CU0QQvQjrcc P//ho0SWWCNkmrWsuSsvO7Cnar2M5mX9yfIhDkaC5Zs60z0Bl28KBR94kft3SQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1744987047; a=rsa-sha256; cv=none; b=XMkLXU5JNLAgF2M9HMMohrURSPl0ipH+9Lqr895CC3OWcANszyWj2oFeG4GxdMH+N0uLNL D1Wwk7Wk64UHkbn6prsafUBmyHIz4h6eqCb9a6vD7HrM4npq9VPoUYSo4+CEJ3ESNGxoRW V1cBwHi+d61gQB4a0zagOTmhxRROomOn4nLZEuulzChlJ+YHmYo/1sduhD+Ll+gJoUjt5v H6XVh2qXdzschPI/+bZ9WOltZF7FGymPR2NkagbfYFXOL1I5gsKotX4USSv9htHQXM0K// w9EQA8eC9G+ssBb7o6AXBjkrWzmkZfDYLkRsWmS0Xz6yJEumHeptsZtEoMHX/A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1744987047; 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=6uLnYaNIsQI7a277T+CYG13A51BXvsiAWJhnmpVJQ54=; b=pQN1933xVjEIyJAsUWLEVwe6arJQ8xsfB+8Sxs2r3YguMt4j1hfefN7LG3J36aQ4vll2I7 kAiJfm6ZH99vLQRpJK7yC5Az572oMuo8DdXhFKbOp9tKKHcmtd0E8ttShqG6eA84LOvZVf TK7PNFkaeELH5bZeFAfHtDiw0YVwsljGdcFgoMN40O9o39ILhizrrQnun4DgmakauQEqMj n5CQMPCn3FyeCWA66m9+KBFc/fuaX4/y5XFd29nOYBr1xL7NaHoGIJznJ0XelQVWBKWFH1 mm2yU6Q55TPvxLcHEORewFzfO554SZTdWZpTFHuERvvBro+p3BhKITfyklJirQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZfHRC2YFjzfF2; Fri, 18 Apr 2025 14:37:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 53IEbRmi092281; Fri, 18 Apr 2025 14:37:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 53IEbRsX092278; Fri, 18 Apr 2025 14:37:27 GMT (envelope-from git) Date: Fri, 18 Apr 2025 14:37:27 GMT Message-Id: <202504181437.53IEbRsX092278@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 1ec403297e4e - stable/14 - LinuxKPI: 802.11: better dealing with errors in RX path List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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: 1ec403297e4e7585a6fbc753de8cec0244c58d6d Auto-Submitted: auto-generated The branch stable/14 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=1ec403297e4e7585a6fbc753de8cec0244c58d6d commit 1ec403297e4e7585a6fbc753de8cec0244c58d6d Author: Bjoern A. Zeeb AuthorDate: 2025-04-13 20:53:36 +0000 Commit: Bjoern A. Zeeb CommitDate: 2025-04-18 14:36:03 +0000 LinuxKPI: 802.11: better dealing with errors in RX path In case we fail to allocate the mbuf or mtag in the RX path or fail for other reasons report it as ic_ierrors for better diagnostics and more correct statistics. Also do what the comment had indicated and mandate that mtag allocation succeeds or otherwise drop the packet. There may be room for future improvements in a follow-up commit here. Sponsored by: The FreeBSD Foundation (cherry picked from commit c013f810ecb615289c2bd69a10f4317a3a867d50) --- sys/compat/linuxkpi/common/src/linux_80211.c | 29 +++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/sys/compat/linuxkpi/common/src/linux_80211.c b/sys/compat/linuxkpi/common/src/linux_80211.c index 19ad12d73d12..11c0077fe571 100644 --- a/sys/compat/linuxkpi/common/src/linux_80211.c +++ b/sys/compat/linuxkpi/common/src/linux_80211.c @@ -6446,8 +6446,12 @@ linuxkpi_ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb, uint8_t rssi; bool is_beacon; + lhw = HW_TO_LHW(hw); + ic = lhw->ic; + if (skb->len < 2) { /* Need 80211 stats here. */ + counter_u64_add(ic->ic_ierrors, 1); IMPROVE(); goto err; } @@ -6457,8 +6461,10 @@ linuxkpi_ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb, * have an mbuf backing the skb data then? */ m = m_get2(skb->len, M_NOWAIT, MT_DATA, M_PKTHDR); - if (m == NULL) + if (m == NULL) { + counter_u64_add(ic->ic_ierrors, 1); goto err; + } m_copyback(m, 0, skb->tail - skb->data, skb->data); shinfo = skb_shinfo(skb); @@ -6523,9 +6529,6 @@ no_trace_beacons: rssi = 0; lkpi_convert_rx_status(hw, rx_status, &rx_stats, &rssi); - lhw = HW_TO_LHW(hw); - ic = lhw->ic; - ok = ieee80211_add_rx_params(m, &rx_stats); if (ok == 0) { m_freem(m); @@ -6628,28 +6631,28 @@ skip_device_ts: } #endif - /* - * Attach meta-information to the mbuf for the deferred RX path. - * Currently this is best-effort. Should we need to be hard, - * drop the frame and goto err; - */ + /* Attach meta-information to the mbuf for the deferred RX path. */ if (ni != NULL) { struct m_tag *mtag; struct lkpi_80211_tag_rxni *rxni; mtag = m_tag_alloc(MTAG_ABI_LKPI80211, LKPI80211_TAG_RXNI, sizeof(*rxni), IEEE80211_M_NOWAIT); - if (mtag != NULL) { - rxni = (struct lkpi_80211_tag_rxni *)(mtag + 1); - rxni->ni = ni; /* We hold a reference. */ - m_tag_prepend(m, mtag); + if (mtag == NULL) { + m_freem(m); + counter_u64_add(ic->ic_ierrors, 1); + goto err; } + rxni = (struct lkpi_80211_tag_rxni *)(mtag + 1); + rxni->ni = ni; /* We hold a reference. */ + m_tag_prepend(m, mtag); } LKPI_80211_LHW_RXQ_LOCK(lhw); if (lhw->rxq_stopped) { LKPI_80211_LHW_RXQ_UNLOCK(lhw); m_freem(m); + counter_u64_add(ic->ic_ierrors, 1); goto err; }