so in top you see softnet0, softnet1, etc.
the real change is putting a struct softnet in place to wrap the name
and taskq up with.
ok?
Index: if.c
===================================================================
RCS file: /cvs/src/sys/net/if.c,v
retrieving revision 1.695
diff -u -p -r1.695 if.c
--- if.c 7 May 2023 16:23:23 -0000 1.695
+++ if.c 12 May 2023 00:19:38 -0000
@@ -243,8 +243,13 @@ int ifq_congestion;
int netisr;
+struct softnet {
+ char sn_name[16];
+ struct taskq *sn_taskq;
+};
+
#define NET_TASKQ 4
-struct taskq *nettqmp[NET_TASKQ];
+struct softnet softnets[NET_TASKQ];
struct task if_input_task_locked = TASK_INITIALIZER(if_netisr, NULL);
@@ -269,8 +274,11 @@ ifinit(void)
if_idxmap_init(8); /* 8 is a nice power of 2 for malloc */
for (i = 0; i < NET_TASKQ; i++) {
- nettqmp[i] = taskq_create("softnet", 1, IPL_NET, TASKQ_MPSAFE);
- if (nettqmp[i] == NULL)
+ struct softnet *sn = &softnets[i];
+ snprintf(sn->sn_name, sizeof(sn->sn_name), "softnet%u", i);
+ sn->sn_taskq = taskq_create(sn->sn_name, 1, IPL_NET,
+ TASKQ_MPSAFE);
+ if (sn->sn_taskq == NULL)
panic("unable to create network taskq %d", i);
}
}
@@ -3463,13 +3471,13 @@ unhandled_af(int af)
struct taskq *
net_tq(unsigned int ifindex)
{
- struct taskq *t = NULL;
+ struct softnet *sn;
static int nettaskqs;
if (nettaskqs == 0)
nettaskqs = min(NET_TASKQ, ncpus);
- t = nettqmp[ifindex % nettaskqs];
+ sn = &softnets[ifindex % nettaskqs];
- return (t);
+ return (sn->sn_taskq);
}