git: 4913a24e7910 - main - cxgbetool(8): Add support for tracing loopback traffic for a port.

From: Navdeep Parhar <np_at_FreeBSD.org>
Date: Sun, 02 Apr 2023 01:09:57 UTC
The branch main has been updated by np:

URL: https://cgit.FreeBSD.org/src/commit/?id=4913a24e7910edf5a3f52536b780d1b1d4bb73a4

commit 4913a24e7910edf5a3f52536b780d1b1d4bb73a4
Author:     Navdeep Parhar <np@FreeBSD.org>
AuthorDate: 2023-04-02 00:43:20 +0000
Commit:     Navdeep Parhar <np@FreeBSD.org>
CommitDate: 2023-04-02 00:50:57 +0000

    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
---
 usr.sbin/cxgbetool/cxgbetool.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/usr.sbin/cxgbetool/cxgbetool.c b/usr.sbin/cxgbetool/cxgbetool.c
index 43707df0b47a..149eacb54924 100644
--- a/usr.sbin/cxgbetool/cxgbetool.c
+++ b/usr.sbin/cxgbetool/cxgbetool.c
@@ -124,7 +124,7 @@ usage(FILE *fp)
 	    "\tsched-queue <port> <queue> <class>  bind NIC queues to TX Scheduling class\n"
 	    "\tstdio                               interactive mode\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 list                         list all tracers\n"
 	    );
@@ -2478,17 +2478,24 @@ set_tracer(uint8_t idx, int argc, const char *argv[])
 	t.valid = 1;
 
 	if (argc != 1) {
-		warnx("must specify tx<n> or rx<n>.");
+		warnx("must specify one of tx/rx/lo<n>");
 		return (EINVAL);
 	}
 
 	len = strlen(argv[0]);
 	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);
 	}
 
-	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';
 		if (port < 0 || port > 3) {
 			warnx("'%c' in %s is invalid", argv[0][2], argv[0]);