1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-21 15:45:02 +00:00

Merge ^/head r287502 through r287526.

This commit is contained in:
Dimitry Andric 2015-09-06 22:05:55 +00:00
commit cfab224f31
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/projects/clang370-import/; revision=287527
10 changed files with 88 additions and 10 deletions

View File

@ -298,9 +298,6 @@ DPADD_gssapi_krb5+= ${DPADD_pthread}
LDADD_gssapi_krb5+= ${LDADD_pthread}
.for _l in ${LIBADD}
.if ${_PRIVATELIBS:M${_l}}
USEPRIVATELIB+= ${_l}
.endif
DPADD+= ${DPADD_${_l}:Umissing-dpadd_${_l}}
LDADD+= ${LDADD_${_l}}
.endfor

View File

@ -160,7 +160,7 @@ static struct netisr_handler ip_direct_nh = {
.nh_name = "ip_direct",
.nh_handler = ip_direct_input,
.nh_proto = NETISR_IP_DIRECT,
.nh_m2cpuid = rss_m2cpuid,
.nh_m2cpuid = rss_soft_m2cpuid_v4,
.nh_policy = NETISR_POLICY_CPU,
.nh_dispatch = NETISR_DISPATCH_HYBRID,
};

View File

@ -485,6 +485,8 @@ struct route_in6 {
#define IPV6_FLOWID 67 /* int; flowid of given socket */
#define IPV6_FLOWTYPE 68 /* int; flowtype of given socket */
#define IPV6_RSSBUCKETID 69 /* int; RSS bucket ID of given socket */
#define IPV6_RECVFLOWID 70 /* bool; receive IP6 flowid/flowtype w/ datagram */
#define IPV6_RECVRSSBUCKETID 71 /* bool; receive IP6 RSS bucket id w/ datagram */
/*
* The following option is private; do not use it from user applications.

View File

@ -93,6 +93,7 @@ __FBSDID("$FreeBSD$");
#include <net/if_dl.h>
#include <net/route.h>
#include <net/netisr.h>
#include <net/rss_config.h>
#include <net/pfil.h>
#include <net/vnet.h>
@ -1349,6 +1350,44 @@ ip6_savecontrol(struct inpcb *in6p, struct mbuf *m, struct mbuf **mp)
loopend:
;
}
if (in6p->inp_flags2 & INP_RECVFLOWID) {
uint32_t flowid, flow_type;
flowid = m->m_pkthdr.flowid;
flow_type = M_HASHTYPE_GET(m);
/*
* XXX should handle the failure of one or the
* other - don't populate both?
*/
*mp = sbcreatecontrol((caddr_t) &flowid,
sizeof(uint32_t), IPV6_FLOWID, IPPROTO_IPV6);
if (*mp)
mp = &(*mp)->m_next;
*mp = sbcreatecontrol((caddr_t) &flow_type,
sizeof(uint32_t), IPV6_FLOWTYPE, IPPROTO_IPV6);
if (*mp)
mp = &(*mp)->m_next;
}
#ifdef RSS
if (in6p->inp_flags2 & INP_RECVRSSBUCKETID) {
uint32_t flowid, flow_type;
uint32_t rss_bucketid;
flowid = m->m_pkthdr.flowid;
flow_type = M_HASHTYPE_GET(m);
if (rss_hash2bucket(flowid, flow_type, &rss_bucketid) == 0) {
*mp = sbcreatecontrol((caddr_t) &rss_bucketid,
sizeof(uint32_t), IPV6_RSSBUCKETID, IPPROTO_IPV6);
if (*mp)
mp = &(*mp)->m_next;
}
}
#endif
}
#undef IS2292

View File

