Received: by 2002:a05:6a10:7420:0:0:0:0 with SMTP id hk32csp689253pxb; Wed, 16 Feb 2022 02:05:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJwThVjxWkowVxAY2AIfydMx0lDtwq8fW6310QFSBR9+PQhxroRG11VAExnjxGRdCrDlEFuw X-Received: by 2002:a17:90a:6404:b0:1b9:28a8:935f with SMTP id g4-20020a17090a640400b001b928a8935fmr826205pjj.197.1645005958556; Wed, 16 Feb 2022 02:05:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645005958; cv=none; d=google.com; s=arc-20160816; b=glN3VPxBn3yCNTO57bAjf866TtY3gUByGaEWZXV8ozvgFLAyp5LTgYEoNffqFACm0L pTCUpWJJq1+tYNYDhCxRte0oGv6W5NvGmn1XCFjjc1ej41hFO51cA+HVbJM8IYwuafXt Gsja9JzKSRlNJtFVikmT21t6JBaPUciienMot3kUmnfMyPaZP465l4duaByF5amMsjNG oFQRY5DCHEmTRzK+5sAN4JTaMarjeZ+FIfqkcLKShlXaFsqQ9dTK1OqsFLvcRpb7pN7P tXUDIvkjIHIaGgZcPfXA3Au7dKmrBJtmqVcgfOxhWXn9IZI5i2+HibPDLHzB0stF7S9E Ltpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=DJX/LaLZNUDvkUpAYHV7glmD4bH6GDqkcPbhy+MNNlk=; b=TLWf+/5W14VoOuCp8w894V/2xa1cwxRgtk7NS6Nu/6/f+JqBilwntSxHyjNRwPOmI1 zMe8PuLxj6tmlizBkpGcEyrFyRYPbqzLEoTi5GT69j8YkbCBHX0CCP6FPmaNbOO+om0T FilYjwgdzTtkHfni6DvgnvXkKmGz4vD8fLSZV7Hd7H2ssGojjlLnf1J6eVl1S87pUPBm 1ujYZPTh5OxWkD6QPdXxnCfpjK9dnV4Sn/Rp8LbMKD9wdd9bWG3qWuuNWFh7jBca9rre LDLeEvkQA7wJnsEn/r7JHECZESjKu+/78+nV5ym1ghyXEO/EMQ66px7fJlIGVC0rYk7u 1miw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcdkim header.b=g50nEr10; spf=softfail (google.com: domain of transitioning linux-wireless-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id 132si5017408pga.257.2022.02.16.02.05.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Feb 2022 02:05:58 -0800 (PST) Received-SPF: softfail (google.com: domain of transitioning linux-wireless-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcdkim header.b=g50nEr10; spf=softfail (google.com: domain of transitioning linux-wireless-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id D48DC2B7606; Wed, 16 Feb 2022 02:05:47 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232499AbiBPKFx (ORCPT + 73 others); Wed, 16 Feb 2022 05:05:53 -0500 Received: from gmail-smtp-in.l.google.com ([23.128.96.19]:38992 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232688AbiBPKFt (ORCPT ); Wed, 16 Feb 2022 05:05:49 -0500 Received: from alexa-out.qualcomm.com (alexa-out.qualcomm.com [129.46.98.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A4BC8D21EF for ; Wed, 16 Feb 2022 02:05:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1645005936; x=1676541936; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=DJX/LaLZNUDvkUpAYHV7glmD4bH6GDqkcPbhy+MNNlk=; b=g50nEr10EXjwPzb0YyVeoS0D2jQujKdYjEnS/uz/L31/rbtduObJfjZb RpqyjehEIitZkjj5hQbisWcJDxafXU/DsPybgEQH7hPoZUZb5gAlUJRl7 8qXtPj4WbiFQFaDVXgFE03Ph7IDLug2mAk5dcTYtE4Zj/TTfHgY5pQE8G s=; Received: from ironmsg08-lv.qualcomm.com ([10.47.202.152]) by alexa-out.qualcomm.com with ESMTP; 16 Feb 2022 02:05:36 -0800 X-QCInternal: smtphost Received: from nasanex01c.na.qualcomm.com ([10.47.97.222]) by ironmsg08-lv.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Feb 2022 02:05:37 -0800 Received: from nalasex01a.na.qualcomm.com (10.47.209.196) by nasanex01c.na.qualcomm.com (10.47.97.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.15; Wed, 16 Feb 2022 02:05:35 -0800 Received: from vnaralas-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.922.19; Wed, 16 Feb 2022 02:05:34 -0800 From: Venkateswara Naralasetty To: CC: , Venkateswara Naralasetty Subject: [PATCHv2 1/6] nl80211: vendor-cmd: qca: add command for CFR configuration Date: Wed, 16 Feb 2022 15:35:17 +0530 Message-ID: <1645005922-7252-2-git-send-email-quic_vnaralas@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1645005922-7252-1-git-send-email-quic_vnaralas@quicinc.com> References: <1645005922-7252-1-git-send-email-quic_vnaralas@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain 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-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Channel Frequency Response feature is to get the channel state information from the hardware based on the user configurations and send the CSI data to user space. CSI data is further processed in user space which can be used to identify the motion of the objects. Add vendor command support to configure per peer CFR parameters. An example of usage: iw dev wlanx vendor send 0x1374 0xad cfr-en bw method periodicity addr 0x1374: vendor id 0xad: : vendor subcmd id val: 0 to disable CFR capture 1 to enable CFR capture bw: CFR capture bandwidth(use the values in enum nl80211_chan_width) 1 - 20MHZ 2 - 40MHZ 3 - 80MHZ method: Method used by hardware to collect the CFR dump 0 - from the ACKs of QOS NULL packets 1 - from the ACKs of QOS NULL packets with phase 2 - from the ACK of probe response packet periodicity: Periodicity in ms at which CFR dump need to be collect 0 - single shot capture non zero - for Periodic captures mac_addr: mac address of the peer for which CFR capture is requested. Signed-off-by: Venkateswara Naralasetty --- v2: * Updated the commit log. include/uapi/linux/nl80211-vnd-qca.h | 104 +++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 include/uapi/linux/nl80211-vnd-qca.h diff --git a/include/uapi/linux/nl80211-vnd-qca.h b/include/uapi/linux/nl80211-vnd-qca.h new file mode 100644 index 0000000..3c1158d --- /dev/null +++ b/include/uapi/linux/nl80211-vnd-qca.h @@ -0,0 +1,104 @@ +/* SPDX-License-Identifier: ISC */ +/* + * Qualcomm Atheros OUI and vendor specific assignments + * Copyright (c) 2014-2017, Qualcomm Atheros, Inc. + * Copyright (c) 2018-2020, The Linux Foundation + * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights + */ + +#ifndef _UAPI_NL80211_VND_QCA_H +#define _UAPI_NL80211_VND_QCA_H + + +/* Vendor id to be used in vendor specific command and events to user space + * NOTE: The authoritative place for definition of QCA_NL80211_VENDOR_ID, + * vendor subcmd definitions prefixed with QCA_NL80211_VENDOR_SUBCMD, and + * qca_wlan_vendor_attr is open source file src/common/qca-vendor.h in + * git://w1.fi/srv/git/hostap.git; the values here are just a copy of that + */ +#define OUI_QCA 0x001374 + +/** + * enum qca_nl80211_vendor_subcmds - QCA nl80211 vendor command identifiers + * @QCA_NL80211_VENDOR_SUBCMD_PEER_CFR_CAPTURE_CFG: This command is used to + * configure parameters per peer to capture Channel Frequency Response + * (CFR) and enable Periodic CFR capture. The attributes for this command + * are defined in enum qca_wlan_vendor_peer_cfr_capture_attr. This command + * can also be used to send CFR data from the driver to userspace when + * netlink events are used to send CFR data. + * + */ +enum qca_nl80211_vendor_subcmds { + QCA_NL80211_VENDOR_SUBCMD_PEER_CFR_CAPTURE_CFG = 173, +}; + +/** + * enum qca_wlan_vendor_cfr_method - QCA vendor CFR methods used by + * attribute QCA_WLAN_VENDOR_ATTR_PEER_CFR_METHOD as part of vendor + * command QCA_NL80211_VENDOR_SUBCMD_PEER_CFR_CAPTURE_CFG. + * @QCA_WLAN_VENDOR_CFR_METHOD_QOS_NULL: CFR method using QoS Null frame + * @QCA_WLAN_VENDOR_CFR_QOS_NULL_WITH_PHASE: CFR method using QoS Null frame + * with phase + * @QCA_WLAN_VENDOR_CFR_PROBE_RESPONSE: CFR method using Probe Response frame + */ +enum qca_wlan_vendor_cfr_method { + QCA_WLAN_VENDOR_CFR_METHOD_QOS_NULL = 0, + QCA_WLAN_VENDOR_CFR_QOS_NULL_WITH_PHASE = 1, + QCA_WLAN_VENDOR_CFR_PROBE_RESPONSE = 2, +}; + +/** + * enum qca_wlan_vendor_peer_cfr_capture_attr - Used by the vendor command + * QCA_NL80211_VENDOR_SUBCMD_PEER_CFR_CAPTURE_CFG to configure peer + * Channel Frequency Response capture parameters and enable periodic CFR + * capture. + * + * @QCA_WLAN_VENDOR_ATTR_CFR_PEER_MAC_ADDR: Optional (6-byte MAC address) + * MAC address of peer. This is for CFR version 1 only. + * + * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE: Required (flag) + * Enable peer CFR capture. This attribute is mandatory to enable peer CFR + * capture. If this attribute is not present, peer CFR capture is disabled. + * + * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_BANDWIDTH: Optional (u8) + * BW of measurement, attribute uses the values in enum nl80211_chan_width + * Supported values: 20, 40, 80, 80+80, 160. + * Note that all targets may not support all bandwidths. + * This attribute is mandatory for version 1 if attribute + * QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE is used. + * + * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_PERIODICITY: Optional (u32) + * Periodicity of CFR measurement in milliseconds. + * Periodicity should be a multiple of Base timer. + * Current Base timer value supported is 10 milliseconds (default). + * 0 for one shot capture. + * This attribute is mandatory for version 1 if attribute + * QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE is used. + * + * @QCA_WLAN_VENDOR_ATTR_PEER_CFR_METHOD: Optional (u8) + * Method used to capture Channel Frequency Response. + * Attribute uses the values defined in enum qca_wlan_vendor_cfr_method. + * This attribute is mandatory for version 1 if attribute + * QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE is used. + * + * @QCA_WLAN_VENDOR_ATTR_PERIODIC_CFR_CAPTURE_ENABLE: Optional (flag) + * Enable periodic CFR capture. + * This attribute is mandatory for version 1 to enable Periodic CFR capture. + * If this attribute is not present, periodic CFR capture is disabled. + */ +enum qca_wlan_vendor_peer_cfr_capture_attr { + QCA_WLAN_VENDOR_ATTR_PEER_CFR_CAPTURE_INVALID = 0, + QCA_WLAN_VENDOR_ATTR_CFR_PEER_MAC_ADDR = 1, + QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE = 2, + QCA_WLAN_VENDOR_ATTR_PEER_CFR_BANDWIDTH = 3, + QCA_WLAN_VENDOR_ATTR_PEER_CFR_PERIODICITY = 4, + QCA_WLAN_VENDOR_ATTR_PEER_CFR_METHOD = 5, + QCA_WLAN_VENDOR_ATTR_PERIODIC_CFR_CAPTURE_ENABLE = 6, + + /* Keep last */ + QCA_WLAN_VENDOR_ATTR_PEER_CFR_AFTER_LAST, + QCA_WLAN_VENDOR_ATTR_PEER_CFR_MAX = + QCA_WLAN_VENDOR_ATTR_PEER_CFR_AFTER_LAST - 1, +}; + +#endif /* QCA_VENDOR_H */ -- 2.7.4