blob: 4f4bf8b65d36872935aa80823736e5a20a975899 [file] [log] [blame]
/* Copyright (C) 2021 Mediatek Inc. */
#define _GNU_SOURCE
#include <net/if.h>
#include "mt76-vendor.h"
static const char *progname;
struct unl unl;
void usage(void)
{
static const char *const commands[] = {
"set csi ctrl=<opt1>,<opt2>,<opt3>,<opt4> (macaddr=<macaddr>)",
"set csi interval=<interval (us)>",
"dump csi <packet num> <filename>",
"set amnt <index>(0x0~0xf) <mac addr>(xx:xx:xx:xx:xx:xx)",
"dump amnt <index> (0x0~0xf or 0xff)",
"set ap_rfeatures he_gi=<val>",
"set ap_rfeatures he_ltf=<val>",
"set ap_rfeatures trig_type=<val> (range: 0-7)",
"set ap_rfeatures ack_policy=<val> (range: 0-4)",
"set ap_wireless fixed_mcs=<val>",
"set ap_wireless ofdma=<val> (0: disable, 1: DL, 2: UL)",
"set ap_wireless nusers_ofdma=<val>",
"set ap_wireless ppdu_type=<val> (0: SU, 1: MU, 4: LEGACY)",
};
int i;
fprintf(stderr, "Usage:\n");
for (i = 0; i < ARRAY_SIZE(commands); i++)
printf(" %s wlanX %s\n", progname, commands[i]);
exit(1);
}
int main(int argc, char **argv)
{
const char *cmd, *subcmd;
int if_idx, ret = 0;
progname = argv[0];
if (argc < 4)
usage();
if_idx = if_nametoindex(argv[1]);
if (!if_idx) {
fprintf(stderr, "%s\n", strerror(errno));
return 2;
}
cmd = argv[2];
subcmd = argv[3];
argv += 4;
argc -= 4;
if (!strncmp(cmd, "dump", 4)) {
if (!strncmp(subcmd, "csi", 3))
ret = mt76_csi_dump(if_idx, argc, argv);
else if (!strncmp(subcmd, "amnt", 4))
ret = mt76_amnt_dump(if_idx, argc, argv);
} else if (!strncmp(cmd, "set", 3)) {
if (!strncmp(subcmd, "csi", 3))
ret = mt76_csi_set(if_idx, argc, argv);
else if (!strncmp(subcmd, "amnt", 4))
ret = mt76_amnt_set(if_idx, argc, argv);
else if (!strncmp(subcmd, "ap_rfeatures", 12))
ret = mt76_ap_rfeatures_set(if_idx, argc, argv);
else if (!strncmp(subcmd, "ap_wireless", 11))
ret = mt76_ap_wireless_set(if_idx, argc, argv);
} else {
usage();
}
return ret;
}