Date: Mon, 2 Sep 2013 05:35:06 +0000 (UTC) From: Takuya ASADA <syuu@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: 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 Message-ID: <201309020535.r825Z6O3086825@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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 */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201309020535.r825Z6O3086825>