@ -1400,6 +1400,10 @@ ip6_ctloutput(struct socket *so, struct sockopt *sopt)
case IPV6_RECVRTHDR:
case IPV6_RECVPATHMTU:
case IPV6_RECVTCLASS:
case IPV6_RECVFLOWID:
#ifdef RSS
case IPV6_RECVRSSBUCKETID:
#endif
case IPV6_V6ONLY:
case IPV6_AUTOFLOWLABEL:
case IPV6_BINDANY:
@ -1548,6 +1552,16 @@ do { \
OPTSET(IN6P_MTU);
break;
case IPV6_RECVFLOWID:
OPTSET2(INP_RECVFLOWID, optval);
break;
#ifdef RSS
case IPV6_RECVRSSBUCKETID:
OPTSET2(INP_RECVRSSBUCKETID, optval);
break;
#endif
case IPV6_V6ONLY:
/*
* make setsockopt(IPV6_V6ONLY)
@ -1811,8 +1825,10 @@ do { \
case IPV6_BINDANY:
case IPV6_FLOWID:
case IPV6_FLOWTYPE:
case IPV6_RECVFLOWID:
#ifdef RSS
case IPV6_RSSBUCKETID:
case IPV6_RECVRSSBUCKETID:
#endif
switch (optname) {
@ -1883,6 +1899,10 @@ do { \
case IPV6_FLOWTYPE:
optval = in6p->inp_flowtype;
break;
case IPV6_RECVFLOWID:
optval = OPTBIT2(INP_RECVFLOWID);
break;
#ifdef RSS
case IPV6_RSSBUCKETID:
retval =
@ -1894,6 +1914,10 @@ do { \
else
error = EINVAL;
break;
case IPV6_RECVRSSBUCKETID:
optval = OPTBIT2(INP_RECVRSSBUCKETID);
break;
#endif
case IPV6_BINDMULTI:

View File

@ -165,11 +165,11 @@ procstat_auxv(struct procstat *procstat, struct kinfo_proc *kipp)
if ((auxv[i].a_un.a_val & VM_PROT_EXECUTE) != 0)
xo_emit("{dw:/%s}{Lw:/%-16s/%s}"
"{:AT_STACKPROT/%s}\n", prefix,
"AT_STACKPROT", "NONEXECUTABLE");
"AT_STACKPROT", "EXECUTABLE");
else
xo_emit("{dw:/%s}{Lw:/%-16s/%s}"
"{:AT_STACKPROT/%s}\n", prefix,
"AT_STACKPROT", "EXECUTABLE");
"AT_STACKPROT", "NONEXECUTABLE");
break;
#ifdef AT_TIMEKEEP
case AT_TIMEKEEP:

View File

@ -5,4 +5,14 @@ SUBDIR= libopts libntp libntpevent libparse ntpd ntpdc ntpq ntpdate \
ntptime ntp-keygen sntp
SUBDIR+= doc
SUBDIR_DEPEND_ntpd= libntp libopts libparse
SUBDIR_DEPEND_ntpdate= libntp
SUBDIR_DEPEND_ntpdc= libntp libopts
SUBDIR_DEPEND_ntpq= libntp libopts
SUBDIR_DEPEND_ntptime= libntp
SUBDIR_DEPEND_ntp-keygen= libntp libopts
SUBDIR_DEPEND_sntp= libntp libntpevent libopts
SUBDIR_PARALLEL=
.include <bsd.subdir.mk>

View File

@ -1,3 +1,4 @@
/* $FreeBSD$ */
#define _PATH_DEVPCI "/dev/pci"
#define _PATH_PCIVDB "/usr/share/misc/pci_vendors"
#define _PATH_LPCIVDB "/usr/local/share/pciids/pci.ids"

View File

@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd January 20, 2014
.Dd September 06, 2015
.Dt PCICONF 8
.Os
.Sh NAME
@ -281,7 +281,9 @@ indicates a halfword (two-byte) operation.
The default is to read or
write a longword (four bytes).
.Sh ENVIRONMENT
The PCI vendor/device information database is normally read from
PCI vendor and device information is read from
.Pa /usr/local/share/pciids/pci.ids .
If that file is not present, it is read from
.Pa /usr/share/misc/pci_vendors .
This path can be overridden by setting the environment variable
.Ev PCICONF_VENDOR_DATABASE .

View File

@ -549,9 +549,12 @@ load_vendors(void)
*/
TAILQ_INIT(&pci_vendors);
if ((dbf = getenv("PCICONF_VENDOR_DATABASE")) == NULL)
dbf = _PATH_LPCIVDB;
if ((db = fopen(dbf, "r")) == NULL) {
dbf = _PATH_PCIVDB;
if ((db = fopen(dbf, "r")) == NULL)
return(1);
if ((db = fopen(dbf, "r")) == NULL)
return(1);
}
cv = NULL;
cd = NULL;
error = 0;