cxgbetool(8): Add support for tracing loopback traffic for a port.

Use lo<n> to tap the loopback for port <n>.

MFC after:	1 week
Sponsored by:	Chelsio Communications
This commit is contained in:
Navdeep Parhar 2023-04-01 17:43:20 -07:00
parent 9f354cd3d0
commit 4913a24e79

View File

@ -124,7 +124,7 @@ usage(FILE *fp)
"\tsched-queue <port> <queue> <class> bind NIC queues to TX Scheduling class\n" "\tsched-queue <port> <queue> <class> bind NIC queues to TX Scheduling class\n"
"\tstdio interactive mode\n" "\tstdio interactive mode\n"
"\ttcb <tid> read TCB\n" "\ttcb <tid> read TCB\n"
"\ttracer <idx> tx<n>|rx<n> set and enable a tracer\n" "\ttracer <idx> tx<n>|rx<n>|lo<n> set and enable a tracer\n"
"\ttracer <idx> disable|enable disable or enable a tracer\n" "\ttracer <idx> disable|enable disable or enable a tracer\n"
"\ttracer list list all tracers\n" "\ttracer list list all tracers\n"
); );
@ -2478,17 +2478,24 @@ set_tracer(uint8_t idx, int argc, const char *argv[])
t.valid = 1; t.valid = 1;
if (argc != 1) { if (argc != 1) {
warnx("must specify tx<n> or rx<n>."); warnx("must specify one of tx/rx/lo<n>");
return (EINVAL); return (EINVAL);
} }
len = strlen(argv[0]); len = strlen(argv[0]);
if (len != 3) { if (len != 3) {
warnx("argument must be 3 characters (tx<n> or rx<n>)"); warnx("argument must be 3 characters (tx/rx/lo<n>). eg. tx0");
return (EINVAL); return (EINVAL);
} }
if (strncmp(argv[0], "tx", 2) == 0) { if (strncmp(argv[0], "lo", 2) == 0) {
port = argv[0][2] - '0';
if (port < 0 || port > 3) {
warnx("'%c' in %s is invalid", argv[0][2], argv[0]);
return (EINVAL);
}
port += 8;
} else if (strncmp(argv[0], "tx", 2) == 0) {
port = argv[0][2] - '0'; port = argv[0][2] - '0';
if (port < 0 || port > 3) { if (port < 0 || port > 3) {
warnx("'%c' in %s is invalid", argv[0][2], argv[0]); warnx("'%c' in %s is invalid", argv[0][2], argv[0]);