|
@@ -38,7 +38,7 @@
|
|
|
|
|
|
|
|
--- a/info.c
|
|
--- a/info.c
|
|
|
+++ b/info.c
|
|
+++ b/info.c
|
|
|
-@@ -446,6 +446,7 @@ next:
|
|
|
|
|
|
|
+@@ -525,6 +525,7 @@ next:
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -46,7 +46,7 @@
|
|
|
if (tb_band[NL80211_BAND_ATTR_RATES]) {
|
|
if (tb_band[NL80211_BAND_ATTR_RATES]) {
|
|
|
printf("\t\tBitrates (non-HT):\n");
|
|
printf("\t\tBitrates (non-HT):\n");
|
|
|
nla_for_each_nested(nl_rate, tb_band[NL80211_BAND_ATTR_RATES], rem_rate) {
|
|
nla_for_each_nested(nl_rate, tb_band[NL80211_BAND_ATTR_RATES], rem_rate) {
|
|
|
-@@ -462,6 +463,7 @@ next:
|
|
|
|
|
|
|
+@@ -541,6 +542,7 @@ next:
|
|
|
printf("\n");
|
|
printf("\n");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -54,7 +54,7 @@
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-@@ -527,6 +529,7 @@ next:
|
|
|
|
|
|
|
+@@ -606,6 +608,7 @@ next:
|
|
|
printf("\tCoverage class: %d (up to %dm)\n", coverage, 450 * coverage);
|
|
printf("\tCoverage class: %d (up to %dm)\n", coverage, 450 * coverage);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -62,7 +62,7 @@
|
|
|
if (tb_msg[NL80211_ATTR_CIPHER_SUITES]) {
|
|
if (tb_msg[NL80211_ATTR_CIPHER_SUITES]) {
|
|
|
int num = nla_len(tb_msg[NL80211_ATTR_CIPHER_SUITES]) / sizeof(__u32);
|
|
int num = nla_len(tb_msg[NL80211_ATTR_CIPHER_SUITES]) / sizeof(__u32);
|
|
|
int i;
|
|
int i;
|
|
|
-@@ -538,6 +541,7 @@ next:
|
|
|
|
|
|
|
+@@ -617,6 +620,7 @@ next:
|
|
|
cipher_name(ciphers[i]));
|
|
cipher_name(ciphers[i]));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -70,7 +70,7 @@
|
|
|
|
|
|
|
|
if (tb_msg[NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX] &&
|
|
if (tb_msg[NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX] &&
|
|
|
tb_msg[NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX])
|
|
tb_msg[NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX])
|
|
|
-@@ -555,9 +559,11 @@ next:
|
|
|
|
|
|
|
+@@ -634,9 +638,11 @@ next:
|
|
|
print_iftype_list("\tSupported interface modes", "\t\t",
|
|
print_iftype_list("\tSupported interface modes", "\t\t",
|
|
|
tb_msg[NL80211_ATTR_SUPPORTED_IFTYPES]);
|
|
tb_msg[NL80211_ATTR_SUPPORTED_IFTYPES]);
|
|
|
|
|
|
|
@@ -81,8 +81,8 @@
|
|
|
+#endif
|
|
+#endif
|
|
|
|
|
|
|
|
if (tb_msg[NL80211_ATTR_INTERFACE_COMBINATIONS]) {
|
|
if (tb_msg[NL80211_ATTR_INTERFACE_COMBINATIONS]) {
|
|
|
- struct nlattr *nl_combi;
|
|
|
|
|
-@@ -647,6 +653,7 @@ broken_combination:
|
|
|
|
|
|
|
+ bool have_combinations = false;
|
|
|
|
|
+@@ -650,6 +656,7 @@ next:
|
|
|
printf("\tinterface combinations are not supported\n");
|
|
printf("\tinterface combinations are not supported\n");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -90,7 +90,7 @@
|
|
|
if (tb_msg[NL80211_ATTR_SUPPORTED_COMMANDS]) {
|
|
if (tb_msg[NL80211_ATTR_SUPPORTED_COMMANDS]) {
|
|
|
printf("\tSupported commands:\n");
|
|
printf("\tSupported commands:\n");
|
|
|
nla_for_each_nested(nl_cmd, tb_msg[NL80211_ATTR_SUPPORTED_COMMANDS], rem_cmd)
|
|
nla_for_each_nested(nl_cmd, tb_msg[NL80211_ATTR_SUPPORTED_COMMANDS], rem_cmd)
|
|
|
-@@ -744,6 +751,7 @@ broken_combination:
|
|
|
|
|
|
|
+@@ -747,6 +754,7 @@ next:
|
|
|
printf("\t\t * wake up on TCP connection\n");
|
|
printf("\t\t * wake up on TCP connection\n");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -98,7 +98,7 @@
|
|
|
|
|
|
|
|
if (tb_msg[NL80211_ATTR_ROAM_SUPPORT])
|
|
if (tb_msg[NL80211_ATTR_ROAM_SUPPORT])
|
|
|
printf("\tDevice supports roaming.\n");
|
|
printf("\tDevice supports roaming.\n");
|
|
|
-@@ -782,6 +790,7 @@ broken_combination:
|
|
|
|
|
|
|
+@@ -785,6 +793,7 @@ next:
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -106,7 +106,7 @@
|
|
|
if (tb_msg[NL80211_ATTR_FEATURE_FLAGS]) {
|
|
if (tb_msg[NL80211_ATTR_FEATURE_FLAGS]) {
|
|
|
unsigned int features = nla_get_u32(tb_msg[NL80211_ATTR_FEATURE_FLAGS]);
|
|
unsigned int features = nla_get_u32(tb_msg[NL80211_ATTR_FEATURE_FLAGS]);
|
|
|
|
|
|
|
|
-@@ -846,6 +855,7 @@ broken_combination:
|
|
|
|
|
|
|
+@@ -849,6 +858,7 @@ next:
|
|
|
if (features & NL80211_FEATURE_ND_RANDOM_MAC_ADDR)
|
|
if (features & NL80211_FEATURE_ND_RANDOM_MAC_ADDR)
|
|
|
printf("\tDevice supports randomizing MAC-addr in net-detect scans.\n");
|
|
printf("\tDevice supports randomizing MAC-addr in net-detect scans.\n");
|
|
|
}
|
|
}
|
|
@@ -114,7 +114,7 @@
|
|
|
|
|
|
|
|
if (tb_msg[NL80211_ATTR_TDLS_SUPPORT])
|
|
if (tb_msg[NL80211_ATTR_TDLS_SUPPORT])
|
|
|
printf("\tDevice supports T-DLS.\n");
|
|
printf("\tDevice supports T-DLS.\n");
|
|
|
-@@ -914,6 +924,7 @@ TOPLEVEL(list, NULL, NL80211_CMD_GET_WIP
|
|
|
|
|
|
|
+@@ -979,6 +989,7 @@ TOPLEVEL(list, NULL, NL80211_CMD_GET_WIP
|
|
|
"List all wireless devices and their capabilities.");
|
|
"List all wireless devices and their capabilities.");
|
|
|
TOPLEVEL(phy, NULL, NL80211_CMD_GET_WIPHY, NLM_F_DUMP, CIB_NONE, handle_info, NULL);
|
|
TOPLEVEL(phy, NULL, NL80211_CMD_GET_WIPHY, NLM_F_DUMP, CIB_NONE, handle_info, NULL);
|
|
|
|
|
|
|
@@ -122,7 +122,7 @@
|
|
|
static int handle_commands(struct nl80211_state *state, struct nl_msg *msg,
|
|
static int handle_commands(struct nl80211_state *state, struct nl_msg *msg,
|
|
|
int argc, char **argv, enum id_input id)
|
|
int argc, char **argv, enum id_input id)
|
|
|
{
|
|
{
|
|
|
-@@ -925,6 +936,7 @@ static int handle_commands(struct nl8021
|
|
|
|
|
|
|
+@@ -990,6 +1001,7 @@ static int handle_commands(struct nl8021
|
|
|
}
|
|
}
|
|
|
TOPLEVEL(commands, NULL, NL80211_CMD_GET_WIPHY, 0, CIB_NONE, handle_commands,
|
|
TOPLEVEL(commands, NULL, NL80211_CMD_GET_WIPHY, 0, CIB_NONE, handle_commands,
|
|
|
"list all known commands and their decimal & hex value");
|
|
"list all known commands and their decimal & hex value");
|
|
@@ -132,7 +132,7 @@
|
|
|
{
|
|
{
|
|
|
--- a/scan.c
|
|
--- a/scan.c
|
|
|
+++ b/scan.c
|
|
+++ b/scan.c
|
|
|
-@@ -1309,6 +1309,9 @@ static void print_ht_op(const uint8_t ty
|
|
|
|
|
|
|
+@@ -1333,6 +1333,9 @@ static void print_ht_op(const uint8_t ty
|
|
|
printf("\t\t * secondary channel offset: %s\n",
|
|
printf("\t\t * secondary channel offset: %s\n",
|
|
|
ht_secondary_offset[data[1] & 0x3]);
|
|
ht_secondary_offset[data[1] & 0x3]);
|
|
|
printf("\t\t * STA channel width: %s\n", sta_chan_width[(data[1] & 0x4)>>2]);
|
|
printf("\t\t * STA channel width: %s\n", sta_chan_width[(data[1] & 0x4)>>2]);
|
|
@@ -142,7 +142,7 @@
|
|
|
printf("\t\t * RIFS: %d\n", (data[1] & 0x8)>>3);
|
|
printf("\t\t * RIFS: %d\n", (data[1] & 0x8)>>3);
|
|
|
printf("\t\t * HT protection: %s\n", protection[data[2] & 0x3]);
|
|
printf("\t\t * HT protection: %s\n", protection[data[2] & 0x3]);
|
|
|
printf("\t\t * non-GF present: %d\n", (data[2] & 0x4) >> 2);
|
|
printf("\t\t * non-GF present: %d\n", (data[2] & 0x4) >> 2);
|
|
|
-@@ -1808,17 +1811,25 @@ static void print_ie(const struct ie_pri
|
|
|
|
|
|
|
+@@ -1832,17 +1835,25 @@ static void print_ie(const struct ie_pri
|
|
|
static const struct ie_print ieprinters[] = {
|
|
static const struct ie_print ieprinters[] = {
|
|
|
[EID_SSID] = { "SSID", print_ssid, 0, 32,
|
|
[EID_SSID] = { "SSID", print_ssid, 0, 32,
|
|
|
BIT(PRINT_SCAN) | BIT(PRINT_LINK) | BIT(PRINT_LINK_MLO_MLD), },
|
|
BIT(PRINT_SCAN) | BIT(PRINT_LINK) | BIT(PRINT_LINK_MLO_MLD), },
|
|
@@ -170,7 +170,7 @@
|
|
|
[EID_ERP_D4_0] = { "ERP D4.0", print_erp, 1, 255, BIT(PRINT_SCAN), },
|
|
[EID_ERP_D4_0] = { "ERP D4.0", print_erp, 1, 255, BIT(PRINT_SCAN), },
|
|
|
[EID_AP_CHAN_REPORT] = { "AP Channel Report", print_ap_channel_report,
|
|
[EID_AP_CHAN_REPORT] = { "AP Channel Report", print_ap_channel_report,
|
|
|
1, 255, BIT(PRINT_SCAN), },
|
|
1, 255, BIT(PRINT_SCAN), },
|
|
|
-@@ -1828,18 +1839,11 @@ static const struct ie_print ieprinters[
|
|
|
|
|
|
|
+@@ -1852,18 +1863,11 @@ static const struct ie_print ieprinters[
|
|
|
print_measurement_pilot_tx, 1, 255, BIT(PRINT_SCAN), },
|
|
print_measurement_pilot_tx, 1, 255, BIT(PRINT_SCAN), },
|
|
|
[EID_OVERLAP_BSS_SCAN_PARAM] = { "Overlapping BSS scan params",
|
|
[EID_OVERLAP_BSS_SCAN_PARAM] = { "Overlapping BSS scan params",
|
|
|
print_obss_scan_params, 14, 255, BIT(PRINT_SCAN), },
|
|
print_obss_scan_params, 14, 255, BIT(PRINT_SCAN), },
|
|
@@ -189,7 +189,7 @@
|
|
|
[EID_EXT_CAPABILITY] = { "Extended capabilities", print_capabilities,
|
|
[EID_EXT_CAPABILITY] = { "Extended capabilities", print_capabilities,
|
|
|
0, 255, BIT(PRINT_SCAN), },
|
|
0, 255, BIT(PRINT_SCAN), },
|
|
|
[EID_INTERWORKING] = { "802.11u Interworking", print_interworking,
|
|
[EID_INTERWORKING] = { "802.11u Interworking", print_interworking,
|
|
|
-@@ -1854,6 +1858,7 @@ static const struct ie_print ieprinters[
|
|
|
|
|
|
|
+@@ -1878,6 +1882,7 @@ static const struct ie_print ieprinters[
|
|
|
print_short_beacon_int, 2, 2, BIT(PRINT_SCAN), },
|
|
print_short_beacon_int, 2, 2, BIT(PRINT_SCAN), },
|
|
|
[EID_S1G_CAPABILITY] = { "S1G capabilities", print_s1g_capa, 15, 15, BIT(PRINT_SCAN), },
|
|
[EID_S1G_CAPABILITY] = { "S1G capabilities", print_s1g_capa, 15, 15, BIT(PRINT_SCAN), },
|
|
|
[EID_S1G_OPERATION] = { "S1G operation", print_s1g_oper, 6, 6, BIT(PRINT_SCAN), },
|
|
[EID_S1G_OPERATION] = { "S1G operation", print_s1g_oper, 6, 6, BIT(PRINT_SCAN), },
|
|
@@ -197,7 +197,7 @@
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
static void print_wifi_wpa(const uint8_t type, uint8_t len, const uint8_t *data,
|
|
static void print_wifi_wpa(const uint8_t type, uint8_t len, const uint8_t *data,
|
|
|
-@@ -2189,8 +2194,10 @@ static void print_wifi_wps(const uint8_t
|
|
|
|
|
|
|
+@@ -2213,8 +2218,10 @@ static void print_wifi_wps(const uint8_t
|
|
|
|
|
|
|
|
static const struct ie_print wifiprinters[] = {
|
|
static const struct ie_print wifiprinters[] = {
|
|
|
[1] = { "WPA", print_wifi_wpa, 2, 255, BIT(PRINT_SCAN), },
|
|
[1] = { "WPA", print_wifi_wpa, 2, 255, BIT(PRINT_SCAN), },
|
|
@@ -208,7 +208,7 @@
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
static inline void print_p2p(const uint8_t type, uint8_t len,
|
|
static inline void print_p2p(const uint8_t type, uint8_t len,
|
|
|
-@@ -2353,6 +2360,10 @@ static void print_vendor(unsigned char l
|
|
|
|
|
|
|
+@@ -2377,6 +2384,10 @@ static void print_vendor(unsigned char l
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -219,7 +219,7 @@
|
|
|
if (len >= 4 && memcmp(data, wfa_oui, 3) == 0) {
|
|
if (len >= 4 && memcmp(data, wfa_oui, 3) == 0) {
|
|
|
if (data[3] < ARRAY_SIZE(wfa_printers) &&
|
|
if (data[3] < ARRAY_SIZE(wfa_printers) &&
|
|
|
wfa_printers[data[3]].name &&
|
|
wfa_printers[data[3]].name &&
|
|
|
-@@ -2544,6 +2555,7 @@ static void print_capa_non_dmg(__u16 cap
|
|
|
|
|
|
|
+@@ -2576,6 +2587,7 @@ static void print_capa_non_dmg(__u16 cap
|
|
|
printf(" ESS");
|
|
printf(" ESS");
|
|
|
if (capa & WLAN_CAPABILITY_IBSS)
|
|
if (capa & WLAN_CAPABILITY_IBSS)
|
|
|
printf(" IBSS");
|
|
printf(" IBSS");
|
|
@@ -227,7 +227,7 @@
|
|
|
if (capa & WLAN_CAPABILITY_CF_POLLABLE)
|
|
if (capa & WLAN_CAPABILITY_CF_POLLABLE)
|
|
|
printf(" CfPollable");
|
|
printf(" CfPollable");
|
|
|
if (capa & WLAN_CAPABILITY_CF_POLL_REQUEST)
|
|
if (capa & WLAN_CAPABILITY_CF_POLL_REQUEST)
|
|
|
-@@ -2572,6 +2584,7 @@ static void print_capa_non_dmg(__u16 cap
|
|
|
|
|
|
|
+@@ -2604,6 +2616,7 @@ static void print_capa_non_dmg(__u16 cap
|
|
|
printf(" DelayedBACK");
|
|
printf(" DelayedBACK");
|
|
|
if (capa & WLAN_CAPABILITY_IMM_BACK)
|
|
if (capa & WLAN_CAPABILITY_IMM_BACK)
|
|
|
printf(" ImmediateBACK");
|
|
printf(" ImmediateBACK");
|
|
@@ -235,7 +235,7 @@
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
static int print_bss_handler(struct nl_msg *msg, void *arg)
|
|
static int print_bss_handler(struct nl_msg *msg, void *arg)
|
|
|
-@@ -2662,8 +2675,10 @@ static int print_bss_handler(struct nl_m
|
|
|
|
|
|
|
+@@ -2694,8 +2707,10 @@ static int print_bss_handler(struct nl_m
|
|
|
else
|
|
else
|
|
|
printf("\tfreq: %d\n", freq);
|
|
printf("\tfreq: %d\n", freq);
|
|
|
|
|
|
|
@@ -246,7 +246,7 @@
|
|
|
}
|
|
}
|
|
|
if (bss[NL80211_BSS_BEACON_INTERVAL])
|
|
if (bss[NL80211_BSS_BEACON_INTERVAL])
|
|
|
printf("\tbeacon interval: %d TUs\n",
|
|
printf("\tbeacon interval: %d TUs\n",
|
|
|
-@@ -2857,6 +2872,7 @@ static int handle_stop_sched_scan(struct
|
|
|
|
|
|
|
+@@ -2889,6 +2904,7 @@ static int handle_stop_sched_scan(struct
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -254,7 +254,7 @@
|
|
|
COMMAND(scan, sched_start,
|
|
COMMAND(scan, sched_start,
|
|
|
SCHED_SCAN_OPTIONS,
|
|
SCHED_SCAN_OPTIONS,
|
|
|
NL80211_CMD_START_SCHED_SCAN, 0, CIB_NETDEV, handle_start_sched_scan,
|
|
NL80211_CMD_START_SCHED_SCAN, 0, CIB_NETDEV, handle_start_sched_scan,
|
|
|
-@@ -2867,3 +2883,4 @@ COMMAND(scan, sched_start,
|
|
|
|
|
|
|
+@@ -2899,3 +2915,4 @@ COMMAND(scan, sched_start,
|
|
|
COMMAND(scan, sched_stop, "",
|
|
COMMAND(scan, sched_stop, "",
|
|
|
NL80211_CMD_STOP_SCHED_SCAN, 0, CIB_NETDEV, handle_stop_sched_scan,
|
|
NL80211_CMD_STOP_SCHED_SCAN, 0, CIB_NETDEV, handle_stop_sched_scan,
|
|
|
"Stop an ongoing scheduled scan.");
|
|
"Stop an ongoing scheduled scan.");
|
|
@@ -289,7 +289,7 @@
|
|
|
|
|
|
|
|
--- a/Makefile
|
|
--- a/Makefile
|
|
|
+++ b/Makefile
|
|
+++ b/Makefile
|
|
|
-@@ -24,6 +24,12 @@ _OBJS := $(sort $(patsubst %.c,%.o,$(wil
|
|
|
|
|
|
|
+@@ -25,6 +25,12 @@ _OBJS := $(sort $(patsubst %.c,%.o,$(wil
|
|
|
VERSION_OBJS := $(filter-out version.o, $(_OBJS))
|
|
VERSION_OBJS := $(filter-out version.o, $(_OBJS))
|
|
|
OBJS := $(VERSION_OBJS) version.o
|
|
OBJS := $(VERSION_OBJS) version.o
|
|
|
|
|
|
|
@@ -304,7 +304,7 @@
|
|
|
ifeq ($(NO_PKG_CONFIG),)
|
|
ifeq ($(NO_PKG_CONFIG),)
|
|
|
--- a/station.c
|
|
--- a/station.c
|
|
|
+++ b/station.c
|
|
+++ b/station.c
|
|
|
-@@ -801,10 +801,12 @@ static int handle_station_set_plink(stru
|
|
|
|
|
|
|
+@@ -847,10 +847,12 @@ static int handle_station_set_plink(stru
|
|
|
nla_put_failure:
|
|
nla_put_failure:
|
|
|
return -ENOBUFS;
|
|
return -ENOBUFS;
|
|
|
}
|
|
}
|
|
@@ -317,7 +317,7 @@
|
|
|
|
|
|
|
|
static int handle_station_set_vlan(struct nl80211_state *state,
|
|
static int handle_station_set_vlan(struct nl80211_state *state,
|
|
|
struct nl_msg *msg,
|
|
struct nl_msg *msg,
|
|
|
-@@ -899,11 +901,13 @@ static int handle_station_set_mesh_power
|
|
|
|
|
|
|
+@@ -945,11 +947,13 @@ static int handle_station_set_mesh_power
|
|
|
nla_put_failure:
|
|
nla_put_failure:
|
|
|
return -ENOBUFS;
|
|
return -ENOBUFS;
|
|
|
}
|
|
}
|
|
@@ -333,7 +333,7 @@
|
|
|
struct nl_msg *msg,
|
|
struct nl_msg *msg,
|
|
|
--- a/interface.c
|
|
--- a/interface.c
|
|
|
+++ b/interface.c
|
|
+++ b/interface.c
|
|
|
-@@ -668,9 +668,11 @@ static int handle_interface_wds_peer(str
|
|
|
|
|
|
|
+@@ -673,9 +673,11 @@ static int handle_interface_wds_peer(str
|
|
|
nla_put_failure:
|
|
nla_put_failure:
|
|
|
return -ENOBUFS;
|
|
return -ENOBUFS;
|
|
|
}
|
|
}
|
|
@@ -345,7 +345,7 @@
|
|
|
|
|
|
|
|
static int set_mcast_rate(struct nl80211_state *state,
|
|
static int set_mcast_rate(struct nl80211_state *state,
|
|
|
struct nl_msg *msg,
|
|
struct nl_msg *msg,
|
|
|
-@@ -760,6 +762,7 @@ static int handle_chan(struct nl80211_st
|
|
|
|
|
|
|
+@@ -765,6 +767,7 @@ static int handle_chan(struct nl80211_st
|
|
|
return handle_chanfreq(state, msg, true, argc, argv, id);
|
|
return handle_chanfreq(state, msg, true, argc, argv, id);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -353,22 +353,22 @@
|
|
|
SECTION(switch);
|
|
SECTION(switch);
|
|
|
COMMAND(switch, freq,
|
|
COMMAND(switch, freq,
|
|
|
"<freq> [NOHT|HT20|HT40+|HT40-|5MHz|10MHz|80MHz] [beacons <count>] [block-tx]\n"
|
|
"<freq> [NOHT|HT20|HT40+|HT40-|5MHz|10MHz|80MHz] [beacons <count>] [block-tx]\n"
|
|
|
-@@ -1031,3 +1034,4 @@ COMMAND(set, tidconf, "[peer <MAC addres
|
|
|
|
|
- " $ iw dev wlan0 set tidconf peer xx:xx:xx:xx:xx:xx tids 0x2 bitrates auto\n"
|
|
|
|
|
- " $ iw dev wlan0 set tidconf peer xx:xx:xx:xx:xx:xx tids 0x2 bitrates limit vht-mcs-5 4:9\n"
|
|
|
|
|
- );
|
|
|
|
|
|
|
+@@ -1059,3 +1062,4 @@ nla_put_failure:
|
|
|
|
|
+ COMMAND(set, epcs, "<enable|disable>",
|
|
|
|
|
+ NL80211_CMD_EPCS_CFG, 0, CIB_NETDEV, handle_set_epcs,
|
|
|
|
|
+ "Enable/Disable EPCS support");
|
|
|
+#endif
|
|
+#endif
|
|
|
--- a/phy.c
|
|
--- a/phy.c
|
|
|
+++ b/phy.c
|
|
+++ b/phy.c
|
|
|
-@@ -403,6 +403,7 @@ err_out:
|
|
|
|
|
|
|
+@@ -394,6 +394,7 @@ err_out:
|
|
|
free(cac_trigger_argv);
|
|
free(cac_trigger_argv);
|
|
|
return err;
|
|
return err;
|
|
|
}
|
|
}
|
|
|
+#ifdef IW_FULL
|
|
+#ifdef IW_FULL
|
|
|
- TOPLEVEL(cac, "channel <channel> [NOHT|HT20|HT40+|HT40-|5MHz|10MHz|80MHz]\n"
|
|
|
|
|
- "freq <freq> [NOHT|HT20|HT40+|HT40-|5MHz|10MHz|80MHz]\n"
|
|
|
|
|
- "freq <control freq> [5|10|20|40|80|80+80|160] [<center1_freq> [<center2_freq>]]",
|
|
|
|
|
-@@ -422,6 +423,7 @@ COMMAND(cac, background,
|
|
|
|
|
|
|
+ TOPLEVEL(cac, PARSE_CHAN_ARGS("channel ") "\n"
|
|
|
|
|
+ PARSE_FREQ_ARGS("freq ", ""),
|
|
|
|
|
+ 0, 0, CIB_NETDEV, handle_cac, NULL);
|
|
|
|
|
+@@ -410,6 +411,7 @@ COMMAND(cac, background,
|
|
|
NL80211_CMD_RADAR_DETECT, 0, CIB_NETDEV, handle_cac_background,
|
|
NL80211_CMD_RADAR_DETECT, 0, CIB_NETDEV, handle_cac_background,
|
|
|
"Start background channel availability check (CAC) looking to look for\n"
|
|
"Start background channel availability check (CAC) looking to look for\n"
|
|
|
"radars on the given channel.");
|
|
"radars on the given channel.");
|