svn commit: r255140 - in user/syuu/mq_bpf: sbin/ifconfig share/man/man4 share/man/man9 sys/dev/e1000 sys/dev/ixgbe sys/dev/mxge sys/net
Takuya ASADA
syuu at FreeBSD.org
Mon Sep 2 05:35:08 UTC 2013
Author: syuu
Date: Mon Sep 2 05:35:06 2013
New Revision: 255140
URL: http://svnweb.freebsd.org/changeset/base/255140
Log:
use cpuset_t on if_get_rxqueue_affinity/if_get_txqueue_affinity
Modified:
user/syuu/mq_bpf/sbin/ifconfig/ifconfig.c
user/syuu/mq_bpf/share/man/man4/netintro.4
user/syuu/mq_bpf/share/man/man9/ifnet.9
user/syuu/mq_bpf/sys/dev/e1000/if_igb.c
user/syuu/mq_bpf/sys/dev/ixgbe/ixgbe.c
user/syuu/mq_bpf/sys/dev/mxge/if_mxge.c
user/syuu/mq_bpf/sys/net/if.c
user/syuu/mq_bpf/sys/net/if.h
user/syuu/mq_bpf/sys/net/if_var.h
Modified: user/syuu/mq_bpf/sbin/ifconfig/ifconfig.c
==============================================================================
--- user/syuu/mq_bpf/sbin/ifconfig/ifconfig.c Sun Sep 1 23:49:36 2013 (r255139)
+++ user/syuu/mq_bpf/sbin/ifconfig/ifconfig.c Mon Sep 2 05:35:06 2013 (r255140)
@@ -919,6 +919,25 @@ unsetifdescr(const char *val, int value,
"\17TOE4\20TOE6\21VLAN_HWFILTER\23VLAN_HWTSO\24LINKSTATE\25NETMAP" \
"\26RXCSUM_IPV6\27TXCSUM_IPV6\30MULTIQUEUE"
+static char *
+cpusetobj_strprint(char *buf, const cpuset_t *set)
+{
+ char *tbuf;
+ size_t i, bytesp, bufsiz;
+
+ tbuf = buf;
+ bytesp = 0;
+ bufsiz = CPUSETBUFSIZ;
+
+ for (i = 0; i < (_NCPUWORDS - 1); i++) {
+ bytesp = snprintf(tbuf, bufsiz, "%lx,", set->__bits[i]);
+ bufsiz -= bytesp;
+ tbuf += bytesp;
+ }
+ snprintf(tbuf, bufsiz, "%lx", set->__bits[_NCPUWORDS - 1]);
+ return (buf);
+}
+
/*
* Print the status of the interface. If an address family was
* specified, show only it; otherwise, show them all.
@@ -986,6 +1005,7 @@ status(const struct afswtch *afp, const
if ((ifr.ifr_reqcap & IFCAP_MULTIQUEUE)) {
int i, numrxq = 0, numtxq = 0;
+ char cpus[CPUSETBUFSIZ];
if (ioctl(s, SIOCGIFQLEN, &ifr) == 0) {
numrxq = ifr.ifr_num_rxqueue;
@@ -995,22 +1015,24 @@ status(const struct afswtch *afp, const
printf("\tnumber of rxqueues=%d affinity=[", numrxq);
for (i = 0; i < numrxq; i++) {
- ifr.ifr_queue_affinity_index = i;
- if (ioctl(s, SIOCGIFRXQAFFINITY, &ifr) == 0)
- printf(" %d:%d", ifr.ifr_queue_affinity_index,
- ifr.ifr_queue_affinity_cpu);
- else
+ ifr.ifr_queue_affinity_idx = i;
+ if (ioctl(s, SIOCGIFRXQAFFINITY, &ifr) == 0) {
+ cpusetobj_strprint(cpus,
+ &ifr.ifr_queue_affinity_cpus);
+ printf(" %d:%s", i, cpus);
+ }else
perror("ioctl");
}
printf(" ]\n");
printf("\tnumber of txqueues=%d affinity=[", numtxq);
for (i = 0; i < numtxq; i++) {
- ifr.ifr_queue_affinity_index = i;
- if (ioctl(s, SIOCGIFTXQAFFINITY, &ifr) == 0)
- printf(" %d:%d", ifr.ifr_queue_affinity_index,
- ifr.ifr_queue_affinity_cpu);
- else
+ ifr.ifr_queue_affinity_idx = i;
+ if (ioctl(s, SIOCGIFTXQAFFINITY, &ifr) == 0) {
+ cpusetobj_strprint(cpus,
+ &ifr.ifr_queue_affinity_cpus);
+ printf(" %d:%s", i, cpus);
+ }else
perror("ioctl");
}
printf(" ]\n");
Modified: user/syuu/mq_bpf/share/man/man4/netintro.4
==============================================================================
--- user/syuu/mq_bpf/share/man/man4/netintro.4 Sun Sep 1 23:49:36 2013 (r255139)
+++ user/syuu/mq_bpf/share/man/man4/netintro.4 Mon Sep 2 05:35:06 2013 (r255140)
@@ -213,8 +213,12 @@ struct ifreq {
int ifru_media;
caddr_t ifru_data;
int ifru_cap[2];
- int ifru_num_queue[2];
- int ifru_queue_affinity[2];
+ u_int ifru_fib;
+ int ifru_num_queue[2];
+ struct {
+ int idx;
+ cpuset_t cpus;
+ } ifru_queue_affinity;
} ifr_ifru;
#define ifr_addr ifr_ifru.ifru_addr /* address */
#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */
@@ -230,10 +234,11 @@ struct ifreq {
#define ifr_reqcap ifr_ifru.ifru_cap[0] /* requested capabilities */
#define ifr_curcap ifr_ifru.ifru_cap[1] /* current capabilities */
#define ifr_index ifr_ifru.ifru_index /* interface index */
-#define ifr_num_rxqueue ifr_ifru.ifru_num_queue[0] /* rxqueue len */
-#define ifr_num_txqueue ifr_ifru.ifru_num_queue[1] /* txqueue len */
-#define ifr_queue_affinity_index ifr_ifru.ifru_queue_affinity[0] /* queue id */
-#define ifr_queue_affinity_cpu ifr_ifru.ifru_queue_affinity[1] /* cpu id */
+#define ifr_fib ifr_ifru.ifru_fib /* interface fib */
+#define ifr_num_rxqueue ifr_ifru.ifru_num_queue[0] /* number of rxqueues */
+#define ifr_num_txqueue ifr_ifru.ifru_num_queue[1] /* number of txqueues */
+#define ifr_queue_affinity_idx ifr_ifru.ifru_queue_affinity.idx /* queue index */
+#define ifr_queue_affinity_cpus ifr_ifru.ifru_queue_affinity.cpus /* queue affinity mask */
};
.Ed
.Pp
Modified: user/syuu/mq_bpf/share/man/man9/ifnet.9
==============================================================================
--- user/syuu/mq_bpf/share/man/man9/ifnet.9 Sun Sep 1 23:49:36 2013 (r255139)
+++ user/syuu/mq_bpf/share/man/man9/ifnet.9 Mon Sep 2 05:35:06 2013 (r255140)
@@ -124,9 +124,9 @@
.Ft int
.Fn \*(lp*if_get_num_txqueue\*(rp "struct ifnet *ifp"
.Ft int
-.Fn \*(lp*if_get_rxqueue_affinity\*(rp "struct ifnet *ifp" "int queid"
+.Fn \*(lp*if_get_rxqueue_affinity\*(rp "struct ifnet *ifp" "int idx" "cpuset_t *cpus"
.Ft int
-.Fn \*(lp*if_get_txqueue_affinity\*(rp "struct ifnet *ifp" "int queid"
+.Fn \*(lp*if_get_txqueue_affinity\*(rp "struct ifnet *ifp" "int idx" "cpuset_t *cpus"
.Ss "struct ifaddr member function"
.Ft void
.Fo \*(lp*ifa_rtrequest\*(rp
Modified: user/syuu/mq_bpf/sys/dev/e1000/if_igb.c
==============================================================================
--- user/syuu/mq_bpf/sys/dev/e1000/if_igb.c Sun Sep 1 23:49:36 2013 (r255139)
+++ user/syuu/mq_bpf/sys/dev/e1000/if_igb.c Mon Sep 2 05:35:06 2013 (r255140)
@@ -280,8 +280,8 @@ static int igb_sysctl_eee(SYSCTL_HANDLER
static int igb_get_num_rxqueue(struct ifnet *);
static int igb_get_num_txqueue(struct ifnet *);
-static int igb_get_rxqueue_affinity(struct ifnet *, int);
-static int igb_get_txqueue_affinity(struct ifnet *, int);
+static int igb_get_rxqueue_affinity(struct ifnet *, int, cpuset_t *);
+static int igb_get_txqueue_affinity(struct ifnet *, int, cpuset_t *);
#ifdef DEVICE_POLLING
static poll_handler_t igb_poll;
@@ -6081,13 +6081,15 @@ igb_get_num_txqueue(struct ifnet *ifp)
}
static int
-igb_get_rxqueue_affinity(struct ifnet *ifp, int queid)
+igb_get_rxqueue_affinity(struct ifnet *ifp, int idx, cpuset_t *cpus)
{
- return (queid);
+ CPU_SETOF(idx, cpus);
+ return (0);
}
static int
-igb_get_txqueue_affinity(struct ifnet *ifp, int queid)
+igb_get_txqueue_affinity(struct ifnet *ifp, int idx, cpuset_t *cpus)
{
- return (queid);
+ CPU_SETOF(idx, cpus);
+ return (0);
}
Modified: user/syuu/mq_bpf/sys/dev/ixgbe/ixgbe.c
==============================================================================
--- user/syuu/mq_bpf/sys/dev/ixgbe/ixgbe.c Sun Sep 1 23:49:36 2013 (r255139)
+++ user/syuu/mq_bpf/sys/dev/ixgbe/ixgbe.c Mon Sep 2 05:35:06 2013 (r255140)
@@ -212,8 +212,8 @@ extern void ixgbe_stop_mac_link_on_d3_82
static int ixgbe_get_num_rxqueue(struct ifnet *);
static int ixgbe_get_num_txqueue(struct ifnet *);
-static int ixgbe_get_rxqueue_affinity(struct ifnet *, int);
-static int ixgbe_get_txqueue_affinity(struct ifnet *, int);
+static int ixgbe_get_rxqueue_affinity(struct ifnet *, int, cpuset_t *);
+static int ixgbe_get_txqueue_affinity(struct ifnet *, int, cpuset_t *);
/*********************************************************************
@@ -5779,15 +5779,17 @@ ixgbe_get_num_txqueue(struct ifnet *ifp)
}
static int
-ixgbe_get_rxqueue_affinity(struct ifnet *ifp, int queid)
+ixgbe_get_rxqueue_affinity(struct ifnet *ifp, int idx, cpuset_t *cpus)
{
- return (queid);
+ CPU_SETOF(idx, cpus);
+ return (0);
}
static int
-ixgbe_get_txqueue_affinity(struct ifnet *ifp, int queid)
+ixgbe_get_txqueue_affinity(struct ifnet *ifp, int idx, cpuset_t *cpus)
{
- return (queid);
+ CPU_SETOF(idx, cpus);
+ return (0);
}
/*
Modified: user/syuu/mq_bpf/sys/dev/mxge/if_mxge.c
==============================================================================
--- user/syuu/mq_bpf/sys/dev/mxge/if_mxge.c Sun Sep 1 23:49:36 2013 (r255139)
+++ user/syuu/mq_bpf/sys/dev/mxge/if_mxge.c Mon Sep 2 05:35:06 2013 (r255140)
@@ -122,8 +122,8 @@ static void mxge_intr(void *arg);
static int mxge_get_num_rxqueue(struct ifnet *);
static int mxge_get_num_txqueue(struct ifnet *);
-static int mxge_get_rxqueue_affinity(struct ifnet *, int);
-static int mxge_get_txqueue_affinity(struct ifnet *, int);
+static int mxge_get_rxqueue_affinity(struct ifnet *, int, cpuset_t *);
+static int mxge_get_txqueue_affinity(struct ifnet *, int, cpuset_t *);
static device_method_t mxge_methods[] =
{
@@ -5060,22 +5060,15 @@ mxge_get_num_txqueue(struct ifnet *ifp)
}
static int
-mxge_get_rxqueue_affinity(struct ifnet *ifp, int queid)
+mxge_get_rxqueue_affinity(struct ifnet *ifp, int idx, cpuset_t *cpus)
{
- return (queid);
+ CPU_SETOF(idx, cpus);
+ return (0);
}
static int
-mxge_get_txqueue_affinity(struct ifnet *ifp, int queid)
+mxge_get_txqueue_affinity(struct ifnet *ifp, int idx, cpuset_t *cpus)
{
- return (queid);
+ CPU_SETOF(idx, cpus);
+ return (0);
}
-
-/*
- This file uses Myri10GE driver indentation.
-
- Local Variables:
- c-file-style:"linux"
- tab-width:8
- End:
-*/
Modified: user/syuu/mq_bpf/sys/net/if.c
==============================================================================
--- user/syuu/mq_bpf/sys/net/if.c Sun Sep 1 23:49:36 2013 (r255139)
+++ user/syuu/mq_bpf/sys/net/if.c Mon Sep 2 05:35:06 2013 (r255140)
@@ -2441,16 +2441,16 @@ ifhwioctl(u_long cmd, struct ifnet *ifp,
if (!(ifp->if_capabilities & IFCAP_MULTIQUEUE))
return (EOPNOTSUPP);
KASSERT(ifp->if_get_rxqueue_affinity, ("if_get_rxqueue_affinity not set"));
- ifr->ifr_queue_affinity_cpu =
- ifp->if_get_rxqueue_affinity(ifp, ifr->ifr_queue_affinity_index);
+ ifp->if_get_rxqueue_affinity(ifp, ifr->ifr_queue_affinity_idx,
+ &ifr->ifr_queue_affinity_cpus);
break;
case SIOCGIFTXQAFFINITY:
if (!(ifp->if_capabilities & IFCAP_MULTIQUEUE))
return (EOPNOTSUPP);
KASSERT(ifp->if_get_rxqueue_affinity, ("if_get_rxqueue_affinity not set"));
- ifr->ifr_queue_affinity_cpu =
- ifp->if_get_rxqueue_affinity(ifp, ifr->ifr_queue_affinity_index);
+ ifp->if_get_txqueue_affinity(ifp, ifr->ifr_queue_affinity_idx,
+ &ifr->ifr_queue_affinity_cpus);
break;
default:
Modified: user/syuu/mq_bpf/sys/net/if.h
==============================================================================
--- user/syuu/mq_bpf/sys/net/if.h Sun Sep 1 23:49:36 2013 (r255139)
+++ user/syuu/mq_bpf/sys/net/if.h Mon Sep 2 05:35:06 2013 (r255140)
@@ -49,6 +49,8 @@
#include <sys/time.h>
#include <sys/socket.h>
#endif
+#include <sys/param.h>
+#include <sys/cpuset.h>
struct ifnet;
#endif
@@ -387,7 +389,10 @@ struct ifreq {
int ifru_cap[2];
u_int ifru_fib;
int ifru_num_queue[2];
- int ifru_queue_affinity[2];
+ struct {
+ int idx;
+ cpuset_t cpus;
+ } ifru_queue_affinity;
} ifr_ifru;
#define ifr_addr ifr_ifru.ifru_addr /* address */
#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */
@@ -405,11 +410,10 @@ struct ifreq {
#define ifr_curcap ifr_ifru.ifru_cap[1] /* current capabilities */
#define ifr_index ifr_ifru.ifru_index /* interface index */
#define ifr_fib ifr_ifru.ifru_fib /* interface fib */
-#define ifr_num_rxqueue ifr_ifru.ifru_num_queue[0] /* rxqueue len */
-#define ifr_num_txqueue ifr_ifru.ifru_num_queue[1] /* txqueue len */
-#define ifr_queue_affinity_index ifr_ifru.ifru_queue_affinity[0] /* queue id */
-#define ifr_queue_affinity_cpu ifr_ifru.ifru_queue_affinity[1] /* cpu id */
-
+#define ifr_num_rxqueue ifr_ifru.ifru_num_queue[0] /* number of rxqueues */
+#define ifr_num_txqueue ifr_ifru.ifru_num_queue[1] /* number of txqueues */
+#define ifr_queue_affinity_idx ifr_ifru.ifru_queue_affinity.idx /* queue index */
+#define ifr_queue_affinity_cpus ifr_ifru.ifru_queue_affinity.cpus /* queue affinity mask */
};
#define _SIZEOF_ADDR_IFREQ(ifr) \
Modified: user/syuu/mq_bpf/sys/net/if_var.h
==============================================================================
--- user/syuu/mq_bpf/sys/net/if_var.h Sun Sep 1 23:49:36 2013 (r255139)
+++ user/syuu/mq_bpf/sys/net/if_var.h Mon Sep 2 05:35:06 2013 (r255140)
@@ -181,9 +181,9 @@ struct ifnet {
int (*if_get_num_txqueue)
(struct ifnet *);
int (*if_get_rxqueue_affinity)
- (struct ifnet *, int);
+ (struct ifnet *, int, cpuset_t *);
int (*if_get_txqueue_affinity)
- (struct ifnet *, int);
+ (struct ifnet *, int, cpuset_t *);
struct vnet *if_home_vnet; /* where this ifnet originates from */
struct ifaddr *if_addr; /* pointer to link-level address */
More information about the svn-src-user
mailing list