From patchwork Mon May 1 16:59:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Muna Sinada X-Patchwork-Id: 678342 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 91859C77B61 for ; Mon, 1 May 2023 17:06:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233337AbjEARG6 (ORCPT ); Mon, 1 May 2023 13:06:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43584 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233357AbjEARGl (ORCPT ); Mon, 1 May 2023 13:06:41 -0400 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3FCA55BB1 for ; Mon, 1 May 2023 10:00:59 -0700 (PDT) Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 341D0iPM009999; Mon, 1 May 2023 16:59:36 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : mime-version : content-type; s=qcppdkim1; bh=RtxORutrxu0sZ9MY8EbKSvxTYjrAlp+dUovAp6nOEH4=; b=QaQvlyhO2WExLBo7rv4mEf/A4sIaymbCkxzKTrHnEGXlgD7zTNBrOJS9zujZUAbmvz5s 5ddITsfc/0j7emw1beyGdi/9il1LUj5PEVAvOV0IDB2u09bYf5jONF2b+6BRyarRP4IF 8G59RD7SUqHa60vP7tqymDzqcVf9KU9AFhhUjdBWYhrq1pbxAWu9WvfHcfIUSZZMLoL6 thpvVMcNo7GqrtG8EqSUSfqO2wyYj3F3ceHTYANWffmmkUamCJA+H83cVUI3HfTfAEeu Smk8aSdrXvHY/bQDyZRsFYygCMD3kri5hgc79rBNq/uuap+RKXNSXE/55BThW2fF8x4W 5w== Received: from nalasppmta03.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3q8vhgv4m2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 01 May 2023 16:59:36 +0000 Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA03.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 341GxZS3011773 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 1 May 2023 16:59:35 GMT Received: from msinada-linux.qualcomm.com (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.42; Mon, 1 May 2023 09:59:35 -0700 From: Muna Sinada To: CC: , Muna Sinada Subject: [PATCH v6 1/3] wifi: cfg80211: allow userspace to enable driver control of MU-EDCA Date: Mon, 1 May 2023 09:59:21 -0700 Message-ID: <1682960363-15452-1-git-send-email-quic_msinada@quicinc.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: Z7bOHHZUF278tdKCphvWjU4DwD-pbu8B X-Proofpoint-ORIG-GUID: Z7bOHHZUF278tdKCphvWjU4DwD-pbu8B X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-05-01_10,2023-04-27_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 impostorscore=0 suspectscore=0 phishscore=0 mlxscore=0 bulkscore=0 malwarescore=0 mlxlogscore=695 adultscore=0 lowpriorityscore=0 priorityscore=1501 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2305010138 Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Add option for user space to enable driver to dynamically update MU-EDCA parameters. The updated MU-EDCA parameters from driver are part of an AP mode feature where firmware determines better MU-EDCA parameters based on channel conditions. The updated parameters are used and reported to user space to reflect in AP management frames. These dynamic parameter updates are offloaded to firmware for better user experience, thus details on algorithm are not provided. This is a driver specific feature, thus no spec references. Signed-off-by: Muna Sinada --- v6: no change v5: no change v4: newly created patch in response to review comment to add opt in for user for this feature --- include/net/cfg80211.h | 3 +++ include/uapi/linux/nl80211.h | 5 +++++ net/wireless/nl80211.c | 5 +++++ 3 files changed, 13 insertions(+) diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 9e04f69712b1..e56af095828e 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -1359,6 +1359,8 @@ struct cfg80211_unsol_bcast_probe_resp { * @punct_bitmap: Preamble puncturing bitmap. Each bit represents * a 20 MHz channel, lowest bit corresponding to the lowest channel. * Bit set to 1 indicates that the channel is punctured. + * @dyn_muedca_enable: enable/disable driver control of dynamically update + * MU-EDCA parameters */ struct cfg80211_ap_settings { struct cfg80211_chan_def chandef; @@ -1394,6 +1396,7 @@ struct cfg80211_ap_settings { struct cfg80211_unsol_bcast_probe_resp unsol_bcast_probe_resp; struct cfg80211_mbssid_config mbssid_config; u16 punct_bitmap; + bool dyn_muedca_enable; }; /** diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h index cf4fb981e131..e68169130e7e 100644 --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h @@ -2805,6 +2805,9 @@ enum nl80211_commands { * index. If the userspace includes more RNR elements than number of * MBSSID elements then these will be added in every EMA beacon. * + * @NL80211_ATTR_DYN_MUEDCA_ENABLE: Flag attribute to indicate user space has + * enabled Driver control of dynamically updating MU-EDCA parameters. + * * @NUM_NL80211_ATTR: total number of nl80211_attrs available * @NL80211_ATTR_MAX: highest attribute number currently defined * @__NL80211_ATTR_AFTER_LAST: internal use @@ -3341,6 +3344,8 @@ enum nl80211_attrs { NL80211_ATTR_EMA_RNR_ELEMS, + NL80211_ATTR_DYN_MUEDCA_ENABLE, + /* add attributes here, update the policy in nl80211.c */ __NL80211_ATTR_AFTER_LAST, diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 3416c9db398f..e9e939706630 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -815,6 +815,7 @@ static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = { [NL80211_ATTR_MAX_HW_TIMESTAMP_PEERS] = { .type = NLA_U16 }, [NL80211_ATTR_HW_TIMESTAMP_ENABLED] = { .type = NLA_FLAG }, [NL80211_ATTR_EMA_RNR_ELEMS] = { .type = NLA_NESTED }, + [NL80211_ATTR_DYN_MUEDCA_ENABLE] = { .type = NLA_FLAG }, }; /* policy for the key attributes */ @@ -6156,6 +6157,10 @@ static int nl80211_start_ap(struct sk_buff *skb, struct genl_info *info) goto out_unlock; } + if (info->attrs[NL80211_ATTR_DYN_MUEDCA_ENABLE]) + params->dyn_muedca_enable = + nla_get_flag(info->attrs[NL80211_ATTR_DYN_MUEDCA_ENABLE]); + err = nl80211_calculate_ap_params(params); if (err) goto out_unlock; From patchwork Mon May 1 16:59:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Muna Sinada X-Patchwork-Id: 678574 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DCC06C77B61 for ; Mon, 1 May 2023 17:07:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233345AbjEARHB (ORCPT ); Mon, 1 May 2023 13:07:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40200 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232655AbjEARGo (ORCPT ); Mon, 1 May 2023 13:06:44 -0400 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8E9E75FE1 for ; Mon, 1 May 2023 10:01:04 -0700 (PDT) Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 341GjRgS031480; Mon, 1 May 2023 16:59:57 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=qcppdkim1; bh=g3Eq3RgtI5WKus6NgsD/XSrAhg9GMicT5O8zHHYHRg8=; b=L3Nkd8cnyTJNuoouC8sxN0F/STysXozFWutpYJlIXEMa2vtvyvqjojGAE2gj4aY7Lz+t iZbpUzSO8UPM0hXh9eRD8DCKt0pT0HThsjSIba13qFc+eWJ6bAkrbUuhagdRGA5T71la 6yL4Pu6PqP5e72eihguSOnGJi+tjXkH7+W77t1MQzkPOKZGvokvZ3DVUIzY9p5tHjd/E P40fKNDgNwekh1nSfMwRwo9ywO0hhRparegCt4Eg8N9+6Pz4AbeTzAg11vaEg7pfLrpG AMoD4YCDs3yFpUWCTtc17EfGYsatHT/G/T4ugdjv3kzw206ynEt2YW36OIKDIj/aUH16 1w== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3q8t71v9pj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 01 May 2023 16:59:57 +0000 Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA04.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 341Gxu9k032414 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 1 May 2023 16:59:56 GMT Received: from msinada-linux.qualcomm.com (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.42; Mon, 1 May 2023 09:59:55 -0700 From: Muna Sinada To: CC: , Muna Sinada Subject: [PATCH v6 2/3] wifi: mac80211: allow userspace to enable driver control of MU-EDCA Date: Mon, 1 May 2023 09:59:22 -0700 Message-ID: <1682960363-15452-2-git-send-email-quic_msinada@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1682960363-15452-1-git-send-email-quic_msinada@quicinc.com> References: <1682960363-15452-1-git-send-email-quic_msinada@quicinc.com> MIME-Version: 1.0 X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: eHb9kkmkQbqyA50YLUAN0kIO5XZZ03js X-Proofpoint-ORIG-GUID: eHb9kkmkQbqyA50YLUAN0kIO5XZZ03js X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-05-01_10,2023-04-27_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 mlxscore=0 mlxlogscore=613 lowpriorityscore=0 impostorscore=0 phishscore=0 suspectscore=0 spamscore=0 clxscore=1015 priorityscore=1501 malwarescore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2305010138 Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Propagate userspace configuration to enable or disable if driver is able to dynamically update MU-EDCA parameters. The updated MU-EDCA parameters from driver are part of an AP mode feature where firmware determines better MU-EDCA parameters based on channel conditions. The updated parameters are used and reported to user space to reflect in AP management frames. These dynamic parameter updates are offloaded to firmware for better user experience, thus details on algorithm are not provided. This is a driver specific feature, thus no spec references. Signed-off-by: Muna Sinada --- v6: no change v5: no change v4: newly created patch in response to review comment to add opt in for user for this feature --- include/net/mac80211.h | 6 ++++++ net/mac80211/cfg.c | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 679421d37a42..70acd76ce450 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h @@ -376,6 +376,7 @@ enum ieee80211_bss_change { BSS_CHANGED_FILS_DISCOVERY = 1<<30, BSS_CHANGED_UNSOL_BCAST_PROBE_RESP = 1<<31, BSS_CHANGED_EHT_PUNCTURING = BIT_ULL(32), + BSS_CHANGED_DYNAMIC_MU_EDCA = BIT_ULL(33), /* when adding here, make sure to change ieee80211_reconfig */ }; @@ -683,6 +684,9 @@ struct ieee80211_fils_discovery { * beamformee * @eht_mu_beamformer: in AP-mode, does this BSS enable operation as an EHT MU * beamformer + * @dyn_muedca_enabled: whether to enable or disable driver control of MU-EDCA + * parameters. If set to zero, driver dynamically updating parameters is + * disabled; if set to 1, driver dynamically updating parameters is enable */ struct ieee80211_bss_conf { struct ieee80211_vif *vif; @@ -776,6 +780,8 @@ struct ieee80211_bss_conf { bool eht_su_beamformer; bool eht_su_beamformee; bool eht_mu_beamformer; + + int dyn_muedca_enabled; }; /** diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index 473915606715..ff9117c1c288 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -1465,6 +1465,11 @@ static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev, changed |= BSS_CHANGED_UNSOL_BCAST_PROBE_RESP; } + if (link_conf->dyn_muedca_enabled != params->dyn_muedca_enable) { + link_conf->dyn_muedca_enabled = params->dyn_muedca_enable; + changed |= BSS_CHANGED_DYNAMIC_MU_EDCA; + } + err = drv_start_ap(sdata->local, sdata, link_conf); if (err) { old = sdata_dereference(link->u.ap.beacon, sdata); From patchwork Mon May 1 16:59:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Muna Sinada X-Patchwork-Id: 678341 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6FA96C77B7C for ; Mon, 1 May 2023 17:39:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229915AbjEARj3 (ORCPT ); Mon, 1 May 2023 13:39:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35806 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229664AbjEARj2 (ORCPT ); Mon, 1 May 2023 13:39:28 -0400 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AE0BAAF for ; Mon, 1 May 2023 10:39:26 -0700 (PDT) Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 341Fp4XW030410; Mon, 1 May 2023 16:59:58 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=qcppdkim1; bh=zl/UdgPTF2xe3xHgnG1nDQNAOFdAYR2y1yrQGzc1cNs=; b=LitSkoGSaTZYh7g655h8+vg6ASdE6AVguCjMlpqrUvoop45aPN4hiCO1gdIHzQpizD/5 Gj0Z5klRtZcy5F+LbzyE3O4ZfKZxLVxqmj/Z/ub98XKK+6w9O1yciPxHdMvwg4CmcRtN fJyonaspnc/PZSTAKCKT+/DsVo2xT+to5Lkkn8gwGJyO5ENti28hz6L40eODZkY4LU6c dd4hadXfq8Y/PS8V5Zii6YM0+uOnhHNrWzrCzlQaf0bN6wr76Srw/AN7adkGHGJszaOY UFr1PZSu0TMNTIxCFgxk/1bJ3DKskUA1PhGs4Pjw/16O2S8TloerVRFSCy15TJ6u9Mk3 aw== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3q8v0rv3t5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 01 May 2023 16:59:58 +0000 Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA04.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 341Gxvoj032421 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 1 May 2023 16:59:57 GMT Received: from msinada-linux.qualcomm.com (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.42; Mon, 1 May 2023 09:59:57 -0700 From: Muna Sinada To: CC: , Muna Sinada Subject: [PATCH v6 3/3] wifi: cfg80211: Handle driver updated MU-EDCA params Date: Mon, 1 May 2023 09:59:23 -0700 Message-ID: <1682960363-15452-3-git-send-email-quic_msinada@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1682960363-15452-1-git-send-email-quic_msinada@quicinc.com> References: <1682960363-15452-1-git-send-email-quic_msinada@quicinc.com> MIME-Version: 1.0 X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: iq7Q_muZQ1heMqU6CKPsK8jriOJi1LRB X-Proofpoint-ORIG-GUID: iq7Q_muZQ1heMqU6CKPsK8jriOJi1LRB X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-05-01_10,2023-04-27_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=999 suspectscore=0 adultscore=0 bulkscore=0 priorityscore=1501 clxscore=1015 mlxscore=0 spamscore=0 impostorscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2305010138 Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Add necessary functions and attributes to receive updated MU-EDCA parameters from driver and send to user space, where management frame are updated to reflect latest parameters. The updated parameters from driver are part of an AP mode feature where firmware determines better MU-EDCA parameters based on channel conditions. The updated parameters are used and reported to user space to reflect in AP management frames. These dynamic parameter updates are offloaded to firmware for better user experience, thus details on algorithm are not provided. This is a driver specific feature, thus no spec references. Signed-off-by: Muna Sinada --- v6: add "wifi" prefix to commit subject line v5: Fixed build error from trace event (cfg80211_update_muedca_params_event) v4: Added tracing and added nla policy for new nl attr v3: modified commit message --- include/net/cfg80211.h | 12 ++++++++++++ include/uapi/linux/nl80211.h | 11 +++++++++++ net/wireless/nl80211.c | 40 ++++++++++++++++++++++++++++++++++++++++ net/wireless/trace.h | 40 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 103 insertions(+) diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index e56af095828e..fe4f416b85e1 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -9070,4 +9070,16 @@ static inline int cfg80211_color_change_notify(struct net_device *dev) bool cfg80211_valid_disable_subchannel_bitmap(u16 *bitmap, const struct cfg80211_chan_def *chandef); +/** + * cfg80211_update_muedca_params_event - Notify userspace about updated + * MU-EDCA parameters + * + * @wiphy: the wiphy + * @params: Updated MU-EDCA parameters + * @gfp: allocation flags + */ +void cfg80211_update_muedca_params_event(struct wiphy *wiphy, + const struct ieee80211_mu_edca_param_set *params, + gfp_t gfp); + #endif /* __NET_CFG80211_H */ diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h index e68169130e7e..51c8a94bc411 100644 --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h @@ -1309,6 +1309,11 @@ * The number of peers that HW timestamping can be enabled for concurrently * is indicated by %NL80211_ATTR_MAX_HW_TIMESTAMP_PEERS. * + * @NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS: Updated MU-EDCA parameters from + * driver. This event is used to update dynamic MU-EDCA parameters in + * management frames, coming from driver and now need to be reflected in + * management frames. + * * @NL80211_CMD_MAX: highest used command number * @__NL80211_CMD_AFTER_LAST: internal use */ @@ -1562,6 +1567,8 @@ enum nl80211_commands { NL80211_CMD_SET_HW_TIMESTAMP, + NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS, + /* add new commands above here */ /* used to define NL80211_CMD_MAX below */ @@ -2807,6 +2814,9 @@ enum nl80211_commands { * * @NL80211_ATTR_DYN_MUEDCA_ENABLE: Flag attribute to indicate user space has * enabled Driver control of dynamically updating MU-EDCA parameters. + * @NL80211_ATTR_HE_MUEDCA_PARAMS: MU-EDCA AC parameters for the + * %NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS command in format described in + * P802.11ax_D4.0 section 9.4.2.245 * * @NUM_NL80211_ATTR: total number of nl80211_attrs available * @NL80211_ATTR_MAX: highest attribute number currently defined @@ -3345,6 +3355,7 @@ enum nl80211_attrs { NL80211_ATTR_EMA_RNR_ELEMS, NL80211_ATTR_DYN_MUEDCA_ENABLE, + NL80211_ATTR_HE_MUEDCA_PARAMS, /* add attributes here, update the policy in nl80211.c */ diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index e9e939706630..af36440f2a51 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -816,6 +816,8 @@ static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = { [NL80211_ATTR_HW_TIMESTAMP_ENABLED] = { .type = NLA_FLAG }, [NL80211_ATTR_EMA_RNR_ELEMS] = { .type = NLA_NESTED }, [NL80211_ATTR_DYN_MUEDCA_ENABLE] = { .type = NLA_FLAG }, + [NL80211_ATTR_HE_MUEDCA_PARAMS] = + NLA_POLICY_EXACT_LEN(sizeof(struct ieee80211_mu_edca_param_set)), }; /* policy for the key attributes */ @@ -20017,6 +20019,44 @@ void cfg80211_update_owe_info_event(struct net_device *netdev, } EXPORT_SYMBOL(cfg80211_update_owe_info_event); +void +cfg80211_update_muedca_params_event(struct wiphy *wiphy, + const struct ieee80211_mu_edca_param_set *params, + gfp_t gfp) +{ + struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy); + struct sk_buff *msg; + void *hdr; + + trace_cfg80211_update_muedca_params_event(wiphy, params); + + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); + if (!msg) + return; + + hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS); + if (!hdr) + goto nla_put_failure; + + if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx)) + goto nla_put_failure; + + if (nla_put(msg, NL80211_ATTR_HE_MUEDCA_PARAMS, + sizeof(*params), params)) + goto nla_put_failure; + + genlmsg_end(msg, hdr); + + genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, + NL80211_MCGRP_MLME, gfp); + return; + +nla_put_failure: + genlmsg_cancel(msg, hdr); + nlmsg_free(msg); +} +EXPORT_SYMBOL(cfg80211_update_muedca_params_event); + /* initialisation/exit functions */ int __init nl80211_init(void) diff --git a/net/wireless/trace.h b/net/wireless/trace.h index 716a1fa70069..3ac552be0129 100644 --- a/net/wireless/trace.h +++ b/net/wireless/trace.h @@ -3785,6 +3785,46 @@ TRACE_EVENT(cfg80211_update_owe_info_event, __entry->assoc_link_id, __entry->peer_mld_addr) ); +TRACE_EVENT(cfg80211_update_muedca_params_event, + TP_PROTO(struct wiphy *wiphy, + const struct ieee80211_mu_edca_param_set *params), + TP_ARGS(wiphy, params), + TP_STRUCT__entry( + WIPHY_ENTRY + __field(u8, mu_qos_info) + __field(u8, be_aifsn) + __field(u8, be_ecw_min_max) + __field(u8, be_mu_edca_timer) + __field(u8, bk_aifsn) + __field(u8, bk_ecw_min_max) + __field(u8, bk_mu_edca_timer) + __field(u8, vi_aifsn) + __field(u8, vi_ecw_min_max) + __field(u8, vi_mu_edca_timer) + __field(u8, vo_aifsn) + __field(u8, vo_ecw_min_max) + __field(u8, vo_mu_edca_timer) + ), + TP_fast_assign( + WIPHY_ASSIGN; + __entry->mu_qos_info = params->mu_qos_info; + __entry->be_aifsn = params->ac_be.aifsn; + __entry->be_ecw_min_max = params->ac_be.ecw_min_max; + __entry->be_mu_edca_timer = params->ac_be.mu_edca_timer; + __entry->bk_aifsn = params->ac_bk.aifsn; + __entry->bk_ecw_min_max = params->ac_bk.ecw_min_max; + __entry->bk_mu_edca_timer = params->ac_bk.mu_edca_timer; + __entry->vi_aifsn = params->ac_vi.aifsn; + __entry->vi_ecw_min_max = params->ac_vi.ecw_min_max; + __entry->vi_mu_edca_timer = params->ac_vi.mu_edca_timer; + __entry->vo_aifsn = params->ac_vo.aifsn; + __entry->vo_ecw_min_max = params->ac_vo.ecw_min_max; + __entry->vo_mu_edca_timer = params->ac_vo.mu_edca_timer; + ), + TP_printk(WIPHY_PR_FMT ", MU QOS info: %u", WIPHY_PR_ARG, + __entry->mu_qos_info) +); + TRACE_EVENT(cfg80211_bss_color_notify, TP_PROTO(struct net_device *netdev, enum nl80211_commands cmd,