From patchwork Tue Jun 17 08:06:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lachlan Hodges X-Patchwork-Id: 897518 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 14957293B55 for ; Tue, 17 Jun 2025 08:07:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750147631; cv=none; b=lxlAZMb6Kg6uWHlau4YwBmzj/L4CNaAEevSPekVpe2tX9aHw2O0I3ApAPmR5Qk+xvpEgBUA79b8xesEcFAoaK+4f/VKzcuQ5iN0qUEJDg9X1wX/fSxYC2TT7r9JfGhIyeN2p1vRqDv4eCqVgrOL6Qq7uOAPPugQQ0einrYKFOqQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750147631; c=relaxed/simple; bh=P/EbJlqv2XUN9Ebq5NtsPlFHuL9Ro0JB9Gb1lH176fw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qPCUuqrhq4jY/rklRa2QZLVJh+/Zo/JTD5yK6sozLO9lvKKsLiPE3Bi7jaBZsG8ApKiKP5D8RKKiJ7/x9prThqcCkucBgKVtHaNv4XfahUy5hwKds3dzZlz22UMPLsdfs2kjiRFC48Liz3VC2W0ApvQyL5hSobYuDzn5yJWZ94w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=morsemicro.com; spf=pass smtp.mailfrom=morsemicro.com; dkim=pass (2048-bit key) header.d=morsemicro-com.20230601.gappssmtp.com header.i=@morsemicro-com.20230601.gappssmtp.com header.b=h8+ZZqlg; arc=none smtp.client-ip=209.85.216.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=morsemicro.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=morsemicro.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=morsemicro-com.20230601.gappssmtp.com header.i=@morsemicro-com.20230601.gappssmtp.com header.b="h8+ZZqlg" Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-311e2cc157bso4449860a91.2 for ; Tue, 17 Jun 2025 01:07:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=morsemicro-com.20230601.gappssmtp.com; s=20230601; t=1750147629; x=1750752429; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Wu1nvUxweSKjVbF2MtXKMBXFLPQYrBXqXqdw3tZCfx8=; b=h8+ZZqlgpra22Ou373Syhzd2Jguf7nyeaL3l2hZXwbIkw9wWVzZ2XJiIp996vQ5637 3LhplkkbQymbz6lT+mqn+WKqtn57zMQe1FNRD8vubvYzXtVptbkI5lsv/B7LmIi4y3gq djO+jvYvSKC9JLCy6q8h6JkSdx5LSD40Hytbf7nVvRECSHOwaEk9SanU0oTwcAEM5w0n MCbFOucz3G4G4lYBUHbY1aVBt0DjaY/BfVjwmgECUXE3GbK4l3ffP9A4lWubaoS7UVif gQOenaVRxLYlgijW8Ajc07/4AeN92xNAE1rW3rjcGK1P/r/uzXI75Qm0+85oLFGWpcwy kSig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750147629; x=1750752429; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Wu1nvUxweSKjVbF2MtXKMBXFLPQYrBXqXqdw3tZCfx8=; b=pn3DAIeJ7saDuD+ZsxZcobtM6cwdqLKLGh7v98MpR6BkBPA6biVnu2yytHno3zxUSC zwZXSVhMw+WpCw/5JtDK3XqUp1jzJgLd5BzFWP+jcS1sEdnumw38xkBIWPamZEbivD+D cJqK0NEGCVGGRbvegdifcF+G6deucJQTkku6i2CsVrQhGX1bnqxlAPZsJZhD8vmzSdKi XOYK72gO2sjSbE6lmLH4wOFCS8clzJt1G8KfQDmNa/kQp47vnCldDQxJHnfGmgOsX3BN AUEBFm/UkY3/OXHk9HjYbihJt5fbPXqDzDqwL2MLzsZTmt2DgeGYsUZtEc5kKsgszScO iNLQ== X-Gm-Message-State: AOJu0YxIT1IUCGwq4DzHAAAhVkFYI/2Wm9WqVhksnCUOcNMwfdh9rECQ rtUJs1SJ6i1tRwkS08hF8oHndrX0tPoFxv7jw/Tc5vRuHYuPuDNxQ9rPZLZxGv+3gvNZMOXZ7c4 3JRw3AX4= X-Gm-Gg: ASbGncsvj2ykOGJbF/2s1EWRlIOFh6glvkkxo+o5mt9XjwKSQwjB+5+FsI83rRmO4ZR cCOt+6adpJuq52+sUjQEvnKIJyheZxAZYeAq+w/h7Mc2kF51HZl3kXna/d+4ZODXAzNvuLgQLQA wteBV2vEVmNjIOEAGvF6z17CDuNRH8ur7eXRY7OCRWf+pa71qdic/BC1R4OdfUjSWIzc6Tbaxgh SvI9+w4JvWEDn38CmaEFzlhJaNxk3ZK//CvAbd1TQmGZbEqnVu6/BrMUbs6eTBM48Ah9Mzz7hr5 28ACJ77Web94LMWjMadLi4NJ18SYqxGo5bF03dF2sJ6gt7UOw8K/uA+zznqFfgiH7LzlSV0cJCb Sylat2FJbyeCE7b5Pi7zXZq3nWKNTuNVSDq0= X-Google-Smtp-Source: AGHT+IHUe8Oqush8zSdzSUAlQkf3Lh3wQrq9M0A6DZAiaD2NENzpJQbomH4gsxI2xCtI2vEnKJS0bg== X-Received: by 2002:a17:90b:4b90:b0:313:f6fa:5bca with SMTP id 98e67ed59e1d1-313f6fa5d94mr13249651a91.22.1750147629178; Tue, 17 Jun 2025 01:07:09 -0700 (PDT) Received: from mma-H9MHD44.lan (60-242-93-14.static.tpgi.com.au. [60.242.93.14]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-31413d2c8fbsm3579365a91.10.2025.06.17.01.07.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 01:07:08 -0700 (PDT) From: Lachlan Hodges To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, arien.judge@morsemicro.com, Lachlan Hodges Subject: [PATCH wireless-next 1/4] wifi: cfg80211: support configuration of S1G station capabilities Date: Tue, 17 Jun 2025 18:06:07 +1000 Message-ID: <20250617080610.756048-2-lachlan.hodges@morsemicro.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250617080610.756048-1-lachlan.hodges@morsemicro.com> References: <20250617080610.756048-1-lachlan.hodges@morsemicro.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Currently there is no support for initialising a peers S1G capabilities, this patch adds support for configuring an S1G station. Signed-off-by: Lachlan Hodges --- include/net/cfg80211.h | 4 +++- net/wireless/nl80211.c | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index d1848dc8ec99..abbf409b936b 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -560,7 +560,7 @@ struct ieee80211_sta_s1g_cap { * @vht_cap: VHT capabilities in this band * @s1g_cap: S1G capabilities in this band * @edmg_cap: EDMG capabilities in this band - * @s1g_cap: S1G capabilities in this band (S1B band only, of course) + * @s1g_cap: S1G capabilities in this band (S1G band only, of course) * @n_iftype_data: number of iftype data entries * @iftype_data: interface type data entries. Note that the bits in * @types_mask inside this structure cannot overlap (i.e. only @@ -1653,6 +1653,7 @@ struct sta_txpwr { * @he_6ghz_capa: HE 6 GHz Band capabilities of station * @eht_capa: EHT capabilities of station * @eht_capa_len: the length of the EHT capabilities + * @s1g_capa: S1G capabilities of station */ struct link_station_parameters { const u8 *mld_mac; @@ -1671,6 +1672,7 @@ struct link_station_parameters { const struct ieee80211_he_6ghz_capa *he_6ghz_capa; const struct ieee80211_eht_cap_elem *eht_capa; u8 eht_capa_len; + const struct ieee80211_s1g_cap *s1g_capa; }; /** diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 85f139016da2..8bf5e092fabe 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -7349,6 +7349,10 @@ static int nl80211_set_station_tdls(struct genl_info *info, } } + if (info->attrs[NL80211_ATTR_S1G_CAPABILITY]) + params->link_sta_params.s1g_capa = + nla_data(info->attrs[NL80211_ATTR_S1G_CAPABILITY]); + err = nl80211_parse_sta_channel_info(info, params); if (err) return err; @@ -7675,6 +7679,10 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info) params.link_sta_params.he_6ghz_capa = nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]); + if (info->attrs[NL80211_ATTR_S1G_CAPABILITY]) + params.link_sta_params.s1g_capa = + nla_data(info->attrs[NL80211_ATTR_S1G_CAPABILITY]); + if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { params.link_sta_params.opmode_notif_used = true; params.link_sta_params.opmode_notif = From patchwork Tue Jun 17 08:06:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lachlan Hodges X-Patchwork-Id: 898284 Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 54511293B5C for ; Tue, 17 Jun 2025 08:07:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750147638; cv=none; b=AmzNzLNUGcx6+qiS0PfbKBZT+SfBBkwt9zQPH2LiJXUIJxhK9mf4KHn1BBDB6xoKfRwq5HxOHW/EB6McDCERRjbtxSakqN8iUMxAcVyPM8F87HprkHUSaHtH6z+s/SA6SLi1sm1wCknHsZ7oQkoeinSDazurNqE76JF9wo5deb8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750147638; c=relaxed/simple; bh=fwwMqhfVe+1mHmWz6yYhaQyrXgIQlUUr5o33QJ6Q54A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=knbQeOQALNzXFBjtGQPwIpWQ16b5UkMBkKvPyDDqN/jBeysqAQo4+y80z0ouO+StceomBTTuwEsa8jomF7DSONjiA7duuRQuGBmT6L5tu/ndPzmDoN0x3q+Q2zb+8+G9gi3DcWxn5iTVuA1FWh0LRQu2Qj37mVLtrlFz+BOMHxE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=morsemicro.com; spf=pass smtp.mailfrom=morsemicro.com; dkim=pass (2048-bit key) header.d=morsemicro-com.20230601.gappssmtp.com header.i=@morsemicro-com.20230601.gappssmtp.com header.b=2oZHPNqA; arc=none smtp.client-ip=209.85.216.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=morsemicro.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=morsemicro.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=morsemicro-com.20230601.gappssmtp.com header.i=@morsemicro-com.20230601.gappssmtp.com header.b="2oZHPNqA" Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-313bb9b2f5bso6307388a91.3 for ; Tue, 17 Jun 2025 01:07:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=morsemicro-com.20230601.gappssmtp.com; s=20230601; t=1750147636; x=1750752436; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cB0lQRt6Xpqqy3P5+XcfNIt4DXQKBIJJSeQkQiuboUU=; b=2oZHPNqASOY1Itu9cPPLxgQUc162OPsLsr9uE2QAhVwPDwX7smLDYUDQSoy/IZLTIT BmI5StRsaNdZ0BicG17JR8QLIM3vi7tQu6aUyL1m288k1y4ayencZScTqPkaeTxqs0De T5OxCNA4364mFjSF076S6crTNEyGhftwpO3sdnitLbsQhSj2IAib2LIEId20EsG9ZbQj O1doyy0gfn6NZ1EX1V+oyou8sAuX8ojRE+1UUkOYRAin5asictm4QalIrBzlI1nJ5AoU Hd21kbuHkGaXjhmRxDh5YUORxXt4P8uwmkHDHytYCmO+J0jWDMA4+2VIT4RnNRUWI4YD 6fpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750147636; x=1750752436; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cB0lQRt6Xpqqy3P5+XcfNIt4DXQKBIJJSeQkQiuboUU=; b=Rd37E5NqNAKiT+aXdTk94PL1oyP/bSvBUTnjmYXYsbenhTP5rfIZK6tVoJYmc9BzWw NiV03qxHzqweKR9mHF0g1NpRXJQthr0kGx0DRGeE3Ij5ARGhKAkA16+ZNYBmCQ+CQLdd xvqcGkv+xuctzcQzeb5/jlSdO5JjV8wDt0929VPcQLuM7qx9Xh6K+HAd65eqUMakvuv0 oG5srE6kFdbIbooFK09hWN/aIwdN/AQW6t/gbCwDPQzXTYHQ4ccS1Ej06L7wP3Yptn3Q s+0/siXQN2O2ar4GM3tT5UM3TzLZXS3Fpju0ftCJbu+7WufliYyUhdY561wT3S/KJlOr hK7w== X-Gm-Message-State: AOJu0YwrZUdNj6LQlqZnnZeu21InxpHYpYJxBB/vol7YKQ9tj9GpIw91 s0+91gyGcUUWVZe9hHCIWXUQMu7RtrtQNCZRUSwplalL7CtKSOwcPWuWpBP/Z86dheo= X-Gm-Gg: ASbGnct8/ze7srgcGc/7KEQKWha01bmTSGOQfxyD5w1qXnaHyj31C28lOB9q4WbPV5Q OphAbtOAAAhwUvXHoSVeFDGvC/+ETH/SySKTGJSjfcIyQu4XZNOaWVNtZMl2A5HLZHACL3znJEI Ne4E32y+V1znEGJPlmsEDl7JuNXBjsasM5EdUWB3UM+Ciys3GuA0Dhz15QdupObJyLquFPlMgnk Chx+q7md2e9m+VToIRkbMv//0SO55CksLrgZqj8F8o0UvaAljOvEU9dkiovIxrPXkyuk3XGih0q 5FnBVEfd32dUtuPZcipj445k+2HV/i108G27YE9herdT0SMQJgrn2icQHn4V8OpxMs/s/GPfBcx Amuy+cDOfAG4o9rTLl5hgz7VLAuAKFF6L9E0= X-Google-Smtp-Source: AGHT+IEnruaqr2fda94ONXKl2O4h2/k0xv7Pod3BA2WNa84ZgSIjPsbWelMSzJ0TvDrkqsKO+bvSfA== X-Received: by 2002:a17:90b:4c09:b0:313:17e3:7ae0 with SMTP id 98e67ed59e1d1-313f1d8346bmr14763592a91.34.1750147635614; Tue, 17 Jun 2025 01:07:15 -0700 (PDT) Received: from mma-H9MHD44.lan (60-242-93-14.static.tpgi.com.au. [60.242.93.14]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-31413d2c8fbsm3579365a91.10.2025.06.17.01.07.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 01:07:15 -0700 (PDT) From: Lachlan Hodges To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, arien.judge@morsemicro.com, Lachlan Hodges Subject: [PATCH wireless-next 2/4] wifi: mac80211: handle station association response with S1G Date: Tue, 17 Jun 2025 18:06:08 +1000 Message-ID: <20250617080610.756048-3-lachlan.hodges@morsemicro.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250617080610.756048-1-lachlan.hodges@morsemicro.com> References: <20250617080610.756048-1-lachlan.hodges@morsemicro.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Add support for updating the stations S1G capabilities when an S1G association occurs. Signed-off-by: Lachlan Hodges --- include/linux/ieee80211.h | 4 ++++ include/net/mac80211.h | 2 ++ net/mac80211/ieee80211_i.h | 3 +++ net/mac80211/mlme.c | 6 ++++++ net/mac80211/s1g.c | 26 ++++++++++++++++++++++++++ 5 files changed, 41 insertions(+) diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index ce377f7fb912..5425a5becd5c 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h @@ -3160,6 +3160,10 @@ ieee80211_he_spr_size(const u8 *he_spr_ie) #define S1G_OPER_CH_WIDTH_PRIMARY_1MHZ BIT(0) #define S1G_OPER_CH_WIDTH_OPER GENMASK(4, 1) +/* IEEE80211 2024 Table 9-351 */ +#define S1G_CAP3_MAX_MPDU_LEN_3895 0 +#define S1G_CAP3_MAX_MPDU_LEN_7991 1 + /* EHT MAC capabilities as defined in P802.11be_D2.0 section 9.4.2.313.2 */ #define IEEE80211_EHT_MAC_CAP0_EPCS_PRIO_ACCESS 0x01 #define IEEE80211_EHT_MAC_CAP0_OM_CONTROL 0x02 diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 82617579d910..c022b7c1a52d 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h @@ -2428,6 +2428,7 @@ struct ieee80211_sta_aggregates { * @he_cap: HE capabilities of this STA * @he_6ghz_capa: on 6 GHz, holds the HE 6 GHz band capabilities * @eht_cap: EHT capabilities of this STA + * @s1g_cap: S1G capabilities of this STA * @agg: per-link data for multi-link aggregation * @bandwidth: current bandwidth the station can receive with * @rx_nss: in HT/VHT, the maximum number of spatial streams the @@ -2450,6 +2451,7 @@ struct ieee80211_link_sta { struct ieee80211_sta_he_cap he_cap; struct ieee80211_he_6ghz_capa he_6ghz_capa; struct ieee80211_sta_eht_cap eht_cap; + struct ieee80211_sta_s1g_cap s1g_cap; struct ieee80211_sta_aggregates agg; diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 30809f0b35f7..7e080f601ac9 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h @@ -2269,6 +2269,9 @@ void ieee80211_s1g_rx_twt_action(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb); void ieee80211_s1g_status_twt_action(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb); +void ieee80211_s1g_cap_to_sta_s1g_cap(struct ieee80211_sub_if_data *sdata, + const struct ieee80211_s1g_cap *s1g_cap_ie, + struct link_sta_info *link_sta); /* Spectrum management */ void ieee80211_process_measurement_req(struct ieee80211_sub_if_data *sdata, diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 2d46d4af60d7..8c98ee2b1d2b 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -5399,6 +5399,12 @@ static bool ieee80211_assoc_config_link(struct ieee80211_link_data *link, bss_conf->epcs_support = false; } + if (elems->s1g_oper && + link->u.mgd.conn.mode == IEEE80211_CONN_MODE_S1G && + elems->s1g_capab) + ieee80211_s1g_cap_to_sta_s1g_cap(sdata, elems->s1g_capab, + link_sta); + bss_conf->twt_broadcast = ieee80211_twt_bcast_support(sdata, bss_conf, sband, link_sta); diff --git a/net/mac80211/s1g.c b/net/mac80211/s1g.c index d4ed0c0a335c..1f68df6e8067 100644 --- a/net/mac80211/s1g.c +++ b/net/mac80211/s1g.c @@ -194,3 +194,29 @@ void ieee80211_s1g_status_twt_action(struct ieee80211_sub_if_data *sdata, break; } } + +void ieee80211_s1g_cap_to_sta_s1g_cap(struct ieee80211_sub_if_data *sdata, + const struct ieee80211_s1g_cap *s1g_cap_ie, + struct link_sta_info *link_sta) +{ + struct ieee80211_sta_s1g_cap *s1g_cap = &link_sta->pub->s1g_cap; + + memset(s1g_cap, 0, sizeof(*s1g_cap)); + + memcpy(s1g_cap->cap, s1g_cap_ie->capab_info, sizeof(s1g_cap->cap)); + memcpy(s1g_cap->nss_mcs, s1g_cap_ie->supp_mcs_nss, + sizeof(s1g_cap->nss_mcs)); + + s1g_cap->s1g = true; + + /* Maximum MPDU length is 1 bit for S1G */ + if (s1g_cap->cap[3] & S1G_CAP3_MAX_MPDU_LEN) { + link_sta->pub->agg.max_amsdu_len = + IEEE80211_MAX_MPDU_LEN_VHT_7991; + } else { + link_sta->pub->agg.max_amsdu_len = + IEEE80211_MAX_MPDU_LEN_VHT_3895; + } + + ieee80211_sta_recalc_aggregates(&link_sta->sta->sta); +} From patchwork Tue Jun 17 08:06:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lachlan Hodges X-Patchwork-Id: 897517 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 60D2E2949F4 for ; Tue, 17 Jun 2025 08:07:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750147642; cv=none; b=pM4BrC6DfbzagXRTeDDBsUjInkmuc1bzfUHqNMHpchJk7M2HUwJ3IJBWNIKv9tSRl8myi0vd8SyNEne9EroL1ITDUksrUcJETocG7N9PZjtpAntlLOqLVdgmOMahD9jk+LGaNVVm++j0rNUCEKHP69ur8UeAfm8N4t1akZ3MX/w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750147642; c=relaxed/simple; bh=qPO4Qo82YyZNZnYOkDm83QAg+7i8begiT7RH0I9P4/w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=o90/h+tPiN+iLgJ2XqefR5M9LRmA6Z2e9iRW+MG9G66PmrUkeFGZ3yX7SZeWL280prg94wiL9NGdbmHjrmg3xdjBtYFbbb75oZB35J8wy5u88SlX83DV+Qg53YxaPS8lcOvtfC6wWnQVlKWLTN1XANsZFQVDHzjUbe7d1a8tEEQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=morsemicro.com; spf=pass smtp.mailfrom=morsemicro.com; dkim=pass (2048-bit key) header.d=morsemicro-com.20230601.gappssmtp.com header.i=@morsemicro-com.20230601.gappssmtp.com header.b=tl+s5vpS; arc=none smtp.client-ip=209.85.214.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=morsemicro.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=morsemicro.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=morsemicro-com.20230601.gappssmtp.com header.i=@morsemicro-com.20230601.gappssmtp.com header.b="tl+s5vpS" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-234d366e5f2so70344745ad.1 for ; Tue, 17 Jun 2025 01:07:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=morsemicro-com.20230601.gappssmtp.com; s=20230601; t=1750147639; x=1750752439; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=W+LlqUUmqnaep7SBndHC7jrUhJnJIaMSK9j5M0uKtqY=; b=tl+s5vpSarRYa87YaqhDk7THUA9uDAZtlyFrnbJSNvpOXifFKAMULkqaEcimrhkVqo Q8RzXw663PCaxek47fK9cfqvvpTcLAPWAoaoFgQNmCTlapZVq1i2390z9+1k1XZ0HLqt WUY1jwVir153QGwBWiwVMTMahKW4RwDmeG4V/yuVxfZk3HeNlBEtUfN9Q0pFa/gFQBNj dMmkngHnvEYfhxCpgVlZPP2IENBpsRE6WMSTFInACqSy8vU2EG7RxpfTnZ953RkAIUo7 UIegiAgzCIvEqyciHoBhfEsaSvPp82IYkXoskQ0PsoLVQRVhEynrDkO+i93WRXta+kI9 8VYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750147639; x=1750752439; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=W+LlqUUmqnaep7SBndHC7jrUhJnJIaMSK9j5M0uKtqY=; b=hbG683iPcD104G7RbU3XDladpOezY9WfEv1RKengQX3SiPAUXeQPlMe0eoV7rfo0Ot UKaT2gOi4iBH/+ZjDJU1AxuaTVifrnAB7AuoNbQCFbxWpvIDe74EBzlAT9Y5VNA/B+oB 50nrC7oikhNl0VXWTyyI6uXYO7oGnfgOHnhbgn5PEN7/XfyrkpbN9wsbRYVOW2yEIt1c 8LYE2rDz/WAyXnYSBYWfqzQ/bJX8INri3TEkLeb89Amqltk278atf2D54L5EE0UPHuMp ktrBuZc7jw9445sOqqmO4U1SXgWC+/C08owRzzSOfNyCLVjrhkf13EW5N/gPVFU773lK 7raQ== X-Gm-Message-State: AOJu0YyhNjY7QHWFq8sRhF6yMWW+pIQbuYt2PQIMrtkiAmJDys4SH3Eq pfabJIG0EBu74KtBRIQtQJiGsZBISpiq7Nbr/U8QzYXSym12S5x+vDLazqdl3wNh7kE= X-Gm-Gg: ASbGncsMmOUI2Fr7JUvMyGQZ1536iSv/g80JktkV+mwqpXSUstd7Cnri+KzmGHcJa10 AxTIcrOH3l+FwKzayYTnAZEpPgojAfSQnBYO0RC/5vpBFIAsk1scKOQYaDUdEYgJIlc9o+1BZ00 0pQeiQOIojaqTiSQNeqPQJxorrLuljqQ83iQRWggHrOMr5NGWH24ZVSbJXgBy+qz6eYWYvcdQDJ 0i+mM+bgh9lkmpnkoIRZskORoidXU8flAbK/VhozpWOcCpwqmIE00JQFcT/pN/amhA6jguGCIlz TDzh+pDTbJMyR46Dsj4ttrc3wg7YVfiFwfSr5MvHjI4GG8ACWCBPRn/mlR4rvf/k3UwDoar6Iu7 pn317c5isLAaWiuHHuf/0Tz+8q+LQVnUIq5g= X-Google-Smtp-Source: AGHT+IE8aGKhKlST42k4DaBwcbuCivggwz4giXaOn8YfeH8q+O01BbB5bnpjg03RCyOLviA8G5V1LA== X-Received: by 2002:a17:903:32c9:b0:235:a9b:21e7 with SMTP id d9443c01a7336-2366b3df793mr173492495ad.48.1750147639664; Tue, 17 Jun 2025 01:07:19 -0700 (PDT) Received: from mma-H9MHD44.lan (60-242-93-14.static.tpgi.com.au. [60.242.93.14]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-31413d2c8fbsm3579365a91.10.2025.06.17.01.07.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 01:07:19 -0700 (PDT) From: Lachlan Hodges To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, arien.judge@morsemicro.com, Lachlan Hodges Subject: [PATCH wireless-next 3/4] wifi: mac80211: add support for storing station S1G capabilities Date: Tue, 17 Jun 2025 18:06:09 +1000 Message-ID: <20250617080610.756048-4-lachlan.hodges@morsemicro.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250617080610.756048-1-lachlan.hodges@morsemicro.com> References: <20250617080610.756048-1-lachlan.hodges@morsemicro.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 When a station configuration is updated, update the stations S1G capabilities. Signed-off-by: Lachlan Hodges --- net/mac80211/cfg.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index d9d88f2f2831..bfa7e9f29d96 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -1878,6 +1878,7 @@ static int sta_link_apply_parameters(struct ieee80211_local *local, params->vht_capa || params->he_capa || params->eht_capa || + params->s1g_capa || params->opmode_notif_used; switch (mode) { @@ -1956,6 +1957,10 @@ static int sta_link_apply_parameters(struct ieee80211_local *local, params->eht_capa_len, link_sta); + if (params->s1g_capa) + ieee80211_s1g_cap_to_sta_s1g_cap(sdata, params->s1g_capa, + link_sta); + ieee80211_sta_init_nss(link_sta); if (params->opmode_notif_used) { From patchwork Tue Jun 17 08:06:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lachlan Hodges X-Patchwork-Id: 898283 Received: from mail-pg1-f173.google.com (mail-pg1-f173.google.com [209.85.215.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B0AAF2949F4 for ; Tue, 17 Jun 2025 08:07:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750147646; cv=none; b=nqU7GsumtwxoWn1jJQcWWy3ZwNAbMJNVLvIubmSFwUDe4vGHGqAIbc6A3pKViFunFWCswyZqyavFGuYH86Sp2uvdi5DcGJjI8yeWzeNs44xu/KeKe0OUaEfjPHhJ8yo7/Tp03vOTglfZi336ouSErGEvrMvWz9m0Ry2ITA3XHH0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750147646; c=relaxed/simple; bh=tKRyA8yA9t41xc38ctw0kuKDSgOHujb2VNKXDYiQPvM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jADfLYfEzEtLv8JOS1mVimC7Tvp7GiVJd26d4OU8C5H2IW7tDKeYsAGBExeZ/GSoRYD3aeqmV6hXnuv5YUyR3NWWXH18QNvisppqrUMUUDL/MG86jhAWKkzXp7gSdQuOKWz1UzVK2aFBVOdM9CYmktBnxtZbHBMu2Rsx2UHmDwU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=morsemicro.com; spf=pass smtp.mailfrom=morsemicro.com; dkim=pass (2048-bit key) header.d=morsemicro-com.20230601.gappssmtp.com header.i=@morsemicro-com.20230601.gappssmtp.com header.b=rjFaE+/G; arc=none smtp.client-ip=209.85.215.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=morsemicro.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=morsemicro.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=morsemicro-com.20230601.gappssmtp.com header.i=@morsemicro-com.20230601.gappssmtp.com header.b="rjFaE+/G" Received: by mail-pg1-f173.google.com with SMTP id 41be03b00d2f7-b0b2d0b2843so4087186a12.2 for ; Tue, 17 Jun 2025 01:07:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=morsemicro-com.20230601.gappssmtp.com; s=20230601; t=1750147644; x=1750752444; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CH9dkbwULtT45Jr2BipiuLPsD1wQyP6pP7YULQg1NWo=; b=rjFaE+/Gz1c4HLpEy1V9KyTCf1ulblqrdCcBVc+uuM8nRUZ6lEqjmiz4sSIAfLWv6a MCOA/KokfCvx+ftexxF3YhoZYWc3cl/fFI/vXZ+bLD48H4RTZlGVxcmS2F1GSsIOEfwX /VFARCAXsBl56mnOAqujKxJIDUeFwHfx2CHLSdcp3eZWK6DlVZ+u0AnJCWynJeUKoeYr E1UPEL6NkUhnG5fuBQOUuMFeMbhOkDt4zcrgcekITF9XE8N5yr3InupmLyCba3V6aXYP dvkrXQT78ay56bJa3povGEWoymgJt+h2ozywmx3eUCnAsNVd3QcnvSYuAbSEn6BxVLdM vM6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750147644; x=1750752444; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CH9dkbwULtT45Jr2BipiuLPsD1wQyP6pP7YULQg1NWo=; b=C3C2xY10UB823QzjZAGRR81517gprkEnPrUOO2kmn7SAfWZ25CIoSiuAQaqOvIWE+P pZnj+oW/R+NjxtJuwx8/7OnOLnuZKi94GJPDm3CJh1TvMh7YkOqOLgOItXaSuzJdCYjz yjsc4CXLKSmdy43TIZjif6P/v0PvvJRyMlXOjFACg7sW+JWfUyAPuLmmnLpTDAaiGksM k6j2vAW3sCGBNBi/R0hKaYYw1CntnzXuo3JfCQnu7sCgr5Sznh30cJH1lnEsP7lz2MM4 T8BwKGei6q1luddZDhwz0SwF+Me9bIUHb1U3AKNV5CIzzErzJiro+aiX25L+WhAX3Ptd 0YJQ== X-Gm-Message-State: AOJu0YxJU3zcGanKzFIetnRMzLZso2gUP8e+TH7cs4alV1qLXh5fT9E6 Y3v9vozbSgXTSa42FJIEzF2mKBo53J6RfLC5ev5ltOr400ncLWuBI/qeGw7xUBSxvuU0Eqrynwd mJsrlF8g= X-Gm-Gg: ASbGncsJ0o3iL53tIVQFx01/ETLiiE+2QUQ8AmHUzeHjjnB/svoz//Hy11niCZ8W0RV yZ7e2FzKxbNRUF4EGNoky2BR88Q+EGXV1bgbzeTlrpZ3glcezlarxcDsMlA9v1KGkJwNMXXKIvA k81HnIRpAb6QnYcpS+rsl73bl8YHCexmBvpufgGUdKfzPV8ZFduqQikZFNXiFYGHKliYEL2MroF rGcskbseEZmBhwEDs4H65c1RlcKpuPMIYCQsC7WwiEo3h/Z8oQ3+g94NFgfCgAN70Wi3qRY/tTM sZDYlO1flfW/lse/ChfwPdbC2hOFCppMpQjZEazbZBdosYxS6hlIilY5CduGv7H1jQ16R1Zrp6q ZalSxgFXFNQhOC+AcjgSl4dFPg9/WT1omibWH1b1eg6X1XQ== X-Google-Smtp-Source: AGHT+IG7tB7zTy5hA2getHiYSnIuMADnl84OvLUfKvMOPV/OL6SdC9Bu/obhPRkwRmdjRFGk5LuiBg== X-Received: by 2002:a17:90b:540e:b0:311:ed2:b758 with SMTP id 98e67ed59e1d1-313f1c7d714mr16246995a91.3.1750147643891; Tue, 17 Jun 2025 01:07:23 -0700 (PDT) Received: from mma-H9MHD44.lan (60-242-93-14.static.tpgi.com.au. [60.242.93.14]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-31413d2c8fbsm3579365a91.10.2025.06.17.01.07.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 01:07:23 -0700 (PDT) From: Lachlan Hodges To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, arien.judge@morsemicro.com, Lachlan Hodges , Sophronia Koilpillai Subject: [PATCH wireless-next 4/4] wifi: mac80211: add support for S1G aggregation Date: Tue, 17 Jun 2025 18:06:10 +1000 Message-ID: <20250617080610.756048-5-lachlan.hodges@morsemicro.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250617080610.756048-1-lachlan.hodges@morsemicro.com> References: <20250617080610.756048-1-lachlan.hodges@morsemicro.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Allow an S1G station to use aggregation. Signed-off-by: Sophronia Koilpillai Signed-off-by: Lachlan Hodges --- net/mac80211/agg-rx.c | 6 ++++-- net/mac80211/agg-tx.c | 3 ++- net/mac80211/tx.c | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c index ee534797c033..e38f46ffebfa 100644 --- a/net/mac80211/agg-rx.c +++ b/net/mac80211/agg-rx.c @@ -299,7 +299,8 @@ void __ieee80211_start_rx_ba_session(struct sta_info *sta, if (!sta->sta.valid_links && !sta->sta.deflink.ht_cap.ht_supported && - !sta->sta.deflink.he_cap.has_he) { + !sta->sta.deflink.he_cap.has_he && + !sta->sta.deflink.s1g_cap.s1g) { ht_dbg(sta->sdata, "STA %pM erroneously requests BA session on tid %d w/o HT\n", sta->sta.addr, tid); @@ -327,7 +328,8 @@ void __ieee80211_start_rx_ba_session(struct sta_info *sta, /* XXX: check own ht delayed BA capability?? */ if (((ba_policy != 1) && (sta->sta.valid_links || - !(sta->sta.deflink.ht_cap.cap & IEEE80211_HT_CAP_DELAY_BA))) || + !(sta->sta.deflink.ht_cap.cap & IEEE80211_HT_CAP_DELAY_BA) || + !(sta->sta.deflink.s1g_cap.cap[3] & S1G_CAP3_HT_DELAYED_BA))) || (buf_size > max_buf_size)) { status = WLAN_STATUS_INVALID_QOS_PARAM; ht_dbg_ratelimited(sta->sdata, diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c index dbd9ad5f3992..d981b0fc57bf 100644 --- a/net/mac80211/agg-tx.c +++ b/net/mac80211/agg-tx.c @@ -616,7 +616,8 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid, !pubsta->deflink.ht_cap.ht_supported && !pubsta->deflink.vht_cap.vht_supported && !pubsta->deflink.he_cap.has_he && - !pubsta->deflink.eht_cap.has_eht) + !pubsta->deflink.eht_cap.has_eht && + !pubsta->deflink.s1g_cap.s1g) return -EINVAL; if (WARN_ON_ONCE(!local->ops->ampdu_action)) diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index d8d4f3d7d7f2..691ea2d32e82 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c @@ -1173,7 +1173,8 @@ void ieee80211_aggr_check(struct ieee80211_sub_if_data *sdata, return; if (!sta || - (!sta->sta.valid_links && !sta->sta.deflink.ht_cap.ht_supported) || + (!sta->sta.valid_links && !sta->sta.deflink.ht_cap.ht_supported && + !sta->sta.deflink.s1g_cap.s1g) || !sta->sta.wme || skb_get_queue_mapping(skb) == IEEE80211_AC_VO || skb->protocol == sdata->control_port_protocol) return;