Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp9795470ybi; Wed, 24 Jul 2019 10:05:11 -0700 (PDT) X-Google-Smtp-Source: APXvYqzwMQQ9ANRbtTVk/kwBtsPcSC1iYDnzEYjWN7pwPx2tgbWcavYTAJq8YKXgbDa5v+phxmFr X-Received: by 2002:aa7:93a5:: with SMTP id x5mr12102083pff.87.1563987911005; Wed, 24 Jul 2019 10:05:11 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1563987910; cv=pass; d=google.com; s=arc-20160816; b=RlZcggzklEotCyfl/HVrRUuGhVkl1ykndhvEsPC25V0OcEync4zUPQVSs/3F0EfP7J tQ1FaXhRUd3QT40ibLxh9G9OcVBMaPuZtYVUTmy4kvt1iZiVYMr3QJkpuux1uIbNCAMO pNR0VIcEm2aigl9f+xOTgKW9V60a9avyXEzdm8BMyr1PKnvp8ptixUZIuutDAbUjTOwP pcFO5ocQ2Njcayk3Tv6Y8JWzwn7zZAag7cVaBeQfUK4ZJRDFIG71Z7N/ZYm2PjdufIlo LRmgUq9HAdz/up9eAWQ52wARefjBvZ0p9lq5xndG+osKiRfGr5N6VdbfQzhJ1sK7c39q IKUw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=S+bffc3YlcFUBnKgGnjCXE0neTTZk3NC6u/M3fo8D8s=; b=UneXPjr51g/tx2um4w42brJBqY37D9xUYukpDp2ZkXUdWxd1kQoT6sq6dAMEIaAC5i X6wNKnVf9Dc3pwG9aB/fQluV6kn2iHxw4kvW32B2uwauZbTKJFUL1cNEU74CWNVprN2E zOtyaiF9S7Rjzi7S1N5UR1/0cVDmpfXwhizKYHlDywuRXFGaz1y0gmT+1sJDMK1cdHLh AcNifGBNU6iNveiSmH6rGKKiZeHhOZvqjfHXfQDH0hlp3zuG6Ir9eJ59T7eXc5TZkJbp tboh46V/e2Txjnq+cDWZFcDs7VJsPoTh5a/EKu3IIBP0AWBWX4g7I8Ujl6rREZGTWnUH NUJA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@narfation.org header.s=20121 header.b="hu/GK/Sr"; arc=pass (i=1); spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=narfation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e36si18064012pgm.527.2019.07.24.10.04.53; Wed, 24 Jul 2019 10:05:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@narfation.org header.s=20121 header.b="hu/GK/Sr"; arc=pass (i=1); spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=narfation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387401AbfGXQeV (ORCPT + 99 others); Wed, 24 Jul 2019 12:34:21 -0400 Received: from dvalin.narfation.org ([213.160.73.56]:39148 "EHLO dvalin.narfation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727000AbfGXQeV (ORCPT ); Wed, 24 Jul 2019 12:34:21 -0400 Received: from sven-desktop.home.narfation.org (p200300C5970DABFC00000000000002FB.dip0.t-ipconnect.de [IPv6:2003:c5:970d:abfc::2fb]) by dvalin.narfation.org (Postfix) with ESMTPSA id 5BD011FFA1; Wed, 24 Jul 2019 16:34:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=narfation.org; s=20121; t=1563986059; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=S+bffc3YlcFUBnKgGnjCXE0neTTZk3NC6u/M3fo8D8s=; b=hu/GK/Srce+XYMc0iyISCUrroZ2EJwWkTdug3Qt9KTB7/g15EuJwzHVgIq9mHFZ0Tz6qPg 5kfjEsH/jVPpUTxGFCslR/m0kzT6oYZ60qNt6BGG/EWKWxKEaWdoJpJLrpwbDCpkqwBPsJ sNz9r+bqrPkUwg3I2066pNRKaMfDCBc= From: Sven Eckelmann To: linux-wireless@vger.kernel.org Cc: ath11k@lists.infradead.org, Sven Eckelmann Subject: [PATCH v5 3/4] ath11k: register HE mesh capabilities Date: Wed, 24 Jul 2019 18:33:58 +0200 Message-Id: <20190724163359.3507-4-sven@narfation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190724163359.3507-1-sven@narfation.org> References: <20190724163359.3507-1-sven@narfation.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=narfation.org; s=20121; t=1563986059; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=S+bffc3YlcFUBnKgGnjCXE0neTTZk3NC6u/M3fo8D8s=; b=xleVnd6pZxZl75YC4G+ZhrL6LFZbYs5XC7Y/M52tO8an7zsLtUDzbSa7BEiIP1KgeA5hF/ TVHVOhNX6rjln8ZA/NCBB9RmVNWSWqGlMWHT0IWoRl5qWwFDYoKU7hBpXskSfEX4aPP3Yt qOnlKJiaBWvtYuOo6j5PhL7iAvnUkNs= ARC-Seal: i=1; s=20121; d=narfation.org; t=1563986059; a=rsa-sha256; cv=none; b=Befq6r1YKTRL4j5EJ2jGV4pMiDjBrmBNpDd4jFxGCu1JUZIMoD/3o01z3DAk+A7tqK8eT8 4dxYmnfCRTzEgxQozqllswv90AUxXCR9IA7rALRs/PNHwfel0ojMCyuMCtw1kyeoChzy18 XcTbQKfV23PUSPIF0d1klyruPHe1+CU= ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=sven smtp.mailfrom=sven@narfation.org Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Sven Eckelmann The capabilities for the HE mesh are generated from the capabilities reported by the fw. But the firmware only reports the overall capabilities and not the one which are specific for mesh. Some of them (TWT, MU UL/DL, TB PPDU, ...) require an infrastructure setup with a main STA (AP) controlling the operations. This is not the case for mesh and thus these capabilities are removed from the list of capabilities. Signed-off-by: Sven Eckelmann Forwarded: https://patchwork.kernel.org/patch/11029297/ --- drivers/net/wireless/ath/ath11k/mac.c | 75 +++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c index ab425b5b60b9..4317608ff822 100644 --- a/drivers/net/wireless/ath/ath11k/mac.c +++ b/drivers/net/wireless/ath/ath11k/mac.c @@ -3255,6 +3255,77 @@ static void ath11k_gen_ppe_thresh(struct ath11k_ppe_threshold *fw_ppet, } } +static void +ath11k_mac_filter_he_cap_mesh(struct ieee80211_he_cap_elem *he_cap_elem) +{ + u8 m; + + m = IEEE80211_HE_MAC_CAP0_TWT_RES | + IEEE80211_HE_MAC_CAP0_TWT_REQ; + he_cap_elem->mac_cap_info[0] &= ~m; + + m = IEEE80211_HE_MAC_CAP2_TRS | + IEEE80211_HE_MAC_CAP2_BCAST_TWT | + IEEE80211_HE_MAC_CAP2_MU_CASCADING; + he_cap_elem->mac_cap_info[2] &= ~m; + + m = IEEE80211_HE_MAC_CAP3_FLEX_TWT_SCHED | + IEEE80211_HE_MAC_CAP2_BCAST_TWT | + IEEE80211_HE_MAC_CAP2_MU_CASCADING; + he_cap_elem->mac_cap_info[3] &= ~m; + + m = IEEE80211_HE_MAC_CAP4_BSRP_BQRP_A_MPDU_AGG | + IEEE80211_HE_MAC_CAP4_BQR; + he_cap_elem->mac_cap_info[4] &= ~m; + + m = IEEE80211_HE_MAC_CAP5_SUBCHAN_SELECVITE_TRANSMISSION | + IEEE80211_HE_MAC_CAP5_UL_2x996_TONE_RU | + IEEE80211_HE_MAC_CAP5_PUNCTURED_SOUNDING | + IEEE80211_HE_MAC_CAP5_HT_VHT_TRIG_FRAME_RX; + he_cap_elem->mac_cap_info[5] &= ~m; + + m = IEEE80211_HE_PHY_CAP2_UL_MU_FULL_MU_MIMO | + IEEE80211_HE_PHY_CAP2_UL_MU_PARTIAL_MU_MIMO; + he_cap_elem->phy_cap_info[2] &= ~m; + + m = IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA | + IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_TX_MASK | + IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_MASK; + he_cap_elem->phy_cap_info[3] &= ~m; + + m = IEEE80211_HE_PHY_CAP4_MU_BEAMFORMER; + he_cap_elem->phy_cap_info[4] &= ~m; + + m = IEEE80211_HE_PHY_CAP5_NG16_MU_FEEDBACK; + he_cap_elem->phy_cap_info[5] &= ~m; + + m = IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU | + IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB | + IEEE80211_HE_PHY_CAP6_TRIG_CQI_FB | + IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO; + he_cap_elem->phy_cap_info[6] &= ~m; + + m = IEEE80211_HE_PHY_CAP7_SRP_BASED_SR | + IEEE80211_HE_PHY_CAP7_POWER_BOOST_FACTOR_AR | + IEEE80211_HE_PHY_CAP7_STBC_TX_ABOVE_80MHZ | + IEEE80211_HE_PHY_CAP7_STBC_RX_ABOVE_80MHZ; + he_cap_elem->phy_cap_info[7] &= ~m; + + m = IEEE80211_HE_PHY_CAP8_HE_ER_SU_PPDU_4XLTF_AND_08_US_GI | + IEEE80211_HE_PHY_CAP8_20MHZ_IN_40MHZ_HE_PPDU_IN_2G | + IEEE80211_HE_PHY_CAP8_20MHZ_IN_160MHZ_HE_PPDU | + IEEE80211_HE_PHY_CAP8_80MHZ_IN_160MHZ_HE_PPDU; + he_cap_elem->phy_cap_info[8] &= ~m; + + m = IEEE80211_HE_PHY_CAP9_LONGER_THAN_16_SIGB_OFDM_SYM | + IEEE80211_HE_PHY_CAP9_NON_TRIGGERED_CQI_FEEDBACK | + IEEE80211_HE_PHY_CAP9_RX_1024_QAM_LESS_THAN_242_TONE_RU | + IEEE80211_HE_PHY_CAP9_TX_1024_QAM_LESS_THAN_242_TONE_RU | + IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_COMP_SIGB | + IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_NON_COMP_SIGB; + he_cap_elem->phy_cap_info[9] &= ~m; +} + static int ath11k_mac_copy_he_cap(struct ath11k *ar, struct ath11k_pdev_cap *cap, struct ieee80211_sband_iftype_data *data, @@ -3271,6 +3342,7 @@ static int ath11k_mac_copy_he_cap(struct ath11k *ar, switch (i) { case NL80211_IFTYPE_STATION: case NL80211_IFTYPE_AP: + case NL80211_IFTYPE_MESH_POINT: break; default: @@ -3311,6 +3383,9 @@ static int ath11k_mac_copy_he_cap(struct ath11k *ar, he_cap_elem->phy_cap_info[9] |= IEEE80211_HE_PHY_CAP9_TX_1024_QAM_LESS_THAN_242_TONE_RU; break; + case NL80211_IFTYPE_MESH_POINT: + ath11k_mac_filter_he_cap_mesh(he_cap_elem); + break; } he_cap->he_mcs_nss_supp.rx_mcs_80 = -- 2.20.1