Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp1361436pxj; Fri, 18 Jun 2021 05:38:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz7nBh+sf3XPytHaIicQ4+78eAgZDBSjYO6Z15AesBjnJiDa+HBRVW0t6Ff7KIq5yq6qMsr X-Received: by 2002:a05:6402:845:: with SMTP id b5mr4629982edz.266.1624019928222; Fri, 18 Jun 2021 05:38:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624019928; cv=none; d=google.com; s=arc-20160816; b=wcom7jzucIDPOz+oBoNUkVRi1uwbr+bDeNhPuz3H/qMjQRPOPkuuRCmwAZ9afKfAMM SIgAc39jEZbArZdkNeBoOdmGuUuLSz+FGRotzKQUUxabcFqSUTVwn1LkqXKotYNRuNMt 4ABL9T+ewXhqHVAdyjtip/2k/CindnLn2VlODYfnq9olIwH06SUe01cU4uUGVV/oPaGv tg8Tcb5gdm5gzVI39b6mUpmUvdgk4PBdAHpaoJV4WuPQFoKMWpKH/9ZilNAV27UqHf6n 0zXWG4xl4PWEhogx90Q9xYCBBVnTPVgmhRUqXKm0EY3g+pn11ROvCRnzCk98N/oyRLeC Gwpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:subject:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:cc:to:from; bh=+gbrFlUkrRfICueR76tR5Mvur95KEfjdiN+28NOF7mc=; b=Rc1PYCZSHjbnqwkAHHueDuQCrgvBKKztKciVJ7Oyajy8e778tL3u0yBwSoNFDWc+33 NKoL2ziQxW8KtoP3DuRLtQlQQDXU5AKJ5sokDvRzZQuIROUnMqgRJq59psjYmPTTDIlK GkBWmjKx6DGedOeq/0NVLhalwU1u2wkB4z+VWGGJRn7GKUuTuKnfbGV4iBKyubEO3hfB KY+21xqaKpgCUnOc0aLT6nEc67ETilHmZH6SRwlhTHG/Xmq8qHn479leLvqGxaYEGVTR LoVf7Zj9n+3YhLi0QW/4bqIuC2UyJUa3Hx4X9i6hNaORIx/1asnoM2QbzfTeOcNCVb16 yZwg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bz20si2690426ejc.486.2021.06.18.05.38.25; Fri, 18 Jun 2021 05:38:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232371AbhFRLKc (ORCPT + 99 others); Fri, 18 Jun 2021 07:10:32 -0400 Received: from paleale.coelho.fi ([176.9.41.70]:48292 "EHLO farmhouse.coelho.fi" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S232184AbhFRLKa (ORCPT ); Fri, 18 Jun 2021 07:10:30 -0400 Received: from 91-156-6-193.elisa-laajakaista.fi ([91.156.6.193] helo=kveik.lan) by farmhouse.coelho.fi with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94) (envelope-from ) id 1luBx9-001YXx-Si; Fri, 18 Jun 2021 13:42:25 +0300 From: Luca Coelho To: johannes@sipsolutions.net Cc: luca@coelho.fi, linux-wireless@vger.kernel.org Date: Fri, 18 Jun 2021 13:41:53 +0300 Message-Id: X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210618104156.747775-1-luca@coelho.fi> References: <20210618104156.747775-1-luca@coelho.fi> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on farmhouse.coelho.fi X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00, TVD_RCVD_IP autolearn=ham autolearn_force=no version=3.4.5-pre1 Subject: [PATCH 28/31] mac80211: add vendor-specific capabilities to assoc request Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Johannes Berg When sending an association request, add any vendor specific capabilities at the end of the frame. This way, mac80211 is still completely in charge of building the frame, but drivers can determine what should be added depending on the band and interface type. Signed-off-by: Johannes Berg Signed-off-by: Luca Coelho --- net/mac80211/mlme.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index a5d0f62de5c3..9af6fac56429 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -681,6 +681,8 @@ static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata) u32 rates = 0; __le16 listen_int; struct element *ext_capa = NULL; + enum nl80211_iftype iftype = ieee80211_vif_type_p2p(&sdata->vif); + const struct ieee80211_sband_iftype_data *iftd; /* we know it's writable, cast away the const */ if (assoc_data->ie_len) @@ -725,6 +727,8 @@ static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata) } } + iftd = ieee80211_get_sband_iftype_data(sband, iftype); + skb = alloc_skb(local->hw.extra_tx_headroom + sizeof(*mgmt) + /* bit too much but doesn't matter */ 2 + assoc_data->ssid_len + /* SSID */ @@ -739,7 +743,8 @@ static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata) 2 + 1 + sizeof(struct ieee80211_he_6ghz_capa) + assoc_data->ie_len + /* extra IEs */ (assoc_data->fils_kek_len ? 16 /* AES-SIV */ : 0) + - 9, /* WMM */ + 9 + /* WMM */ + (iftd ? iftd->vendor_elems.len : 0), GFP_KERNEL); if (!skb) return; @@ -1012,6 +1017,9 @@ static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata) ieee80211_add_s1g_capab_ie(sdata, &sband->s1g_cap, skb); } + if (iftd && iftd->vendor_elems.data && iftd->vendor_elems.len) + skb_put_data(skb, iftd->vendor_elems.data, iftd->vendor_elems.len); + /* add any remaining custom (i.e. vendor specific here) IEs */ if (assoc_data->ie_len) { noffset = assoc_data->ie_len; -- 2.32.0