mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-12-24 21:02:35 +00:00
Some checks failed
Build OpenWrt/uCentral images / build (cig_wf186h) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cig_wf186w) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cig_wf188n) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cig_wf189) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cig_wf196) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cybertan_eww631-a1) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cybertan_eww631-b1) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap101) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap102) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap104) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap105) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap111) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap112) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_oap101) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_oap101-6e) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_oap101e) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_oap101e-6e) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4x) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4x_2) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4x_3) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4x_w) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4xe) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4xi) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4xi_w) (push) Has been cancelled
Build OpenWrt/uCentral images / build (indio_um-305ax) (push) Has been cancelled
Build OpenWrt/uCentral images / build (sercomm_ap72tip) (push) Has been cancelled
Build OpenWrt/uCentral images / build (sonicfi_rap630c-311g) (push) Has been cancelled
Build OpenWrt/uCentral images / build (sonicfi_rap630w-211g) (push) Has been cancelled
Build OpenWrt/uCentral images / build (sonicfi_rap630w-311g) (push) Has been cancelled
Build OpenWrt/uCentral images / build (udaya_a6-id2) (push) Has been cancelled
Build OpenWrt/uCentral images / build (udaya_a6-od2) (push) Has been cancelled
Build OpenWrt/uCentral images / build (wallys_dr5018) (push) Has been cancelled
Build OpenWrt/uCentral images / build (wallys_dr6018) (push) Has been cancelled
Build OpenWrt/uCentral images / build (wallys_dr6018-v4) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_ax820) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_ax840) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_fap640) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_fap650) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_fap655) (push) Has been cancelled
Build OpenWrt/uCentral images / trigger-testing (push) Has been cancelled
Build OpenWrt/uCentral images / create-x64_vm-ami (push) Has been cancelled
Signed-off-by: John Crispin <john@phrozen.org>
885 lines
32 KiB
Diff
885 lines
32 KiB
Diff
From fec96953395a15f1cef9fdc34f110554fd34935c Mon Sep 17 00:00:00 2001
|
|
From: Nagarajan Maran <quic_nmaran@quicinc.com>
|
|
Date: Fri, 22 Dec 2023 16:13:49 +0530
|
|
Subject: [PATCH] wifi: iw: Removing the unassigned identifiers and their
|
|
functionalities.
|
|
|
|
Removing the unassigned identifiers and the functionalities associated
|
|
with them.
|
|
|
|
Signed-off-by: Nagarajan Maran <quic_nmaran@quicinc.com>
|
|
---
|
|
defqmap.c | 81 --------------
|
|
iw.h | 135 ------------------------
|
|
sawf.c | 292 ---------------------------------------------------
|
|
sawf_stats.c | 53 ----------
|
|
telemetry.c | 172 ------------------------------
|
|
5 files changed, 733 deletions(-)
|
|
|
|
diff --git a/defqmap.c b/defqmap.c
|
|
index e12dac0a29a2..d3dbeb7b9632 100644
|
|
--- a/defqmap.c
|
|
+++ b/defqmap.c
|
|
@@ -40,36 +40,7 @@ static int handle_default_q_map_req(struct nl80211_state *state,
|
|
struct nl_msg *msg, int argc, char **argv,
|
|
enum id_input id)
|
|
{
|
|
- struct nlattr *defqmap_attr;
|
|
- char *end;
|
|
- unsigned long value;
|
|
- char macaddr[MAC_ADDR_LEN] = {0};
|
|
-
|
|
- if (argc < 2 || argc > 2 || (argc%2) != 0)
|
|
- goto err;
|
|
-
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA);
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD,
|
|
- QCA_NL80211_VENDOR_SUBCMD_SAWF_DEF_Q_MAP);
|
|
-
|
|
- defqmap_attr = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA);
|
|
- if (!defqmap_attr)
|
|
- return -ENOBUFS;
|
|
-
|
|
- errno = 0;
|
|
- value = strtoul(argv[0], &end, 10);
|
|
- if (*end != '\0' || value > MAX_RANGE(uint8_t) || errno == ERANGE)
|
|
- goto err;
|
|
-
|
|
- strlcpy(macaddr, argv[1], MAC_ADDR_LEN);
|
|
-
|
|
- nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_SAWF_DEF_Q_MAP_SVC_ID, value);
|
|
- nla_put(msg, QCA_WLAN_VENDOR_ATTR_SAWF_DEF_Q_MAP_MAC_ADDR, MAC_ADDR_LEN, macaddr);
|
|
-
|
|
- nla_nest_end(msg, defqmap_attr);
|
|
return 0;
|
|
-err:
|
|
- return -EINVAL;
|
|
}
|
|
|
|
COMMAND(defqmap, map, "<service_id> <macaddr>", NL80211_CMD_VENDOR, 0, CIB_NETDEV, handle_default_q_map_req, ".");
|
|
@@ -78,68 +49,16 @@ static int handle_default_q_unmap_req(struct nl80211_state *state,
|
|
struct nl_msg *msg, int argc, char **argv,
|
|
enum id_input id)
|
|
{
|
|
- struct nlattr *defqmap_attr;
|
|
- char *end;
|
|
- unsigned long value;
|
|
- char macaddr[MAC_ADDR_LEN] = {0};
|
|
-
|
|
- if (argc < 2 || argc > 2 || (argc%2) != 0)
|
|
- goto err;
|
|
-
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA);
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD,
|
|
- QCA_NL80211_VENDOR_SUBCMD_SAWF_DEF_Q_UNMAP);
|
|
-
|
|
- defqmap_attr = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA);
|
|
- if (!defqmap_attr)
|
|
- return -ENOBUFS;
|
|
-
|
|
- errno = 0;
|
|
- value = strtoul(argv[0], &end, 10);
|
|
- if (*end != '\0' || value > MAX_RANGE(uint8_t) || errno == ERANGE)
|
|
- goto err;
|
|
-
|
|
- strlcpy(macaddr, argv[1], MAC_ADDR_LEN);
|
|
-
|
|
- nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_SAWF_DEF_Q_MAP_SVC_ID, value);
|
|
- nla_put(msg, QCA_WLAN_VENDOR_ATTR_SAWF_DEF_Q_MAP_MAC_ADDR, MAC_ADDR_LEN, macaddr);
|
|
-
|
|
- nla_nest_end(msg, defqmap_attr);
|
|
return 0;
|
|
-err:
|
|
- return -EINVAL;
|
|
}
|
|
|
|
COMMAND(defqmap, unmap, "<service_id> <macaddr>", NL80211_CMD_VENDOR, 0, CIB_NETDEV, handle_default_q_unmap_req, ".");
|
|
|
|
-
|
|
static int handle_default_q_map_report(struct nl80211_state *state,
|
|
struct nl_msg *msg, int argc, char **argv,
|
|
enum id_input id)
|
|
{
|
|
- struct nlattr *defqmap_attr;
|
|
- char macaddr[MAC_ADDR_LEN] = {0};
|
|
-
|
|
- if (argc < 1 || argc > 1)
|
|
- goto err;
|
|
-
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA);
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD,
|
|
- QCA_NL80211_VENDOR_SUBCMD_SAWF_DEF_Q_MAP_REP);
|
|
-
|
|
- defqmap_attr = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA);
|
|
- if (!defqmap_attr)
|
|
- return -ENOBUFS;
|
|
-
|
|
- errno = 0;
|
|
- strlcpy(macaddr, argv[0], MAC_ADDR_LEN);
|
|
-
|
|
- nla_put(msg, QCA_WLAN_VENDOR_ATTR_SAWF_DEF_Q_MAP_MAC_ADDR, MAC_ADDR_LEN, macaddr);
|
|
-
|
|
- nla_nest_end(msg, defqmap_attr);
|
|
return 0;
|
|
-err:
|
|
- return -EINVAL;
|
|
}
|
|
|
|
COMMAND(defqmap, report, "<macaddr>", NL80211_CMD_VENDOR, 0, CIB_NETDEV, handle_default_q_map_report, ".");
|
|
diff --git a/iw.h b/iw.h
|
|
index 00172695e062..1327c7f5f1ee 100644
|
|
--- a/iw.h
|
|
+++ b/iw.h
|
|
@@ -70,18 +70,6 @@ enum id_input {
|
|
};
|
|
|
|
enum qca_nl80211_vendor_subcmds {
|
|
- QCA_NL80211_VENDOR_SUBCMD_ROAM_EVENTS = 203,
|
|
- QCA_NL80211_VENDOR_SUBCMD_SVC_CREATE = 204,
|
|
- QCA_NL80211_VENDOR_SUBCMD_SVC_DISABLE = 205,
|
|
- QCA_NL80211_VENDOR_SUBCMD_SVC_VIEW = 206,
|
|
- QCA_NL80211_VENDOR_SUBCMD_SAWF_DEF_Q_MAP = 207,
|
|
- QCA_NL80211_VENDOR_SUBCMD_SAWF_DEF_Q_UNMAP = 208,
|
|
- QCA_NL80211_VENDOR_SUBCMD_SAWF_DEF_Q_MAP_REP = 209,
|
|
- QCA_NL80211_VENDOR_SUBCMD_TELEMETRY_SLA_THERSHOLD_CFG = 210,
|
|
- QCA_NL80211_VENDOR_SUBCMD_TELEMETRY_SLA_SAMPLES_COLLECTION_CFG = 211,
|
|
- QCA_NL80211_VENDOR_SUBCMD_TELEMETRY_SLA_BREACH_DETECTION_CFG = 212,
|
|
- QCA_NL80211_VENDOR_SUBCMD_SAWF_STREAMING_STATS = 213,
|
|
- QCA_NL80211_VENDOR_SUBCMD_SAWF_SLA_BREACH = 214,
|
|
QCA_NL80211_VENDOR_SUBCMD_TELEMETRY_GETSTATS = 334,
|
|
};
|
|
/* Attributes for data used by
|
|
@@ -97,129 +85,6 @@ enum qca_wlan_vendor_attr_config {
|
|
QCA_WLAN_VENDOR_ATTR_CONFIG_AFTER_LAST - 1,
|
|
};
|
|
|
|
-enum ath12k_vendor_attr_sawf_streaming {
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_STREAMING_INVALID = 0,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_STREAMING_BASIC_STATS = 1,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_STREAMING_EXTND_STATS = 2,
|
|
- QCA_WLAN_VENDOR_ATTR_MLO_LINK_ID = 3,
|
|
- /* keep last */
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_STREAMING_AFTER_LAST,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_STREAMING_MAX =
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_STREAMING_AFTER_LAST - 1,
|
|
-};
|
|
-
|
|
-enum ath12k_vendor_attr_sawf_def_q_map {
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_DEF_Q_MAP_INVALID = 0,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_DEF_Q_MAP_SVC_ID = 1,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_DEF_Q_MAP_MAC_ADDR = 2,
|
|
-
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_DEF_Q_MAP_AFTER_LAST,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_DEF_Q_MAP_MAX =
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_DEF_Q_MAP_AFTER_LAST - 1,
|
|
-};
|
|
-
|
|
-enum qca_wlan_vendor_sawf_attr_config {
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SERVICE_CLASSES = 1,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SVC_ID,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SVC_APP_NAME,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MIN_TP,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MAX_TP,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SVC_BURST_SIZE,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SVC_INTERVAL,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SVC_DELAY_BOUND,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MSDU_TTL,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SVC_PRIO,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SVC_TID,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MSDU_RATE_LOSS,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_SVC_INTERVAL,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MIN_TPUT,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MAX_LATENCY,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_BURST_SIZE,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_OFDMA_DISABLE,
|
|
- QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MU_MIMO_DISABLE,
|
|
-
|
|
- /* keep last */
|
|
- QCA_WLAN_VENDOR_SAWF_ATTR_CONFIG_AFTER_LAST,
|
|
- QCA_WLAN_VENDOR_SAWF_ATTR_CONFIG_MAX =
|
|
- QCA_WLAN_VENDOR_SAWF_ATTR_CONFIG_AFTER_LAST - 1,
|
|
-};
|
|
-
|
|
-enum qca_wlan_vendor_attr_telemetry_sawf_sla_samples_config {
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_MOVING_AVG_PKT = 1,
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_MOVING_AVG_WIN,
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_NUM_PKT,
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_TIME_SEC,
|
|
-
|
|
- /* keep last */
|
|
- QCA_WLAN_VENDOR_TELEMETRY_SLA_SAMPLES_CFG_ATTR_AFTER_LAST,
|
|
- QCA_WLAN_VENDOR_TELEMETRY_SLA_SAMPLES_CFG_ATTR_CONFIG_MAX =
|
|
- QCA_WLAN_VENDOR_TELEMETRY_SLA_SAMPLES_CFG_ATTR_AFTER_LAST - 1,
|
|
-};
|
|
-
|
|
-enum qca_wlan_vendor_attr_telemetry_sawf_sla_detect_config {
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_DETECTION_PARAM = 1,
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_DETECT_MIN_TP,
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_DETECT_MAX_TP,
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_DETECT_BURST_SIZE,
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_DETECT_INTERVAL,
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_DETECT_DELAY_BOUND,
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_DETECT_MSDU_TTL,
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_DETECT_MSDU_RATE_LOSS,
|
|
-
|
|
- /* keep last */
|
|
- QCA_WLAN_VENDOR_TELEMETRY_SLA_DETECT_AFTER_LAST,
|
|
- QCA_WLAN_VENDOR_TELEMETRY_SLA_DETECT_ATTR_CONFIG_MAX =
|
|
- QCA_WLAN_VENDOR_TELEMETRY_SLA_DETECT_AFTER_LAST - 1,
|
|
-
|
|
-};
|
|
-
|
|
-enum qca_wlan_vendor_attr_telemetry_sawf_sla_thershold_config {
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_THERSHOLD_SVC_ID = 1,
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_THERSHOLD_MIN_TP,
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_THERSHOLD_MAX_TP,
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_THERSHOLD_BURST_SIZE,
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_THERSHOLD_INTERVAL,
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_THERSHOLD_DELAY_BOUND,
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_THERSHOLD_MSDU_TTL,
|
|
- QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_THERSHOLD_MSDU_RATE_LOSS,
|
|
-
|
|
- /* keep last */
|
|
- QCA_WLAN_VENDOR_TELEMETRY_SLA_THERSHOLD_CFG_AFTER_LAST,
|
|
- QCA_WLAN_VENDOR_TELEMETRY_SLA_THERSHOLD_CFG_ATTR_CONFIG_MAX =
|
|
- QCA_WLAN_VENDOR_TELEMETRY_SLA_THERSHOLD_CFG_AFTER_LAST - 1,
|
|
-};
|
|
-
|
|
-/**
|
|
- * enum qca_wlan_vendor_attr_sawf_sla_params - This enum defines
|
|
- * attributes required for QCA_NL80211_VENDOR_SUBCMD_SAWF_SLA_BREACH
|
|
- * Used to send sla clear event to driver.
|
|
- *
|
|
- * @QCA_WLAN_VENDOR_ATTR_SLA_PEER_MAC: Unsigned 8-bit array
|
|
- * of size 6, representing peer mac address.
|
|
- * @QCA_WLAN_VENDOR_ATTR_SLA_SVC_ID: Unsigned 8-bit representing service ID
|
|
- * @QCA_WLAN_VENDOR_ATTR_SLA_PARAM: Unsigned 8-bit indicaing service class
|
|
- * from qca_vendor_attr_sla_param_type
|
|
- * @QCA_WLAN_VENDOR_ATTR_SLA_PEER_MLD_MAC: Unsigned 8-bit array
|
|
- * of size 6, representing peer mld mac address. Filled only for ML capable
|
|
- * peers
|
|
- * @QCA_WLAN_VENDOR_ATTR_SLA_AC: Unsigned 8-bit representing AC for breach
|
|
- *
|
|
- */
|
|
-enum qca_wlan_vendor_attr_sawf_sla_params {
|
|
- QCA_WLAN_VENDOR_ATTR_SLA_INVALID = 0,
|
|
- QCA_WLAN_VENDOR_ATTR_SLA_PEER_MAC = 1,
|
|
- QCA_WLAN_VENDOR_ATTR_SLA_SVC_ID = 2,
|
|
- QCA_WLAN_VENDOR_ATTR_SLA_PARAM = 3,
|
|
- QCA_WLAN_VENDOR_ATTR_SLA_SET_CLEAR = 4,
|
|
- QCA_WLAN_VENDOR_ATTR_SLA_PEER_MLD_MAC = 5,
|
|
- QCA_WLAN_VENDOR_ATTR_SLA_AC = 6,
|
|
-
|
|
- /* Keep last */
|
|
- QCA_WLAN_VENDOR_ATTR_SLA_AFTER_LAST,
|
|
- QCA_WLAN_VENDOR_ATTR_SLA_MAX =
|
|
- QCA_WLAN_VENDOR_ATTR_SLA_AFTER_LAST - 1
|
|
-};
|
|
-
|
|
#define HANDLER_RET_USAGE 1
|
|
#define HANDLER_RET_DONE 3
|
|
|
|
diff --git a/sawf.c b/sawf.c
|
|
index 2fe2be08c86f..653e15b86a36 100644
|
|
--- a/sawf.c
|
|
+++ b/sawf.c
|
|
@@ -50,139 +50,7 @@ static int handle_service_class_create(struct nl80211_state *state,
|
|
struct nl_msg *msg, int argc,
|
|
char **argv, enum id_input id)
|
|
{
|
|
- struct nlattr *service_class;
|
|
- char app_name[APP_NAME_MAX_BYTES];
|
|
- int parsed = 0, param_count;
|
|
- char *end;
|
|
- unsigned long value;
|
|
- char service_check[MAX_OPTIONAL_STRINGS][MAX_STRING_SIZE] = {"min_tput",
|
|
- "max_tput",
|
|
- "burst_size",
|
|
- "service_interval",
|
|
- "delay_bound",
|
|
- "msdu_ttl",
|
|
- "priority",
|
|
- "tid",
|
|
- "msdu_loss",
|
|
- "ul_service_interval",
|
|
- "ul_min_tput",
|
|
- "ul_max_latency",
|
|
- "ul_burst_size",
|
|
- "ul_ofdma_disable",
|
|
- "ul_mu_mimo_disable"};
|
|
-
|
|
- if (argc < SVC_CREATE_MIN_ARGUMENTS || argc > SVC_CREATE_MAX_ARGUMENTS ||
|
|
- (argc % SVC_CREATE_MIN_ARGUMENTS) != 0)
|
|
- goto err;
|
|
-
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA);
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD,
|
|
- QCA_NL80211_VENDOR_SUBCMD_SVC_CREATE);
|
|
-
|
|
- service_class = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA);
|
|
- if (!service_class)
|
|
- return -ENOBUFS;
|
|
-
|
|
- errno = 0;
|
|
- value = strtoul(argv[0], &end, 10);
|
|
- if (*end != '\0' || value > MAX_RANGE(uint8_t) || errno == ERANGE)
|
|
- goto err;
|
|
-
|
|
- strlcpy(app_name, argv[1], APP_NAME_MAX_BYTES);
|
|
-
|
|
- nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_ID, value);
|
|
- nla_put(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_APP_NAME, sizeof(app_name), app_name);
|
|
-
|
|
- parsed += 2;
|
|
-
|
|
- for (errno = 0; parsed < argc; parsed += 2, errno = 0) {
|
|
- value = strtoul(argv[parsed + 1], &end, 10);
|
|
- if (*end != '\0' || value > MAX_RANGE(uint32_t) || errno == ERANGE)
|
|
- goto err;
|
|
-
|
|
- for (param_count = 0; param_count < MAX_OPTIONAL_STRINGS;
|
|
- param_count++) {
|
|
- if (!strcmp(argv[parsed], service_check[param_count]))
|
|
- break;
|
|
- }
|
|
-
|
|
- if (param_count == MAX_OPTIONAL_STRINGS)
|
|
- goto err;
|
|
-
|
|
- switch (param_count + QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MIN_TP) {
|
|
- case QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MIN_TP:
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MIN_TP, value);
|
|
- break;
|
|
- case QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MAX_TP:
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MAX_TP, value);
|
|
- break;
|
|
- case QCA_WLAN_VENDOR_ATTR_SAWF_SVC_BURST_SIZE:
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_BURST_SIZE, value);
|
|
- break;
|
|
- case QCA_WLAN_VENDOR_ATTR_SAWF_SVC_INTERVAL:
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_INTERVAL, value);
|
|
- break;
|
|
- case QCA_WLAN_VENDOR_ATTR_SAWF_SVC_DELAY_BOUND:
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_DELAY_BOUND,
|
|
- value);
|
|
- break;
|
|
- case QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MSDU_TTL:
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MSDU_TTL, value);
|
|
- break;
|
|
- case QCA_WLAN_VENDOR_ATTR_SAWF_SVC_PRIO:
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_PRIO, value);
|
|
- break;
|
|
- case QCA_WLAN_VENDOR_ATTR_SAWF_SVC_TID:
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_TID, value);
|
|
- break;
|
|
- case QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MSDU_RATE_LOSS:
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MSDU_RATE_LOSS,
|
|
- value);
|
|
- break;
|
|
- case QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_SVC_INTERVAL:
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_SVC_INTERVAL,
|
|
- value);
|
|
- break;
|
|
- case QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MIN_TPUT:
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MIN_TPUT,
|
|
- value);
|
|
- break;
|
|
- case QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MAX_LATENCY:
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MAX_LATENCY,
|
|
- value);
|
|
- break;
|
|
- case QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_BURST_SIZE:
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_BURST_SIZE,
|
|
- value);
|
|
- break;
|
|
- case QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_OFDMA_DISABLE:
|
|
- nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_OFDMA_DISABLE,
|
|
- value);
|
|
- break;
|
|
- case QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MU_MIMO_DISABLE:
|
|
- nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MU_MIMO_DISABLE,
|
|
- value);
|
|
- break;
|
|
- }
|
|
- }
|
|
-
|
|
- nla_nest_end(msg, service_class);
|
|
return 0;
|
|
-err:
|
|
- printf("Invalid SAWF service class command format: Usage\n");
|
|
- printf("\t iw phy <phyname> service_class create <service_id> <app_name> ");
|
|
- printf("[min_tput <min_thruput_rate>] [max_tput <max_thruput_rate>] ");
|
|
- printf("[burst_size <burst_size>] [service_interval <service_interval>] ");
|
|
- printf("[delay_bound <delay_bound>] [msdu_ttl <msdu_ttl>] ");
|
|
- printf("[priority <priority>] [tid <tid>] [msdu_loss <msdu_rate_loss>]\n");
|
|
- printf("[ul_service_interval <ul_service_interval>]\n");
|
|
- printf("[ul_min_tput <ul_min_tput>]\n");
|
|
- printf("[ul_max_latency <ul_max_latency>]\n");
|
|
- printf("[ul_burst_size <ul_burst_size>]\n");
|
|
- printf("[ul_ofdma_disable <ul_ofdma_disable>]\n");
|
|
- printf("[ul_mu_mimo_disable <ul_mu_mimo_disable>]\n");
|
|
-
|
|
- return -EINVAL;
|
|
}
|
|
|
|
COMMAND(service_class, create, "<service_id> <app_name> [min_tput <min_thruput_rate>]"
|
|
@@ -200,35 +68,7 @@ static int handle_service_class_disable(struct nl80211_state *state,
|
|
struct nl_msg *msg, int argc,
|
|
char **argv, enum id_input id)
|
|
{
|
|
- struct nlattr *service_class;
|
|
- unsigned long value;
|
|
- char *end;
|
|
-
|
|
- if (argc != SVC_DISABLE_MAX_ARGUMENTS)
|
|
- goto err;
|
|
-
|
|
- errno = 0;
|
|
- value = strtoul(argv[0], &end, 10);
|
|
- if (*end != '\0' || value > MAX_RANGE(uint8_t) || errno == ERANGE)
|
|
- goto err;
|
|
-
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA);
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD,
|
|
- QCA_NL80211_VENDOR_SUBCMD_SVC_DISABLE);
|
|
-
|
|
- service_class = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA);
|
|
- if (!service_class)
|
|
- return -ENOBUFS;
|
|
-
|
|
- nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_ID, value);
|
|
-
|
|
- nla_nest_end(msg, service_class);
|
|
return 0;
|
|
-
|
|
-err:
|
|
- printf("Invalid SAWF service class command format: Usage\n");
|
|
- printf("\t iw phy <phyname> service_class disable <service_id>\n");
|
|
- return -EINVAL;
|
|
}
|
|
|
|
COMMAND(service_class, disable, "<service_id>", NL80211_CMD_VENDOR, 0, CIB_PHY,
|
|
@@ -236,106 +76,6 @@ COMMAND(service_class, disable, "<service_id>", NL80211_CMD_VENDOR, 0, CIB_PHY,
|
|
|
|
static int print_sawf_service_classes(struct nl_msg *msg, void *arg)
|
|
{
|
|
- struct nlattr *tb_msg[NL80211_ATTR_MAX + 1];
|
|
- struct nlattr *sawf_service_classes;
|
|
- struct nlattr *sawf_service_class;
|
|
- struct nlattr *attrs[QCA_WLAN_VENDOR_SAWF_ATTR_CONFIG_MAX + 1];
|
|
- struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg));
|
|
- int sawf_service_classes_len = 0;
|
|
- char *app_name = NULL;
|
|
- static struct nla_policy sawf_policy[QCA_WLAN_VENDOR_SAWF_ATTR_CONFIG_MAX + 1] = {
|
|
- [QCA_WLAN_VENDOR_ATTR_SAWF_SVC_ID] = {.type = NLA_U8},
|
|
- [QCA_WLAN_VENDOR_ATTR_SAWF_SVC_APP_NAME] = {.type = NLA_STRING},
|
|
- [QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MIN_TP] = {.type = NLA_U32},
|
|
- [QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MAX_TP] = {.type = NLA_U32},
|
|
- [QCA_WLAN_VENDOR_ATTR_SAWF_SVC_BURST_SIZE] = {.type = NLA_U32},
|
|
- [QCA_WLAN_VENDOR_ATTR_SAWF_SVC_INTERVAL] = {.type = NLA_U32},
|
|
- [QCA_WLAN_VENDOR_ATTR_SAWF_SVC_DELAY_BOUND] = {.type = NLA_U32},
|
|
- [QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MSDU_TTL] = {.type = NLA_U32},
|
|
- [QCA_WLAN_VENDOR_ATTR_SAWF_SVC_PRIO] = {.type = NLA_U32},
|
|
- [QCA_WLAN_VENDOR_ATTR_SAWF_SVC_TID] = {.type = NLA_U32},
|
|
- [QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MSDU_RATE_LOSS] = {.type = NLA_U32},
|
|
- [QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_SVC_INTERVAL] = {.type = NLA_U32},
|
|
- [QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MIN_TPUT] = {.type = NLA_U32},
|
|
- [QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MAX_LATENCY] = {.type = NLA_U32},
|
|
- [QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_BURST_SIZE] = {.type = NLA_U32},
|
|
- [QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_OFDMA_DISABLE] = {.type = NLA_U8},
|
|
- [QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MU_MIMO_DISABLE] = {.type = NLA_U8},
|
|
- };
|
|
-
|
|
- nla_parse(tb_msg, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0),
|
|
- genlmsg_attrlen(gnlh, 0), NULL);
|
|
-
|
|
- if (tb_msg[NL80211_ATTR_VENDOR_DATA]) {
|
|
- sawf_service_classes = nla_data(tb_msg[NL80211_ATTR_VENDOR_DATA]);
|
|
- sawf_service_classes_len = nla_len(tb_msg[NL80211_ATTR_VENDOR_DATA]);
|
|
- }
|
|
- else
|
|
- return NL_SKIP;
|
|
-
|
|
- if (nla_type(sawf_service_classes) != QCA_WLAN_VENDOR_ATTR_SAWF_SERVICE_CLASSES )
|
|
- return NL_SKIP;
|
|
-
|
|
- nla_for_each_nested(sawf_service_class, sawf_service_classes,
|
|
- sawf_service_classes_len) {
|
|
- nla_parse_nested(attrs,
|
|
- QCA_WLAN_VENDOR_SAWF_ATTR_CONFIG_MAX,
|
|
- sawf_service_class, sawf_policy);
|
|
-
|
|
- printf("***********************************\n");
|
|
- if (attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_ID])
|
|
- printf("Service ID\t: %u\n",
|
|
- nla_get_u8(attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_ID]));
|
|
- if (attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_APP_NAME]) {
|
|
- app_name = nla_data(attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_APP_NAME]);
|
|
- printf("App Name\t: %s\n", app_name);
|
|
- }
|
|
- if (attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MIN_TP])
|
|
- printf("Min throughput\t: %u\n",
|
|
- nla_get_u32(attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MIN_TP]));
|
|
- if (attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MAX_TP])
|
|
- printf("Max throughput\t: %u\n",
|
|
- nla_get_u32(attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MAX_TP]));
|
|
- if (attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_BURST_SIZE])
|
|
- printf("Burst Size\t: %u\n",
|
|
- nla_get_u32(attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_BURST_SIZE]));
|
|
- if (attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_INTERVAL])
|
|
- printf("Service Interval: %u\n",
|
|
- nla_get_u32(attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_INTERVAL]));
|
|
- if (attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_DELAY_BOUND])
|
|
- printf("Delay Bound\t: %u\n",
|
|
- nla_get_u32(attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_DELAY_BOUND]));
|
|
- if (attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MSDU_TTL])
|
|
- printf("MSDU TTL\t: %u\n",
|
|
- nla_get_u32(attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MSDU_TTL]));
|
|
- if (attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_PRIO])
|
|
- printf("Priority\t: %u\n",
|
|
- nla_get_u32(attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_PRIO]));
|
|
- if (attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_TID])
|
|
- printf("TID\t\t: %u\n",
|
|
- nla_get_u32(attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_TID]));
|
|
- if (attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MSDU_RATE_LOSS])
|
|
- printf("MSDU Loss Rate\t: %u\n",
|
|
- nla_get_u32(attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_MSDU_RATE_LOSS]));
|
|
- if (attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_SVC_INTERVAL])
|
|
- printf("UL service interval\t: %u\n",
|
|
- nla_get_u32(attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_SVC_INTERVAL]));
|
|
- if (attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MIN_TPUT])
|
|
- printf("UL min throughput\t: %u\n",
|
|
- nla_get_u32(attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MIN_TPUT]));
|
|
- if (attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MAX_LATENCY])
|
|
- printf("UL max latency\t: %u\n",
|
|
- nla_get_u32(attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MAX_LATENCY]));
|
|
- if (attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_BURST_SIZE])
|
|
- printf("UL burst size\t: %u\n",
|
|
- nla_get_u32(attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_BURST_SIZE]));
|
|
- if (attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_OFDMA_DISABLE])
|
|
- printf("UL ofdma disable\t: %u\n",
|
|
- nla_get_u8(attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_OFDMA_DISABLE]));
|
|
- if (attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MU_MIMO_DISABLE])
|
|
- printf("UL mu mimo disable\t: %u\n",
|
|
- nla_get_u8(attrs[QCA_WLAN_VENDOR_ATTR_SAWF_SVC_UL_MU_MIMO_DISABLE]));
|
|
- }
|
|
return NL_SKIP;
|
|
}
|
|
|
|
@@ -343,39 +83,7 @@ static int handle_service_class_dump(struct nl80211_state *state,
|
|
struct nl_msg *msg, int argc,
|
|
char **argv, enum id_input id)
|
|
{
|
|
- struct nlattr *service_class;
|
|
- unsigned long value = 0;
|
|
- char *end;
|
|
-
|
|
- if (argc > SVC_VIEW_MAX_ARGUMENTS) {
|
|
- goto err;
|
|
- }
|
|
- else if (argc == SVC_VIEW_MAX_ARGUMENTS) {
|
|
- errno = 0;
|
|
- value = strtoul(argv[0], &end, 10);
|
|
- if (*end != '\0' || value > MAX_RANGE(uint8_t) || errno == ERANGE)
|
|
- goto err;
|
|
- }
|
|
-
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA);
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD,
|
|
- QCA_NL80211_VENDOR_SUBCMD_SVC_VIEW);
|
|
-
|
|
- service_class = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA);
|
|
- if (!service_class)
|
|
- return -ENOBUFS;
|
|
-
|
|
- if (argc)
|
|
- nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_SAWF_SVC_ID, value);
|
|
-
|
|
- nla_nest_end(msg, service_class);
|
|
-
|
|
- register_handler(print_sawf_service_classes, NULL);
|
|
return 0;
|
|
-err:
|
|
- printf("Invalid SAWF service class command format: Usage\n");
|
|
- printf("\t iw phy <phyname> service_class view [<service_id>]\n");
|
|
- return -EINVAL;
|
|
}
|
|
|
|
COMMAND(service_class, view, "[<service_id>]", NL80211_CMD_VENDOR, NLM_F_DUMP, CIB_PHY,
|
|
diff --git a/sawf_stats.c b/sawf_stats.c
|
|
index 13323e6d3cad..e922daba0600 100644
|
|
--- a/sawf_stats.c
|
|
+++ b/sawf_stats.c
|
|
@@ -44,60 +44,7 @@ static int handle_streaming_stats(struct nl80211_state *state,
|
|
struct nl_msg *msg, int argc, char **argv,
|
|
enum id_input id)
|
|
{
|
|
- struct nlattr *stats;
|
|
- unsigned long value;
|
|
- uint8_t basic_stats = 0, extnd_stats = 0, link_id;
|
|
- char *end;
|
|
-
|
|
- if (argc < STREAMING_STATS_MIN_ARGUMENTS ||
|
|
- argc > STREAMING_STATS_MAX_ARGUMENTS)
|
|
- goto err;
|
|
-
|
|
- errno = 0;
|
|
- value = strtoul(argv[0], &end, 10);
|
|
- if (*end != '\0' || value > STREAMING_STATS_MAX_VALUE || errno == ERANGE)
|
|
- goto err;
|
|
- argc--;
|
|
-
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA);
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD,
|
|
- QCA_NL80211_VENDOR_SUBCMD_SAWF_STREAMING_STATS);
|
|
-
|
|
- stats = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA);
|
|
- if (!stats)
|
|
- return -ENOBUFS;
|
|
-
|
|
- if (value & STREAMING_STATS_BASIC_EN_EXTND_DIS)
|
|
- basic_stats = 1;
|
|
- if (value & STREAMING_STATS_BASIC_DIS_EXTND_EN)
|
|
- extnd_stats = 1;
|
|
-
|
|
- nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_SAWF_STREAMING_BASIC_STATS, basic_stats);
|
|
- nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_SAWF_STREAMING_EXTND_STATS, extnd_stats);
|
|
-
|
|
- if (argc) {
|
|
- argc--;
|
|
- if (!strcmp(argv[1], "-l") || !argc)
|
|
- goto err;
|
|
- errno = 0;
|
|
- link_id = strtoul(argv[2], &end, 10);
|
|
- if (*end != '\0' || value > MAX_MLD_LINK || errno == ERANGE) {
|
|
- goto err;
|
|
- }
|
|
- nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_MLO_LINK_ID, link_id);
|
|
- }
|
|
-
|
|
- nla_nest_end(msg, stats);
|
|
return 0;
|
|
-
|
|
-err:
|
|
- printf("Invalid SAWF streaming stats command format: Usage\n");
|
|
- printf("iw dev <devname> streaming_stats configure <value> [-l <link_id>]\n");
|
|
- printf("\t value: 0 - Disable both Basic and Extended stats\n");
|
|
- printf("\t value: 1 - Enable Basic and Disable Extended stats\n");
|
|
- printf("\t value: 2 - Disable Basic and Enable Extended stats\n");
|
|
- printf("\t value: 3 - Enable both Basic and Extended stats\n");
|
|
- return -EINVAL;
|
|
}
|
|
|
|
COMMAND(streaming_stats, handle, "<value> [-l <link_id>]", NL80211_CMD_VENDOR, 0, CIB_NETDEV, handle_streaming_stats, ".");
|
|
diff --git a/telemetry.c b/telemetry.c
|
|
index 827ccb269b94..48b9f656f2ef 100644
|
|
--- a/telemetry.c
|
|
+++ b/telemetry.c
|
|
@@ -89,43 +89,7 @@ static int handle_telemetry_sawf_sla_samples_colletion_cfg
|
|
(struct nl80211_state *state, struct nl_msg *msg,
|
|
int argc, char **argv, enum id_input id)
|
|
{
|
|
- struct nlattr *telemetry_cfg;
|
|
- char *end;
|
|
- struct telemetry_sawf_generic_param telemetry_param;
|
|
-
|
|
- if (argc != TELEMETRY_SLA_SAMPLES_CONFIG_NUM_OF_PARAMS)
|
|
- goto err;
|
|
-
|
|
- telemetry_param.moving_avg_pkt = strtoul(argv[0], &end, 10);
|
|
- telemetry_param.moving_avg_win = strtoul(argv[1], &end, 10);
|
|
- telemetry_param.sla_num_pkt = strtoul(argv[2], &end, 10);
|
|
- telemetry_param.sla_time_sec = strtoul(argv[3], &end, 10);
|
|
-
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA);
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD,
|
|
- QCA_NL80211_VENDOR_SUBCMD_TELEMETRY_SLA_SAMPLES_COLLECTION_CFG);
|
|
-
|
|
- telemetry_cfg = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA);
|
|
- if (!telemetry_cfg)
|
|
- return -ENOBUFS;
|
|
-
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_MOVING_AVG_PKT,
|
|
- telemetry_param.moving_avg_pkt);
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_MOVING_AVG_WIN,
|
|
- telemetry_param.moving_avg_win);
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_NUM_PKT,
|
|
- telemetry_param.sla_num_pkt);
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_TIME_SEC,
|
|
- telemetry_param.sla_time_sec);
|
|
-
|
|
- nla_nest_end(msg, telemetry_cfg);
|
|
-
|
|
return 0;
|
|
-
|
|
-err:
|
|
- printf("invalid telemetry sla samples configuration command format: Usage\n");
|
|
- printf("\t iw phy <phyname> telemetry sla_samples_cfg <moving_avg_pkt> <moving_avg_window> <sla_num_pkt> <sla_time_sec>\n");
|
|
- return -EINVAL;
|
|
}
|
|
|
|
COMMAND(telemetry, sla_samples_cfg, "<moving_avg_pkt> <moving_avg_window>"
|
|
@@ -136,56 +100,7 @@ static int handle_telemetry_sawf_sla_thershold_cfg(struct nl80211_state *state,
|
|
struct nl_msg *msg, int argc, char **argv,
|
|
enum id_input id)
|
|
{
|
|
- struct nlattr *telemetry_cfg;
|
|
- char *end;
|
|
- struct telemetry_sawf_sla_thershold sla_thershold_cfg;
|
|
-
|
|
- if (argc != TELEMETRY_SLA_THERSHOLD_CONFIG_NUM_OF_PARAMS)
|
|
- goto err;
|
|
-
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA);
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD,
|
|
- QCA_NL80211_VENDOR_SUBCMD_TELEMETRY_SLA_THERSHOLD_CFG);
|
|
-
|
|
- telemetry_cfg = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA);
|
|
- if (!telemetry_cfg)
|
|
- return -ENOBUFS;
|
|
-
|
|
- sla_thershold_cfg.svc_id = strtoul(argv[0], &end, 10);
|
|
- sla_thershold_cfg.min_throughput_rate = strtoul(argv[1], &end, 10);
|
|
- sla_thershold_cfg.max_throughput_rate = strtoul(argv[2], &end, 10);
|
|
- sla_thershold_cfg.burst_size = strtoul(argv[3], &end, 10);
|
|
- sla_thershold_cfg.service_interval = strtoul(argv[4], &end, 10);
|
|
- sla_thershold_cfg.delay_bound = strtoul(argv[5], &end, 10);
|
|
- sla_thershold_cfg.msdu_ttl = strtoul(argv[6], &end, 10);
|
|
- sla_thershold_cfg.msdu_rate_loss = strtoul(argv[7], &end, 10);
|
|
-
|
|
-
|
|
- nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_THERSHOLD_SVC_ID,
|
|
- sla_thershold_cfg.svc_id);
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_THERSHOLD_MIN_TP,
|
|
- sla_thershold_cfg.min_throughput_rate);
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_THERSHOLD_MAX_TP,
|
|
- sla_thershold_cfg.max_throughput_rate);
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_THERSHOLD_BURST_SIZE,
|
|
- sla_thershold_cfg.burst_size);
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_THERSHOLD_INTERVAL,
|
|
- sla_thershold_cfg.service_interval);
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_THERSHOLD_DELAY_BOUND,
|
|
- sla_thershold_cfg.delay_bound);
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_THERSHOLD_MSDU_TTL,
|
|
- sla_thershold_cfg.msdu_ttl);
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_THERSHOLD_MSDU_RATE_LOSS,
|
|
- sla_thershold_cfg.msdu_rate_loss);
|
|
- nla_nest_end(msg, telemetry_cfg);
|
|
return 0;
|
|
-
|
|
-err:
|
|
- printf("invalid telemetry sla thershold configuration command format: Usage\n");
|
|
- printf("\t iw phy <phyname> telemetry sla_thershold <service_id> ");
|
|
- printf(" <min_throughput_rate> <max_throughput_rate> <burst_size> <service_interval> ");
|
|
- printf(" <delay_bound> <msdu_ttl> <msdu_rate_loss> \n");
|
|
- return -EINVAL;
|
|
}
|
|
|
|
COMMAND(telemetry, sla_thershold, "<service_id> <min_throughput_rate> <max_throughput_rate>"
|
|
@@ -197,66 +112,7 @@ static int handle_telemetry_sawf_sla_detection_cfg(struct nl80211_state *state,
|
|
struct nl_msg *msg, int argc, char **argv,
|
|
enum id_input id)
|
|
{
|
|
- struct nlattr *telemetry_cfg;
|
|
- char *end;
|
|
- struct telemetry_sawf_sla_detect_param telemetry_param;
|
|
-
|
|
- if (argc != TELEMETRY_SLA_DETECTION_CONFIG_NUM_OF_PARAMS)
|
|
- goto err;
|
|
-
|
|
- if (streq(argv[0], "num_packet"))
|
|
- telemetry_param.sla_detect = SLA_DETECT_NUM_PACKET;
|
|
-
|
|
- if (streq(argv[0], "per_second"))
|
|
- telemetry_param.sla_detect = SLA_DETECT_PER_SECOND;
|
|
-
|
|
- if (streq(argv[0], "moving_avg"))
|
|
- telemetry_param.sla_detect = SLA_DETECT_MOV_AVG;
|
|
-
|
|
- if (streq(argv[0], "num_second"))
|
|
- telemetry_param.sla_detect = SLA_DETECT_NUM_SECOND;
|
|
-
|
|
- telemetry_param.min_throughput_rate = strtoul(argv[1], &end, 10);
|
|
- telemetry_param.max_throughput_rate = strtoul(argv[2], &end, 10);
|
|
- telemetry_param.burst_size = strtoul(argv[3], &end, 10);
|
|
- telemetry_param.service_interval = strtoul(argv[4], &end, 10);
|
|
- telemetry_param.delay_bound = strtoul(argv[5], &end, 10);
|
|
- telemetry_param.msdu_ttl = strtoul(argv[6], &end, 10);
|
|
- telemetry_param.msdu_rate_loss = strtoul(argv[7], &end, 10);
|
|
-
|
|
-
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA);
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD,
|
|
- QCA_NL80211_VENDOR_SUBCMD_TELEMETRY_SLA_BREACH_DETECTION_CFG);
|
|
-
|
|
- telemetry_cfg = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA);
|
|
- if (!telemetry_cfg)
|
|
- return -ENOBUFS;
|
|
-
|
|
- nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_DETECTION_PARAM,
|
|
- telemetry_param.sla_detect);
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_DETECT_MIN_TP,
|
|
- telemetry_param.min_throughput_rate);
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_DETECT_MAX_TP,
|
|
- telemetry_param.max_throughput_rate);
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_DETECT_BURST_SIZE,
|
|
- telemetry_param.burst_size);
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_DETECT_INTERVAL,
|
|
- telemetry_param.service_interval);
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_DETECT_DELAY_BOUND,
|
|
- telemetry_param.delay_bound);
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_DETECT_MSDU_TTL,
|
|
- telemetry_param.msdu_ttl);
|
|
- nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TELEMETRY_SLA_DETECT_MSDU_RATE_LOSS,
|
|
- telemetry_param.msdu_rate_loss);
|
|
- nla_nest_end(msg, telemetry_cfg);
|
|
-
|
|
return 0;
|
|
-
|
|
-err:
|
|
- printf("invalid telemetry sla breach detection configuration command format: Usage\n");
|
|
- printf("\t iw phy <phyname> telemetry sla_detection_cfg <detection_option> <min_throughput_rate> <max_throughput_rate> <burst_size> <service_interval> <delay_bound> <msdu_ttl> <msdu_rate_loss>\n");
|
|
- return -EINVAL;
|
|
}
|
|
|
|
COMMAND(telemetry, sla_detection_cfg, "<detection_option> <min_throughput_rate>"
|
|
@@ -271,35 +127,7 @@ static int handle_telemetry_sla_clear_stats(struct nl80211_state *state,
|
|
struct nl_msg *msg, int argc, char **argv,
|
|
enum id_input id)
|
|
{
|
|
- struct nlattr *sla_clear;
|
|
- unsigned char mac_addr[MAC_ADDR_LEN];
|
|
-
|
|
- if (argc != TELEMETRY_SLA_CLEAR_STATS_MAX_ARG)
|
|
- goto err;
|
|
-
|
|
- if (mac_addr_a2n(mac_addr, argv[0])) {
|
|
- printf("Invalid MAC address\n");
|
|
- return -EINVAL;
|
|
- }
|
|
-
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA);
|
|
- nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD,
|
|
- QCA_NL80211_VENDOR_SUBCMD_SAWF_SLA_BREACH);
|
|
-
|
|
- sla_clear = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA);
|
|
- if (!sla_clear)
|
|
- return -ENOBUFS;
|
|
-
|
|
- if (nla_put(msg, QCA_WLAN_VENDOR_ATTR_SLA_PEER_MAC,
|
|
- ETH_ALEN, mac_addr))
|
|
- return -ENOBUFS;
|
|
-
|
|
- nla_nest_end(msg, sla_clear);
|
|
return NL_OK;
|
|
-err:
|
|
- printf("Invalid telemetry sla clear stats, command format: Usage\n");
|
|
- printf("\t iw dev <devname> telemetry sla_clear_stats <peer_mac>\n");
|
|
- return NL_STOP;
|
|
}
|
|
COMMAND(telemetry, sla_clear_stats, "<peer_mac>", NL80211_CMD_VENDOR, 0, CIB_NETDEV,
|
|
handle_telemetry_sla_clear_stats, ".");
|
|
--
|
|
2.17.1
|
|
|