if you can tune the ipv4 queue lengths you should be able to tune
the v6 ones too.

Index: sys/netinet6/in6.h
===================================================================
RCS file: /cvs/src/sys/netinet6/in6.h,v
retrieving revision 1.78
diff -u -p -r1.78 in6.h
--- sys/netinet6/in6.h  10 Jan 2015 11:43:37 -0000      1.78
+++ sys/netinet6/in6.h  8 Feb 2015 12:39:37 -0000
@@ -606,7 +606,8 @@ ifatoia6(struct ifaddr *ifa)
 #define IPV6CTL_MAXDYNROUTES   48
 #define IPV6CTL_DAD_PENDING    49
 #define IPV6CTL_MTUDISCTIMEOUT 50
-#define IPV6CTL_MAXID          51
+#define IPV6CTL_IFQUEUE                51
+#define IPV6CTL_MAXID          52
 
 /* New entries should be added here from current IPV6CTL_MAXID value. */
 /* to define items, should talk with KAME guys first, for *BSD compatibility */
@@ -663,6 +664,7 @@ ifatoia6(struct ifaddr *ifa)
        { "maxdynroutes", CTLTYPE_INT }, \
        { "dad_pending", CTLTYPE_INT }, \
        { "mtudisctimeout", CTLTYPE_INT }, \
+       { "ifq", CTLTYPE_NODE }, \
 }
 
 #define IPV6CTL_VARS { \
Index: sys/netinet6/ip6_input.c
===================================================================
RCS file: /cvs/src/sys/netinet6/ip6_input.c,v
retrieving revision 1.136
diff -u -p -r1.136 ip6_input.c
--- sys/netinet6/ip6_input.c    5 Feb 2015 01:10:57 -0000       1.136
+++ sys/netinet6/ip6_input.c    8 Feb 2015 12:39:37 -0000
@@ -1417,9 +1417,9 @@ ip6_sysctl(int *name, u_int namelen, voi
 #endif
        int error, s;
 
-       /* All sysctl names at this level are terminal. */
-       if (namelen != 1)
-               return ENOTDIR;
+       /* Almost all sysctl names at this level are terminal. */
+       if (namelen != 1 && name[0] != IPV6CTL_IFQUEUE)
+               return (ENOTDIR);
 
        switch (name[0]) {
        case IPV6CTL_V6ONLY:
@@ -1456,6 +1456,9 @@ ip6_sysctl(int *name, u_int namelen, voi
                        splx(s);
                }
                return (error);
+       case IPV6CTL_IFQUEUE:
+               return (sysctl_ifq(name + 1, namelen - 1,
+                   oldp, oldlenp, newp, newlen, &ip6intrq));
        default:
                if (name[0] < IPV6CTL_MAXID)
                        return (sysctl_int_arr(ipv6ctl_vars, name, namelen,
Index: sbin/sysctl/sysctl.c
===================================================================
RCS file: /cvs/src/sbin/sysctl/sysctl.c,v
retrieving revision 1.208
diff -u -p -r1.208 sysctl.c
--- sbin/sysctl/sysctl.c        16 Jan 2015 06:40:01 -0000      1.208
+++ sbin/sysctl/sysctl.c        8 Feb 2015 12:39:37 -0000
@@ -2129,6 +2138,20 @@ sysctl_inet6(char *string, char **bufpp,
                return (-1);
        mib[3] = indx;
        *typep = lp->list[indx].ctl_type;
+       if (*typep == CTLTYPE_NODE) {
+               int tindx;
+
+               if (*bufpp == NULL) {
+                       listall(string, &ifqlist);
+                       return(-1);
+               }
+               lp = &ifqlist;
+               if ((tindx = findname(string, "fifth", bufpp, lp)) == -1)
+                       return (-1);
+               mib[4] = tindx;
+               *typep = lp->list[tindx].ctl_type;
+               return(5);
+       }
        return (4);
 }
 #endif

Reply via email to