From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 07:02:10 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D19251065673; Sun, 4 Apr 2010 07:02:10 +0000 (UTC) (envelope-from ume@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C18DA8FC16; Sun, 4 Apr 2010 07:02:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3472Aid031485; Sun, 4 Apr 2010 07:02:10 GMT (envelope-from ume@svn.freebsd.org) Received: (from ume@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3472AZW031483; Sun, 4 Apr 2010 07:02:10 GMT (envelope-from ume@svn.freebsd.org) Message-Id: <201004040702.o3472AZW031483@svn.freebsd.org> From: Hajimu UMEMOTO Date: Sun, 4 Apr 2010 07:02:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206152 - head/lib/libc/net X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 07:02:10 -0000 Author: ume Date: Sun Apr 4 07:02:10 2010 New Revision: 206152 URL: http://svn.freebsd.org/changeset/base/206152 Log: Stop adding trailing '\n'. The servent_unpack() doesn't expect lines terminated with '\n'. MFC after: 2 weeks Modified: head/lib/libc/net/getservent.c Modified: head/lib/libc/net/getservent.c ============================================================================== --- head/lib/libc/net/getservent.c Sat Apr 3 23:51:41 2010 (r206151) +++ head/lib/libc/net/getservent.c Sun Apr 4 07:02:10 2010 (r206152) @@ -594,15 +594,13 @@ nis_servent(void *retval, void *mdata, v break; }; - /* we need a room for additional \n symbol */ - if (bufsize <= - resultbuflen + 1 + _ALIGNBYTES + sizeof(char *)) { + if (bufsize <= resultbuflen + _ALIGNBYTES + sizeof(char *)) { *errnop = ERANGE; rv = NS_RETURN; break; } - aliases = (char **)_ALIGN(&buffer[resultbuflen + 2]); + aliases = (char **)_ALIGN(&buffer[resultbuflen + 1]); aliases_size = (buffer + bufsize - (char *)aliases) / sizeof(char *); if (aliases_size < 1) { @@ -611,13 +609,8 @@ nis_servent(void *retval, void *mdata, v break; } - /* - * servent_unpack expects lines terminated with \n -- - * make it happy - */ memcpy(buffer, resultbuf, resultbuflen); - buffer[resultbuflen] = '\n'; - buffer[resultbuflen + 1] = '\0'; + buffer[resultbuflen] = '\0'; if (servent_unpack(buffer, serv, aliases, aliases_size, errnop) != 0) { From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 07:21:46 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1B3B0106566B; Sun, 4 Apr 2010 07:21:46 +0000 (UTC) (envelope-from ume@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0B2D18FC20; Sun, 4 Apr 2010 07:21:46 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o347Lj9n035756; Sun, 4 Apr 2010 07:21:45 GMT (envelope-from ume@svn.freebsd.org) Received: (from ume@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o347Ljrx035754; Sun, 4 Apr 2010 07:21:45 GMT (envelope-from ume@svn.freebsd.org) Message-Id: <201004040721.o347Ljrx035754@svn.freebsd.org> From: Hajimu UMEMOTO Date: Sun, 4 Apr 2010 07:21:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206153 - head/lib/libc/net X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 07:21:46 -0000 Author: ume Date: Sun Apr 4 07:21:45 2010 New Revision: 206153 URL: http://svn.freebsd.org/changeset/base/206153 Log: Treat '+' as special only when in compat mode, and simplify the logic bit. MFC after: 2 weeks Modified: head/lib/libc/net/getservent.c Modified: head/lib/libc/net/getservent.c ============================================================================== --- head/lib/libc/net/getservent.c Sun Apr 4 07:02:10 2010 (r206152) +++ head/lib/libc/net/getservent.c Sun Apr 4 07:21:45 2010 (r206153) @@ -315,28 +315,8 @@ files_servent(void *retval, void *mdata, break; } - if (*line=='+') { - if (serv_mdata->compat_mode != 0) - st->compat_mode_active = 1; - } else { - if (bufsize <= linesize + _ALIGNBYTES + - sizeof(char *)) { - *errnop = ERANGE; - rv = NS_RETURN; - break; - } - aliases = (char **)_ALIGN(&buffer[linesize+1]); - aliases_size = (buffer + bufsize - - (char *)aliases) / sizeof(char *); - if (aliases_size < 1) { - *errnop = ERANGE; - rv = NS_RETURN; - break; - } - - memcpy(buffer, line, linesize); - buffer[linesize] = '\0'; - } + if (*line=='+' && serv_mdata->compat_mode != 0) + st->compat_mode_active = 1; } if (st->compat_mode_active != 0) { @@ -367,6 +347,23 @@ files_servent(void *retval, void *mdata, continue; } + if (bufsize <= linesize + _ALIGNBYTES + sizeof(char *)) { + *errnop = ERANGE; + rv = NS_RETURN; + break; + } + aliases = (char **)_ALIGN(&buffer[linesize + 1]); + aliases_size = (buffer + bufsize - + (char *)aliases) / sizeof(char *); + if (aliases_size < 1) { + *errnop = ERANGE; + rv = NS_RETURN; + break; + } + + memcpy(buffer, line, linesize); + buffer[linesize] = '\0'; + rv = servent_unpack(buffer, serv, aliases, aliases_size, errnop); if (rv !=0 ) { From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 07:31:11 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4A9C01065672; Sun, 4 Apr 2010 07:31:11 +0000 (UTC) (envelope-from ume@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3A45A8FC20; Sun, 4 Apr 2010 07:31:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o347VBBO037867; Sun, 4 Apr 2010 07:31:11 GMT (envelope-from ume@svn.freebsd.org) Received: (from ume@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o347VBgt037865; Sun, 4 Apr 2010 07:31:11 GMT (envelope-from ume@svn.freebsd.org) Message-Id: <201004040731.o347VBgt037865@svn.freebsd.org> From: Hajimu UMEMOTO Date: Sun, 4 Apr 2010 07:31:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206154 - head/lib/libc/net X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 07:31:11 -0000 Author: ume Date: Sun Apr 4 07:31:10 2010 New Revision: 206154 URL: http://svn.freebsd.org/changeset/base/206154 Log: Reduce duplicate code. MFC after: 2 weeks Modified: head/lib/libc/net/getservent.c Modified: head/lib/libc/net/getservent.c ============================================================================== --- head/lib/libc/net/getservent.c Sun Apr 4 07:21:45 2010 (r206153) +++ head/lib/libc/net/getservent.c Sun Apr 4 07:31:10 2010 (r206154) @@ -207,6 +207,32 @@ servent_unpack(char *p, struct servent * return 0; } +static int +parse_result(struct servent *serv, char *buffer, size_t bufsize, + char *resultbuf, size_t resultbuflen, int *errnop) +{ + char **aliases; + int aliases_size; + + if (bufsize <= resultbuflen + _ALIGNBYTES + sizeof(char *)) { + *errnop = ERANGE; + return (NS_RETURN); + } + aliases = (char **)_ALIGN(&buffer[resultbuflen + 1]); + aliases_size = (buffer + bufsize - (char *)aliases) / sizeof(char *); + if (aliases_size < 1) { + *errnop = ERANGE; + return (NS_RETURN); + } + + memcpy(buffer, resultbuf, resultbuflen); + buffer[resultbuflen] = '\0'; + + if (servent_unpack(buffer, serv, aliases, aliases_size, errnop) != 0) + return ((*errnop == 0) ? NS_NOTFOUND : NS_RETURN); + return (NS_SUCCESS); +} + /* files backend implementation */ static void files_endstate(void *p) @@ -258,8 +284,6 @@ files_servent(void *retval, void *mdata, size_t bufsize; int *errnop; - char **aliases; - int aliases_size; size_t linesize; char *line; char **cp; @@ -347,35 +371,12 @@ files_servent(void *retval, void *mdata, continue; } - if (bufsize <= linesize + _ALIGNBYTES + sizeof(char *)) { - *errnop = ERANGE; - rv = NS_RETURN; - break; - } - aliases = (char **)_ALIGN(&buffer[linesize + 1]); - aliases_size = (buffer + bufsize - - (char *)aliases) / sizeof(char *); - if (aliases_size < 1) { - *errnop = ERANGE; - rv = NS_RETURN; - break; - } - - memcpy(buffer, line, linesize); - buffer[linesize] = '\0'; - - rv = servent_unpack(buffer, serv, aliases, aliases_size, + rv = parse_result(serv, buffer, bufsize, line, linesize, errnop); - if (rv !=0 ) { - if (*errnop == 0) { - rv = NS_NOTFOUND; - continue; - } - else { - rv = NS_RETURN; - break; - } - } + if (rv == NS_NOTFOUND) + continue; + if (rv == NS_RETURN) + break; rv = NS_NOTFOUND; switch (serv_mdata->how) { @@ -483,9 +484,6 @@ nis_servent(void *retval, void *mdata, v size_t bufsize; int *errnop; - char **aliases; - int aliases_size; - name = NULL; proto = NULL; how = (enum nss_lookup_type)mdata; @@ -591,32 +589,8 @@ nis_servent(void *retval, void *mdata, v break; }; - if (bufsize <= resultbuflen + _ALIGNBYTES + sizeof(char *)) { - *errnop = ERANGE; - rv = NS_RETURN; - break; - } - - aliases = (char **)_ALIGN(&buffer[resultbuflen + 1]); - aliases_size = - (buffer + bufsize - (char *)aliases) / sizeof(char *); - if (aliases_size < 1) { - *errnop = ERANGE; - rv = NS_RETURN; - break; - } - - memcpy(buffer, resultbuf, resultbuflen); - buffer[resultbuflen] = '\0'; - - if (servent_unpack(buffer, serv, aliases, aliases_size, - errnop) != 0) { - if (*errnop == 0) - rv = NS_NOTFOUND; - else - rv = NS_RETURN; - } else - rv = NS_SUCCESS; + rv = parse_result(serv, buffer, bufsize, resultbuf, + resultbuflen, errnop); free(resultbuf); } while (!(rv & NS_TERMINATE) && how == nss_lt_all); From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 08:31:04 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 17580106566C; Sun, 4 Apr 2010 08:31:04 +0000 (UTC) (envelope-from ume@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 04B898FC0A; Sun, 4 Apr 2010 08:31:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o348V3U1050951; Sun, 4 Apr 2010 08:31:03 GMT (envelope-from ume@svn.freebsd.org) Received: (from ume@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o348V3EQ050944; Sun, 4 Apr 2010 08:31:03 GMT (envelope-from ume@svn.freebsd.org) Message-Id: <201004040831.o348V3EQ050944@svn.freebsd.org> From: Hajimu UMEMOTO Date: Sun, 4 Apr 2010 08:31:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206155 - in head: include lib/libc/net share/man/man5 X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 08:31:04 -0000 Author: ume Date: Sun Apr 4 08:31:03 2010 New Revision: 206155 URL: http://svn.freebsd.org/changeset/base/206155 Log: Add capability to use a db version of services. It is enabled by specifying `db' as source of service in /etc/nsswitch.conf. MFC after: 2 weeks Modified: head/include/netdb.h head/include/nsswitch.h head/lib/libc/net/getservent.c head/lib/libc/net/nsdispatch.3 head/share/man/man5/nsswitch.conf.5 head/share/man/man5/services.5 Modified: head/include/netdb.h ============================================================================== --- head/include/netdb.h Sun Apr 4 07:31:10 2010 (r206154) +++ head/include/netdb.h Sun Apr 4 08:31:03 2010 (r206155) @@ -82,6 +82,7 @@ typedef __uint32_t uint32_t; #define _PATH_NETWORKS "/etc/networks" #define _PATH_PROTOCOLS "/etc/protocols" #define _PATH_SERVICES "/etc/services" +#define _PATH_SERVICES_DB "/var/db/services.db" #define h_errno (*__h_errno()) Modified: head/include/nsswitch.h ============================================================================== --- head/include/nsswitch.h Sun Apr 4 07:31:10 2010 (r206154) +++ head/include/nsswitch.h Sun Apr 4 08:31:03 2010 (r206155) @@ -58,6 +58,7 @@ * currently implemented sources */ #define NSSRC_FILES "files" /* local files */ +#define NSSRC_DB "db" /* database */ #define NSSRC_DNS "dns" /* DNS; IN for hosts, HS for others */ #define NSSRC_NIS "nis" /* YP/NIS */ #define NSSRC_COMPAT "compat" /* passwd,group in YP compat mode */ Modified: head/lib/libc/net/getservent.c ============================================================================== --- head/lib/libc/net/getservent.c Sun Apr 4 07:31:10 2010 (r206154) +++ head/lib/libc/net/getservent.c Sun Apr 4 08:31:03 2010 (r206155) @@ -37,7 +37,9 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include +#include #include #include #include @@ -94,6 +96,19 @@ NSS_TLS_HANDLING(files); static int files_servent(void *, void *, va_list); static int files_setservent(void *, void *, va_list); +/* db backend declarations */ +struct db_state +{ + DB *db; + int stayopen; + int keynum; +}; +static void db_endstate(void *); +NSS_TLS_HANDLING(db); + +static int db_servent(void *, void *, va_list); +static int db_setservent(void *, void *, va_list); + #ifdef YP /* nis backend declarations */ static int nis_servent(void *, void *, va_list); @@ -263,6 +278,8 @@ files_servent(void *retval, void *mdata, { NULL, 0 } }; ns_dtab compat_dtab[] = { + { NSSRC_DB, db_servent, + (void *)((struct servent_mdata *)mdata)->how }, #ifdef YP { NSSRC_NIS, nis_servent, (void *)((struct servent_mdata *)mdata)->how }, @@ -452,6 +469,185 @@ files_setservent(void *retval, void *mda return (NS_UNAVAIL); } +/* db backend implementation */ +static void +db_endstate(void *p) +{ + DB *db; + + if (p == NULL) + return; + + db = ((struct db_state *)p)->db; + if (db != NULL) + db->close(db); + + free(p); +} + +static int +db_servent(void *retval, void *mdata, va_list ap) +{ + char buf[BUFSIZ]; + DBT key, data; + DB *db; + + char *resultbuf; + + struct db_state *st; + int rv; + int stayopen; + + enum nss_lookup_type how; + char *name; + char *proto; + int port; + + struct servent *serv; + char *buffer; + size_t bufsize; + int *errnop; + + name = NULL; + proto = NULL; + how = (enum nss_lookup_type)mdata; + switch (how) { + case nss_lt_name: + name = va_arg(ap, char *); + proto = va_arg(ap, char *); + break; + case nss_lt_id: + port = va_arg(ap, int); + proto = va_arg(ap, char *); + break; + case nss_lt_all: + break; + default: + return NS_NOTFOUND; + }; + + serv = va_arg(ap, struct servent *); + buffer = va_arg(ap, char *); + bufsize = va_arg(ap, size_t); + errnop = va_arg(ap,int *); + + *errnop = db_getstate(&st); + if (*errnop != 0) + return (NS_UNAVAIL); + + if (how == nss_lt_all && st->keynum < 0) + return (NS_NOTFOUND); + + if (st->db == NULL) { + st->db = dbopen(_PATH_SERVICES_DB, O_RDONLY, 0, DB_HASH, NULL); + if (st->db == NULL) { + *errnop = errno; + return (NS_UNAVAIL); + } + } + + stayopen = (how == nss_lt_all) ? 1 : st->stayopen; + db = st->db; + + do { + switch (how) { + case nss_lt_name: + key.data = buf; + if (proto == NULL) + key.size = snprintf(buf, sizeof(buf), + "\376%s", name); + else + key.size = snprintf(buf, sizeof(buf), + "\376%s/%s", name, proto); + key.size++; + if (db->get(db, &key, &data, 0) != 0 || + db->get(db, &data, &key, 0) != 0) { + rv = NS_NOTFOUND; + goto db_fin; + } + resultbuf = key.data; + break; + case nss_lt_id: + key.data = buf; + port = htons(port); + if (proto == NULL) + key.size = snprintf(buf, sizeof(buf), + "\377%d", port); + else + key.size = snprintf(buf, sizeof(buf), + "\377%d/%s", port, proto); + key.size++; + if (db->get(db, &key, &data, 0) != 0 || + db->get(db, &data, &key, 0) != 0) { + rv = NS_NOTFOUND; + goto db_fin; + } + resultbuf = key.data; + break; + case nss_lt_all: + key.data = buf; + key.size = snprintf(buf, sizeof(buf), "%d", + st->keynum++); + key.size++; + if (db->get(db, &key, &data, 0) != 0) { + st->keynum = -1; + rv = NS_NOTFOUND; + goto db_fin; + } + resultbuf = data.data; + break; + } + + rv = parse_result(serv, buffer, bufsize, resultbuf, + strlen(resultbuf), errnop); + + } while (!(rv & NS_TERMINATE) && how == nss_lt_all); + +db_fin: + if (!stayopen && st->db != NULL) { + db->close(db); + st->db = NULL; + } + + if (rv == NS_SUCCESS && retval != NULL) + *(struct servent **)retval = serv; + + return (rv); +} + +static int +db_setservent(void *retval, void *mdata, va_list ap) +{ + DB *db; + struct db_state *st; + int rv; + int f; + + rv = db_getstate(&st); + if (rv != 0) + return (NS_UNAVAIL); + + switch ((enum constants)mdata) { + case SETSERVENT: + f = va_arg(ap, int); + st->stayopen |= f; + st->keynum = 0; + break; + case ENDSERVENT: + db = st->db; + if (db != NULL) { + db->close(db); + st->db = NULL; + } + st->stayopen = 0; + break; + default: + break; + }; + + return (NS_UNAVAIL); +} + /* nis backend implementation */ #ifdef YP static void @@ -638,6 +834,7 @@ compat_setservent(void *retval, void *md { NULL, 0 } }; ns_dtab compat_dtab[] = { + { NSSRC_DB, db_setservent, mdata }, #ifdef YP { NSSRC_NIS, nis_setservent, mdata }, #endif @@ -924,6 +1121,7 @@ getservbyname_r(const char *name, const #endif /* NS_CACHING */ static const ns_dtab dtab[] = { { NSSRC_FILES, files_servent, (void *)&mdata }, + { NSSRC_DB, db_servent, (void *)nss_lt_name }, #ifdef YP { NSSRC_NIS, nis_servent, (void *)nss_lt_name }, #endif @@ -960,6 +1158,7 @@ getservbyport_r(int port, const char *pr #endif static const ns_dtab dtab[] = { { NSSRC_FILES, files_servent, (void *)&mdata }, + { NSSRC_DB, db_servent, (void *)nss_lt_id }, #ifdef YP { NSSRC_NIS, nis_servent, (void *)nss_lt_id }, #endif @@ -995,6 +1194,7 @@ getservent_r(struct servent *serv, char #endif static const ns_dtab dtab[] = { { NSSRC_FILES, files_servent, (void *)&mdata }, + { NSSRC_DB, db_servent, (void *)nss_lt_all }, #ifdef YP { NSSRC_NIS, nis_servent, (void *)nss_lt_all }, #endif @@ -1027,6 +1227,7 @@ setservent(int stayopen) #endif static const ns_dtab dtab[] = { { NSSRC_FILES, files_setservent, (void *)SETSERVENT }, + { NSSRC_DB, db_setservent, (void *)SETSERVENT }, #ifdef YP { NSSRC_NIS, nis_setservent, (void *)SETSERVENT }, #endif @@ -1051,6 +1252,7 @@ endservent() #endif static const ns_dtab dtab[] = { { NSSRC_FILES, files_setservent, (void *)ENDSERVENT }, + { NSSRC_DB, db_setservent, (void *)ENDSERVENT }, #ifdef YP { NSSRC_NIS, nis_setservent, (void *)ENDSERVENT }, #endif Modified: head/lib/libc/net/nsdispatch.3 ============================================================================== --- head/lib/libc/net/nsdispatch.3 Sun Apr 4 07:31:10 2010 (r206154) +++ head/lib/libc/net/nsdispatch.3 Sun Apr 4 08:31:03 2010 (r206155) @@ -32,7 +32,7 @@ .\" .\" $FreeBSD$ .\" -.Dd January 22, 2007 +.Dd April 4, 2010 .Dt NSDISPATCH 3 .Os .Sh NAME @@ -176,6 +176,7 @@ While there is support for arbitrary sou .Bl -column NSSRC_COMPAT compat -offset indent .It Sy "#define value" .It Dv NSSRC_FILES Ta """files"" +.It Dv NSSRC_DB Ta """db"" .It Dv NSSRC_DNS Ta """dns"" .It Dv NSSRC_NIS Ta """nis"" .It Dv NSSRC_COMPAT Ta """compat"" Modified: head/share/man/man5/nsswitch.conf.5 ============================================================================== --- head/share/man/man5/nsswitch.conf.5 Sun Apr 4 07:31:10 2010 (r206154) +++ head/share/man/man5/nsswitch.conf.5 Sun Apr 4 08:31:03 2010 (r206155) @@ -33,7 +33,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 23, 2008 +.Dd April 4, 2010 .Dt NSSWITCH.CONF 5 .Os .Sh NAME @@ -72,6 +72,8 @@ Local files, such as .Pa /etc/hosts , and .Pa /etc/passwd . +.It db +Local database. .It dns Internet Domain Name System. .Dq hosts Modified: head/share/man/man5/services.5 ============================================================================== --- head/share/man/man5/services.5 Sun Apr 4 07:31:10 2010 (r206154) +++ head/share/man/man5/services.5 Sun Apr 4 08:31:03 2010 (r206155) @@ -32,7 +32,7 @@ .\" @(#)services.5 8.1 (Berkeley) 6/5/93 .\" $FreeBSD$ .\" -.Dd June 5, 1993 +.Dd April 4, 2010 .Dt SERVICES 5 .Os .Sh NAME @@ -65,6 +65,18 @@ not interpreted by the routines which se Service names may contain any printable character other than a field delimiter, newline, or comment character. +.Pp +If +.Dq db +is specified as source in the +.Xr nsswitch.conf 5 , +.Pa /var/db/services.db +is searched. +The database in +.Pa /var/db/services.db +needs to be updated with +.Xr services_mkdb 8 +after changes to the services file have been applied. .Sh NIS INTERACTION Access to the NIS .Pa services.byname @@ -84,6 +96,8 @@ file resides in .El .Sh SEE ALSO .Xr getservent 3 +.Xr nsswitch.conf 5 +.Xr services_mkdb 8 .Sh HISTORY The .Nm From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 08:38:14 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7BEED1065674; Sun, 4 Apr 2010 08:38:14 +0000 (UTC) (envelope-from ume@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 68E7A8FC2D; Sun, 4 Apr 2010 08:38:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o348cEWu052565; Sun, 4 Apr 2010 08:38:14 GMT (envelope-from ume@svn.freebsd.org) Received: (from ume@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o348cE2p052559; Sun, 4 Apr 2010 08:38:14 GMT (envelope-from ume@svn.freebsd.org) Message-Id: <201004040838.o348cE2p052559@svn.freebsd.org> From: Hajimu UMEMOTO Date: Sun, 4 Apr 2010 08:38:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206156 - in head/usr.sbin: . services_mkdb X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 08:38:14 -0000 Author: ume Date: Sun Apr 4 08:38:14 2010 New Revision: 206156 URL: http://svn.freebsd.org/changeset/base/206156 Log: services_mkdb; generate db file from services(5) to increase speed of getserv*() Obtained from: NetBSD MFC after: 2 weeks Added: head/usr.sbin/services_mkdb/ head/usr.sbin/services_mkdb/Makefile (contents, props changed) head/usr.sbin/services_mkdb/services_mkdb.8 (contents, props changed) head/usr.sbin/services_mkdb/services_mkdb.c (contents, props changed) head/usr.sbin/services_mkdb/uniq.c (contents, props changed) Modified: head/usr.sbin/Makefile Modified: head/usr.sbin/Makefile ============================================================================== --- head/usr.sbin/Makefile Sun Apr 4 08:31:03 2010 (r206155) +++ head/usr.sbin/Makefile Sun Apr 4 08:38:14 2010 (r206156) @@ -167,6 +167,7 @@ SUBDIR= ${_ac} \ ${_sade} \ ${_sendmail} \ service \ + services_mkdb \ setfib \ setfmac \ setpmac \ Added: head/usr.sbin/services_mkdb/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/usr.sbin/services_mkdb/Makefile Sun Apr 4 08:38:14 2010 (r206156) @@ -0,0 +1,10 @@ +# $FreeBSD$ + +PROG= services_mkdb +MAN= services_mkdb.8 +SRCS= services_mkdb.c uniq.c + +DPADD+= ${LIBUTIL} +LDADD+= -lutil + +.include Added: head/usr.sbin/services_mkdb/services_mkdb.8 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/usr.sbin/services_mkdb/services_mkdb.8 Sun Apr 4 08:38:14 2010 (r206156) @@ -0,0 +1,97 @@ +.\" $NetBSD: services_mkdb.8,v 1.9 2009/05/13 22:36:39 wiz Exp $ +.\" +.\" Copyright (c) 1999 The NetBSD Foundation, Inc. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed to The NetBSD Foundation +.\" by Luke Mewburn. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +.\" POSSIBILITY OF SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd April 4, 2010 +.Dt SERVICES_MKDB 8 +.Os +.Sh NAME +.Nm services_mkdb +.Nd generate the services databases +.Sh SYNOPSIS +.Nm +.Op Fl q +.Op Fl o Ar database +.Op file +.Nm +.Fl u +.Op file +.Sh DESCRIPTION +.Nm +creates a +.Xr db 3 +database for the specified file. +If no file is specified, then +.Pa /etc/services +is used. +The database is installed into +.Pa /var/db/services.db . +The file must be in the correct format (see +.Xr services 5 ) . +.Pp +The options are as follows: +.Bl -tag -width indent +.It Fl o Ar database +Put the output databases in the named file. +.It Fl q +Don't warn about duplicate services. +.It Fl u +Print the services file to stdout, omitting duplicate entries and comments. +.El +.Pp +The databases are used by the C library services routines (see +.Xr getservent 3 ) . +.Pp +.Nm +exits zero on success, non-zero on failure. +.Sh FILES +.Bl -tag -width 24n -compact +.It Pa /var/db/services.db +The current services database. +.It Pa /var/db/services.db.tmp +A temporary file. +.It Pa /etc/services +The current services file. +.El +.Sh SEE ALSO +.Xr db 3 , +.Xr getservent 3 , +.Xr services 5 +.Sh BUGS +Because +.Nm +guarantees not to install a partial destination file it must +build a temporary file in the same file system and if successful use +.Xr rename 2 +to install over the destination file. +.Pp +If +.Nm +fails it will leave the previous version of the destination file intact. Added: head/usr.sbin/services_mkdb/services_mkdb.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/usr.sbin/services_mkdb/services_mkdb.c Sun Apr 4 08:38:14 2010 (r206156) @@ -0,0 +1,428 @@ +/* $NetBSD: services_mkdb.c,v 1.14 2008/04/28 20:24:17 martin Exp $ */ + +/*- + * Copyright (c) 1999 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Luke Mewburn and Christos Zoulas. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static char tname[MAXPATHLEN]; + +#define PMASK 0xffff +#define PROTOMAX 5 + +extern void uniq(const char *); + +static void add(DB *, StringList *, size_t, const char *, size_t *, int); +static StringList ***parseservices(const char *, StringList *); +static void cleanup(void); +static void store(DB *, DBT *, DBT *, int); +static void killproto(DBT *); +static char *getstring(const char *, size_t, char **, const char *); +static size_t getprotoindex(StringList *, const char *); +static const char *getprotostr(StringList *, size_t); +static const char *mkaliases(StringList *, char *, size_t); +static void usage(void); + +const HASHINFO hinfo = { + .bsize = 256, + .ffactor = 4, + .nelem = 32768, + .cachesize = 1024, + .hash = NULL, + .lorder = 0 +}; + + +int +main(int argc, char *argv[]) +{ + DB *db; + int ch; + const char *fname = _PATH_SERVICES; + const char *dbname = _PATH_SERVICES_DB; + int warndup = 1; + int unique = 0; + int otherflag = 0; + size_t cnt = 0; + StringList *sl, ***svc; + size_t port, proto; + + setprogname(argv[0]); + + while ((ch = getopt(argc, argv, "qo:u")) != -1) + switch (ch) { + case 'q': + otherflag = 1; + warndup = 0; + break; + case 'o': + otherflag = 1; + dbname = optarg; + break; + case 'u': + unique++; + break; + case '?': + default: + usage(); + } + + argc -= optind; + argv += optind; + + if (argc > 1 || (unique && otherflag)) + usage(); + if (argc == 1) + fname = argv[0]; + + if (unique) + uniq(fname); + + svc = parseservices(fname, sl = sl_init()); + + if (atexit(cleanup)) + err(1, "Cannot install exit handler"); + + (void)snprintf(tname, sizeof(tname), "%s.tmp", dbname); + db = dbopen(tname, O_RDWR | O_CREAT | O_EXCL, + (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH), DB_HASH, &hinfo); + if (!db) + err(1, "Error opening temporary database `%s'", tname); + + + for (port = 0; port < PMASK + 1; port++) { + if (svc[port] == NULL) + continue; + + for (proto = 0; proto < PROTOMAX; proto++) { + StringList *s; + if ((s = svc[port][proto]) == NULL) + continue; + add(db, s, port, getprotostr(sl, proto), &cnt, warndup); + } + + free(svc[port]); + } + + free(svc); + sl_free(sl, 1); + + if ((db->close)(db)) + err(1, "Error closing temporary database `%s'", tname); + + if (rename(tname, dbname) == -1) + err(1, "Cannot rename `%s' to `%s'", tname, dbname); + + return 0; +} + +static void +add(DB *db, StringList *sl, size_t port, const char *proto, size_t *cnt, + int warndup) +{ + size_t i; + char keyb[BUFSIZ], datab[BUFSIZ], abuf[BUFSIZ]; + DBT data, key; + key.data = keyb; + data.data = datab; + +#ifdef DEBUG + (void)printf("add %s %zu %s [ ", sl->sl_str[0], port, proto); + for (i = 1; i < sl->sl_cur; i++) + (void)printf("%s ", sl->sl_str[i]); + (void)printf("]\n"); +#endif + + /* key `indirect key', data `full line' */ + data.size = snprintf(datab, sizeof(datab), "%zu", (*cnt)++) + 1; + key.size = snprintf(keyb, sizeof(keyb), "%s %zu/%s %s", + sl->sl_str[0], port, proto, mkaliases(sl, abuf, sizeof(abuf))) + 1; + store(db, &data, &key, warndup); + + /* key `\377port/proto', data = `indirect key' */ + key.size = snprintf(keyb, sizeof(keyb), "\377%zu/%s", + port, proto) + 1; + store(db, &key, &data, warndup); + + /* key `\377port', data = `indirect key' */ + killproto(&key); + store(db, &key, &data, warndup); + + /* add references for service and all aliases */ + for (i = 0; i < sl->sl_cur; i++) { + /* key `\376service/proto', data = `indirect key' */ + key.size = snprintf(keyb, sizeof(keyb), "\376%s/%s", + sl->sl_str[i], proto) + 1; + store(db, &key, &data, warndup); + + /* key `\376service', data = `indirect key' */ + killproto(&key); + store(db, &key, &data, warndup); + } + sl_free(sl, 1); +} + +static StringList *** +parseservices(const char *fname, StringList *sl) +{ + size_t len, line, pindex; + FILE *fp; + StringList ***svc, *s; + char *p, *ep; + + if ((fp = fopen(fname, "r")) == NULL) + err(1, "Cannot open `%s'", fname); + + line = 0; + if ((svc = calloc(PMASK + 1, sizeof(StringList **))) == NULL) + err(1, "Cannot allocate %zu bytes", PMASK + 1); + + /* XXX: change NULL to "\0\0#" when fparseln fixed */ + for (; (p = fparseln(fp, &len, &line, NULL, 0)) != NULL; free(p)) { + char *name, *port, *proto, *aliases, *cp, *alias; + unsigned long pnum; + + if (len == 0) + continue; + + for (cp = p; *cp && isspace((unsigned char)*cp); cp++) + continue; + + if (*cp == '\0' || *cp == '#') + continue; + + if ((name = getstring(fname, line, &cp, "name")) == NULL) + continue; + + if ((port = getstring(fname, line, &cp, "port")) == NULL) + continue; + + if (cp) { + for (aliases = cp; *cp && *cp != '#'; cp++) + continue; + + if (*cp) + *cp = '\0'; + } else + aliases = NULL; + + proto = strchr(port, '/'); + if (proto == NULL || proto[1] == '\0') { + warnx("%s, %zu: no protocol found", fname, line); + continue; + } + *proto++ = '\0'; + + errno = 0; + pnum = strtoul(port, &ep, 0); + if (*port == '\0' || *ep != '\0') { + warnx("%s, %zu: invalid port `%s'", fname, line, port); + continue; + } + if ((errno == ERANGE && pnum == ULONG_MAX) || pnum > PMASK) { + warnx("%s, %zu: port too big `%s'", fname, line, port); + continue; + } + + if (svc[pnum] == NULL) { + svc[pnum] = calloc(PROTOMAX, sizeof(StringList *)); + if (svc[pnum] == NULL) + err(1, "Cannot allocate %zu bytes", PROTOMAX); + } + + pindex = getprotoindex(sl, proto); + if (svc[pnum][pindex] == NULL) + s = svc[pnum][pindex] = sl_init(); + else + s = svc[pnum][pindex]; + + /* build list of aliases */ + if (sl_find(s, name) == NULL) { + char *p; + + if ((p = strdup(name)) == NULL) + err(1, "Cannot copy string"); + (void)sl_add(s, p); + } + + if (aliases) { + while ((alias = strsep(&aliases, " \t")) != NULL) { + if (alias[0] == '\0') + continue; + if (sl_find(s, alias) == NULL) { + char *p; + + if ((p = strdup(alias)) == NULL) + err(1, "Cannot copy string"); + (void)sl_add(s, p); + } + } + } + } + (void)fclose(fp); + return svc; +} + +/* + * cleanup(): Remove temporary files upon exit + */ +static void +cleanup(void) +{ + if (tname[0]) + (void)unlink(tname); +} + +static char * +getstring(const char *fname, size_t line, char **cp, const char *tag) +{ + char *str; + + while ((str = strsep(cp, " \t")) != NULL && *str == '\0') + continue; + + if (str == NULL) + warnx("%s, %zu: no %s found", fname, line, tag); + + return str; +} + +static void +killproto(DBT *key) +{ + char *p, *d = key->data; + + if ((p = strchr(d, '/')) == NULL) + abort(); + *p++ = '\0'; + key->size = p - d; +} + +static void +store(DB *db, DBT *key, DBT *data, int warndup) +{ +#ifdef DEBUG + int k = key->size - 1; + int d = data->size - 1; + (void)printf("store [%*.*s] [%*.*s]\n", + k, k, (char *)key->data + 1, + d, d, (char *)data->data + 1); +#endif + switch ((db->put)(db, key, data, R_NOOVERWRITE)) { + case 0: + break; + case 1: + if (warndup) + warnx("duplicate service `%s'", + &((char *)key->data)[1]); + break; + case -1: + err(1, "put"); + break; + default: + abort(); + break; + } +} + +static size_t +getprotoindex(StringList *sl, const char *str) +{ + size_t i; + char *p; + + for (i= 0; i < sl->sl_cur; i++) + if (strcmp(sl->sl_str[i], str) == 0) + return i; + + if (i == PROTOMAX) + errx(1, "Ran out of protocols adding `%s';" + " recompile with larger PROTOMAX", str); + if ((p = strdup(str)) == NULL) + err(1, "Cannot copy string"); + (void)sl_add(sl, p); + return i; +} + +static const char * +getprotostr(StringList *sl, size_t i) +{ + assert(i < sl->sl_cur); + return sl->sl_str[i]; +} + +static const char * +mkaliases(StringList *sl, char *buf, size_t len) +{ + size_t nc, i, pos; + + buf[0] = 0; + for (i = 1, pos = 0; i < sl->sl_cur; i++) { + nc = strlcpy(buf + pos, sl->sl_str[i], len); + if (nc >= len) + goto out; + pos += nc; + len -= nc; + nc = strlcpy(buf + pos, " ", len); + if (nc >= len) + goto out; + pos += nc; + len -= nc; + } + return buf; +out: + warn("aliases for `%s' truncated", sl->sl_str[0]); + return buf; +} + +static void +usage(void) +{ + (void)fprintf(stderr, "Usage:\t%s [-q] [-o ] []\n" + "\t%s -u []\n", getprogname(), getprogname()); + exit(1); +} Added: head/usr.sbin/services_mkdb/uniq.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/usr.sbin/services_mkdb/uniq.c Sun Apr 4 08:38:14 2010 (r206156) @@ -0,0 +1,159 @@ +/* $NetBSD: uniq.c,v 1.4 2008/04/28 20:24:17 martin Exp $ */ + +/*- + * Copyright (c) 2007 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Christos Zoulas. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include + +extern const HASHINFO hinfo; + +void uniq(const char *); +static int comp(const char *, char **, size_t *); + +/* + * Preserve only unique content lines in a file. Input lines that have + * content [alphanumeric characters before a comment] are white-space + * normalized and have their comments removed. Then they are placed + * in a hash table, and only the first instance of them is printed. + * Comment lines without any alphanumeric content are always printed + * since they are there to make the file "pretty". Comment lines with + * alphanumeric content are also placed into the hash table and only + * printed once. + */ +void +uniq(const char *fname) +{ + DB *db; + DBT key; + static const DBT data = { NULL, 0 }; + FILE *fp; + char *line; + size_t len; + + if ((db = dbopen(NULL, O_RDWR, 0, DB_HASH, &hinfo)) == NULL) + err(1, "Cannot create in memory database"); + + if ((fp = fopen(fname, "r")) == NULL) + err(1, "Cannot open `%s'", fname); + while ((line = fgetln(fp, &len)) != NULL) { + size_t complen = len; + char *compline; + if (!comp(line, &compline, &complen)) { + (void)fprintf(stdout, "%*.*s", (int)len, (int)len, + line); + continue; + } + key.data = compline; + key.size = complen; + switch ((db->put)(db, &key, &data, R_NOOVERWRITE)) { + case 0: + (void)fprintf(stdout, "%*.*s", (int)len, (int)len, + line); + break; + case 1: + break; + case -1: + err(1, "put"); + default: + abort(); + break; + } + } + (void)fflush(stdout); + exit(0); +} + +/* + * normalize whitespace in the original line and place a new string + * with whitespace converted to a single space in compline. If the line + * contains just comments, we preserve them. If it contains data and + * comments, we kill the comments. Return 1 if the line had actual + * contents, or 0 if it was just a comment without alphanumeric characters. + */ +static int +comp(const char *origline, char **compline, size_t *len) +{ + const unsigned char *p; + unsigned char *q; + char *cline; + size_t l = *len, complen; + int hasalnum, iscomment; + + /* Eat leading space */ + for (p = (const unsigned char *)origline; l && *p && isspace(*p); + p++, l--) + continue; + if ((cline = malloc(l + 1)) == NULL) + err(1, "Cannot allocate %zu bytes", l + 1); + (void)memcpy(cline, p, l); + cline[l] = '\0'; + if (*cline == '\0') + return 0; + + complen = 0; + hasalnum = 0; + iscomment = 0; + + for (q = (unsigned char *)cline; l && *p; p++, l--) { + if (isspace(*p)) { + if (complen && isspace(q[-1])) + continue; + *q++ = ' '; + complen++; + } else { + if (!iscomment && *p == '#') { + if (hasalnum) + break; + iscomment = 1; + } else + hasalnum |= isalnum(*p); + *q++ = *p; + complen++; + } + } + + /* Eat trailing space */ + while (complen && isspace(q[-1])) { + --q; + --complen; + } + *q = '\0'; + *compline = cline; + *len = complen; + return hasalnum; +} From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 11:39:33 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B5247106566B; Sun, 4 Apr 2010 11:39:33 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from mail.vx.sk (core.vx.sk [188.40.32.143]) by mx1.freebsd.org (Postfix) with ESMTP id 432DD8FC1C; Sun, 4 Apr 2010 11:39:33 +0000 (UTC) Received: from core.vx.sk (localhost [127.0.0.1]) by mail.vx.sk (Postfix) with ESMTP id 9D7FE8147E; Sun, 4 Apr 2010 13:23:40 +0200 (CEST) X-Virus-Scanned: amavisd-new at mail.vx.sk Received: from mail.vx.sk ([127.0.0.1]) by core.vx.sk (mail.vx.sk [127.0.0.1]) (amavisd-new, port 10024) with LMTP id oeEb5brJKUWi; Sun, 4 Apr 2010 13:23:38 +0200 (CEST) Received: from [10.9.8.1] (chello089173000055.chello.sk [89.173.0.55]) by mail.vx.sk (Postfix) with ESMTPSA id 728A481477; Sun, 4 Apr 2010 13:23:38 +0200 (CEST) Message-ID: <4BB876BA.2030607@FreeBSD.org> Date: Sun, 04 Apr 2010 13:23:38 +0200 From: Martin Matuska User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; sk; rv:1.8.1.23) Gecko/20090812 Lightning/0.9 Thunderbird/2.0.0.23 Mnenhy/0.7.5.0 MIME-Version: 1.0 To: Andriy Gapon References: <201003160048.o2G0mReg025652@svn.freebsd.org> <4BB75C8D.8070607@freebsd.org> <4BB75EEF.8060201@freebsd.org> In-Reply-To: <4BB75EEF.8060201@freebsd.org> X-Enigmail-Version: 1.0.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: svn-src-head@freebsd.org, Pawel Jakub Dawidek , svn-src-all@freebsd.org, src-committers@freebsd.org, Xin LI Subject: Re: svn commit: r205198 - in head/cddl/contrib/opensolaris: cmd/zfs lib/libzfs/common X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 11:39:33 -0000 The fix is correct. It has been fixed in OpenSolaris rev. 9396. I have filed a PR kern/145377 The PR includes the complete patch from OpenSolaris including their commented code. Link: http://www.freebsd.org/cgi/query-pr.cgi?pr=145377 Dňa 3. 4. 2010 17:29, Andriy Gapon wrote / napísal(a): > on 03/04/2010 18:19 Andriy Gapon said the following: > >> It seems that this commit causes a crash in zfs(1) when e.g. 'zfs list' is >> executed and one of the filesystems has a user property set on it. >> >> The crash is in zfs_prune_proplist function at >> cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c:4291. >> >> Relevant code snippet: >> 4286 >> 4287 while (curr) { >> 4288 zfs_prop_t zfs_prop = zfs_name_to_prop(nvpair_name(curr)); >> 4289 nvpair_t *next = nvlist_next_nvpair(zhp->zfs_props, curr); >> 4290 >> 4291 if (props[zfs_prop] == B_FALSE) >> 4292 (void) nvlist_remove(zhp->zfs_props, >> 4293 nvpair_name(curr), nvpair_type(curr)); >> 4294 curr = next; >> 4295 } >> >> zfs_prop is (-1) and nvpair_name(curr) is my custom property "avg:nobackup". >> Not sure if this was fixed in OpenSolaris or what. >> > BTW, I use this simplistic change for time being, not sure if this is a correct fix. > > --- a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c > +++ b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c > @@ -4288,7 +4288,7 @@ zfs_prune_proplist(zfs_handle_t *zhp, uint8_t *props) > zfs_prop_t zfs_prop = zfs_name_to_prop(nvpair_name(curr)); > nvpair_t *next = nvlist_next_nvpair(zhp->zfs_props, curr); > > - if (props[zfs_prop] == B_FALSE) > + if (zfs_prop != ZPROP_INVAL && props[zfs_prop] == B_FALSE) > (void) nvlist_remove(zhp->zfs_props, > nvpair_name(curr), nvpair_type(curr)); > curr = next; > > > From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 13:17:05 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EEB46106566B; Sun, 4 Apr 2010 13:17:05 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DD66E8FC14; Sun, 4 Apr 2010 13:17:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o34DH5Ik021200; Sun, 4 Apr 2010 13:17:05 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o34DH5hD021198; Sun, 4 Apr 2010 13:17:05 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201004041317.o34DH5hD021198@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 4 Apr 2010 13:17:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206158 - head/bin/sh X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 13:17:06 -0000 Author: jilles Date: Sun Apr 4 13:17:05 2010 New Revision: 206158 URL: http://svn.freebsd.org/changeset/base/206158 Log: sh: Document the expansion changes in the man page. Note that the following sentence > Enclosing the full parameter expansion string in double-quotes does not > cause the following four varieties of pattern characters to be quoted, > whereas quoting characters within the braces has this effect. is now true, but used to be incorrect. Modified: head/bin/sh/sh.1 Modified: head/bin/sh/sh.1 ============================================================================== --- head/bin/sh/sh.1 Sun Apr 4 08:47:34 2010 (r206157) +++ head/bin/sh/sh.1 Sun Apr 4 13:17:05 2010 (r206158) @@ -32,7 +32,7 @@ .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 .\" $FreeBSD$ .\" -.Dd March 6, 2010 +.Dd April 4, 2010 .Dt SH 1 .Os .Sh NAME @@ -1178,10 +1178,20 @@ consists of all characters until the mat .Ql } . Any .Ql } -escaped by a backslash or within a quoted string, and characters in +escaped by a backslash or within a single-quoted string, and characters in embedded arithmetic expansions, command substitutions, and variable expansions, are not examined in determining the matching .Ql } . +Except for the variants with +.Ql + , +.Ql - , +.Ql = +or +.Ql ?\& , +any +.Ql } +within a double-quoted string is also not examined in determining the matching +.Ql } . .Pp The simplest form for parameter expansion is: .Pp @@ -1265,6 +1275,14 @@ is substituted. In the parameter expansions shown previously, use of the colon in the format results in a test for a parameter that is unset or null; omission of the colon results in a test for a parameter that is only unset. +.Pp +The +.Ar word +inherits the type of quoting +(unquoted, double-quoted or here-document) +from the surroundings, +with the exception that a backslash that quotes a closing brace is removed +during quote removal. .Bl -tag -width indent .It Li ${# Ns Ar parameter Ns Li } String Length. From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 14:23:28 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D3612106566B; Sun, 4 Apr 2010 14:23:28 +0000 (UTC) (envelope-from ume@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C22238FC22; Sun, 4 Apr 2010 14:23:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o34ENSgx035632; Sun, 4 Apr 2010 14:23:28 GMT (envelope-from ume@svn.freebsd.org) Received: (from ume@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o34ENSju035630; Sun, 4 Apr 2010 14:23:28 GMT (envelope-from ume@svn.freebsd.org) Message-Id: <201004041423.o34ENSju035630@svn.freebsd.org> From: Hajimu UMEMOTO Date: Sun, 4 Apr 2010 14:23:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206159 - head/usr.sbin/services_mkdb X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 14:23:28 -0000 Author: ume Date: Sun Apr 4 14:23:28 2010 New Revision: 206159 URL: http://svn.freebsd.org/changeset/base/206159 Log: Fix compilation error on 9-CURRENT. Reported by: nyan MFC after: 2 weeks Modified: head/usr.sbin/services_mkdb/services_mkdb.c Modified: head/usr.sbin/services_mkdb/services_mkdb.c ============================================================================== --- head/usr.sbin/services_mkdb/services_mkdb.c Sun Apr 4 13:17:05 2010 (r206158) +++ head/usr.sbin/services_mkdb/services_mkdb.c Sun Apr 4 14:23:28 2010 (r206159) @@ -282,11 +282,11 @@ parseservices(const char *fname, StringL /* build list of aliases */ if (sl_find(s, name) == NULL) { - char *p; + char *p2; - if ((p = strdup(name)) == NULL) + if ((p2 = strdup(name)) == NULL) err(1, "Cannot copy string"); - (void)sl_add(s, p); + (void)sl_add(s, p2); } if (aliases) { @@ -294,11 +294,11 @@ parseservices(const char *fname, StringL if (alias[0] == '\0') continue; if (sl_find(s, alias) == NULL) { - char *p; + char *p2; - if ((p = strdup(alias)) == NULL) + if ((p2 = strdup(alias)) == NULL) err(1, "Cannot copy string"); - (void)sl_add(s, p); + (void)sl_add(s, p2); } } } From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 14:48:43 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DC6101065675; Sun, 4 Apr 2010 14:48:43 +0000 (UTC) (envelope-from jh@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CBBE98FC16; Sun, 4 Apr 2010 14:48:43 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o34EmhUk041229; Sun, 4 Apr 2010 14:48:43 GMT (envelope-from jh@svn.freebsd.org) Received: (from jh@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o34Emhta041227; Sun, 4 Apr 2010 14:48:43 GMT (envelope-from jh@svn.freebsd.org) Message-Id: <201004041448.o34Emhta041227@svn.freebsd.org> From: Jaakko Heinonen Date: Sun, 4 Apr 2010 14:48:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206160 - head/sys/kern X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 14:48:44 -0000 Author: jh Date: Sun Apr 4 14:48:43 2010 New Revision: 206160 URL: http://svn.freebsd.org/changeset/base/206160 Log: Add missing MNT_NFS4ACLS. Modified: head/sys/kern/vfs_subr.c Modified: head/sys/kern/vfs_subr.c ============================================================================== --- head/sys/kern/vfs_subr.c Sun Apr 4 14:23:28 2010 (r206159) +++ head/sys/kern/vfs_subr.c Sun Apr 4 14:48:43 2010 (r206160) @@ -2797,6 +2797,7 @@ DB_SHOW_COMMAND(mount, db_show_mount) MNT_FLAG(MNT_NOATIME); MNT_FLAG(MNT_NOCLUSTERR); MNT_FLAG(MNT_NOCLUSTERW); + MNT_FLAG(MNT_NFS4ACLS); MNT_FLAG(MNT_EXRDONLY); MNT_FLAG(MNT_EXPORTED); MNT_FLAG(MNT_DEFEXPORTED); From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 15:21:10 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2CF1B106566C; Sun, 4 Apr 2010 15:21:10 +0000 (UTC) (envelope-from ume@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1BF7B8FC16; Sun, 4 Apr 2010 15:21:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o34FL9a5048510; Sun, 4 Apr 2010 15:21:09 GMT (envelope-from ume@svn.freebsd.org) Received: (from ume@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o34FL9js048508; Sun, 4 Apr 2010 15:21:09 GMT (envelope-from ume@svn.freebsd.org) Message-Id: <201004041521.o34FL9js048508@svn.freebsd.org> From: Hajimu UMEMOTO Date: Sun, 4 Apr 2010 15:21:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206163 - head/usr.sbin/services_mkdb X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 15:21:10 -0000 Author: ume Date: Sun Apr 4 15:21:09 2010 New Revision: 206163 URL: http://svn.freebsd.org/changeset/base/206163 Log: Fix compilation error on amd64. Reported by: stefanf MFC after: 2 weeks Modified: head/usr.sbin/services_mkdb/services_mkdb.c Modified: head/usr.sbin/services_mkdb/services_mkdb.c ============================================================================== --- head/usr.sbin/services_mkdb/services_mkdb.c Sun Apr 4 14:57:46 2010 (r206162) +++ head/usr.sbin/services_mkdb/services_mkdb.c Sun Apr 4 15:21:09 2010 (r206163) @@ -219,7 +219,7 @@ parseservices(const char *fname, StringL line = 0; if ((svc = calloc(PMASK + 1, sizeof(StringList **))) == NULL) - err(1, "Cannot allocate %zu bytes", PMASK + 1); + err(1, "Cannot allocate %zu bytes", (size_t)(PMASK + 1)); /* XXX: change NULL to "\0\0#" when fparseln fixed */ for (; (p = fparseln(fp, &len, &line, NULL, 0)) != NULL; free(p)) { @@ -271,7 +271,8 @@ parseservices(const char *fname, StringL if (svc[pnum] == NULL) { svc[pnum] = calloc(PROTOMAX, sizeof(StringList *)); if (svc[pnum] == NULL) - err(1, "Cannot allocate %zu bytes", PROTOMAX); + err(1, "Cannot allocate %zu bytes", + (size_t)PROTOMAX); } pindex = getprotoindex(sl, proto); From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 15:36:58 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8C94C106567F; Sun, 4 Apr 2010 15:36:58 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id 01B0B8FC14; Sun, 4 Apr 2010 15:36:57 +0000 (UTC) Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id o34FasRl080696 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 4 Apr 2010 18:36:54 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4) with ESMTP id o34FasYB086259; Sun, 4 Apr 2010 18:36:54 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4/Submit) id o34FarNI086258; Sun, 4 Apr 2010 18:36:53 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Sun, 4 Apr 2010 18:36:53 +0300 From: Kostik Belousov To: Alexander Leidinger Message-ID: <20100404153653.GD2415@deviant.kiev.zoral.com.ua> References: <201004020655.o326tWax079882@svn.freebsd.org> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="cWtvayRuroyN98H5" Content-Disposition: inline In-Reply-To: <201004020655.o326tWax079882@svn.freebsd.org> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-3.8 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, DNS_FROM_OPENWHOIS autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r206082 - in head: . share/man/man7 share/mk sys/conf X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 15:36:58 -0000 --cWtvayRuroyN98H5 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Apr 02, 2010 at 06:55:32AM +0000, Alexander Leidinger wrote: > Author: netchild > Date: Fri Apr 2 06:55:31 2010 > New Revision: 206082 > URL: http://svn.freebsd.org/changeset/base/206082 >=20 > Log: > WITH_CTF can now be specified in src.conf (not recommended, there > are some problems with static executables), make.conf (would also > affect ports which do not use GNU make and do not override the > compile targets) or in the kernel config (via "makeoptions > WITH_CTF=3Dyes"). I think this commit started the kernel build to emit lines like this [ -z "ctfconvert" -o -n "1" ] || ctfconvert -L VERSION -g vm_init.o after compilation of each file from the kernel (but not modules) source. Could you, please, look for missed '@' ? --cWtvayRuroyN98H5 Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEARECAAYFAku4shQACgkQC3+MBN1Mb4g4RQCgyA3y2LpxP3Ba45PKfL11B8l2 wZoAoK1VMRS8jO3dgAS23STMt5vDxUzS =0GNW -----END PGP SIGNATURE----- --cWtvayRuroyN98H5-- From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 16:29:49 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 22D1B1065702; Sun, 4 Apr 2010 16:29:49 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 108D78FC15; Sun, 4 Apr 2010 16:29:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o34GTmCD063693; Sun, 4 Apr 2010 16:29:48 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o34GTmWv063692; Sun, 4 Apr 2010 16:29:48 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201004041629.o34GTmWv063692@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 4 Apr 2010 16:29:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206167 - head/tools/regression/bin/sh/expansion X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 16:29:49 -0000 Author: jilles Date: Sun Apr 4 16:29:48 2010 New Revision: 206167 URL: http://svn.freebsd.org/changeset/base/206167 Log: sh: Add test for some associativity in arithmetic. Added: head/tools/regression/bin/sh/expansion/arith4.0 (contents, props changed) Added: head/tools/regression/bin/sh/expansion/arith4.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/expansion/arith4.0 Sun Apr 4 16:29:48 2010 (r206167) @@ -0,0 +1,20 @@ +# $FreeBSD$ + +failures=0 + +check() { + if [ $(($1)) != $2 ]; then + failures=$((failures+1)) + echo "For $1, expected $2 actual $(($1))" + fi +} + +check '20 / 2 / 2' 5 +check '20 - 2 - 2' 16 +unset a b c d +check "a = b = c = d = 1" 1 +check "a == 1 && b == 1 && c == 1 && d == 1" 1 +check "a += b += c += d" 4 +check "a == 4 && b == 3 && c == 2 && d == 1" 1 + +exit $((failures != 0)) From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 16:48:33 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 88A551065670; Sun, 4 Apr 2010 16:48:33 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 77B488FC1B; Sun, 4 Apr 2010 16:48:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o34GmXF2067898; Sun, 4 Apr 2010 16:48:33 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o34GmXqC067897; Sun, 4 Apr 2010 16:48:33 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201004041648.o34GmXqC067897@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 4 Apr 2010 16:48:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206168 - head/tools/regression/bin/sh/expansion X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 16:48:33 -0000 Author: jilles Date: Sun Apr 4 16:48:33 2010 New Revision: 206168 URL: http://svn.freebsd.org/changeset/base/206168 Log: sh: Add test for nested arithmetic substitution. Pre-r206145 sh changes nested arithmetic substitution to parentheses, which is not always correct, as exercised by this test. Added: head/tools/regression/bin/sh/expansion/arith5.0 (contents, props changed) Added: head/tools/regression/bin/sh/expansion/arith5.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/expansion/arith5.0 Sun Apr 4 16:48:33 2010 (r206168) @@ -0,0 +1,17 @@ +# $FreeBSD$ + +failures=0 + +check() { + if [ "$2" != "$3" ]; then + failures=$((failures+1)) + echo "For $1, expected $3 actual $2" + fi +} + +unset a +check '$((1+${a:-$((7+2))}))' "$((1+${a:-$((7+2))}))" 10 +check '$((1+${a:=$((2+2))}))' "$((1+${a:=$((2+2))}))" 5 +check '$a' "$a" 4 + +exit $((failures != 0)) From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 21:03:21 2010 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ACDB41065670; Sun, 4 Apr 2010 21:03:21 +0000 (UTC) (envelope-from peterjeremy@acm.org) Received: from mail16.syd.optusnet.com.au (mail16.syd.optusnet.com.au [211.29.132.197]) by mx1.freebsd.org (Postfix) with ESMTP id 332828FC0C; Sun, 4 Apr 2010 21:03:20 +0000 (UTC) Received: from server.vk2pj.dyndns.org (c122-106-253-149.belrs3.nsw.optusnet.com.au [122.106.253.149]) by mail16.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id o34L3IrY030865 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 5 Apr 2010 07:03:19 +1000 X-Bogosity: Ham, spamicity=0.000000 Received: from server.vk2pj.dyndns.org (localhost.vk2pj.dyndns.org [127.0.0.1]) by server.vk2pj.dyndns.org (8.14.3/8.14.3) with ESMTP id o34L3EJZ020091; Mon, 5 Apr 2010 07:03:14 +1000 (EST) (envelope-from peter@server.vk2pj.dyndns.org) Received: (from peter@localhost) by server.vk2pj.dyndns.org (8.14.3/8.14.3/Submit) id o34L3EuR020090; Mon, 5 Apr 2010 07:03:14 +1000 (EST) (envelope-from peter) Date: Mon, 5 Apr 2010 07:03:14 +1000 From: Peter Jeremy To: Andriy Gapon Message-ID: <20100404210314.GH86236@server.vk2pj.dyndns.org> References: <201004030839.o338d0VV032828@svn.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="dDnEQgWzhgf+8aPe" Content-Disposition: inline In-Reply-To: <201004030839.o338d0VV032828@svn.freebsd.org> X-PGP-Key: http://members.optusnet.com.au/peterjeremy/pubkey.asc User-Agent: Mutt/1.5.20 (2009-06-14) X-CMAE-Score: 0 Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r206129 - head/sys/kern X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 21:03:21 -0000 --dDnEQgWzhgf+8aPe Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 2010-Apr-03 08:39:00 +0000, Andriy Gapon wrote: >Author: avg >Date: Sat Apr 3 08:39:00 2010 >New Revision: 206129 >URL: http://svn.freebsd.org/changeset/base/206129 > >Log: > vn_stat: take into account va_blocksize when setting st_blksize > =20 > As currently st_blksize is always PAGE_SIZE, it is playing safe to not > use any smaller value. For some cases this might not be optimal, but > at least nothing should get broken. I haven't verified it but, based on a quick look at the change, I suspect this will trigger the problem in bin/144446. Quick summary: db(3) has restrictions on its internal bucket size but initializes it =66rom st_blksize with no sanity checking and ZFS can report blocksizes outside the allowed bucket size range for db(3). --=20 Peter Jeremy --dDnEQgWzhgf+8aPe Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.14 (FreeBSD) iEYEARECAAYFAku4/pIACgkQ/opHv/APuIfvfQCdG7RX5Nzp7WF8w9JqV4oBT8dM 5UAAoKe1eBlDcW4jxTW4JeppZVfZ7zns =O8CR -----END PGP SIGNATURE----- --dDnEQgWzhgf+8aPe-- From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 21:11:13 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A378C106564A; Sun, 4 Apr 2010 21:11:13 +0000 (UTC) (envelope-from avg@freebsd.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 7C9B58FC0A; Sun, 4 Apr 2010 21:11:12 +0000 (UTC) Received: from porto.topspin.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id AAA29759; Mon, 05 Apr 2010 00:11:08 +0300 (EEST) (envelope-from avg@freebsd.org) Received: from localhost.topspin.kiev.ua ([127.0.0.1]) by porto.topspin.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1NyX64-000CmQ-2R; Mon, 05 Apr 2010 00:11:08 +0300 Message-ID: <4BB9006A.8080301@freebsd.org> Date: Mon, 05 Apr 2010 00:11:06 +0300 From: Andriy Gapon User-Agent: Thunderbird 2.0.0.24 (X11/20100321) MIME-Version: 1.0 To: Peter Jeremy References: <201004030839.o338d0VV032828@svn.freebsd.org> <20100404210314.GH86236@server.vk2pj.dyndns.org> In-Reply-To: <20100404210314.GH86236@server.vk2pj.dyndns.org> X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=KOI8-U Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r206129 - head/sys/kern X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 21:11:13 -0000 on 05/04/2010 00:03 Peter Jeremy said the following: > On 2010-Apr-03 08:39:00 +0000, Andriy Gapon wrote: >> Author: avg >> Date: Sat Apr 3 08:39:00 2010 >> New Revision: 206129 >> URL: http://svn.freebsd.org/changeset/base/206129 >> >> Log: >> vn_stat: take into account va_blocksize when setting st_blksize >> >> As currently st_blksize is always PAGE_SIZE, it is playing safe to not >> use any smaller value. For some cases this might not be optimal, but >> at least nothing should get broken. > > I haven't verified it but, based on a quick look at the change, I > suspect this will trigger the problem in bin/144446. Quick summary: > db(3) has restrictions on its internal bucket size but initializes it > from st_blksize with no sanity checking and ZFS can report blocksizes > outside the allowed bucket size range for db(3). > Thank you for pointing this out. If no one objects or provides a better patch, I will commit yours. -- Andriy Gapon From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 21:27:51 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8B7921065674; Sun, 4 Apr 2010 21:27:51 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id D890D8FC12; Sun, 4 Apr 2010 21:27:50 +0000 (UTC) Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id o34LRgNI006133 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 5 Apr 2010 00:27:42 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4) with ESMTP id o34LRgZ6088214; Mon, 5 Apr 2010 00:27:42 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4/Submit) id o34LRgVJ088213; Mon, 5 Apr 2010 00:27:42 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 5 Apr 2010 00:27:42 +0300 From: Kostik Belousov To: Andriy Gapon Message-ID: <20100404212742.GJ2415@deviant.kiev.zoral.com.ua> References: <201004030839.o338d0VV032828@svn.freebsd.org> <20100404210314.GH86236@server.vk2pj.dyndns.org> <4BB9006A.8080301@freebsd.org> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="SWXyBy1zHAaCX+aB" Content-Disposition: inline In-Reply-To: <4BB9006A.8080301@freebsd.org> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-3.8 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, DNS_FROM_OPENWHOIS autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Peter Jeremy Subject: Re: svn commit: r206129 - head/sys/kern X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 21:27:51 -0000 --SWXyBy1zHAaCX+aB Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Apr 05, 2010 at 12:11:06AM +0300, Andriy Gapon wrote: > on 05/04/2010 00:03 Peter Jeremy said the following: > > On 2010-Apr-03 08:39:00 +0000, Andriy Gapon wrote: > >> Author: avg > >> Date: Sat Apr 3 08:39:00 2010 > >> New Revision: 206129 > >> URL: http://svn.freebsd.org/changeset/base/206129 > >> > >> Log: > >> vn_stat: take into account va_blocksize when setting st_blksize > >> =20 > >> As currently st_blksize is always PAGE_SIZE, it is playing safe to not > >> use any smaller value. For some cases this might not be optimal, but > >> at least nothing should get broken. > >=20 > > I haven't verified it but, based on a quick look at the change, I > > suspect this will trigger the problem in bin/144446. Quick summary: > > db(3) has restrictions on its internal bucket size but initializes it > > from st_blksize with no sanity checking and ZFS can report blocksizes > > outside the allowed bucket size range for db(3). > >=20 >=20 > Thank you for pointing this out. > If no one objects or provides a better patch, I will commit yours. I do not think this is very satisfying solution. Pre-patched libc still suffer from the problem. You cannot run stable/8 libc on this kernel. --SWXyBy1zHAaCX+aB Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEARECAAYFAku5BE0ACgkQC3+MBN1Mb4i8PACeLAJrwJXYW1GK9k/0c6aWDoE9 VW4An3RkW13AXI7KoamKOB96AnT0uIXi =Dk4l -----END PGP SIGNATURE----- --SWXyBy1zHAaCX+aB-- From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 22:12:38 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 30273106566C; Sun, 4 Apr 2010 22:12:38 +0000 (UTC) (envelope-from peterjeremy@acm.org) Received: from mail17.syd.optusnet.com.au (mail17.syd.optusnet.com.au [211.29.132.198]) by mx1.freebsd.org (Postfix) with ESMTP id ABEA28FC0C; Sun, 4 Apr 2010 22:12:37 +0000 (UTC) Received: from server.vk2pj.dyndns.org (c122-106-253-149.belrs3.nsw.optusnet.com.au [122.106.253.149]) by mail17.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id o34MCZPu008494 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 5 Apr 2010 08:12:35 +1000 X-Bogosity: Ham, spamicity=0.000000 Received: from server.vk2pj.dyndns.org (localhost.vk2pj.dyndns.org [127.0.0.1]) by server.vk2pj.dyndns.org (8.14.3/8.14.3) with ESMTP id o34MCWDr020602; Mon, 5 Apr 2010 08:12:32 +1000 (EST) (envelope-from peter@server.vk2pj.dyndns.org) Received: (from peter@localhost) by server.vk2pj.dyndns.org (8.14.3/8.14.3/Submit) id o34MCWjh020601; Mon, 5 Apr 2010 08:12:32 +1000 (EST) (envelope-from peter) Date: Mon, 5 Apr 2010 08:12:32 +1000 From: Peter Jeremy To: Kostik Belousov Message-ID: <20100404221232.GJ86236@server.vk2pj.dyndns.org> References: <201004030839.o338d0VV032828@svn.freebsd.org> <20100404210314.GH86236@server.vk2pj.dyndns.org> <4BB9006A.8080301@freebsd.org> <20100404212742.GJ2415@deviant.kiev.zoral.com.ua> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="iRjOs3ViPWHdlw/I" Content-Disposition: inline In-Reply-To: <20100404212742.GJ2415@deviant.kiev.zoral.com.ua> X-PGP-Key: http://members.optusnet.com.au/peterjeremy/pubkey.asc User-Agent: Mutt/1.5.20 (2009-06-14) X-CMAE-Score: 0 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Andriy Gapon Subject: Re: svn commit: r206129 - head/sys/kern X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 22:12:38 -0000 --iRjOs3ViPWHdlw/I Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 2010-Apr-05 00:27:42 +0300, Kostik Belousov wrote: >On Mon, Apr 05, 2010 at 12:11:06AM +0300, Andriy Gapon wrote: >> on 05/04/2010 00:03 Peter Jeremy said the following: >> > On 2010-Apr-03 08:39:00 +0000, Andriy Gapon wrote: >> >> vn_stat: take into account va_blocksize when setting st_blksize =2E.. >> > I haven't verified it but, based on a quick look at the change, I >> > suspect this will trigger the problem in bin/144446. Quick summary: >> > db(3) has restrictions on its internal bucket size but initializes it >> > from st_blksize with no sanity checking and ZFS can report blocksizes >> > outside the allowed bucket size range for db(3). >>=20 >> Thank you for pointing this out. >> If no one objects or provides a better patch, I will commit yours. > >I do not think this is very satisfying solution. Pre-patched libc >still suffer from the problem. You cannot run stable/8 libc on this >kernel. Firstly, has someone with a post-r206129 kernel verified that it does actually trigger the issue I reported in bin/144446? I'm not in a position to do so easily and it's possible that the problem is masked elsewhere. Also, Kostik's comment is a slight exaggeration: You can't create a db(3) database from scratch in a ZFS filesystem using db(3) defaults. Note that as of now, it's exactly the same situation as running -current libc with a post-r206129 kernel. -current is expected to include occasions of bumpiness so I don't see this as an immediate reason to revert r206129 - though if buildworld or installworld are affected, it at least needs a heads-up. OTOH, I think some care needs to taken over any MFC of this change. At the very least, the db(3) problem needs to be fixed and there probably needs to be an extended shakedown of r206129 to ensure that there aren't any other similar nasties lurking elsewhere. The problem I reported in bin/144446 is a bug in a userland utility and IMHO, it's not the kernel's responsibility to work around userland bugs. --=20 Peter Jeremy --iRjOs3ViPWHdlw/I Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.14 (FreeBSD) iEYEARECAAYFAku5DtAACgkQ/opHv/APuIegqwCfT+ZGgoZyA1TQDgHIHS30qpmx dUUAoLk9nNoBsQhOe1p7Csib8uOpVwtD =/Drm -----END PGP SIGNATURE----- --iRjOs3ViPWHdlw/I-- From owner-svn-src-head@FreeBSD.ORG Sun Apr 4 23:19:11 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5D4971065674; Sun, 4 Apr 2010 23:19:11 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4C1C58FC1A; Sun, 4 Apr 2010 23:19:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o34NJBX7053230; Sun, 4 Apr 2010 23:19:11 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o34NJB3R053228; Sun, 4 Apr 2010 23:19:11 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201004042319.o34NJB3R053228@svn.freebsd.org> From: Rick Macklem Date: Sun, 4 Apr 2010 23:19:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206170 - head/sys/fs/nfsserver X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 23:19:11 -0000 Author: rmacklem Date: Sun Apr 4 23:19:11 2010 New Revision: 206170 URL: http://svn.freebsd.org/changeset/base/206170 Log: Harden the experimental NFS server a little, by adding extra checks in the readdir functions for non-positive byte count arguments. For the negative case, set it to the maximum allowable, since it was actually a large positive value (unsigned) on the wire. Also, fix up the readdir function comment a bit. Suggested by: dillon AT apollo.backplane.com MFC after: 2 weeks Modified: head/sys/fs/nfsserver/nfs_nfsdport.c Modified: head/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- head/sys/fs/nfsserver/nfs_nfsdport.c Sun Apr 4 23:12:03 2010 (r206169) +++ head/sys/fs/nfsserver/nfs_nfsdport.c Sun Apr 4 23:19:11 2010 (r206170) @@ -1397,24 +1397,16 @@ nfsvno_fillattr(struct nfsrv_descript *n * nfs readdir service * - mallocs what it thinks is enough to read * count rounded up to a multiple of DIRBLKSIZ <= NFS_MAXREADDIR - * - calls nfsvno_readdir() + * - calls VOP_READDIR() * - loops around building the reply * if the output generated exceeds count break out of loop * The NFSM_CLGET macro is used here so that the reply will be packed * tightly in mbuf clusters. - * - it only knows that it has encountered eof when the nfsvno_readdir() - * reads nothing - * - as such one readdir rpc will return eof false although you are there - * and then the next will return eof * - it trims out records with d_fileno == 0 * this doesn't matter for Unix clients, but they might confuse clients * for other os'. * - it trims out records with d_type == DT_WHT * these cannot be seen through NFS (unless we extend the protocol) - * NB: It is tempting to set eof to true if the nfsvno_readdir() reads less - * than requested, but this may not apply to all filesystems. For - * example, client NFS does not { although it is never remote mounted - * anyhow } * The alternate call nfsrvd_readdirplus() does lookups as well. * PS: The NFS protocol spec. does not clarify what the "count" byte * argument is a count of.. just name strings and file id's or the @@ -1456,7 +1448,7 @@ nfsrvd_readdir(struct nfsrv_descript *nd } toff = off; cnt = fxdr_unsigned(int, *tl); - if (cnt > NFS_SRVMAXDATA(nd)) + if (cnt > NFS_SRVMAXDATA(nd) || cnt < 0) cnt = NFS_SRVMAXDATA(nd); siz = ((cnt + DIRBLKSIZ - 1) & ~(DIRBLKSIZ - 1)); fullsiz = siz; @@ -1474,6 +1466,13 @@ nfsrvd_readdir(struct nfsrv_descript *nd nd->nd_repstat = NFSERR_BAD_COOKIE; #endif } + if (nd->nd_repstat == 0 && cnt == 0) { + if (nd->nd_flag & ND_NFSV2) + /* NFSv2 does not have NFSERR_TOOSMALL */ + nd->nd_repstat = EPERM; + else + nd->nd_repstat = NFSERR_TOOSMALL; + } if (!nd->nd_repstat) nd->nd_repstat = nfsvno_accchk(vp, VEXEC, nd->nd_cred, exp, p, NFSACCCHK_NOOVERRIDE, @@ -1696,7 +1695,7 @@ nfsrvd_readdirplus(struct nfsrv_descript * Use the server's maximum data transfer size as the upper bound * on reply datalen. */ - if (cnt > NFS_SRVMAXDATA(nd)) + if (cnt > NFS_SRVMAXDATA(nd) || cnt < 0) cnt = NFS_SRVMAXDATA(nd); /* @@ -1705,7 +1704,7 @@ nfsrvd_readdirplus(struct nfsrv_descript * so I set it to cnt for that case. I also round it up to the * next multiple of DIRBLKSIZ. */ - if (siz == 0) + if (siz <= 0) siz = cnt; siz = ((siz + DIRBLKSIZ - 1) & ~(DIRBLKSIZ - 1)); From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 06:23:31 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D7476106566B; Mon, 5 Apr 2010 06:23:31 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C6D6A8FC08; Mon, 5 Apr 2010 06:23:31 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o356NVVK046406; Mon, 5 Apr 2010 06:23:31 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o356NVPo046404; Mon, 5 Apr 2010 06:23:31 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201004050623.o356NVPo046404@svn.freebsd.org> From: Alan Cox Date: Mon, 5 Apr 2010 06:23:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206174 - head/sys/vm X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 06:23:31 -0000 Author: alc Date: Mon Apr 5 06:23:31 2010 New Revision: 206174 URL: http://svn.freebsd.org/changeset/base/206174 Log: vm_reserv_alloc_page() should never be called on an OBJT_SG object, just as it is never called on an OBJT_DEVICE object. (This change should have been included in r195840.) Reported by: dougb@, avg@ MFC after: 3 days Modified: head/sys/vm/vm_page.c Modified: head/sys/vm/vm_page.c ============================================================================== --- head/sys/vm/vm_page.c Mon Apr 5 01:51:11 2010 (r206173) +++ head/sys/vm/vm_page.c Mon Apr 5 06:23:31 2010 (r206174) @@ -1084,6 +1084,7 @@ vm_page_alloc(vm_object_t object, vm_pin return (NULL); #if VM_NRESERVLEVEL > 0 } else if (object == NULL || object->type == OBJT_DEVICE || + object->type == OBJT_SG || (object->flags & OBJ_COLORED) == 0 || (m = vm_reserv_alloc_page(object, pindex)) == NULL) { #else From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 08:27:15 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 99C9F1065675; Mon, 5 Apr 2010 08:27:15 +0000 (UTC) (envelope-from avg@freebsd.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 57FDB8FC0C; Mon, 5 Apr 2010 08:27:13 +0000 (UTC) Received: from porto.topspin.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id LAA04757; Mon, 05 Apr 2010 11:27:08 +0300 (EEST) (envelope-from avg@freebsd.org) Received: from localhost.topspin.kiev.ua ([127.0.0.1]) by porto.topspin.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1NyheF-000FFr-Va; Mon, 05 Apr 2010 11:27:08 +0300 Message-ID: <4BB99EDB.8030105@freebsd.org> Date: Mon, 05 Apr 2010 11:27:07 +0300 From: Andriy Gapon User-Agent: Thunderbird 2.0.0.24 (X11/20100321) MIME-Version: 1.0 To: Peter Jeremy References: <201004030839.o338d0VV032828@svn.freebsd.org> <20100404210314.GH86236@server.vk2pj.dyndns.org> <4BB9006A.8080301@freebsd.org> <20100404212742.GJ2415@deviant.kiev.zoral.com.ua> <20100404221232.GJ86236@server.vk2pj.dyndns.org> In-Reply-To: <20100404221232.GJ86236@server.vk2pj.dyndns.org> X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=KOI8-U Content-Transfer-Encoding: 7bit Cc: Kostik Belousov , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r206129 - head/sys/kern X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 08:27:15 -0000 on 05/04/2010 01:12 Peter Jeremy said the following: > On 2010-Apr-05 00:27:42 +0300, Kostik Belousov wrote: >> On Mon, Apr 05, 2010 at 12:11:06AM +0300, Andriy Gapon wrote: >>> on 05/04/2010 00:03 Peter Jeremy said the following: >>>> On 2010-Apr-03 08:39:00 +0000, Andriy Gapon wrote: >>>>> vn_stat: take into account va_blocksize when setting st_blksize > ... >>>> I haven't verified it but, based on a quick look at the change, I >>>> suspect this will trigger the problem in bin/144446. Quick summary: >>>> db(3) has restrictions on its internal bucket size but initializes it >>>> from st_blksize with no sanity checking and ZFS can report blocksizes >>>> outside the allowed bucket size range for db(3). >>> Thank you for pointing this out. >>> If no one objects or provides a better patch, I will commit yours. >> I do not think this is very satisfying solution. Pre-patched libc >> still suffer from the problem. You cannot run stable/8 libc on this >> kernel. > > Firstly, has someone with a post-r206129 kernel verified that it > does actually trigger the issue I reported in bin/144446? I'm not > in a position to do so easily and it's possible that the problem > is masked elsewhere. Sorry for my lack of knowledge, but what is the best way to test this? As I understand, a new db needs to be initialized in an existing file? > Also, Kostik's comment is a slight exaggeration: You can't create a > db(3) database from scratch in a ZFS filesystem using db(3) defaults. > Note that as of now, it's exactly the same situation as running > -current libc with a post-r206129 kernel. Additionally, as noted above (and if I am not mistaken), the problem would manifest itself when creating a new db in an existing file and the file has to be large enough. > -current is expected to include occasions of bumpiness so I don't see > this as an immediate reason to revert r206129 - though if buildworld > or installworld are affected, it at least needs a heads-up. OTOH, I > think some care needs to taken over any MFC of this change. At the > very least, the db(3) problem needs to be fixed and there probably > needs to be an extended shakedown of r206129 to ensure that there > aren't any other similar nasties lurking elsewhere. I agree about the MFC. > The problem I reported in bin/144446 is a bug in a userland utility > and IMHO, it's not the kernel's responsibility to work around userland > bugs. But Kostik has a good point here. Value of st_blksize is kind of interface from kernel to userland and when it's changing it could be considered an A?I change with all the release engineering consequences. -- Andriy Gapon From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 09:17:19 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2E357106564A; Mon, 5 Apr 2010 09:17:19 +0000 (UTC) (envelope-from avg@freebsd.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 04CB88FC1B; Mon, 5 Apr 2010 09:17:17 +0000 (UTC) Received: from porto.topspin.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id MAA05163; Mon, 05 Apr 2010 12:17:13 +0300 (EEST) (envelope-from avg@freebsd.org) Received: from localhost.topspin.kiev.ua ([127.0.0.1]) by porto.topspin.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1NyiQi-000FHX-NL; Mon, 05 Apr 2010 12:17:12 +0300 Message-ID: <4BB9AA98.1000701@freebsd.org> Date: Mon, 05 Apr 2010 12:17:12 +0300 From: Andriy Gapon User-Agent: Thunderbird 2.0.0.24 (X11/20100321) MIME-Version: 1.0 To: Peter Jeremy , Kostik Belousov References: <201004030839.o338d0VV032828@svn.freebsd.org> <20100404210314.GH86236@server.vk2pj.dyndns.org> <4BB9006A.8080301@freebsd.org> <20100404212742.GJ2415@deviant.kiev.zoral.com.ua> <20100404221232.GJ86236@server.vk2pj.dyndns.org> <4BB99EDB.8030105@freebsd.org> In-Reply-To: <4BB99EDB.8030105@freebsd.org> X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=KOI8-U Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r206129 - head/sys/kern X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 09:17:19 -0000 on 05/04/2010 11:27 Andriy Gapon said the following: > Additionally, as noted above (and if I am not mistaken), the problem would > manifest itself when creating a new db in an existing file and the file has to > be large enough. OK, this is a nonsense, I misunderstood the code. The problem should manifest itself upon creating a new hash db in a (new) file. E.g. something like: dbopen("filename", O_RDWR | ..., ..., DB_HASH, ...) The good news is that the last optional argument (as in can be NULL) to dbopen provides overrides for certain parameters including block size. And it seems that in all places where dbopen is used by FreeBSD userland utilities in the above fashion, that last argument is indeed specified and has a sufficiently small block size value. And I've been wondering why I have never seen any problems with this change locally - I've been using it for quite a while before committing it. P.S. here is a command that I used for searching: $ find . -name "*.c" | xargs fgrep -w -A1 dbopen /dev/null | grep -v '^--' | paste - - | fgrep DB_HASH | fgrep O_RDWR -- Andriy Gapon From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 09:24:24 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C62D5106566C; Mon, 5 Apr 2010 09:24:24 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B60D48FC14; Mon, 5 Apr 2010 09:24:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o359OO7l086007; Mon, 5 Apr 2010 09:24:24 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o359OOuZ086005; Mon, 5 Apr 2010 09:24:24 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201004050924.o359OOuZ086005@svn.freebsd.org> From: Andriy Gapon Date: Mon, 5 Apr 2010 09:24:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206175 - head/share/examples/indent X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 09:24:24 -0000 Author: avg Date: Mon Apr 5 09:24:24 2010 New Revision: 206175 URL: http://svn.freebsd.org/changeset/base/206175 Log: indent.pro example: correctly place -ta option The options are sorted, leading 'n' (for 'off') should be ignored. Pointed out by: bde MFC after: 7 days Modified: head/share/examples/indent/indent.pro Modified: head/share/examples/indent/indent.pro ============================================================================== --- head/share/examples/indent/indent.pro Mon Apr 5 06:23:31 2010 (r206174) +++ head/share/examples/indent/indent.pro Mon Apr 5 09:24:24 2010 (r206175) @@ -15,5 +15,4 @@ -TSLIST_HEAD -TSLIST_ENTRY -bad -bap -nbbb -nbc -br -nbs -c41 -cd41 -cdb -ce -ci4 -cli0 -d0 -di8 -ndj --ei -nfc1 -nfcb -i8 -ip8 -l79 -lc77 -ldi0 -nlp -npcs -psl -sc -nsob -nv --ta +-ei -nfc1 -nfcb -i8 -ip8 -l79 -lc77 -ldi0 -nlp -npcs -psl -sc -nsob -ta -nv From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 09:26:04 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0FA47106564A; Mon, 5 Apr 2010 09:26:04 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F3BDA8FC2F; Mon, 5 Apr 2010 09:26:03 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o359Q3cf086403; Mon, 5 Apr 2010 09:26:03 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o359Q3Sm086401; Mon, 5 Apr 2010 09:26:03 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201004050926.o359Q3Sm086401@svn.freebsd.org> From: Andriy Gapon Date: Mon, 5 Apr 2010 09:26:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206176 - head/share/examples/indent X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 09:26:04 -0000 Author: avg Date: Mon Apr 5 09:26:03 2010 New Revision: 206176 URL: http://svn.freebsd.org/changeset/base/206176 Log: indent.pro example: put all options one per line This should help with modification tracking. Discussed with: bde MFC after: 7 days Modified: head/share/examples/indent/indent.pro Modified: head/share/examples/indent/indent.pro ============================================================================== --- head/share/examples/indent/indent.pro Mon Apr 5 09:24:24 2010 (r206175) +++ head/share/examples/indent/indent.pro Mon Apr 5 09:26:03 2010 (r206176) @@ -14,5 +14,33 @@ -TSTAILQ_ENTRY -TSLIST_HEAD -TSLIST_ENTRY --bad -bap -nbbb -nbc -br -nbs -c41 -cd41 -cdb -ce -ci4 -cli0 -d0 -di8 -ndj --ei -nfc1 -nfcb -i8 -ip8 -l79 -lc77 -ldi0 -nlp -npcs -psl -sc -nsob -ta -nv +-bad +-bap +-nbbb +-nbc +-br +-nbs +-c41 +-cd41 +-cdb +-ce +-ci4 +-cli0 +-d0 +-di8 +-ndj +-ei +-nfc1 +-nfcb +-i8 +-ip8 +-l79 +-lc77 +-ldi0 +-nlp +-npcs +-psl +-sc +-nsob +-ta +-nv From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 09:34:57 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E0F9C1065672; Mon, 5 Apr 2010 09:34:57 +0000 (UTC) (envelope-from yanefbsd@gmail.com) Received: from mail-qy0-f181.google.com (mail-qy0-f181.google.com [209.85.221.181]) by mx1.freebsd.org (Postfix) with ESMTP id 22F128FC13; Mon, 5 Apr 2010 09:34:56 +0000 (UTC) Received: by qyk11 with SMTP id 11so3793308qyk.13 for ; Mon, 05 Apr 2010 02:34:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:received:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=O0DziPVMemi2w5DIABFriNYrZ1BkZBLRT5sDGG7/eOw=; b=hIdIjYQMrbV7ImoHNj1tuxEhon4+6JXf9wbmVhYw218qID+wSn8IUL43i+K7A/gNKG XLXVv3bWMhStOCkW1tL2UcOK3tGRUvWEnxGtkSYI6ltDuL7U+jfzwtAWJ15Pa5u7IXyV 5aDuJlh3z9aelMjPQ8Exl5RjjAmgbJ8aBvKI4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=Gsozgm4nOgAKirrHW0O7qwhC2K/f1eUVnTiaR/xq4JfjPPS4lmca1Ja45mtpjF0Onl UMaMxRbEwOaJ5Lzwi9DegxuXdlYhCy/Igb88x7+zvV5Rlqqg2h+iyR/ONMLLmyUfYRT0 H1z1Qiq/gNb6enUhDhY7E2enAegs+YqM7oNIA= MIME-Version: 1.0 Received: by 10.229.33.72 with HTTP; Mon, 5 Apr 2010 02:34:56 -0700 (PDT) In-Reply-To: <201004050926.o359Q3Sm086401@svn.freebsd.org> References: <201004050926.o359Q3Sm086401@svn.freebsd.org> Date: Mon, 5 Apr 2010 02:34:56 -0700 Received: by 10.229.221.78 with SMTP id ib14mr8946576qcb.28.1270460096364; Mon, 05 Apr 2010 02:34:56 -0700 (PDT) Message-ID: From: Garrett Cooper To: Andriy Gapon Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r206176 - head/share/examples/indent X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 09:34:58 -0000 On Mon, Apr 5, 2010 at 2:26 AM, Andriy Gapon wrote: > Author: avg > Date: Mon Apr =A05 09:26:03 2010 > New Revision: 206176 > URL: http://svn.freebsd.org/changeset/base/206176 > > Log: > =A0indent.pro example: put all options one per line > > =A0This should help with modification tracking. > > =A0Discussed with: =A0 =A0 =A0 bde > =A0MFC after: =A0 =A07 days > > Modified: > =A0head/share/examples/indent/indent.pro > > Modified: head/share/examples/indent/indent.pro > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/share/examples/indent/indent.pro =A0 =A0 =A0 Mon Apr =A05 09:24:= 24 2010 =A0 =A0 =A0 =A0(r206175) > +++ head/share/examples/indent/indent.pro =A0 =A0 =A0 Mon Apr =A05 09:26:= 03 2010 =A0 =A0 =A0 =A0(r206176) > @@ -14,5 +14,33 @@ > =A0-TSTAILQ_ENTRY > =A0-TSLIST_HEAD > =A0-TSLIST_ENTRY > --bad -bap -nbbb -nbc -br -nbs -c41 -cd41 -cdb -ce -ci4 -cli0 -d0 -di8 -n= dj > --ei -nfc1 -nfcb -i8 -ip8 -l79 -lc77 -ldi0 -nlp -npcs -psl -sc -nsob -ta = -nv > +-bad > +-bap > +-nbbb > +-nbc > +-br > +-nbs > +-c41 > +-cd41 > +-cdb > +-ce > +-ci4 > +-cli0 > +-d0 > +-di8 > +-ndj > +-ei > +-nfc1 > +-nfcb > +-i8 > +-ip8 > +-l79 > +-lc77 > +-ldi0 > +-nlp > +-npcs > +-psl > +-sc > +-nsob > +-ta > +-nv Isn't doing something like this going to make merge collisions more prevalent? Thanks, -Garrett From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 09:48:03 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B8644106564A; Mon, 5 Apr 2010 09:48:03 +0000 (UTC) (envelope-from avg@freebsd.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 1D0618FC12; Mon, 5 Apr 2010 09:48:01 +0000 (UTC) Received: from porto.topspin.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id MAA05462; Mon, 05 Apr 2010 12:47:59 +0300 (EEST) (envelope-from avg@freebsd.org) Received: from localhost.topspin.kiev.ua ([127.0.0.1]) by porto.topspin.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1NyiuV-000FIy-4t; Mon, 05 Apr 2010 12:47:59 +0300 Message-ID: <4BB9B1CE.2060102@freebsd.org> Date: Mon, 05 Apr 2010 12:47:58 +0300 From: Andriy Gapon User-Agent: Thunderbird 2.0.0.24 (X11/20100321) MIME-Version: 1.0 To: Garrett Cooper References: <201004050926.o359Q3Sm086401@svn.freebsd.org> In-Reply-To: X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r206176 - head/share/examples/indent X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 09:48:03 -0000 on 05/04/2010 12:34 Garrett Cooper said the following: > On Mon, Apr 5, 2010 at 2:26 AM, Andriy Gapon wrote: >> Author: avg >> Date: Mon Apr 5 09:26:03 2010 >> New Revision: 206176 >> URL: http://svn.freebsd.org/changeset/base/206176 [snip] >> +-sc >> +-nsob >> +-ta >> +-nv > > Isn't doing something like this going to make merge collisions > more prevalent? Not sure if I am following you. Do you suggest that it's easier to merge multiple changes to the same line than multiple changes on the separate lines? -- Andriy Gapon From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 10:01:54 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 36EE8106567B; Mon, 5 Apr 2010 10:01:54 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 26D5E8FC14; Mon, 5 Apr 2010 10:01:54 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o35A1sDn094327; Mon, 5 Apr 2010 10:01:54 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o35A1sE3094325; Mon, 5 Apr 2010 10:01:54 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201004051001.o35A1sE3094325@svn.freebsd.org> From: Andriy Gapon Date: Mon, 5 Apr 2010 10:01:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206177 - head/lib/libc/db/man X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 10:01:54 -0000 Author: avg Date: Mon Apr 5 10:01:53 2010 New Revision: 206177 URL: http://svn.freebsd.org/changeset/base/206177 Log: hash.3: fix a factual mistake in the man page PR: bin/144446 Submitted by: Peter Jeremy MFC after: 3 days Modified: head/lib/libc/db/man/hash.3 Modified: head/lib/libc/db/man/hash.3 ============================================================================== --- head/lib/libc/db/man/hash.3 Mon Apr 5 09:26:03 2010 (r206176) +++ head/lib/libc/db/man/hash.3 Mon Apr 5 10:01:53 2010 (r206177) @@ -78,7 +78,7 @@ The element defines the .Nm -table bucket size, and is, by default, 256 bytes. +table bucket size, and is, by default, 4096 bytes. It may be preferable to increase the page size for disk-resident tables and tables with large data items. .It Va ffactor From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 10:12:21 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6CD34106566B; Mon, 5 Apr 2010 10:12:21 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5C7388FC15; Mon, 5 Apr 2010 10:12:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o35ACLqo096655; Mon, 5 Apr 2010 10:12:21 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o35ACLYD096652; Mon, 5 Apr 2010 10:12:21 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201004051012.o35ACLYD096652@svn.freebsd.org> From: Andriy Gapon Date: Mon, 5 Apr 2010 10:12:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206178 - head/lib/libc/db/hash X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 10:12:21 -0000 Author: avg Date: Mon Apr 5 10:12:21 2010 New Revision: 206178 URL: http://svn.freebsd.org/changeset/base/206178 Log: libc/db/hash: cap auto-tuned block size with a value that actually works This fix mostly matters after r206129 that made it possible for st_blksize to be greater than 4K. For this reason, this change should be MFC-ed before r206129. Also, it seems that all FreeBSD uitlities that use db(3) hash databases and create new databases in files, specify their own block size value and thus do not depend on block size autotuning. PR: bin/144446 Submitted by: Peter Jeremy MFC after: 5 days Modified: head/lib/libc/db/hash/hash.c head/lib/libc/db/hash/hash.h Modified: head/lib/libc/db/hash/hash.c ============================================================================== --- head/lib/libc/db/hash/hash.c Mon Apr 5 10:01:53 2010 (r206177) +++ head/lib/libc/db/hash/hash.c Mon Apr 5 10:12:21 2010 (r206178) @@ -293,6 +293,8 @@ init_hash(HTAB *hashp, const char *file, if (stat(file, &statbuf)) return (NULL); hashp->BSIZE = statbuf.st_blksize; + if (hashp->BSIZE > MAX_BSIZE) + hashp->BSIZE = MAX_BSIZE; hashp->BSHIFT = __log2(hashp->BSIZE); } Modified: head/lib/libc/db/hash/hash.h ============================================================================== --- head/lib/libc/db/hash/hash.h Mon Apr 5 10:01:53 2010 (r206177) +++ head/lib/libc/db/hash/hash.h Mon Apr 5 10:12:21 2010 (r206178) @@ -118,7 +118,7 @@ typedef struct htab { /* Memory reside /* * Constants */ -#define MAX_BSIZE 65536 /* 2^16 */ +#define MAX_BSIZE 32768 /* 2^15 but should be 65536 */ #define MIN_BUFFERS 6 #define MINHDRSIZE 512 #define DEF_BUFSIZE 65536 /* 64 K */ From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 11:00:22 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4A2C4106567A; Mon, 5 Apr 2010 11:00:22 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3A1168FC1D; Mon, 5 Apr 2010 11:00:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o35B0MwS009046; Mon, 5 Apr 2010 11:00:22 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o35B0MsK009044; Mon, 5 Apr 2010 11:00:22 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <201004051100.o35B0MsK009044@svn.freebsd.org> From: Warner Losh Date: Mon, 5 Apr 2010 11:00:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206179 - head/sys/conf X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 11:00:22 -0000 Author: imp Date: Mon Apr 5 11:00:21 2010 New Revision: 206179 URL: http://svn.freebsd.org/changeset/base/206179 Log: Add missing @ to the NORMAL_CTFCONVERT line to keep it from appearing in the output. Modified: head/sys/conf/kern.pre.mk Modified: head/sys/conf/kern.pre.mk ============================================================================== --- head/sys/conf/kern.pre.mk Mon Apr 5 10:12:21 2010 (r206178) +++ head/sys/conf/kern.pre.mk Mon Apr 5 11:00:21 2010 (r206179) @@ -128,7 +128,7 @@ NORMAL_C_NOWERROR= ${CC} -c ${CFLAGS} ${ NORMAL_M= ${AWK} -f $S/tools/makeobjops.awk ${.IMPSRC} -c ; \ ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.PREFIX}.c -NORMAL_CTFCONVERT= [ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} +NORMAL_CTFCONVERT= @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} NORMAL_LINT= ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 11:02:11 2010 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5E992106566B; Mon, 5 Apr 2010 11:02:11 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id 00E8E8FC13; Mon, 5 Apr 2010 11:02:10 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by harmony.bsdimp.com (8.14.3/8.14.1) with ESMTP id o35As4AN092959; Mon, 5 Apr 2010 04:54:05 -0600 (MDT) (envelope-from imp@bsdimp.com) Date: Mon, 05 Apr 2010 04:49:39 -0600 (MDT) Message-Id: <20100405.044939.260300876916215875.imp@bsdimp.com> To: yanefbsd@gmail.com From: "M. Warner Losh" In-Reply-To: References: <201004050926.o359Q3Sm086401@svn.freebsd.org> X-Mailer: Mew version 6.3 on Emacs 22.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, avg@FreeBSD.org Subject: Re: svn commit: r206176 - head/share/examples/indent X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 11:02:11 -0000 In message: Garrett Cooper writes: : On Mon, Apr 5, 2010 at 2:26 AM, Andriy Gapon wrote:= : > Author: avg : > Date: Mon Apr =A05 09:26:03 2010 : > New Revision: 206176 : > URL: http://svn.freebsd.org/changeset/base/206176 : > : > Log: : > =A0indent.pro example: put all options one per line : > : > =A0This should help with modification tracking. : > : > =A0Discussed with: =A0 =A0 =A0 bde : > =A0MFC after: =A0 =A07 days : > : > Modified: : > =A0head/share/examples/indent/indent.pro : > : > Modified: head/share/examples/indent/indent.pro : > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D : > --- head/share/examples/indent/indent.pro =A0 =A0 =A0 Mon Apr =A05 = 09:24:24 2010 =A0 =A0 =A0 =A0(r206175) : > +++ head/share/examples/indent/indent.pro =A0 =A0 =A0 Mon Apr =A05 = 09:26:03 2010 =A0 =A0 =A0 =A0(r206176) : > @@ -14,5 +14,33 @@ : > =A0-TSTAILQ_ENTRY : > =A0-TSLIST_HEAD : > =A0-TSLIST_ENTRY : > --bad -bap -nbbb -nbc -br -nbs -c41 -cd41 -cdb -ce -ci4 -cli0 -d0 -= di8 -ndj : > --ei -nfc1 -nfcb -i8 -ip8 -l79 -lc77 -ldi0 -nlp -npcs -psl -sc -nso= b -ta -nv : > +-bad : > +-bap : > +-nbbb : > +-nbc : > +-br : > +-nbs : > +-c41 : > +-cd41 : > +-cdb : > +-ce : > +-ci4 : > +-cli0 : > +-d0 : > +-di8 : > +-ndj : > +-ei : > +-nfc1 : > +-nfcb : > +-i8 : > +-ip8 : > +-l79 : > +-lc77 : > +-ldi0 : > +-nlp : > +-npcs : > +-psl : > +-sc : > +-nsob : > +-ta : > +-nv : = : Isn't doing something like this going to make merge collisions : more prevalent? Actually, it will allow merging more easily. If I wanted to add -nld to the list and joe wanted to add -l4d, then those would be on lines by themselves (which makes merging easier) rather than on the same line (which makes merging impossible with today's tools). Warner From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 12:31:37 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 011DC106566B; Mon, 5 Apr 2010 12:31:37 +0000 (UTC) (envelope-from netchild@freebsd.org) Received: from mail.ebusiness-leidinger.de (mail.ebusiness-leidinger.de [217.11.53.44]) by mx1.freebsd.org (Postfix) with ESMTP id A40248FC13; Mon, 5 Apr 2010 12:31:36 +0000 (UTC) Received: from outgoing.leidinger.net (pD9E2CB1A.dip.t-dialin.net [217.226.203.26]) by mail.ebusiness-leidinger.de (Postfix) with ESMTPSA id B9050844267; Mon, 5 Apr 2010 14:31:29 +0200 (CEST) Received: from webmail.leidinger.net (webmail.leidinger.net [192.168.1.102]) by outgoing.leidinger.net (Postfix) with ESMTP id 4EEFA5147; Mon, 5 Apr 2010 14:31:24 +0200 (CEST) Received: (from www@localhost) by webmail.leidinger.net (8.14.3/8.13.8/Submit) id o35CVOoE046824; Mon, 5 Apr 2010 14:31:24 +0200 (CEST) (envelope-from netchild@FreeBSD.org) Received: from p5DD456EA.dip.t-dialin.net (p5DD456EA.dip.t-dialin.net [93.212.86.234]) by webmail.leidinger.net (Horde Framework) with HTTP; Mon, 05 Apr 2010 14:31:23 +0200 Message-ID: <20100405143123.14716pelm4tos2kg@webmail.leidinger.net> Date: Mon, 05 Apr 2010 14:31:23 +0200 From: Alexander Leidinger To: Kostik Belousov References: <201004020655.o326tWax079882@svn.freebsd.org> <20100404153653.GD2415@deviant.kiev.zoral.com.ua> In-Reply-To: <20100404153653.GD2415@deviant.kiev.zoral.com.ua> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; DelSp="Yes"; format="flowed" Content-Disposition: inline Content-Transfer-Encoding: 7bit User-Agent: Dynamic Internet Messaging Program (DIMP) H3 (1.1.4) X-EBL-MailScanner-Information: Please contact the ISP for more information X-EBL-MailScanner-ID: B9050844267.C6D73 X-EBL-MailScanner: Found to be clean X-EBL-MailScanner-SpamCheck: not spam, spamhaus-ZEN, SpamAssassin (not cached, score=-1.363, required 6, autolearn=disabled, ALL_TRUSTED -1.44, TW_SV 0.08) X-EBL-MailScanner-From: netchild@freebsd.org X-EBL-MailScanner-Watermark: 1271075491.99263@cy9MJSzsnns1B8CoyelW8A X-EBL-Spam-Status: No Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r206082 - in head: . share/man/man7 share/mk sys/conf X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 12:31:37 -0000 Quoting Kostik Belousov (from Sun, 4 Apr 2010 18:36:53 +0300): > On Fri, Apr 02, 2010 at 06:55:32AM +0000, Alexander Leidinger wrote: >> Author: netchild >> Date: Fri Apr 2 06:55:31 2010 >> New Revision: 206082 >> URL: http://svn.freebsd.org/changeset/base/206082 >> >> Log: >> WITH_CTF can now be specified in src.conf (not recommended, there >> are some problems with static executables), make.conf (would also >> affect ports which do not use GNU make and do not override the >> compile targets) or in the kernel config (via "makeoptions >> WITH_CTF=yes"). > > I think this commit started the kernel build to emit lines like this > [ -z "ctfconvert" -o -n "1" ] || ctfconvert -L VERSION -g vm_init.o > after compilation of each file from the kernel (but not modules) > source. Could you, please, look for missed '@' ? I just reviewed the diff again and there is only one place where no @ is, this is for NORMAL_CTFCONVERT. Before I committed the patch, I searched where it is used, but I didn't find a place where it is used. Maybe I overlooked something (I didn't review the Makfile which is generated by running the config program on the kernel-config, and I will not get time to do this today). Can you please confirm that you did an installworld before building the kernel? Bye, Alexander. -- http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7 http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137 BOFH excuse #396: Mail server hit by UniSpammer From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 13:35:12 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3D10E106566C; Mon, 5 Apr 2010 13:35:12 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id BEDDE8FC0C; Mon, 5 Apr 2010 13:35:11 +0000 (UTC) Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id o35DZ5Bf081360 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 5 Apr 2010 16:35:05 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4) with ESMTP id o35DZ5fc003447; Mon, 5 Apr 2010 16:35:05 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4/Submit) id o35DZ5Fn003446; Mon, 5 Apr 2010 16:35:05 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 5 Apr 2010 16:35:05 +0300 From: Kostik Belousov To: Alexander Leidinger Message-ID: <20100405133505.GK2415@deviant.kiev.zoral.com.ua> References: <201004020655.o326tWax079882@svn.freebsd.org> <20100404153653.GD2415@deviant.kiev.zoral.com.ua> <20100405143123.14716pelm4tos2kg@webmail.leidinger.net> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="giYBXacdduNkOBLu" Content-Disposition: inline In-Reply-To: <20100405143123.14716pelm4tos2kg@webmail.leidinger.net> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-3.8 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, DNS_FROM_OPENWHOIS autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, imp@freebsd.org Subject: Re: svn commit: r206082 - in head: . share/man/man7 share/mk sys/conf X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 13:35:12 -0000 --giYBXacdduNkOBLu Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Apr 05, 2010 at 02:31:23PM +0200, Alexander Leidinger wrote: > Quoting Kostik Belousov (from Sun, 4 Apr 2010 =20 > 18:36:53 +0300): >=20 > >On Fri, Apr 02, 2010 at 06:55:32AM +0000, Alexander Leidinger wrote: > >>Author: netchild > >>Date: Fri Apr 2 06:55:31 2010 > >>New Revision: 206082 > >>URL: http://svn.freebsd.org/changeset/base/206082 > >> > >>Log: > >> WITH_CTF can now be specified in src.conf (not recommended, there > >> are some problems with static executables), make.conf (would also > >> affect ports which do not use GNU make and do not override the > >> compile targets) or in the kernel config (via "makeoptions > >> WITH_CTF=3Dyes"). > > > >I think this commit started the kernel build to emit lines like this > >[ -z "ctfconvert" -o -n "1" ] || ctfconvert -L VERSION -g vm_init.o > >after compilation of each file from the kernel (but not modules) > >source. Could you, please, look for missed '@' ? >=20 > I just reviewed the diff again and there is only one place where no @ =20 > is, this is for NORMAL_CTFCONVERT. Before I committed the patch, I =20 > searched where it is used, but I didn't find a place where it is used. = =20 > Maybe I overlooked something (I didn't review the Makfile which is =20 > generated by running the config program on the kernel-config, and I =20 > will not get time to do this today). >=20 > Can you please confirm that you did an installworld before building =20 > the kernel? I can confirm that r206179 fixed the issue. To answer your question, no, I did not performed installworld. I do buildkernel in cross-build environment, i.e. I do buildworld and then buildkernel. --giYBXacdduNkOBLu Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEARECAAYFAku55wkACgkQC3+MBN1Mb4idugCeN/pxoVRmCOuGIbEoEIYl4Gq0 NhEAoPL5hCcQIjArDrE3+1bYIzJ99vRL =7hNG -----END PGP SIGNATURE----- --giYBXacdduNkOBLu-- From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 13:58:59 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EF3CE1065670; Mon, 5 Apr 2010 13:58:58 +0000 (UTC) (envelope-from rpaulo@gmail.com) Received: from mail-fx0-f209.google.com (mail-fx0-f209.google.com [209.85.220.209]) by mx1.freebsd.org (Postfix) with ESMTP id F14898FC17; Mon, 5 Apr 2010 13:58:57 +0000 (UTC) Received: by fxm1 with SMTP id 1so2693003fxm.13 for ; Mon, 05 Apr 2010 06:58:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:subject:mime-version :content-type:from:in-reply-to:date:cc:content-transfer-encoding :message-id:references:to:x-mailer; bh=f/fIzMCSm9UE1U7gFy8sJpgyiY5L3YcPPNenNKJz+wo=; b=sCXcICoMdtORZZv6mBZ4wWN5OQgpkA1sc4o4DKZSLh8S4Saf7F7Y8glz7/u+9Qt/R/ Fs9j9zmkKDxTB/tGDWMdDvH2ztu4b+x639koWTz/q7d1XOaw1v6CUX7f8eM4LHV4dXmk 2JT3bW+ZCIP11mynMrgK9tgF7NcxYNtCWf2MY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:subject:mime-version:content-type:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to:x-mailer; b=HTT0AOX5erPKNolRDuXNattcVmQsS/rXGPZsevI88eo+iG/AbQkjGfKOhvhRzd9/Be qCWQdh/YbEEQ8PBeDi5UfVvF8WXMktfCVl9iAjx2jct0npGjhIzakTtHEADZ6rqr7yyL CL/2+DgEofKB6M7riQiEgIMy9p/lfubTVVWpg= Received: by 10.223.56.212 with SMTP id z20mr5826610fag.56.1270475936831; Mon, 05 Apr 2010 06:58:56 -0700 (PDT) Received: from [10.0.10.2] (54.81.54.77.rev.vodafone.pt [77.54.81.54]) by mx.google.com with ESMTPS id 16sm7961364fxm.8.2010.04.05.06.58.54 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 05 Apr 2010 06:58:55 -0700 (PDT) Sender: Rui Paulo Mime-Version: 1.0 (Apple Message framework v1078) Content-Type: text/plain; charset=us-ascii From: Rui Paulo In-Reply-To: <201004031620.o33GKM0n037332@svn.freebsd.org> Date: Mon, 5 Apr 2010 14:58:53 +0100 Content-Transfer-Encoding: quoted-printable Message-Id: References: <201004031620.o33GKM0n037332@svn.freebsd.org> To: Alan Cox X-Mailer: Apple Mail (2.1078) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r206140 - head/sys/vm X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 13:58:59 -0000 Hi, On 3 Apr 2010, at 17:20, Alan Cox wrote: > Author: alc > Date: Sat Apr 3 16:20:22 2010 > New Revision: 206140 > URL: http://svn.freebsd.org/changeset/base/206140 >=20 > Log: > Re-enable the call to pmap_release() by vmspace_dofree(). The = accounting > problem that is described in the comment has been addressed. >=20 > Submitted by: kib > Tested by: pho (a few months ago) > MFC after: 6 weeks >=20 > Modified: > head/sys/vm/vm_map.c >=20 > Modified: head/sys/vm/vm_map.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/vm/vm_map.c Sat Apr 3 15:52:32 2010 = (r206139) > +++ head/sys/vm/vm_map.c Sat Apr 3 16:20:22 2010 = (r206140) > @@ -313,6 +313,7 @@ vm_init2(void) > static inline void > vmspace_dofree(struct vmspace *vm) > { > + > CTR1(KTR_VM, "vmspace_free: %p", vm); >=20 > /* > @@ -329,12 +330,8 @@ vmspace_dofree(struct vmspace *vm) > (void)vm_map_remove(&vm->vm_map, vm->vm_map.min_offset, > vm->vm_map.max_offset); >=20 > - /* > - * XXX Comment out the pmap_release call for now. The > - * vmspace_zone is marked as UMA_ZONE_NOFREE, and bugs cause > - * pmap.resident_count to be !=3D 0 on exit sometimes. > - */ > -/* pmap_release(vmspace_pmap(vm)); */ > + pmap_release(vmspace_pmap(vm)); > + vm->vm_map.pmap =3D NULL; > uma_zfree(vmspace_zone, vm); > } >=20 Unfortunately, this causes a panic on MIPS. I don't know enough about = the VM subsystem to help with fixing this but if you want me to = investigate something, I can do it. NFS ROOT: 192.168.5.1:/zoo/rpaulo/millipede1 warning: no time-of-day clock registered, system time will not be set = accurately warning: no time-of-day clock registered, system time will not be set = accurately Interface rge1 IP-Address 192.168.5.16 Broadcast 192.168.5.255=20 panic: lock "pmap" 0xc6c320dc already initialized KDB: enter: panic [ thread pid 31 tid 100042 ] Stopped at kdb_enter+0x50: lui at,0x8047 db> bt Tracing pid 31 tid 100042 td 0xc829e260 db_trace_thread+30 (?,?,?,?) ra 8011ee48 sp d37ed820 sz 24 8011ed2c+11c (0,?,ffffffff,?) ra 8011e4f0 sp d37ed838 sz 32 8011e15c+394 (?,?,?,?) ra 8011e680 sp d37ed858 sz 168 db_command_loop+78 (?,?,?,?) ra 80120c98 sp d37ed900 sz 24 80120b90+108 (?,?,?,?) ra 80227c74 sp d37ed918 sz 424 kdb_trap+10c (?,?,?,?) ra 8038b8fc sp d37edac0 sz 32 trap+b88 (?,?,?,?) ra 80383fa8 sp d37edae0 sz 168 MipsKernGenException+10c (0,a,804c2fe4,109) ra 80227ecc sp d37edb88 sz = 200 kdb_enter+50 (?,?,?,?) ra 801f2184 sp d37edc50 sz 24 panic+f8 (?,803fb4e0,c6c320dc,c6c320dc) ra 80228a74 sp d37edc68 sz 40 lock_init+30 (?,?,?,?) ra 801e2114 sp d37edc90 sz 24 mtx_init+100 (?,?,?,?) ra 80386fd4 sp d37edca8 sz 32 pmap_pinit+34 (?,?,?,?) ra 8036dab8 sp d37edcc8 sz 48 vmspace_alloc+48 (?,?,?,?) ra 8036dc08 sp d37edcf8 sz 32 vmspace_fork+58 (c6c320f0,d37edd78,?,?) ra 801c7240 sp d37edd18 sz 72 fork1+234 (?,?,?,d37eddc8) ra 801c845c sp d37edd60 sz 88 fork+20 (?,?,?,?) ra 8038b694 sp d37eddb8 sz 32 trap+920 (?,?,?,?) ra 80384174 sp d37eddd8 sz 168 MipsUserGenException+10c (?,?,?,501dbd30) ra 0 sp d37ede80 sz 0 pid 31 =20 db> ps =20 pid ppid pgrp uid state wmesg wchan cmd 31 17 17 0 R+ CPU 0 sh 18 0 0 0 SL - 0x8047b804 [nfsiod 0] 17 1 17 0 Ss+ wait 0xc82a1590 sh 16 0 0 0 DL - 0x80471354 [schedcpu] 15 0 0 0 DL syncer 0x80476d14 [syncer] 9 0 0 0 DL vlruwt 0xc82a4000 [vnlru] 8 0 0 0 DL psleep 0x80476a3c [bufdaemon] 7 0 0 0 DL pgzero 0x8047c95c [pagezero] 6 0 0 0 DL psleep 0x8047c588 [pagedaemon] 5 0 0 0 DL ccb_scan 0x8046b57c [xpt_thrd] 14 0 0 0 WL [msg_intr0] 13 0 0 0 DL (threaded) [usb] 100021 D - 0xc6cb0d0c [usbus0] 100020 D - 0xc6cb0cdc [usbus0] 100019 D - 0xc6cb0cac [usbus0] 100018 D - 0xc6cb0c7c [usbus0] 12 0 0 0 DL - 0x80471354 [yarrow] 4 0 0 0 DL - 0x8046f280 [g_down] 3 0 0 0 DL - 0x8046f27c [g_up] 2 0 0 0 DL - 0x8046f274 [g_event] 11 0 0 0 RL (threaded) [intr] 100031 I [hard intr35: mskc] 100030 I [hard intr32: rge] 100029 I [hard intr31: rge] 100028 I [hard intr30: rge] 100027 I [hard intr29: rge] 100026 I [hard intr28: rge] 100025 I [hard intr27: rge] 100024 I [hard intr26: rge] 100022 I [hard intr25: rge] 100017 I [hard intr39: ehci] 100016 I [swi0: uart] 100015 I [swi6: Giant taskq] 100013 I [swi5: +] 100011 I [swi2: cambio] 100010 I [swi6: task queue] 100005 RunQ [swi4: clock] 100004 I [swi3: vm] 100003 I [swi1: netisr 0] 10 0 0 0 RL [idle] 1 0 1 0 SLs wait 0xc6c2f000 [init] 0 0 0 0 DLs (threaded) [kernel] 100014 D - 0xc6c99080 [thread taskq] 100012 D - 0xc6c99140 [kqueue taskq] 100000 D sched 0x8046f2d8 [swapper] Regards, -- Rui Paulo From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 14:15:51 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CA77A106566C; Mon, 5 Apr 2010 14:15:51 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9B9568FC08; Mon, 5 Apr 2010 14:15:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o35EFpEM051984; Mon, 5 Apr 2010 14:15:51 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o35EFpiJ051981; Mon, 5 Apr 2010 14:15:51 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201004051415.o35EFpiJ051981@svn.freebsd.org> From: Jilles Tjoelker Date: Mon, 5 Apr 2010 14:15:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206182 - head/bin/sh X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 14:15:51 -0000 Author: jilles Date: Mon Apr 5 14:15:51 2010 New Revision: 206182 URL: http://svn.freebsd.org/changeset/base/206182 Log: sh: Automatically enable -o emacs in interactive shells with terminals. This makes sh a bit more friendly in single user mode, make buildenv, chroot and the like, and matches other shells. The -o emacs can be overridden on the command line or in the ENV file. Modified: head/bin/sh/options.c head/bin/sh/sh.1 Modified: head/bin/sh/options.c ============================================================================== --- head/bin/sh/options.c Mon Apr 5 13:48:23 2010 (r206181) +++ head/bin/sh/options.c Mon Apr 5 14:15:51 2010 (r206182) @@ -93,8 +93,11 @@ procargs(int argc, char **argv) options(1); if (*argptr == NULL && minusc == NULL) sflag = 1; - if (iflag == 2 && sflag == 1 && isatty(0) && isatty(1)) + if (iflag != 0 && sflag == 1 && isatty(0) && isatty(1)) { iflag = 1; + if (Eflag == 2) + Eflag = 1; + } if (mflag == 2) mflag = iflag; for (i = 0; i < NOPTS; i++) Modified: head/bin/sh/sh.1 ============================================================================== --- head/bin/sh/sh.1 Mon Apr 5 13:48:23 2010 (r206181) +++ head/bin/sh/sh.1 Mon Apr 5 14:15:51 2010 (r206182) @@ -32,7 +32,7 @@ .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 .\" $FreeBSD$ .\" -.Dd April 4, 2010 +.Dd April 5, 2010 .Dt SH 1 .Os .Sh NAME @@ -210,7 +210,8 @@ Enable the built-in .Xr emacs 1 command line editor (disables the .Fl V -option if it has been set). +option if it has been set; +set automatically when interactive on terminals). .It Fl e Li errexit Exit immediately if any untested command fails in non-interactive mode. The exit status of a command is considered to be From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 14:30:03 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A32B01065676; Mon, 5 Apr 2010 14:30:03 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id 3466C8FC1B; Mon, 5 Apr 2010 14:30:02 +0000 (UTC) Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id o35ETxo7085744 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 5 Apr 2010 17:29:59 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4) with ESMTP id o35ETxG7003815; Mon, 5 Apr 2010 17:29:59 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4/Submit) id o35ETxff003814; Mon, 5 Apr 2010 17:29:59 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 5 Apr 2010 17:29:59 +0300 From: Kostik Belousov To: Rui Paulo Message-ID: <20100405142959.GN2415@deviant.kiev.zoral.com.ua> References: <201004031620.o33GKM0n037332@svn.freebsd.org> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="QiPs+vIMjk/XMT1Q" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-3.8 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, DNS_FROM_OPENWHOIS autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: Alan Cox , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r206140 - head/sys/vm X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 14:30:03 -0000 --QiPs+vIMjk/XMT1Q Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Apr 05, 2010 at 02:58:53PM +0100, Rui Paulo wrote: > Hi, >=20 > On 3 Apr 2010, at 17:20, Alan Cox wrote: >=20 > > Author: alc > > Date: Sat Apr 3 16:20:22 2010 > > New Revision: 206140 > > URL: http://svn.freebsd.org/changeset/base/206140 > >=20 > > Log: > > Re-enable the call to pmap_release() by vmspace_dofree(). The account= ing > > problem that is described in the comment has been addressed. > >=20 > > Submitted by: kib > > Tested by: pho (a few months ago) > > MFC after: 6 weeks > >=20 > > Modified: > > head/sys/vm/vm_map.c > >=20 > > Modified: head/sys/vm/vm_map.c > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D > > --- head/sys/vm/vm_map.c Sat Apr 3 15:52:32 2010 (r206139) > > +++ head/sys/vm/vm_map.c Sat Apr 3 16:20:22 2010 (r206140) > > @@ -313,6 +313,7 @@ vm_init2(void) > > static inline void > > vmspace_dofree(struct vmspace *vm) > > { > > + > > CTR1(KTR_VM, "vmspace_free: %p", vm); > >=20 > > /* > > @@ -329,12 +330,8 @@ vmspace_dofree(struct vmspace *vm) > > (void)vm_map_remove(&vm->vm_map, vm->vm_map.min_offset, > > vm->vm_map.max_offset); > >=20 > > - /* > > - * XXX Comment out the pmap_release call for now. The > > - * vmspace_zone is marked as UMA_ZONE_NOFREE, and bugs cause > > - * pmap.resident_count to be !=3D 0 on exit sometimes. > > - */ > > -/* pmap_release(vmspace_pmap(vm)); */ > > + pmap_release(vmspace_pmap(vm)); > > + vm->vm_map.pmap =3D NULL; > > uma_zfree(vmspace_zone, vm); > > } > >=20 >=20 > Unfortunately, this causes a panic on MIPS. I don't know enough about the= VM subsystem to help with fixing this but if you want me to investigate so= mething, I can do it. >=20 > NFS ROOT: 192.168.5.1:/zoo/rpaulo/millipede1 > warning: no time-of-day clock registered, system time will not be set acc= urately > warning: no time-of-day clock registered, system time will not be set acc= urately > Interface rge1 IP-Address 192.168.5.16 Broadcast 192.168.5.255=20 > panic: lock "pmap" 0xc6c320dc already initialized > KDB: enter: panic > [ thread pid 31 tid 100042 ] > Stopped at kdb_enter+0x50: lui at,0x8047 > db> bt > Tracing pid 31 tid 100042 td 0xc829e260 > db_trace_thread+30 (?,?,?,?) ra 8011ee48 sp d37ed820 sz 24 > 8011ed2c+11c (0,?,ffffffff,?) ra 8011e4f0 sp d37ed838 sz 32 > 8011e15c+394 (?,?,?,?) ra 8011e680 sp d37ed858 sz 168 > db_command_loop+78 (?,?,?,?) ra 80120c98 sp d37ed900 sz 24 > 80120b90+108 (?,?,?,?) ra 80227c74 sp d37ed918 sz 424 > kdb_trap+10c (?,?,?,?) ra 8038b8fc sp d37edac0 sz 32 > trap+b88 (?,?,?,?) ra 80383fa8 sp d37edae0 sz 168 > MipsKernGenException+10c (0,a,804c2fe4,109) ra 80227ecc sp d37edb88 sz 200 > kdb_enter+50 (?,?,?,?) ra 801f2184 sp d37edc50 sz 24 > panic+f8 (?,803fb4e0,c6c320dc,c6c320dc) ra 80228a74 sp d37edc68 sz 40 > lock_init+30 (?,?,?,?) ra 801e2114 sp d37edc90 sz 24 > mtx_init+100 (?,?,?,?) ra 80386fd4 sp d37edca8 sz 32 > pmap_pinit+34 (?,?,?,?) ra 8036dab8 sp d37edcc8 sz 48 > vmspace_alloc+48 (?,?,?,?) ra 8036dc08 sp d37edcf8 sz 32 > vmspace_fork+58 (c6c320f0,d37edd78,?,?) ra 801c7240 sp d37edd18 sz 72 > fork1+234 (?,?,?,d37eddc8) ra 801c845c sp d37edd60 sz 88 > fork+20 (?,?,?,?) ra 8038b694 sp d37eddb8 sz 32 > trap+920 (?,?,?,?) ra 80384174 sp d37eddd8 sz 168 > MipsUserGenException+10c (?,?,?,501dbd30) ra 0 sp d37ede80 sz 0 > pid 31 =20 I did not even compiled the change below. diff --git a/sys/mips/mips/pmap.c b/sys/mips/mips/pmap.c index 73f57e4..d5765ea 100644 --- a/sys/mips/mips/pmap.c +++ b/sys/mips/mips/pmap.c @@ -1263,6 +1263,7 @@ pmap_release(pmap_t pmap) ptdpg->wire_count--; atomic_subtract_int(&cnt.v_wire_count, 1); vm_page_free_zero(ptdpg); + PMAP_LOCK_DESTROY(pmap); } =20 /* --QiPs+vIMjk/XMT1Q Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEARECAAYFAku58+YACgkQC3+MBN1Mb4jRDQCgwwuEAg+hqxoTzKldpWDh/fpi 2wkAn2p6nDldQDvtm3o8Fn83qMsJ8vmy =4MxC -----END PGP SIGNATURE----- --QiPs+vIMjk/XMT1Q-- From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 16:15:03 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2A5301065677; Mon, 5 Apr 2010 16:15:03 +0000 (UTC) (envelope-from netchild@freebsd.org) Received: from mail.ebusiness-leidinger.de (mail.ebusiness-leidinger.de [217.11.53.44]) by mx1.freebsd.org (Postfix) with ESMTP id 8FE3D8FC08; Mon, 5 Apr 2010 16:15:02 +0000 (UTC) Received: from outgoing.leidinger.net (pD9E2CB1A.dip.t-dialin.net [217.226.203.26]) by mail.ebusiness-leidinger.de (Postfix) with ESMTPSA id 08CCA844268; Mon, 5 Apr 2010 18:14:56 +0200 (CEST) Received: from webmail.leidinger.net (webmail.leidinger.net [192.168.1.102]) by outgoing.leidinger.net (Postfix) with ESMTP id 36B7D505C; Mon, 5 Apr 2010 18:14:51 +0200 (CEST) Received: (from www@localhost) by webmail.leidinger.net (8.14.3/8.13.8/Submit) id o35GEpI9019410; Mon, 5 Apr 2010 18:14:51 +0200 (CEST) (envelope-from netchild@FreeBSD.org) Received: from p5DD456EA.dip.t-dialin.net (p5DD456EA.dip.t-dialin.net [93.212.86.234]) by webmail.leidinger.net (Horde Framework) with HTTP; Mon, 05 Apr 2010 18:14:50 +0200 Message-ID: <20100405181450.13494itjj2ehj5og@webmail.leidinger.net> Date: Mon, 05 Apr 2010 18:14:50 +0200 From: Alexander Leidinger To: Kostik Belousov References: <201004020655.o326tWax079882@svn.freebsd.org> <20100404153653.GD2415@deviant.kiev.zoral.com.ua> <20100405143123.14716pelm4tos2kg@webmail.leidinger.net> <20100405133505.GK2415@deviant.kiev.zoral.com.ua> In-Reply-To: <20100405133505.GK2415@deviant.kiev.zoral.com.ua> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; DelSp="Yes"; format="flowed" Content-Disposition: inline Content-Transfer-Encoding: 7bit User-Agent: Dynamic Internet Messaging Program (DIMP) H3 (1.1.4) X-EBL-MailScanner-Information: Please contact the ISP for more information X-EBL-MailScanner-ID: 08CCA844268.BD35A X-EBL-MailScanner: Found to be clean X-EBL-MailScanner-SpamCheck: not spam, spamhaus-ZEN, SpamAssassin (not cached, score=-1.363, required 6, autolearn=disabled, ALL_TRUSTED -1.44, TW_SV 0.08) X-EBL-MailScanner-From: netchild@freebsd.org X-EBL-MailScanner-Watermark: 1271088898.53636@qLfpmLyWDthUDNjk82s2wQ X-EBL-Spam-Status: No Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, imp@FreeBSD.org Subject: Re: svn commit: r206082 - in head: . share/man/man7 share/mk sys/conf X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 16:15:03 -0000 Quoting Kostik Belousov (from Mon, 5 Apr 2010 16:35:05 +0300): > On Mon, Apr 05, 2010 at 02:31:23PM +0200, Alexander Leidinger wrote: >> Quoting Kostik Belousov (from Sun, 4 Apr 2010 >> 18:36:53 +0300): >> >> >On Fri, Apr 02, 2010 at 06:55:32AM +0000, Alexander Leidinger wrote: >> >>Author: netchild >> >>Date: Fri Apr 2 06:55:31 2010 >> >>New Revision: 206082 >> >>URL: http://svn.freebsd.org/changeset/base/206082 >> >> >> >>Log: >> >> WITH_CTF can now be specified in src.conf (not recommended, there >> >> are some problems with static executables), make.conf (would also >> >> affect ports which do not use GNU make and do not override the >> >> compile targets) or in the kernel config (via "makeoptions >> >> WITH_CTF=yes"). >> > >> >I think this commit started the kernel build to emit lines like this >> >[ -z "ctfconvert" -o -n "1" ] || ctfconvert -L VERSION -g vm_init.o >> >after compilation of each file from the kernel (but not modules) >> >source. Could you, please, look for missed '@' ? >> >> I just reviewed the diff again and there is only one place where no @ >> is, this is for NORMAL_CTFCONVERT. Before I committed the patch, I >> searched where it is used, but I didn't find a place where it is used. >> Maybe I overlooked something (I didn't review the Makfile which is >> generated by running the config program on the kernel-config, and I >> will not get time to do this today). >> >> Can you please confirm that you did an installworld before building >> the kernel? > > I can confirm that r206179 fixed the issue. > > To answer your question, no, I did not performed installworld. > I do buildkernel in cross-build environment, i.e. I do buildworld > and then buildkernel. Ok, thanks for the info. Warner, do you mind if I back-out r206082 and change the place where NORMAL_CTFCONVERT is used instead (fist I have to search for it again... not today)? It would make it consistent with all other places (SYSTEM_CTFCONVERT and the plain test and use of CTFxxx). Bye, Alexander. -- http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7 http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137 When the doubt vanishes and the issue becomes evident, stupidity reigns. -- Poul Henningsen [1894-1967] From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 17:26:24 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 761591065670; Mon, 5 Apr 2010 17:26:24 +0000 (UTC) (envelope-from jacula@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6433F8FC16; Mon, 5 Apr 2010 17:26:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o35HQONS094193; Mon, 5 Apr 2010 17:26:24 GMT (envelope-from jacula@svn.freebsd.org) Received: (from jacula@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o35HQOt0094192; Mon, 5 Apr 2010 17:26:24 GMT (envelope-from jacula@svn.freebsd.org) Message-Id: <201004051726.o35HQOt0094192@svn.freebsd.org> From: Giuseppe Pilichi Date: Mon, 5 Apr 2010 17:26:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206184 - head/share/misc X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 17:26:24 -0000 Author: jacula (ports committer) Date: Mon Apr 5 17:26:23 2010 New Revision: 206184 URL: http://svn.freebsd.org/changeset/base/206184 Log: First steps as committer: - add an entry for myself to committers-ports.dot Approved by: pgj (mentor) Modified: head/share/misc/committers-ports.dot Modified: head/share/misc/committers-ports.dot ============================================================================== --- head/share/misc/committers-ports.dot Mon Apr 5 16:11:42 2010 (r206183) +++ head/share/misc/committers-ports.dot Mon Apr 5 17:26:23 2010 (r206184) @@ -86,6 +86,7 @@ glewis [label="Greg Lewis\nglewis@FreeBS hq [label="Herve Quiroz\nhq@FreeBSD.org\n2004/08/05"] ijliao [label="Ying-Chieh Liao\nijliao@FreeBSD.org\n2001/01/20"] itetcu [label="Ion-Mihai Tetcu\nitetcu@FreeBSD.org\n2006/06/07"] +jacula [label="Giuseppe Pilichi\njacula@FreeBSD.org\n2010/04/05"] jadawin [label="Philippe Audeoud\njadawin@FreeBSD.org\n2008/03/02"] jkim [label="Jung-uk Kim\njkim@FreeBSD.org\n2007/09/12"] jmelo [label="Jean Milanez Melo\njmelo@FreeBSD.org\n2006/03/31"] @@ -316,6 +317,8 @@ pav -> josef pav -> kwm pav -> mnag +pgj -> jacula + philip -> koitsu rafan -> chinsan @@ -341,6 +344,7 @@ steve -> netchild tabthorpe -> avilla tabthorpe -> avl +tabthorpe -> jacula tabthorpe -> jadawin tabthorpe -> pgj From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 18:27:58 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9D92E106564A; Mon, 5 Apr 2010 18:27:58 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8BADA8FC1C; Mon, 5 Apr 2010 18:27:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o35IRwgk008634; Mon, 5 Apr 2010 18:27:58 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o35IRwVD008632; Mon, 5 Apr 2010 18:27:58 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201004051827.o35IRwVD008632@svn.freebsd.org> From: Xin LI Date: Mon, 5 Apr 2010 18:27:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206199 - head/cddl/contrib/opensolaris/lib/libzfs/common X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 18:27:58 -0000 Author: delphij Date: Mon Apr 5 18:27:58 2010 New Revision: 206199 URL: http://svn.freebsd.org/changeset/base/206199 Log: Refine previous partial merge of OpenSolaris onnv revision 9396:f41cf682d0d3. This fixes a regression that zfs list would crash on zfs having user properties. PR: kern/145377 Submitted by: mm Approved by: pjd Obtained from: OpenSolaris MFC after: 10 days Modified: head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c Modified: head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c ============================================================================== --- head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c Mon Apr 5 18:25:30 2010 (r206198) +++ head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c Mon Apr 5 18:27:58 2010 (r206199) @@ -4288,7 +4288,12 @@ zfs_prune_proplist(zfs_handle_t *zhp, ui zfs_prop_t zfs_prop = zfs_name_to_prop(nvpair_name(curr)); nvpair_t *next = nvlist_next_nvpair(zhp->zfs_props, curr); - if (props[zfs_prop] == B_FALSE) + /* + * We leave user:props in the nvlist, so there will be + * some ZPROP_INVAL. To be extra safe, don't prune + * those. + */ + if (zfs_prop != ZPROP_INVAL && props[zfs_prop] == B_FALSE) (void) nvlist_remove(zhp->zfs_props, nvpair_name(curr), nvpair_type(curr)); curr = next; From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 19:40:14 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 15D3C1065670; Mon, 5 Apr 2010 19:40:14 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 050258FC1D; Mon, 5 Apr 2010 19:40:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o35JeDxs024985; Mon, 5 Apr 2010 19:40:13 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o35JeDIc024983; Mon, 5 Apr 2010 19:40:13 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201004051940.o35JeDIc024983@svn.freebsd.org> From: Robert Watson Date: Mon, 5 Apr 2010 19:40:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206206 - head/sys/fs/coda X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 19:40:14 -0000 Author: rwatson Date: Mon Apr 5 19:40:13 2010 New Revision: 206206 URL: http://svn.freebsd.org/changeset/base/206206 Log: Correct definition of CIOC_KERNEL_VERSION Coda ioctl() for systems where sizeof(int) != sizeof(sizeof(int)), or the ioctl will return EINVAL. MFC after: 3 days Modified: head/sys/fs/coda/coda.h Modified: head/sys/fs/coda/coda.h ============================================================================== --- head/sys/fs/coda/coda.h Mon Apr 5 19:25:29 2010 (r206205) +++ head/sys/fs/coda/coda.h Mon Apr 5 19:40:13 2010 (r206206) @@ -313,7 +313,7 @@ struct coda_statfs { #define VC_MAXMSGSIZE sizeof(union inputArgs)+sizeof(union outputArgs) +\ VC_MAXDATASIZE -#define CIOC_KERNEL_VERSION _IOWR('c', 10, sizeof (int)) +#define CIOC_KERNEL_VERSION _IOWR('c', 10, int) #if 0 /* don't care about kernel version number */ #define CODA_KERNEL_VERSION 0 From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 20:12:54 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 730C3106566B; Mon, 5 Apr 2010 20:12:54 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 61ABA8FC12; Mon, 5 Apr 2010 20:12:54 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o35KCsQG032436; Mon, 5 Apr 2010 20:12:54 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o35KCsfG032426; Mon, 5 Apr 2010 20:12:54 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201004052012.o35KCsfG032426@svn.freebsd.org> From: Robert Watson Date: Mon, 5 Apr 2010 20:12:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206210 - head/sys/fs/coda X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 20:12:54 -0000 Author: rwatson Date: Mon Apr 5 20:12:54 2010 New Revision: 206210 URL: http://svn.freebsd.org/changeset/base/206210 Log: Synchronize Coda kernel module definitions in our coda.h to Coda 6's coda.h: - CodaFid typdef -> struct CodaFid throughout. - Use unsigned int instead of unsigned long for venus_dirent and other cosmetic fixes. - Introduce cuid_t and cgid_t and use instead of uid_t and gid_t in RPCs. - Synchronize comments and macros. - Use u_int32_t instead of unsigned long for coda_out_hdr. With these changes, a 64-bit Coda kernel module now works with coda6_client, whereas previous userspace and kernel versions of RPCs differed sufficiently to prevent using the file system. This has been verified only with casual testing, but /coda is now usable for at least basic operations on amd64. MFC after: 1 week Modified: head/sys/fs/coda/cnode.h head/sys/fs/coda/coda.h head/sys/fs/coda/coda_subr.c head/sys/fs/coda/coda_subr.h head/sys/fs/coda/coda_venus.c head/sys/fs/coda/coda_venus.h head/sys/fs/coda/coda_vfsops.c head/sys/fs/coda/coda_vfsops.h head/sys/fs/coda/coda_vnops.c Modified: head/sys/fs/coda/cnode.h ============================================================================== --- head/sys/fs/coda/cnode.h Mon Apr 5 20:01:21 2010 (r206209) +++ head/sys/fs/coda/cnode.h Mon Apr 5 20:12:54 2010 (r206210) @@ -94,7 +94,7 @@ extern int coda_vfsop_print_entry; struct cnode { struct vnode *c_vnode; u_short c_flags; /* flags (see below) */ - CodaFid c_fid; /* file handle */ + struct CodaFid c_fid; /* file handle */ struct vnode *c_ovp; /* open vnode pointer */ u_short c_ocount; /* count of openers */ u_short c_owrite; /* count of open for write */ @@ -196,7 +196,8 @@ void coda_unmounting(struct mount *whoIa int coda_vmflush(struct cnode *cp); /* cfs_vnodeops.h */ -struct cnode *make_coda_node(CodaFid *fid, struct mount *vfsp, short type); +struct cnode *make_coda_node(struct CodaFid *fid, struct mount *vfsp, + short type); int coda_vnodeopstats_init(void); /* sigh */ Modified: head/sys/fs/coda/coda.h ============================================================================== --- head/sys/fs/coda/coda.h Mon Apr 5 20:01:21 2010 (r206209) +++ head/sys/fs/coda/coda.h Mon Apr 5 20:12:54 2010 (r206210) @@ -103,6 +103,8 @@ struct timespec { }; #endif +typedef u_int32_t cuid_t; +typedef u_int32_t cgid_t; /* * Cfs constants @@ -132,14 +134,13 @@ struct timespec { #define C_A_F_OK 0 /* Test for existence. */ - #ifndef _VENUS_DIRENT_T_ #define _VENUS_DIRENT_T_ 1 struct venus_dirent { - unsigned long d_fileno; /* file number of entry */ + unsigned int d_fileno; /* file number of entry */ unsigned short d_reclen; /* length of this record */ - char d_type; /* file type, see below */ - char d_namlen; /* length of string in d_name */ + unsigned char d_type; /* file type, see below */ + unsigned char d_namlen; /* length of string in d_name */ char d_name[CODA_MAXNAMLEN + 1];/* name must be no longer than this */ }; #undef DIRSIZ @@ -169,19 +170,19 @@ struct venus_dirent { #ifdef CODA_COMPAT_5 -typedef struct { +struct CodaFid { u_long Volume; u_long Vnode; u_long Unique; -} CodaFid; +}; -static __inline__ ino_t coda_f2i(CodaFid *fid) +static __inline__ ino_t coda_f2i(struct CodaFid *fid) { if (!fid) return 0; return (fid->Unique + (fid->Vnode<<10) + (fid->Volume<<20)); } -static __inline__ char * coda_f2s(CodaFid *fid) +static __inline__ char * coda_f2s(struct CodaFid *fid) { static char fid_str [35]; snprintf (fid_str, 35, "[%lx.%lx.%lx]", fid->Volume, @@ -189,7 +190,7 @@ static __inline__ char * coda_f2s(CodaFi return fid_str; } -static __inline__ int coda_fid_eq (CodaFid *fid1, CodaFid *fid2) +static __inline__ int coda_fid_eq (struct CodaFid *fid1, struct CodaFid *fid2) { return (fid1->Volume == fid2->Volume && fid1->Vnode == fid2->Vnode && @@ -203,18 +204,18 @@ struct coda_cred { #else /* CODA_COMPAT_5 */ -typedef struct { +struct CodaFid { u_int32_t opaque[4]; -} CodaFid; +}; -static __inline__ ino_t coda_f2i(CodaFid *fid) +static __inline__ ino_t coda_f2i(struct CodaFid *fid) { if ( ! fid ) return 0; return (fid->opaque[3] ^ (fid->opaque[2]<<10) ^ (fid->opaque[1]<<20) ^ fid->opaque[0]); } -static __inline__ char * coda_f2s(CodaFid *fid) +static __inline__ char * coda_f2s(struct CodaFid *fid) { static char fid_str [35]; snprintf (fid_str, 35, "[%x.%x.%x.%x]", fid->opaque[0], @@ -222,7 +223,7 @@ static __inline__ char * coda_f2s(CodaFi return fid_str; } -static __inline__ int coda_fid_eq (CodaFid *fid1, CodaFid *fid2) +static __inline__ int coda_fid_eq (struct CodaFid *fid1, struct CodaFid *fid2) { return (fid1->opaque[0] == fid2->opaque[0] && fid1->opaque[1] == fid2->opaque[1] && @@ -240,11 +241,11 @@ static __inline__ int coda_fid_eq (CodaF enum coda_vtype { C_VNON, C_VREG, C_VDIR, C_VBLK, C_VCHR, C_VLNK, C_VSOCK, C_VFIFO, C_VBAD }; struct coda_vattr { - int va_type; /* vnode type (for create) */ + long va_type; /* vnode type (for create) */ u_short va_mode; /* files access mode and type */ short va_nlink; /* number of references to file */ - uid_t va_uid; /* owner user id */ - gid_t va_gid; /* owner group id */ + cuid_t va_uid; /* owner user id */ + cgid_t va_gid; /* owner group id */ long va_fileid; /* file id */ u_quad_t va_size; /* file size in bytes */ long va_blocksize; /* blocksize preferred for i/o */ @@ -344,23 +345,23 @@ struct coda_in_hdr { struct coda_in_hdr { u_int32_t opcode; u_int32_t unique; /* Keep multiple outstanding msgs distinct */ - pid_t pid; /* Common to all */ - pid_t pgid; /* Common to all */ - uid_t uid; /* Common to all */ + pid_t pid; + pid_t pgid; + cuid_t uid; }; #endif /* Really important that opcode and unique are 1st two fields! */ struct coda_out_hdr { - unsigned long opcode; - unsigned long unique; - unsigned long result; + u_int32_t opcode; + u_int32_t unique; + u_int32_t result; }; /* coda_root: NO_IN */ struct coda_root_out { struct coda_out_hdr oh; - CodaFid Fid; + struct CodaFid Fid; }; struct coda_root_in { @@ -373,7 +374,7 @@ struct coda_root_in { /* coda_open: */ struct coda_open_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; int flags; }; @@ -387,7 +388,7 @@ struct coda_open_out { /* coda_close: */ struct coda_close_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; int flags; }; @@ -398,7 +399,7 @@ struct coda_close_out { /* coda_ioctl: */ struct coda_ioctl_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; int cmd; int len; int rwflag; @@ -415,7 +416,7 @@ struct coda_ioctl_out { /* coda_getattr: */ struct coda_getattr_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; }; struct coda_getattr_out { @@ -427,7 +428,7 @@ struct coda_getattr_out { /* coda_setattr: NO_OUT */ struct coda_setattr_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; struct coda_vattr attr; }; @@ -438,7 +439,7 @@ struct coda_setattr_out { /* coda_access: NO_OUT */ struct coda_access_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; int flags; }; @@ -454,14 +455,14 @@ struct coda_access_out { /* coda_lookup: */ struct coda_lookup_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; int name; /* Place holder for data. */ int flags; }; struct coda_lookup_out { struct coda_out_hdr oh; - CodaFid Fid; + struct CodaFid Fid; int vtype; }; @@ -469,7 +470,7 @@ struct coda_lookup_out { /* coda_create: */ struct coda_create_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; struct coda_vattr attr; int excl; int mode; @@ -478,7 +479,7 @@ struct coda_create_in { struct coda_create_out { struct coda_out_hdr oh; - CodaFid Fid; + struct CodaFid Fid; struct coda_vattr attr; }; @@ -486,7 +487,7 @@ struct coda_create_out { /* coda_remove: NO_OUT */ struct coda_remove_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; int name; /* Place holder for data. */ }; @@ -497,8 +498,8 @@ struct coda_remove_out { /* coda_link: NO_OUT */ struct coda_link_in { struct coda_in_hdr ih; - CodaFid sourceFid; /* cnode to link *to* */ - CodaFid destFid; /* Directory in which to place link */ + struct CodaFid sourceFid; /* cnode to link *to* */ + struct CodaFid destFid; /* Directory in which to place link */ int tname; /* Place holder for data. */ }; @@ -510,9 +511,9 @@ struct coda_link_out { /* coda_rename: NO_OUT */ struct coda_rename_in { struct coda_in_hdr ih; - CodaFid sourceFid; + struct CodaFid sourceFid; int srcname; - CodaFid destFid; + struct CodaFid destFid; int destname; }; @@ -523,14 +524,14 @@ struct coda_rename_out { /* coda_mkdir: */ struct coda_mkdir_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; struct coda_vattr attr; int name; /* Place holder for data. */ }; struct coda_mkdir_out { struct coda_out_hdr oh; - CodaFid Fid; + struct CodaFid Fid; struct coda_vattr attr; }; @@ -538,7 +539,7 @@ struct coda_mkdir_out { /* coda_rmdir: NO_OUT */ struct coda_rmdir_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; int name; /* Place holder for data. */ }; @@ -549,7 +550,7 @@ struct coda_rmdir_out { /* coda_readdir: */ struct coda_readdir_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; int count; int offset; }; @@ -563,7 +564,7 @@ struct coda_readdir_out { /* coda_symlink: NO_OUT */ struct coda_symlink_in { struct coda_in_hdr ih; - CodaFid Fid; /* Directory to put symlink in */ + struct CodaFid Fid; /* Directory to put symlink in */ int srcname; struct coda_vattr attr; int tname; @@ -576,7 +577,7 @@ struct coda_symlink_out { /* coda_readlink: */ struct coda_readlink_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; }; struct coda_readlink_out { @@ -589,7 +590,7 @@ struct coda_readlink_out { /* coda_fsync: NO_OUT */ struct coda_fsync_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; }; struct coda_fsync_out { @@ -599,18 +600,18 @@ struct coda_fsync_out { /* coda_inactive: NO_OUT */ struct coda_inactive_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; }; /* coda_vget: */ struct coda_vget_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; }; struct coda_vget_out { struct coda_out_hdr oh; - CodaFid Fid; + struct CodaFid Fid; int vtype; }; @@ -626,7 +627,7 @@ struct coda_purgeuser_out { #ifdef CODA_COMPAT_5 struct coda_cred cred; #else - uid_t uid; + cuid_t uid; #endif }; @@ -634,14 +635,14 @@ struct coda_purgeuser_out { /* CODA_ZAPFILE is a venus->kernel call */ struct coda_zapfile_out { struct coda_out_hdr oh; - CodaFid Fid; + struct CodaFid Fid; }; /* coda_zapdir: */ /* CODA_ZAPDIR is a venus->kernel call */ struct coda_zapdir_out { struct coda_out_hdr oh; - CodaFid Fid; + struct CodaFid Fid; }; /* coda_zapnode: */ @@ -651,41 +652,44 @@ struct coda_zapvnode_out { #ifdef CODA_COMPAT_5 struct coda_cred cred; #endif - CodaFid Fid; + struct CodaFid Fid; }; /* coda_purgefid: */ /* CODA_PURGEFID is a venus->kernel call */ struct coda_purgefid_out { struct coda_out_hdr oh; - CodaFid Fid; + struct CodaFid Fid; }; /* coda_replace: */ /* CODA_REPLACE is a venus->kernel call */ struct coda_replace_out { /* coda_replace is a venus->kernel call */ struct coda_out_hdr oh; - CodaFid NewFid; - CodaFid OldFid; + struct CodaFid NewFid; + struct CodaFid OldFid; }; /* coda_open_by_fd: */ struct coda_open_by_fd_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; int flags; }; struct coda_open_by_fd_out { struct coda_out_hdr oh; int fd; +#ifdef _KERNEL + /* not passed from userspace but used in-kernel only */ struct vnode *vp; +#endif }; /* coda_open_by_path: */ struct coda_open_by_path_in { struct coda_in_hdr ih; - CodaFid Fid; + struct CodaFid Fid; int flags; }; @@ -799,6 +803,9 @@ struct PioctlData { #define CODA_CONTROL ".CONTROL" #define CODA_CONTROLLEN 8 +#define CTL_VOL -1 +#define CTL_VNO -1 +#define CTL_UNI -1 #define CTL_INO -1 #define CTL_FILE "/coda/.CONTROL" @@ -810,10 +817,9 @@ struct PioctlData { #define INVAL_FID { 0, 0, 0 } #else #define CTL_FID { { -1, -1, -1, -1 } } -#define IS_CTL_FID(fidp) ((fidp)->opaque[0] == -1 &&\ - (fidp)->opaque[1] == -1 &&\ - (fidp)->opaque[2] == -1 &&\ - (fidp)->opaque[3] == -1) +#define IS_CTL_FID(fidp) ((fidp)->opaque[1] == CTL_VOL && \ + (fidp)->opaque[2] == CTL_VNO && \ + (fidp)->opaque[3] == CTL_UNI) #define INVAL_FID { { 0, 0, 0, 0 } } #endif Modified: head/sys/fs/coda/coda_subr.c ============================================================================== --- head/sys/fs/coda/coda_subr.c Mon Apr 5 20:01:21 2010 (r206209) +++ head/sys/fs/coda/coda_subr.c Mon Apr 5 20:12:54 2010 (r206210) @@ -164,7 +164,7 @@ coda_unsave(struct cnode *cp) * NOTE: this allows multiple cnodes with same fid -- dcs 1/25/95 */ struct cnode * -coda_find(CodaFid *fid) +coda_find(struct CodaFid *fid) { struct cnode *cp; Modified: head/sys/fs/coda/coda_subr.h ============================================================================== --- head/sys/fs/coda/coda_subr.h Mon Apr 5 20:01:21 2010 (r206209) +++ head/sys/fs/coda/coda_subr.h Mon Apr 5 20:12:54 2010 (r206210) @@ -35,7 +35,7 @@ struct cnode *coda_alloc(void); void coda_free(struct cnode *cp); -struct cnode *coda_find(CodaFid *fid); +struct cnode *coda_find(struct CodaFid *fid); void coda_flush(struct coda_mntinfo *mnt, enum dc_status dcstat); void coda_testflush(void); void coda_checkunmounting(struct mount *mp); Modified: head/sys/fs/coda/coda_venus.c ============================================================================== --- head/sys/fs/coda/coda_venus.c Mon Apr 5 20:01:21 2010 (r206209) +++ head/sys/fs/coda/coda_venus.c Mon Apr 5 20:12:54 2010 (r206210) @@ -177,7 +177,7 @@ int coda_kernel_version = CODA_KERNEL_VE int venus_root(void *mdp, struct ucred *cred, struct proc *p, - /*out*/ CodaFid *VFid) + /*out*/ struct CodaFid *VFid) { DECL_NO_IN(coda_root); /* sets Isize & Osize */ ALLOC_NO_IN(coda_root); /* sets inp & outp */ @@ -194,7 +194,7 @@ venus_root(void *mdp, struct ucred *cred } int -venus_open(void *mdp, CodaFid *fid, int flag, struct ucred *cred, +venus_open(void *mdp, struct CodaFid *fid, int flag, struct ucred *cred, struct proc *p, /*out*/ struct vnode **vp) { int cflag; @@ -215,7 +215,7 @@ venus_open(void *mdp, CodaFid *fid, int } int -venus_close(void *mdp, CodaFid *fid, int flag, struct ucred *cred, +venus_close(void *mdp, struct CodaFid *fid, int flag, struct ucred *cred, struct proc *p) { int cflag; @@ -252,7 +252,7 @@ venus_write(void) * normal files. */ int -venus_ioctl(void *mdp, CodaFid *fid, int com, int flag, caddr_t data, +venus_ioctl(void *mdp, struct CodaFid *fid, int com, int flag, caddr_t data, struct ucred *cred, struct proc *p) { DECL(coda_ioctl); /* sets Isize & Osize */ @@ -304,7 +304,8 @@ venus_ioctl(void *mdp, CodaFid *fid, int } int -venus_getattr(void *mdp, CodaFid *fid, struct ucred *cred, struct vattr *vap) +venus_getattr(void *mdp, struct CodaFid *fid, struct ucred *cred, + struct vattr *vap) { struct proc *p; DECL(coda_getattr); /* sets Isize & Osize */ @@ -326,7 +327,8 @@ venus_getattr(void *mdp, CodaFid *fid, s } int -venus_setattr(void *mdp, CodaFid *fid, struct vattr *vap, struct ucred *cred) +venus_setattr(void *mdp, struct CodaFid *fid, struct vattr *vap, + struct ucred *cred) { struct proc *p; DECL_NO_OUT(coda_setattr); /* sets Isize & Osize */ @@ -347,8 +349,8 @@ venus_setattr(void *mdp, CodaFid *fid, s } int -venus_access(void *mdp, CodaFid *fid, accmode_t accmode, struct ucred *cred, - struct proc *p) +venus_access(void *mdp, struct CodaFid *fid, accmode_t accmode, + struct ucred *cred, struct proc *p) { DECL_NO_OUT(coda_access); /* sets Isize & Osize */ ALLOC_NO_OUT(coda_access); /* sets inp & outp */ @@ -374,8 +376,8 @@ venus_access(void *mdp, CodaFid *fid, ac } int -venus_readlink(void *mdp, CodaFid *fid, struct ucred *cred, struct proc *p, - /*out*/ char **str, int *len) +venus_readlink(void *mdp, struct CodaFid *fid, struct ucred *cred, + struct proc *p, /*out*/ char **str, int *len) { DECL(coda_readlink); /* sets Isize & Osize */ coda_readlink_size += CODA_MAXPATHLEN; @@ -400,7 +402,7 @@ venus_readlink(void *mdp, CodaFid *fid, } int -venus_fsync(void *mdp, CodaFid *fid, struct proc *p) +venus_fsync(void *mdp, struct CodaFid *fid, struct proc *p) { DECL_NO_OUT(coda_fsync); /* sets Isize & Osize */ ALLOC_NO_OUT(coda_fsync); /* sets inp & outp */ @@ -420,8 +422,9 @@ venus_fsync(void *mdp, CodaFid *fid, str } int -venus_lookup(void *mdp, CodaFid *fid, const char *nm, int len, - struct ucred *cred, struct proc *p, /*out*/ CodaFid *VFid, int *vtype) +venus_lookup(void *mdp, struct CodaFid *fid, const char *nm, int len, + struct ucred *cred, struct proc *p, /*out*/ struct CodaFid *VFid, + int *vtype) { DECL(coda_lookup); /* sets Isize & Osize */ coda_lookup_size += len + 1; @@ -457,9 +460,9 @@ venus_lookup(void *mdp, CodaFid *fid, co } int -venus_create(void *mdp, CodaFid *fid, const char *nm, int len, int exclusive, - int mode, struct vattr *va, struct ucred *cred, struct proc *p, - /*out*/ CodaFid *VFid, struct vattr *attr) +venus_create(void *mdp, struct CodaFid *fid, const char *nm, int len, + int exclusive, int mode, struct vattr *va, struct ucred *cred, + struct proc *p, /*out*/ struct CodaFid *VFid, struct vattr *attr) { DECL(coda_create); /* sets Isize & Osize */ coda_create_size += len + 1; @@ -488,7 +491,7 @@ venus_create(void *mdp, CodaFid *fid, co } int -venus_remove(void *mdp, CodaFid *fid, const char *nm, int len, +venus_remove(void *mdp, struct CodaFid *fid, const char *nm, int len, struct ucred *cred, struct proc *p) { DECL_NO_OUT(coda_remove); /* sets Isize & Osize */ @@ -511,8 +514,8 @@ venus_remove(void *mdp, CodaFid *fid, co } int -venus_link(void *mdp, CodaFid *fid, CodaFid *tfid, const char *nm, int len, - struct ucred *cred, struct proc *p) +venus_link(void *mdp, struct CodaFid *fid, struct CodaFid *tfid, + const char *nm, int len, struct ucred *cred, struct proc *p) { DECL_NO_OUT(coda_link); /* sets Isize & Osize */ coda_link_size += len + 1; @@ -535,8 +538,9 @@ venus_link(void *mdp, CodaFid *fid, Coda } int -venus_rename(void *mdp, CodaFid *fid, CodaFid *tfid, const char *nm, int len, - const char *tnm, int tlen, struct ucred *cred, struct proc *p) +venus_rename(void *mdp, struct CodaFid *fid, struct CodaFid *tfid, + const char *nm, int len, const char *tnm, int tlen, struct ucred *cred, + struct proc *p) { DECL_NO_OUT(coda_rename); /* sets Isize & Osize */ coda_rename_size += len + 1 + tlen + 1; @@ -562,9 +566,9 @@ venus_rename(void *mdp, CodaFid *fid, Co } int -venus_mkdir(void *mdp, CodaFid *fid, const char *nm, int len, +venus_mkdir(void *mdp, struct CodaFid *fid, const char *nm, int len, struct vattr *va, struct ucred *cred, struct proc *p, - /*out*/ CodaFid *VFid, struct vattr *ova) + /*out*/ struct CodaFid *VFid, struct vattr *ova) { DECL(coda_mkdir); /* sets Isize & Osize */ coda_mkdir_size += len + 1; @@ -591,7 +595,7 @@ venus_mkdir(void *mdp, CodaFid *fid, con } int -venus_rmdir(void *mdp, CodaFid *fid, const char *nm, int len, +venus_rmdir(void *mdp, struct CodaFid *fid, const char *nm, int len, struct ucred *cred, struct proc *p) { DECL_NO_OUT(coda_rmdir); /* sets Isize & Osize */ @@ -614,7 +618,7 @@ venus_rmdir(void *mdp, CodaFid *fid, con } int -venus_symlink(void *mdp, CodaFid *fid, const char *lnm, int llen, +venus_symlink(void *mdp, struct CodaFid *fid, const char *lnm, int llen, const char *nm, int len, struct vattr *va, struct ucred *cred, struct proc *p) { @@ -645,7 +649,7 @@ venus_symlink(void *mdp, CodaFid *fid, c * XXX: Unused. */ int -venus_readdir(void *mdp, CodaFid *fid, int count, int offset, +venus_readdir(void *mdp, struct CodaFid *fid, int count, int offset, struct ucred *cred, struct proc *p, /*out*/ char *buffer, int *len) { DECL(coda_readdir); /* sets Isize & Osize */ @@ -672,8 +676,8 @@ venus_readdir(void *mdp, CodaFid *fid, i } int -venus_fhtovp(void *mdp, CodaFid *fid, struct ucred *cred, struct proc *p, - /*out*/ CodaFid *VFid, int *vtype) +venus_fhtovp(void *mdp, struct CodaFid *fid, struct ucred *cred, + struct proc *p, /*out*/ struct CodaFid *VFid, int *vtype) { DECL(coda_vget); /* sets Isize & Osize */ ALLOC(coda_vget); /* sets inp & outp */ Modified: head/sys/fs/coda/coda_venus.h ============================================================================== --- head/sys/fs/coda/coda_venus.h Mon Apr 5 20:01:21 2010 (r206209) +++ head/sys/fs/coda/coda_venus.h Mon Apr 5 20:12:54 2010 (r206210) @@ -34,49 +34,50 @@ #define _CODA_VENUS_H_ int venus_root(void *mdp, struct ucred *cred, struct proc *p, - /*out*/ CodaFid *VFid); -int venus_open(void *mdp, CodaFid *fid, int flag, struct ucred *cred, - struct proc *p, /*out*/ struct vnode **vp); -int venus_close(void *mdp, CodaFid *fid, int flag, struct ucred *cred, - struct proc *p); + /*out*/ struct CodaFid *VFid); +int venus_open(void *mdp, struct CodaFid *fid, int flag, + struct ucred *cred, struct proc *p, /*out*/ struct vnode **vp); +int venus_close(void *mdp, struct CodaFid *fid, int flag, + struct ucred *cred, struct proc *p); void venus_read(void); void venus_write(void); -int venus_ioctl(void *mdp, CodaFid *fid, int com, int flag, caddr_t data, - struct ucred *cred, struct proc *p); -int venus_getattr(void *mdp, CodaFid *fid, struct ucred *cred, +int venus_ioctl(void *mdp, struct CodaFid *fid, int com, int flag, + caddr_t data, struct ucred *cred, struct proc *p); +int venus_getattr(void *mdp, struct CodaFid *fid, struct ucred *cred, struct vattr *vap); -int venus_setattr(void *mdp, CodaFid *fid, struct vattr *vap, +int venus_setattr(void *mdp, struct CodaFid *fid, struct vattr *vap, struct ucred *cred); -int venus_access(void *mdp, CodaFid *fid, int mode, struct ucred *cred, - struct proc *p); -int venus_readlink(void *mdp, CodaFid *fid, struct ucred *cred, +int venus_access(void *mdp, struct CodaFid *fid, int mode, + struct ucred *cred, struct proc *p); +int venus_readlink(void *mdp, struct CodaFid *fid, struct ucred *cred, struct proc *p, /*out*/ char **str, int *len); -int venus_fsync(void *mdp, CodaFid *fid, struct proc *p); -int venus_lookup(void *mdp, CodaFid *fid, const char *nm, int len, - struct ucred *cred, struct proc *p, /*out*/ CodaFid *VFid, +int venus_fsync(void *mdp, struct CodaFid *fid, struct proc *p); +int venus_lookup(void *mdp, struct CodaFid *fid, const char *nm, int len, + struct ucred *cred, struct proc *p, /*out*/ struct CodaFid *VFid, int *vtype); -int venus_create(void *mdp, CodaFid *fid, const char *nm, int len, +int venus_create(void *mdp, struct CodaFid *fid, const char *nm, int len, int exclusive, int mode, struct vattr *va, struct ucred *cred, - struct proc *p, /*out*/ CodaFid *VFid, struct vattr *attr); -int venus_remove(void *mdp, CodaFid *fid, const char *nm, int len, + struct proc *p, /*out*/ struct CodaFid *VFid, + struct vattr *attr); +int venus_remove(void *mdp, struct CodaFid *fid, const char *nm, int len, struct ucred *cred, struct proc *p); -int venus_link(void *mdp, CodaFid *fid, CodaFid *tfid, const char *nm, - int len, struct ucred *cred, struct proc *p); -int venus_rename(void *mdp, CodaFid *fid, CodaFid *tfid, const char *nm, - int len, const char *tnm, int tlen, struct ucred *cred, - struct proc *p); -int venus_mkdir(void *mdp, CodaFid *fid, const char *nm, int len, +int venus_link(void *mdp, struct CodaFid *fid, struct CodaFid *tfid, + const char *nm, int len, struct ucred *cred, struct proc *p); +int venus_rename(void *mdp, struct CodaFid *fid, struct CodaFid *tfid, + const char *nm, int len, const char *tnm, int tlen, + struct ucred *cred, struct proc *p); +int venus_mkdir(void *mdp, struct CodaFid *fid, const char *nm, int len, struct vattr *va, struct ucred *cred, struct proc *p, - /*out*/ CodaFid *VFid, struct vattr *ova); -int venus_rmdir(void *mdp, CodaFid *fid, const char *nm, int len, + /*out*/ struct CodaFid *VFid, struct vattr *ova); +int venus_rmdir(void *mdp, struct CodaFid *fid, const char *nm, int len, + struct ucred *cred, struct proc *p); +int venus_symlink(void *mdp, struct CodaFid *fid, const char *lnm, + int llen, const char *nm, int len, struct vattr *va, struct ucred *cred, struct proc *p); -int venus_symlink(void *mdp, CodaFid *fid, const char *lnm, int llen, - const char *nm, int len, struct vattr *va, struct ucred *cred, - struct proc *p); -int venus_readdir(void *mdp, CodaFid *fid, int count, int offset, +int venus_readdir(void *mdp, struct CodaFid *fid, int count, int offset, struct ucred *cred, struct proc *p, /*out*/ char *buffer, int *len); -int venus_fhtovp(void *mdp, CodaFid *fid, struct ucred *cred, - struct proc *p, /*out*/ CodaFid *VFid, int *vtype); +int venus_fhtovp(void *mdp, struct CodaFid *fid, struct ucred *cred, + struct proc *p, /*out*/ struct CodaFid *VFid, int *vtype); #endif /* !_CODA_VENUS_H_ */ Modified: head/sys/fs/coda/coda_vfsops.c ============================================================================== --- head/sys/fs/coda/coda_vfsops.c Mon Apr 5 20:01:21 2010 (r206209) +++ head/sys/fs/coda/coda_vfsops.c Mon Apr 5 20:12:54 2010 (r206210) @@ -113,8 +113,8 @@ coda_mount(struct mount *vfsp) struct cdev *dev; struct coda_mntinfo *mi; struct vnode *rootvp; - CodaFid rootfid = INVAL_FID; - CodaFid ctlfid = CTL_FID; + struct CodaFid rootfid = INVAL_FID; + struct CodaFid ctlfid = CTL_FID; int error; struct nameidata ndp; ENTRY; @@ -268,8 +268,8 @@ coda_root(struct mount *vfsp, int flags, int error; struct proc *p; struct thread *td; - CodaFid VFid; - static const CodaFid invalfid = INVAL_FID; + struct CodaFid VFid; + static const struct CodaFid invalfid = INVAL_FID; td = curthread; p = td->td_proc; @@ -288,7 +288,7 @@ coda_root(struct mount *vfsp, int flags, * but not in any released versions as of 6 Mar 2003. */ if (memcmp(&VTOC(mi->mi_rootvp)->c_fid, &invalfid, - sizeof(CodaFid)) != 0 || mi->mi_started == 0) { + sizeof(struct CodaFid)) != 0 || mi->mi_started == 0) { /* * Found valid root. */ @@ -407,7 +407,7 @@ coda_fhtovp(struct mount *vfsp, struct f int error; struct thread *td = curthread; /* XXX -mach */ struct proc *p = td->td_proc; - CodaFid VFid; + struct CodaFid VFid; int vtype; ENTRY; Modified: head/sys/fs/coda/coda_vfsops.h ============================================================================== --- head/sys/fs/coda/coda_vfsops.h Mon Apr 5 20:01:21 2010 (r206209) +++ head/sys/fs/coda/coda_vfsops.h Mon Apr 5 20:12:54 2010 (r206210) @@ -42,7 +42,7 @@ struct cfid { u_short cfid_len; u_short padding; - CodaFid cfid_fid; + struct CodaFid cfid_fid; }; struct mbuf; Modified: head/sys/fs/coda/coda_vnops.c ============================================================================== --- head/sys/fs/coda/coda_vnops.c Mon Apr 5 20:01:21 2010 (r206209) +++ head/sys/fs/coda/coda_vnops.c Mon Apr 5 20:12:54 2010 (r206210) @@ -872,7 +872,7 @@ coda_lookup(struct vop_cachedlookup_args struct cnode *cp; const char *nm = cnp->cn_nameptr; int len = cnp->cn_namelen; - CodaFid VFid; + struct CodaFid VFid; int vtype; int error = 0; @@ -1009,7 +1009,7 @@ coda_create(struct vop_create_args *ap) struct cnode *cp; const char *nm = cnp->cn_nameptr; int len = cnp->cn_namelen; - CodaFid VFid; + struct CodaFid VFid; struct vattr attr; MARK_ENTRY(CODA_CREATE_STATS); @@ -1278,7 +1278,7 @@ coda_mkdir(struct vop_mkdir_args *ap) const char *nm = cnp->cn_nameptr; int len = cnp->cn_namelen; struct cnode *cp; - CodaFid VFid; + struct CodaFid VFid; struct vattr ova; MARK_ENTRY(CODA_MKDIR_STATS); @@ -1687,7 +1687,7 @@ coda_print_cred(struct ucred *cred) * coda_unsave. */ struct cnode * -make_coda_node(CodaFid *fid, struct mount *vfsp, short type) +make_coda_node(struct CodaFid *fid, struct mount *vfsp, short type) { struct cnode *cp; struct vnode *vp; From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 22:09:29 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DCCEA1065670; Mon, 5 Apr 2010 22:09:29 +0000 (UTC) (envelope-from obrien@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CCC578FC1E; Mon, 5 Apr 2010 22:09:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o35M9Ta7058807; Mon, 5 Apr 2010 22:09:29 GMT (envelope-from obrien@svn.freebsd.org) Received: (from obrien@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o35M9TNe058804; Mon, 5 Apr 2010 22:09:29 GMT (envelope-from obrien@svn.freebsd.org) Message-Id: <201004052209.o35M9TNe058804@svn.freebsd.org> From: "David E. O'Brien" Date: Mon, 5 Apr 2010 22:09:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206217 - head/lib/libc/stdio X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 22:09:30 -0000 Author: obrien Date: Mon Apr 5 22:09:29 2010 New Revision: 206217 URL: http://svn.freebsd.org/changeset/base/206217 Log: I feel this wording of the history is more clear. ANSIfy vasprintf() while I'm here. Modified: head/lib/libc/stdio/printf.3 head/lib/libc/stdio/vasprintf.c Modified: head/lib/libc/stdio/printf.3 ============================================================================== --- head/lib/libc/stdio/printf.3 Mon Apr 5 22:08:52 2010 (r206216) +++ head/lib/libc/stdio/printf.3 Mon Apr 5 22:09:29 2010 (r206217) @@ -891,9 +891,9 @@ in .Fx 2.2 , but were later replaced with a different implementation from -.An Todd C. Miller Aq Todd.Miller@courtesan.com -for -.Ox 2.3 . +.Ox 2.3 +by +.An Todd C. Miller Aq Todd.Miller@courtesan.com . The .Fn dprintf and Modified: head/lib/libc/stdio/vasprintf.c ============================================================================== --- head/lib/libc/stdio/vasprintf.c Mon Apr 5 22:08:52 2010 (r206216) +++ head/lib/libc/stdio/vasprintf.c Mon Apr 5 22:09:29 2010 (r206217) @@ -36,16 +36,13 @@ __FBSDID("$FreeBSD$"); #include "local.h" int -vasprintf(str, fmt, ap) - char **str; - const char *fmt; - __va_list ap; +vasprintf(char **str, const char *fmt, __va_list ap) { - int ret; FILE f = FAKE_FILE; + int ret; f._flags = __SWR | __SSTR | __SALC; - f._bf._base = f._p = (unsigned char *)malloc(128); + f._bf._base = f._p = malloc(128); if (f._bf._base == NULL) { *str = NULL; errno = ENOMEM; From owner-svn-src-head@FreeBSD.ORG Mon Apr 5 22:15:06 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EB4E91065672; Mon, 5 Apr 2010 22:15:06 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DA20B8FC19; Mon, 5 Apr 2010 22:15:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o35MF6Vf060259; Mon, 5 Apr 2010 22:15:06 GMT (envelope-from edwin@svn.freebsd.org) Received: (from edwin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o35MF6GO060255; Mon, 5 Apr 2010 22:15:06 GMT (envelope-from edwin@svn.freebsd.org) Message-Id: <201004052215.o35MF6GO060255@svn.freebsd.org> From: Edwin Groothuis Date: Mon, 5 Apr 2010 22:15:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206219 - head/contrib/tzdata X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Apr 2010 22:15:07 -0000 Author: edwin Date: Mon Apr 5 22:15:06 2010 New Revision: 206219 URL: http://svn.freebsd.org/changeset/base/206219 Log: MFV of tzdata2010h: From tzdata2010h: - Tunis will not go into DST this year. - Pakistan will not go into DST this year. From tzdata2010g: - Bangladesh cancels DST. - Palestine goes into DST one day later than expected. - Russian timezones update: Europe/Samara goes to Moscow time. Asia/Kamchatka goes to Moscow+8 time. Asia/Anadyr goes to Moscow+8 time. Modified: head/contrib/tzdata/asia head/contrib/tzdata/europe head/contrib/tzdata/zone.tab Directory Properties: head/contrib/tzdata/ (props changed) Modified: head/contrib/tzdata/asia ============================================================================== --- head/contrib/tzdata/asia Mon Apr 5 22:10:24 2010 (r206218) +++ head/contrib/tzdata/asia Mon Apr 5 22:15:06 2010 (r206219) @@ -1,4 +1,4 @@ -# @(#)asia 8.56 +# @(#)asia 8.58 # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. @@ -214,42 +214,20 @@ Zone Asia/Bahrain 3:22:20 - LMT 1920 # # 2010 midnight. The decision came at a cabinet meeting at the Prime # Minister's Office last night..." -# From Danvin Ruangchan (2009-12-24): -# ...the news mentions DST will be turned off again 7 months after March -# 31st on Oct 31, 2010. - -# From Arthur David Olson (2009-12-26): -# Indeed, "The government will advance again the Banglasdesh Standard -# Time by one one hour on March 31 next year by enforcing the Daylight -# Saving Time (DST) for seven months. It will continue till October 31 -# until further notice." I take that last sentence as the -# establishment of a rule. - -# From Nobutomo Nakano (2010-02-19): -# We received a report from Bangladesh saying that the start/end of -# Bangladesh DST is incorrect. Currently we have only the Bengali version -# of the official mail from BTRC which describes the following: -# -# "From 2010 each year when local standard time is about to reach -# March 31 at 10:59:00 PM clocks are turned forward 1 hour (11:59:00 PM) -# and when local daylight time is about to October 31 at 11:59:00 PM -# clocks are turned backward 1 hour (10:59:00 PM)." -# -# So, DST will start/end 1 minute earlier. - -# From Arthur David Olson (2010-03-03): -# The file -# -# http://www.cabinet.gov/bd/file_upload/news_events/en_169.pdf +# From Alexander Krivenyshev (2010-03-22): +# According to Bangladesh newspaper "The Daily Star," +# Cabinet cancels Daylight Saving Time +# +# http://www.thedailystar.net/newDesign/latest_news.php?nid=22817 +# +# or +# +# http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html # -# is in Bengali; it does contain two "31"s as well as two "11.59"s and a "10.59" -# which is consistent with the information provided by Nobutomo Nakano. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Dhaka 2009 only - Jun 19 23:00 1:00 S Rule Dhaka 2009 only - Dec 31 23:59 0 - -Rule Dhaka 2010 max - Mar 31 22:59 1:00 S -Rule Dhaka 2010 max - Oct 31 23:59 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Dhaka 6:01:40 - LMT 1890 @@ -2129,6 +2107,32 @@ Zone Asia/Karachi 4:28:12 - LMT 1907 # http://www.worldtimezone.com/dst_news/dst_news_gazastrip02.html # +# From Alexander Krivenyshev (2010-03-19): +# According to Voice of Palestine DST will last for 191 days, from March +# 26, 2010 till "the last Sunday before the tenth day of Tishri +# (October), each year" (October 03, 2010?) +# +# +# http://palvoice.org/forums/showthread.php?t=245697 +# +# (in Arabic) +# or +# +# http://www.worldtimezone.com/dst_news/dst_news_westbank03.html +# + +# From Steffen Thorsen (2010-03-24): +# ...Ma'an News Agency reports that Hamas cabinet has decided it will +# start one day later, at 12:01am. Not sure if they really mean 12:01am or +# noon though: +# +# +# http://www.maannews.net/eng/ViewDetails.aspx?ID=271178 +# +# (Ma'an News Agency) +# "At 12:01am Friday, clocks in Israel and the West Bank will change to +# 1:01am, while Gaza clocks will change at 12:01am Saturday morning." + # The rules for Egypt are stolen from the `africa' file. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule EgyptAsia 1957 only - May 10 0:00 1:00 S @@ -2146,7 +2150,8 @@ Rule Palestine 2006 2008 - Apr 1 0:00 1 Rule Palestine 2006 only - Sep 22 0:00 0 - Rule Palestine 2007 only - Sep Thu>=8 2:00 0 - Rule Palestine 2008 only - Aug lastFri 2:00 0 - -Rule Palestine 2009 max - Mar lastFri 0:00 1:00 S +Rule Palestine 2009 only - Mar lastFri 0:00 1:00 S +Rule Palestine 2010 max - Mar lastSat 0:01 1:00 S Rule Palestine 2009 max - Sep Fri>=1 2:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Modified: head/contrib/tzdata/europe ============================================================================== --- head/contrib/tzdata/europe Mon Apr 5 22:10:24 2010 (r206218) +++ head/contrib/tzdata/europe Mon Apr 5 22:15:06 2010 (r206219) @@ -1,5 +1,5 @@ #
-# @(#)europe	8.25
+# @(#)europe	8.26
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 
@@ -2041,7 +2041,9 @@ Zone Europe/Samara	 3:20:36 -	LMT	1919 J
 			 3:00	Russia	KUY%sT	1991 Mar 31 2:00s
 			 2:00	Russia	KUY%sT	1991 Sep 29 2:00s
 			 3:00	-	KUYT	1991 Oct 20 3:00
-			 4:00	Russia	SAM%sT	# Samara Time
+			 4:00	Russia	SAM%sT	2010 Mar 28 2:00s # Samara Time
+			 3:00	Russia	SAM%sT
+
 #
 # From Oscar van Vlijmen (2001-08-25): [This region consists of]
 # Respublika Bashkortostan, Komi-Permyatskij avtonomnyj okrug,
@@ -2194,7 +2196,8 @@ Zone Asia/Kamchatka	10:34:36 -	LMT	1922 
 			11:00	-	PETT	1930 Jun 21 # P-K Time
 			12:00	Russia	PET%sT	1991 Mar 31 2:00s
 			11:00	Russia	PET%sT	1992 Jan 19 2:00s
-			12:00	Russia	PET%sT
+			12:00	Russia	PET%sT	2010 Mar 28 2:00s
+			11:00	Russia	PET%sT
 #
 # Chukotskij avtonomnyj okrug
 Zone Asia/Anadyr	11:49:56 -	LMT	1924 May  2
@@ -2202,7 +2205,8 @@ Zone Asia/Anadyr	11:49:56 -	LMT	1924 May
 			13:00	Russia	ANA%sT	1982 Apr  1 0:00s
 			12:00	Russia	ANA%sT	1991 Mar 31 2:00s
 			11:00	Russia	ANA%sT	1992 Jan 19 2:00s
-			12:00	Russia	ANA%sT
+			12:00	Russia	ANA%sT	2010 Mar 28 2:00s
+			11:00	Russia	ANA%sT
 
 # Serbia
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]

Modified: head/contrib/tzdata/zone.tab
==============================================================================
--- head/contrib/tzdata/zone.tab	Mon Apr  5 22:10:24 2010	(r206218)
+++ head/contrib/tzdata/zone.tab	Mon Apr  5 22:15:06 2010	(r206219)
@@ -1,5 +1,5 @@
 # 
-# @(#)zone.tab	8.34
+# @(#)zone.tab	8.35
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 #
@@ -330,7 +330,7 @@ RS	+4450+02030	Europe/Belgrade
 RU	+5443+02030	Europe/Kaliningrad	Moscow-01 - Kaliningrad
 RU	+5545+03735	Europe/Moscow	Moscow+00 - west Russia
 RU	+4844+04425	Europe/Volgograd	Moscow+00 - Caspian Sea
-RU	+5312+05009	Europe/Samara	Moscow+01 - Samara, Udmurtia
+RU	+5312+05009	Europe/Samara	Moscow - Samara, Udmurtia
 RU	+5651+06036	Asia/Yekaterinburg	Moscow+02 - Urals
 RU	+5500+07324	Asia/Omsk	Moscow+03 - west Siberia
 RU	+5502+08255	Asia/Novosibirsk	Moscow+03 - Novosibirsk
@@ -341,8 +341,8 @@ RU	+6200+12940	Asia/Yakutsk	Moscow+06 - 
 RU	+4310+13156	Asia/Vladivostok	Moscow+07 - Amur River
 RU	+4658+14242	Asia/Sakhalin	Moscow+07 - Sakhalin Island
 RU	+5934+15048	Asia/Magadan	Moscow+08 - Magadan
-RU	+5301+15839	Asia/Kamchatka	Moscow+09 - Kamchatka
-RU	+6445+17729	Asia/Anadyr	Moscow+10 - Bering Sea
+RU	+5301+15839	Asia/Kamchatka	Moscow+08 - Kamchatka
+RU	+6445+17729	Asia/Anadyr	Moscow+08 - Bering Sea
 RW	-0157+03004	Africa/Kigali
 SA	+2438+04643	Asia/Riyadh
 SB	-0932+16012	Pacific/Guadalcanal

From owner-svn-src-head@FreeBSD.ORG  Tue Apr  6 01:14:50 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 4C1B5106566B;
	Tue,  6 Apr 2010 01:14:50 +0000 (UTC)
	(envelope-from rmacklem@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 208ED8FC19;
	Tue,  6 Apr 2010 01:14:50 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o361Eo7L001314;
	Tue, 6 Apr 2010 01:14:50 GMT (envelope-from rmacklem@svn.freebsd.org)
Received: (from rmacklem@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o361EoFd001312;
	Tue, 6 Apr 2010 01:14:50 GMT (envelope-from rmacklem@svn.freebsd.org)
Message-Id: <201004060114.o361EoFd001312@svn.freebsd.org>
From: Rick Macklem 
Date: Tue, 6 Apr 2010 01:14:50 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206236 - head/sys/fs/nfsserver
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Tue, 06 Apr 2010 01:14:50 -0000

Author: rmacklem
Date: Tue Apr  6 01:14:49 2010
New Revision: 206236
URL: http://svn.freebsd.org/changeset/base/206236

Log:
  Harden the experimental NFS server a little, by adding range
  checks on the length of the client's open/lock owner name. Also,
  add free()'s for one case where they were missing and would
  have caused a leak if NFSERR_BADXDR had been replied. Probably
  never happens, but the leak is now plugged, just in case.
  
  MFC after:	2 weeks

Modified:
  head/sys/fs/nfsserver/nfs_nfsdserv.c

Modified: head/sys/fs/nfsserver/nfs_nfsdserv.c
==============================================================================
--- head/sys/fs/nfsserver/nfs_nfsdserv.c	Tue Apr  6 01:13:29 2010	(r206235)
+++ head/sys/fs/nfsserver/nfs_nfsdserv.c	Tue Apr  6 01:14:49 2010	(r206236)
@@ -2086,6 +2086,10 @@ nfsrvd_lock(struct nfsrv_descript *nd, _
 	if (flags & NFSLCK_OPENTOLOCK) {
 		NFSM_DISSECT(tl, u_int32_t *, 5 * NFSX_UNSIGNED + NFSX_STATEID);
 		i = fxdr_unsigned(int, *(tl+4+(NFSX_STATEID / NFSX_UNSIGNED)));
+		if (i <= 0 || i > NFSV4_OPAQUELIMIT) {
+			nd->nd_repstat = NFSERR_BADXDR;
+			goto nfsmout;
+		}
 		MALLOC(stp, struct nfsstate *, sizeof (struct nfsstate) + i,
 			M_NFSDSTATE, M_WAITOK);
 		stp->ls_ownerlen = i;
@@ -2229,6 +2233,10 @@ nfsrvd_lockt(struct nfsrv_descript *nd, 
 
 	NFSM_DISSECT(tl, u_int32_t *, 8 * NFSX_UNSIGNED);
 	i = fxdr_unsigned(int, *(tl + 7));
+	if (i <= 0 || i > NFSV4_OPAQUELIMIT) {
+		nd->nd_repstat = NFSERR_BADXDR;
+		goto nfsmout;
+	}
 	MALLOC(stp, struct nfsstate *, sizeof (struct nfsstate) + i,
 	    M_NFSDSTATE, M_WAITOK);
 	stp->ls_ownerlen = i;
@@ -2350,6 +2358,8 @@ nfsrvd_locku(struct nfsrv_descript *nd, 
 		break;
 	default:
 		nd->nd_repstat = NFSERR_BADXDR;
+		free(stp, M_NFSDSTATE);
+		free(lop, M_NFSDLOCK);
 		goto nfsmout;
 	};
 	stp->ls_ownerlen = 0;
@@ -2439,6 +2449,14 @@ nfsrvd_open(struct nfsrv_descript *nd, _
 	named.ni_cnd.cn_nameiop = 0;
 	NFSM_DISSECT(tl, u_int32_t *, 6 * NFSX_UNSIGNED);
 	i = fxdr_unsigned(int, *(tl + 5));
+	if (i <= 0 || i > NFSV4_OPAQUELIMIT) {
+		nd->nd_repstat = NFSERR_BADXDR;
+		vrele(dp);
+#ifdef NFS4_ACL_EXTATTR_NAME
+		acl_free(aclp);
+#endif
+		return (0);
+	}
 	MALLOC(stp, struct nfsstate *, sizeof (struct nfsstate) + i,
 	    M_NFSDSTATE, M_WAITOK);
 	stp->ls_ownerlen = i;
@@ -3391,6 +3409,10 @@ nfsrvd_releaselckown(struct nfsrv_descri
 	}
 	NFSM_DISSECT(tl, u_int32_t *, 3 * NFSX_UNSIGNED);
 	len = fxdr_unsigned(int, *(tl + 2));
+	if (len <= 0 || len > NFSV4_OPAQUELIMIT) {
+		nd->nd_repstat = NFSERR_BADXDR;
+		return (0);
+	}
 	MALLOC(stp, struct nfsstate *, sizeof (struct nfsstate) + len,
 	    M_NFSDSTATE, M_WAITOK);
 	stp->ls_ownerlen = len;

From owner-svn-src-head@FreeBSD.ORG  Tue Apr  6 02:49:01 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 8401D106564A;
	Tue,  6 Apr 2010 02:49:01 +0000 (UTC) (envelope-from imp@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 7296C8FC1B;
	Tue,  6 Apr 2010 02:49:01 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o362n18U022343;
	Tue, 6 Apr 2010 02:49:01 GMT (envelope-from imp@svn.freebsd.org)
Received: (from imp@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o362n1xP022309;
	Tue, 6 Apr 2010 02:49:01 GMT (envelope-from imp@svn.freebsd.org)
Message-Id: <201004060249.o362n1xP022309@svn.freebsd.org>
From: Warner Losh 
Date: Tue, 6 Apr 2010 02:48:59 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206241 - head/usr.bin/make
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Tue, 06 Apr 2010 02:49:01 -0000

Author: imp
Date: Tue Apr  6 02:48:59 2010
New Revision: 206241
URL: http://svn.freebsd.org/changeset/base/206241

Log:
  Remove yet another vestage of alpha support.

Modified:
  head/usr.bin/make/main.c

Modified: head/usr.bin/make/main.c
==============================================================================
--- head/usr.bin/make/main.c	Tue Apr  6 01:42:21 2010	(r206240)
+++ head/usr.bin/make/main.c	Tue Apr  6 02:48:59 2010	(r206241)
@@ -983,8 +983,6 @@ main(int argc, char **argv)
 	if ((machine_cpu = getenv("MACHINE_CPU")) == NULL) {
 		if (!strcmp(machine_arch, "i386"))
 			machine_cpu = "i386";
-		else if (!strcmp(machine_arch, "alpha"))
-			machine_cpu = "ev4";
 		else
 			machine_cpu = "unknown";
 	}

From owner-svn-src-head@FreeBSD.ORG  Tue Apr  6 05:20:46 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 8B27C106566B;
	Tue,  6 Apr 2010 05:20:46 +0000 (UTC)
	(envelope-from dougb@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 7A6868FC19;
	Tue,  6 Apr 2010 05:20:46 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o365Kk6G056010;
	Tue, 6 Apr 2010 05:20:46 GMT (envelope-from dougb@svn.freebsd.org)
Received: (from dougb@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o365Kkpp056008;
	Tue, 6 Apr 2010 05:20:46 GMT (envelope-from dougb@svn.freebsd.org)
Message-Id: <201004060520.o365Kkpp056008@svn.freebsd.org>
From: Doug Barton 
Date: Tue, 6 Apr 2010 05:20:46 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206248 - head/etc
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Tue, 06 Apr 2010 05:20:46 -0000

Author: dougb
Date: Tue Apr  6 05:20:46 2010
New Revision: 206248
URL: http://svn.freebsd.org/changeset/base/206248

Log:
  In wait_for_pids(), pwait(1) can return when the process exits, but
  still exists as a zombie. The 'kill -0' test in this function can
  therefore return true even if the process isn't actually running.
  This could lead to wait_for_pids() printing an endless string of the
  pid number until the zombie finally exits.
  
  Solve this problem by moving the sleep up to after the 'kill -0' test, but
  only after we've run through the function once already. In the common case
  (only one pid in the list) this will always do the right thing. On the rare
  occasion that there is more than one pid in the list this will sleep 1
  second per zombie process which will allow that process, and any other
  in the list a chance to exit.
  
  While I'm here, local'ize the variables that this function uses.

Modified:
  head/etc/rc.subr

Modified: head/etc/rc.subr
==============================================================================
--- head/etc/rc.subr	Tue Apr  6 05:13:04 2010	(r206247)
+++ head/etc/rc.subr	Tue Apr  6 05:20:46 2010	(r206248)
@@ -355,6 +355,8 @@ _find_processes()
 #
 wait_for_pids()
 {
+	local _list _prefix _nlist _j
+
 	_list="$@"
 	if [ -z "$_list" ]; then
 		return
@@ -365,6 +367,7 @@ wait_for_pids()
 		for _j in $_list; do
 			if kill -0 $_j 2>/dev/null; then
 				_nlist="${_nlist}${_nlist:+ }$_j"
+				[ -n "$_prefix" ] && sleep 1
 			fi
 		done
 		if [ -z "$_nlist" ]; then
@@ -373,7 +376,7 @@ wait_for_pids()
 		_list=$_nlist
 		echo -n ${_prefix:-"Waiting for PIDS: "}$_list
 		_prefix=", "
-		pwait $_list 2>/dev/null || sleep 2
+		pwait $_list 2>/dev/null
 	done
 	if [ -n "$_prefix" ]; then
 		echo "."

From owner-svn-src-head@FreeBSD.ORG  Tue Apr  6 06:03:43 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 1DA671065670;
	Tue,  6 Apr 2010 06:03:43 +0000 (UTC)
	(envelope-from peterjeremy@acm.org)
Received: from mail16.syd.optusnet.com.au (mail16.syd.optusnet.com.au
	[211.29.132.197])
	by mx1.freebsd.org (Postfix) with ESMTP id 985EA8FC1A;
	Tue,  6 Apr 2010 06:03:42 +0000 (UTC)
Received: from server.vk2pj.dyndns.org
	(c122-106-253-149.belrs3.nsw.optusnet.com.au [122.106.253.149])
	by mail16.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id
	o3663dug004540
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO);
	Tue, 6 Apr 2010 16:03:40 +1000
X-Bogosity: Ham, spamicity=0.000000
Received: from server.vk2pj.dyndns.org (localhost.vk2pj.dyndns.org [127.0.0.1])
	by server.vk2pj.dyndns.org (8.14.4/8.14.4) with ESMTP id o3663cSV048739;
	Tue, 6 Apr 2010 16:03:39 +1000 (EST)
	(envelope-from peter@server.vk2pj.dyndns.org)
Received: (from peter@localhost)
	by server.vk2pj.dyndns.org (8.14.4/8.14.4/Submit) id o3663c67048738;
	Tue, 6 Apr 2010 16:03:38 +1000 (EST) (envelope-from peter)
Date: Tue, 6 Apr 2010 16:03:38 +1000
From: Peter Jeremy 
To: Andriy Gapon 
Message-ID: <20100406060338.GA46137@server.vk2pj.dyndns.org>
References: <201004030839.o338d0VV032828@svn.freebsd.org>
	<20100404210314.GH86236@server.vk2pj.dyndns.org>
	<4BB9006A.8080301@freebsd.org>
	<20100404212742.GJ2415@deviant.kiev.zoral.com.ua>
	<20100404221232.GJ86236@server.vk2pj.dyndns.org>
	<4BB99EDB.8030105@freebsd.org>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha1;
	protocol="application/pgp-signature"; boundary="UlVJffcvxoiEqYs2"
Content-Disposition: inline
In-Reply-To: <4BB99EDB.8030105@freebsd.org>
X-PGP-Key: http://members.optusnet.com.au/peterjeremy/pubkey.asc
User-Agent: Mutt/1.5.20 (2009-06-14)
X-CMAE-Score: 0
Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org,
	src-committers@freebsd.org
Subject: Re: svn commit: r206129 - head/sys/kern
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Tue, 06 Apr 2010 06:03:43 -0000


--UlVJffcvxoiEqYs2
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On 2010-Apr-05 11:27:07 +0300, Andriy Gapon  wrote:
>> Firstly, has someone with a post-r206129 kernel verified that it
>> does actually trigger the issue I reported in bin/144446?  I'm not
>> in a position to do so easily and it's possible that the problem
>> is masked elsewhere.
>
>Sorry for my lack of knowledge, but what is the best way to test this?
>As I understand, a new db needs to be initialized in an existing file?

You should be able to demonstrate the problem by using dbopen() to
create a new DB_HASH file with NULL openinfo.  I've updated bin/144446
with a scenario that I believe will demonstrate the problem on FreeBSD
- basically, run the db-hash.t test in perl and it should core-dump
after test 21.

--=20
Peter Jeremy

--UlVJffcvxoiEqYs2
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (FreeBSD)

iEYEARECAAYFAku6zroACgkQ/opHv/APuIc0/ACdESTXo0v662VyhSNhB/x/qFYH
QuoAoJXSYEAf9fAs/ZBLhkpZTAwZ+bb4
=aQRe
-----END PGP SIGNATURE-----

--UlVJffcvxoiEqYs2--

From owner-svn-src-head@FreeBSD.ORG  Tue Apr  6 10:43:01 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 848BB1065672;
	Tue,  6 Apr 2010 10:43:01 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 739B38FC13;
	Tue,  6 Apr 2010 10:43:01 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o36Ah1I5037093;
	Tue, 6 Apr 2010 10:43:01 GMT (envelope-from kib@svn.freebsd.org)
Received: (from kib@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o36Ah1qo037088;
	Tue, 6 Apr 2010 10:43:01 GMT (envelope-from kib@svn.freebsd.org)
Message-Id: <201004061043.o36Ah1qo037088@svn.freebsd.org>
From: Konstantin Belousov 
Date: Tue, 6 Apr 2010 10:43:01 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206264 - in head/sys: kern sys vm
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Tue, 06 Apr 2010 10:43:01 -0000

Author: kib
Date: Tue Apr  6 10:43:01 2010
New Revision: 206264
URL: http://svn.freebsd.org/changeset/base/206264

Log:
  When OOM searches for a process to kill, ignore the processes already
  killed by OOM. When killed process waits for a page allocation, try to
  satisfy the request as fast as possible.
  
  This removes the often encountered deadlock, where OOM continously
  selects the same victim process, that sleeps uninterruptibly waiting
  for a page. The killed process may still sleep if page cannot be
  obtained immediately, but testing has shown that system has much
  higher chance to survive in OOM situation with the patch.
  
  In collaboration with:	pho
  Reviewed by:	alc
  MFC after:	4 weeks

Modified:
  head/sys/kern/kern_sig.c
  head/sys/sys/proc.h
  head/sys/vm/vm_fault.c
  head/sys/vm/vm_pageout.c

Modified: head/sys/kern/kern_sig.c
==============================================================================
--- head/sys/kern/kern_sig.c	Tue Apr  6 10:34:15 2010	(r206263)
+++ head/sys/kern/kern_sig.c	Tue Apr  6 10:43:01 2010	(r206264)
@@ -2809,6 +2809,7 @@ killproc(p, why)
 		p, p->p_pid, p->p_comm);
 	log(LOG_ERR, "pid %d (%s), uid %d, was killed: %s\n", p->p_pid, p->p_comm,
 		p->p_ucred ? p->p_ucred->cr_uid : -1, why);
+	p->p_flag |= P_WKILLED;
 	psignal(p, SIGKILL);
 }
 

Modified: head/sys/sys/proc.h
==============================================================================
--- head/sys/sys/proc.h	Tue Apr  6 10:34:15 2010	(r206263)
+++ head/sys/sys/proc.h	Tue Apr  6 10:43:01 2010	(r206264)
@@ -573,7 +573,7 @@ struct proc {
 #define	P_WAITED	0x01000	/* Someone is waiting for us. */
 #define	P_WEXIT		0x02000	/* Working on exiting. */
 #define	P_EXEC		0x04000	/* Process called exec. */
-#define	P_UNUSED8000	0x08000	/* available. */
+#define	P_WKILLED	0x08000	/* Killed, go to kernel/user boundary ASAP. */
 #define	P_CONTINUED	0x10000	/* Proc has continued from a stopped state. */
 #define	P_STOPPED_SIG	0x20000	/* Stopped due to SIGSTOP/SIGTSTP. */
 #define	P_STOPPED_TRACE	0x40000	/* Stopped because of tracing. */
@@ -592,6 +592,7 @@ struct proc {
 
 #define	P_STOPPED	(P_STOPPED_SIG|P_STOPPED_SINGLE|P_STOPPED_TRACE)
 #define	P_SHOULDSTOP(p)	((p)->p_flag & P_STOPPED)
+#define	P_KILLED(p)	((p)->p_flag & P_WKILLED)
 
 /*
  * These were process status values (p_stat), now they are only used in

Modified: head/sys/vm/vm_fault.c
==============================================================================
--- head/sys/vm/vm_fault.c	Tue Apr  6 10:34:15 2010	(r206263)
+++ head/sys/vm/vm_fault.c	Tue Apr  6 10:43:01 2010	(r206264)
@@ -216,7 +216,7 @@ vm_fault(vm_map_t map, vm_offset_t vaddr
 	vm_object_t next_object;
 	vm_page_t marray[VM_FAULT_READ];
 	int hardfault;
-	int faultcount, ahead, behind;
+	int faultcount, ahead, behind, alloc_req;
 	struct faultstate fs;
 	struct vnode *vp;
 	int locked, error;
@@ -386,9 +386,14 @@ RetryFault:;
 
 			/*
 			 * Allocate a new page for this object/offset pair.
+			 *
+			 * Unlocked read of the p_flag is harmless. At
+			 * worst, the P_KILLED might be not observed
+			 * there, and allocation can fail, causing
+			 * restart and new reading of the p_flag.
 			 */
 			fs.m = NULL;
-			if (!vm_page_count_severe()) {
+			if (!vm_page_count_severe() || P_KILLED(curproc)) {
 #if VM_NRESERVLEVEL > 0
 				if ((fs.object->flags & OBJ_COLORED) == 0) {
 					fs.object->flags |= OBJ_COLORED;
@@ -396,10 +401,13 @@ RetryFault:;
 					    fs.pindex;
 				}
 #endif
+				alloc_req = P_KILLED(curproc) ?
+				    VM_ALLOC_SYSTEM : VM_ALLOC_NORMAL;
+				if (fs.object->type != OBJT_VNODE &&
+				    fs.object->backing_object == NULL)
+					alloc_req |= VM_ALLOC_ZERO;
 				fs.m = vm_page_alloc(fs.object, fs.pindex,
-				    (fs.object->type == OBJT_VNODE ||
-				     fs.object->backing_object != NULL) ?
-				    VM_ALLOC_NORMAL : VM_ALLOC_ZERO);
+				    alloc_req);
 			}
 			if (fs.m == NULL) {
 				unlock_and_deallocate(&fs);
@@ -424,7 +432,8 @@ readrest:
 			int reqpage = 0;
 			u_char behavior = vm_map_entry_behavior(fs.entry);
 
-			if (behavior == MAP_ENTRY_BEHAV_RANDOM) {
+			if (behavior == MAP_ENTRY_BEHAV_RANDOM ||
+			    P_KILLED(curproc)) {
 				ahead = 0;
 				behind = 0;
 			} else {

Modified: head/sys/vm/vm_pageout.c
==============================================================================
--- head/sys/vm/vm_pageout.c	Tue Apr  6 10:34:15 2010	(r206263)
+++ head/sys/vm/vm_pageout.c	Tue Apr  6 10:43:01 2010	(r206264)
@@ -1206,10 +1206,10 @@ vm_pageout_oom(int shortage)
 		if (PROC_TRYLOCK(p) == 0)
 			continue;
 		/*
-		 * If this is a system or protected process, skip it.
+		 * If this is a system, protected or killed process, skip it.
 		 */
 		if ((p->p_flag & (P_INEXEC | P_PROTECTED | P_SYSTEM)) ||
-		    (p->p_pid == 1) ||
+		    (p->p_pid == 1) || P_KILLED(p) ||
 		    ((p->p_pid < 48) && (swap_pager_avail != 0))) {
 			PROC_UNLOCK(p);
 			continue;

From owner-svn-src-head@FreeBSD.ORG  Tue Apr  6 12:28:08 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 993E9106566B;
	Tue,  6 Apr 2010 12:28:08 +0000 (UTC) (envelope-from ume@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 886A48FC0A;
	Tue,  6 Apr 2010 12:28:08 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o36CS8Sc064143;
	Tue, 6 Apr 2010 12:28:08 GMT (envelope-from ume@svn.freebsd.org)
Received: (from ume@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o36CS86h064141;
	Tue, 6 Apr 2010 12:28:08 GMT (envelope-from ume@svn.freebsd.org)
Message-Id: <201004061228.o36CS86h064141@svn.freebsd.org>
From: Hajimu UMEMOTO 
Date: Tue, 6 Apr 2010 12:28:08 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206266 - head/sbin/ipfw
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Tue, 06 Apr 2010 12:28:08 -0000

Author: ume
Date: Tue Apr  6 12:28:08 2010
New Revision: 206266
URL: http://svn.freebsd.org/changeset/base/206266

Log:
  Set net.inet6.ip6.fw.enable as well.

Modified:
  head/sbin/ipfw/ipfw2.c

Modified: head/sbin/ipfw/ipfw2.c
==============================================================================
--- head/sbin/ipfw/ipfw2.c	Tue Apr  6 10:58:40 2010	(r206265)
+++ head/sbin/ipfw/ipfw2.c	Tue Apr  6 12:28:08 2010	(r206266)
@@ -1740,6 +1740,8 @@ ipfw_sysctl_handler(char *av[], int whic
 	} else if (_substrcmp(*av, "firewall") == 0) {
 		sysctlbyname("net.inet.ip.fw.enable", NULL, 0,
 		    &which, sizeof(which));
+		sysctlbyname("net.inet6.ip6.fw.enable", NULL, 0,
+		    &which, sizeof(which));
 	} else if (_substrcmp(*av, "one_pass") == 0) {
 		sysctlbyname("net.inet.ip.fw.one_pass", NULL, 0,
 		    &which, sizeof(which));

From owner-svn-src-head@FreeBSD.ORG  Tue Apr  6 12:33:05 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 61C771065673;
	Tue,  6 Apr 2010 12:33:05 +0000 (UTC) (envelope-from ume@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 509798FC17;
	Tue,  6 Apr 2010 12:33:05 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o36CX5PT065366;
	Tue, 6 Apr 2010 12:33:05 GMT (envelope-from ume@svn.freebsd.org)
Received: (from ume@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o36CX5Lq065364;
	Tue, 6 Apr 2010 12:33:05 GMT (envelope-from ume@svn.freebsd.org)
Message-Id: <201004061233.o36CX5Lq065364@svn.freebsd.org>
From: Hajimu UMEMOTO 
Date: Tue, 6 Apr 2010 12:33:05 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206267 - head/lib/libc/net
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Tue, 06 Apr 2010 12:33:05 -0000

Author: ume
Date: Tue Apr  6 12:33:05 2010
New Revision: 206267
URL: http://svn.freebsd.org/changeset/base/206267

Log:
  Use the stored length value instead of calculating it by strlen().

Modified:
  head/lib/libc/net/getservent.c

Modified: head/lib/libc/net/getservent.c
==============================================================================
--- head/lib/libc/net/getservent.c	Tue Apr  6 12:28:08 2010	(r206266)
+++ head/lib/libc/net/getservent.c	Tue Apr  6 12:33:05 2010	(r206267)
@@ -489,11 +489,9 @@ static int
 db_servent(void *retval, void *mdata, va_list ap)
 {
 	char buf[BUFSIZ];
-	DBT key, data;
+	DBT key, data, *result;
 	DB *db;
 
-	char *resultbuf;
-
 	struct db_state *st;
 	int rv;
 	int stayopen;
@@ -565,7 +563,7 @@ db_servent(void *retval, void *mdata, va
 				rv = NS_NOTFOUND;
 				goto db_fin;
 			}
-			resultbuf = key.data;
+			result = &key;
 			break;
 		case nss_lt_id:
 			key.data = buf;
@@ -582,7 +580,7 @@ db_servent(void *retval, void *mdata, va
 				rv = NS_NOTFOUND;
 				goto db_fin;
 			}
-			resultbuf = key.data;
+			result = &key;
 			break;
 		case nss_lt_all:
 			key.data = buf;
@@ -594,12 +592,12 @@ db_servent(void *retval, void *mdata, va
 				rv = NS_NOTFOUND;
 				goto db_fin;
 			}
-			resultbuf = data.data;
+			result = &data;
 			break;
 		}
 
-		rv = parse_result(serv, buffer, bufsize, resultbuf,
-		    strlen(resultbuf), errnop);
+		rv = parse_result(serv, buffer, bufsize, result->data,
+		    result->size - 1, errnop);
 
 	} while (!(rv & NS_TERMINATE) && how == nss_lt_all);
 

From owner-svn-src-head@FreeBSD.ORG  Tue Apr  6 12:44:29 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 249BD106564A;
	Tue,  6 Apr 2010 12:44:29 +0000 (UTC)
	(envelope-from davidch@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 1279F8FC16;
	Tue,  6 Apr 2010 12:44:29 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o36CiT8m067895;
	Tue, 6 Apr 2010 12:44:29 GMT (envelope-from davidch@svn.freebsd.org)
Received: (from davidch@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o36CiSpf067892;
	Tue, 6 Apr 2010 12:44:28 GMT (envelope-from davidch@svn.freebsd.org)
Message-Id: <201004061244.o36CiSpf067892@svn.freebsd.org>
From: David Christensen 
Date: Tue, 6 Apr 2010 12:44:28 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206268 - head/sys/dev/bce
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Tue, 06 Apr 2010 12:44:29 -0000

Author: davidch
Date: Tue Apr  6 12:44:28 2010
New Revision: 206268
URL: http://svn.freebsd.org/changeset/base/206268

Log:
  - Fixed 5708S 2.5G support broken in last commit.
  - Added some new debug helper routines to systcl.
  - Fixed many of the style(9) violations that have crept into the code
    due to my use of a "smart" editor.
  
  MFC after:	2 weeks

Modified:
  head/sys/dev/bce/if_bce.c
  head/sys/dev/bce/if_bcereg.h

Modified: head/sys/dev/bce/if_bce.c
==============================================================================
--- head/sys/dev/bce/if_bce.c	Tue Apr  6 12:33:05 2010	(r206267)
+++ head/sys/dev/bce/if_bce.c	Tue Apr  6 12:44:28 2010	(r206268)
@@ -39,8 +39,8 @@ __FBSDID("$FreeBSD$");
  *   BCM5708S B1, B2
  *   BCM5709C A1, C0
  *   BCM5709S A1, C0
- * 	 BCM5716C C0
- * 	 BCM5716S C0
+ *   BCM5716C C0
+ *   BCM5716S C0
  *
  * The following controllers are not supported by this driver:
  *   BCM5706C A0, A1 (pre-production)
@@ -277,37 +277,41 @@ static struct flash_spec flash_5709 = {
 /****************************************************************************/
 /* FreeBSD device entry points.                                             */
 /****************************************************************************/
-static int  bce_probe				(device_t);
-static int  bce_attach				(device_t);
-static int  bce_detach				(device_t);
-static int  bce_shutdown			(device_t);
+static int  bce_probe			(device_t);
+static int  bce_attach			(device_t);
+static int  bce_detach			(device_t);
+static int  bce_shutdown		(device_t);
 
 
 /****************************************************************************/
 /* BCE Debug Data Structure Dump Routines                                   */
 /****************************************************************************/
 #ifdef BCE_DEBUG
-static u32	bce_reg_rd				(struct bce_softc *, u32);
-static void	bce_reg_wr				(struct bce_softc *, u32, u32);
-static void	bce_reg_wr16			(struct bce_softc *, u32, u16);
-static u32  bce_ctx_rd				(struct bce_softc *, u32, u32);
-static void bce_dump_enet           (struct bce_softc *, struct mbuf *);
-static void bce_dump_mbuf 			(struct bce_softc *, struct mbuf *);
+static u32  bce_reg_rd			(struct bce_softc *, u32);
+static void bce_reg_wr			(struct bce_softc *, u32, u32);
+static void bce_reg_wr16		(struct bce_softc *, u32, u16);
+static u32  bce_ctx_rd			(struct bce_softc *, u32, u32);
+static void bce_dump_enet		(struct bce_softc *, struct mbuf *);
+static void bce_dump_mbuf		(struct bce_softc *, struct mbuf *);
 static void bce_dump_tx_mbuf_chain	(struct bce_softc *, u16, int);
 static void bce_dump_rx_mbuf_chain	(struct bce_softc *, u16, int);
 #ifdef BCE_JUMBO_HDRSPLIT
 static void bce_dump_pg_mbuf_chain	(struct bce_softc *, u16, int);
 #endif
-static void bce_dump_txbd			(struct bce_softc *, int, struct tx_bd *);
-static void bce_dump_rxbd			(struct bce_softc *, int, struct rx_bd *);
+static void bce_dump_txbd		(struct bce_softc *,
+    int, struct tx_bd *);
+static void bce_dump_rxbd		(struct bce_softc *,
+    int, struct rx_bd *);
 #ifdef BCE_JUMBO_HDRSPLIT
-static void bce_dump_pgbd			(struct bce_softc *, int, struct rx_bd *);
+static void bce_dump_pgbd		(struct bce_softc *, 
+    int, struct rx_bd *);
 #endif
-static void bce_dump_l2fhdr			(struct bce_softc *, int, struct l2_fhdr *);
-static void bce_dump_ctx			(struct bce_softc *, u16);
-static void bce_dump_ftqs			(struct bce_softc *);
+static void bce_dump_l2fhdr		(struct bce_softc *,
+    int, struct l2_fhdr *);
+static void bce_dump_ctx		(struct bce_softc *, u16);
+static void bce_dump_ftqs		(struct bce_softc *);
 static void bce_dump_tx_chain		(struct bce_softc *, u16, int);
-static void bce_dump_rx_chain		(struct bce_softc *, u16, int);
+static void bce_dump_rx_bd_chain	(struct bce_softc *, u16, int);
 #ifdef BCE_JUMBO_HDRSPLIT
 static void bce_dump_pg_chain		(struct bce_softc *, u16, int);
 #endif
@@ -315,7 +319,7 @@ static void bce_dump_status_block	(struc
 static void bce_dump_stats_block	(struct bce_softc *);
 static void bce_dump_driver_state	(struct bce_softc *);
 static void bce_dump_hw_state		(struct bce_softc *);
-static void bce_dump_mq_regs        (struct bce_softc *);
+static void bce_dump_mq_regs		(struct bce_softc *);
 static void bce_dump_bc_state		(struct bce_softc *);
 static void bce_dump_txp_state		(struct bce_softc *, int);
 static void bce_dump_rxp_state		(struct bce_softc *, int);
@@ -323,18 +327,18 @@ static void bce_dump_tpat_state		(struct
 static void bce_dump_cp_state		(struct bce_softc *, int);
 static void bce_dump_com_state		(struct bce_softc *, int);
 static void bce_dump_rv2p_state		(struct bce_softc *);
-static void bce_breakpoint			(struct bce_softc *);
+static void bce_breakpoint		(struct bce_softc *);
 #endif
 
 
 /****************************************************************************/
 /* BCE Register/Memory Access Routines                                      */
 /****************************************************************************/
-static u32  bce_reg_rd_ind			(struct bce_softc *, u32);
-static void bce_reg_wr_ind			(struct bce_softc *, u32, u32);
-static void bce_shmem_wr            (struct bce_softc *, u32, u32);
-static u32  bce_shmem_rd            (struct bce_softc *, u32);
-static void bce_ctx_wr				(struct bce_softc *, u32, u32, u32);
+static u32  bce_reg_rd_ind		(struct bce_softc *, u32);
+static void bce_reg_wr_ind		(struct bce_softc *, u32, u32);
+static void bce_shmem_wr		(struct bce_softc *, u32, u32);
+static u32  bce_shmem_rd		(struct bce_softc *, u32);
+static void bce_ctx_wr			(struct bce_softc *, u32, u32, u32);
 static int  bce_miibus_read_reg		(device_t, int, int);
 static int  bce_miibus_write_reg	(device_t, int, int, int);
 static void bce_miibus_statchg		(device_t);
@@ -346,96 +350,101 @@ static void bce_miibus_statchg		(device_
 static int  bce_acquire_nvram_lock	(struct bce_softc *);
 static int  bce_release_nvram_lock	(struct bce_softc *);
 static void bce_enable_nvram_access	(struct bce_softc *);
-static void	bce_disable_nvram_access(struct bce_softc *);
+static void bce_disable_nvram_access	(struct bce_softc *);
 static int  bce_nvram_read_dword	(struct bce_softc *, u32, u8 *, u32);
-static int  bce_init_nvram			(struct bce_softc *);
-static int  bce_nvram_read			(struct bce_softc *, u32, u8 *, int);
-static int  bce_nvram_test			(struct bce_softc *);
+static int  bce_init_nvram		(struct bce_softc *);
+static int  bce_nvram_read		(struct bce_softc *, u32, u8 *, int);
+static int  bce_nvram_test		(struct bce_softc *);
 #ifdef BCE_NVRAM_WRITE_SUPPORT
 static int  bce_enable_nvram_write	(struct bce_softc *);
 static void bce_disable_nvram_write	(struct bce_softc *);
 static int  bce_nvram_erase_page	(struct bce_softc *, u32);
 static int  bce_nvram_write_dword	(struct bce_softc *, u32, u8 *, u32);
-static int  bce_nvram_write			(struct bce_softc *, u32, u8 *, int);
+static int  bce_nvram_write		(struct bce_softc *, u32, u8 *, int);
 #endif
 
 /****************************************************************************/
 /*                                                                          */
 /****************************************************************************/
-static void bce_get_media			(struct bce_softc *);
-static void bce_init_media			(struct bce_softc *);
-static void bce_dma_map_addr		(void *, bus_dma_segment_t *, int, int);
-static int  bce_dma_alloc			(device_t);
-static void bce_dma_free			(struct bce_softc *);
+static void bce_get_media		(struct bce_softc *);
+static void bce_init_media		(struct bce_softc *);
+static void bce_dma_map_addr		(void *, 
+    bus_dma_segment_t *, int, int);
+static int  bce_dma_alloc		(device_t);
+static void bce_dma_free		(struct bce_softc *);
 static void bce_release_resources	(struct bce_softc *);
 
 /****************************************************************************/
 /* BCE Firmware Synchronization and Load                                    */
 /****************************************************************************/
-static int  bce_fw_sync				(struct bce_softc *, u32);
+static int  bce_fw_sync			(struct bce_softc *, u32);
 static void bce_load_rv2p_fw		(struct bce_softc *, u32 *, u32, u32);
-static void bce_load_cpu_fw			(struct bce_softc *, struct cpu_reg *, struct fw_info *);
-static void bce_start_cpu           (struct bce_softc *, struct cpu_reg *);
-static void bce_halt_cpu            (struct bce_softc *, struct cpu_reg *);
-static void bce_start_rxp_cpu       (struct bce_softc *);
+static void bce_load_cpu_fw		(struct bce_softc *, 
+    struct cpu_reg *, struct fw_info *);
+static void bce_start_cpu		(struct bce_softc *, struct cpu_reg *);
+static void bce_halt_cpu		(struct bce_softc *, struct cpu_reg *);
+static void bce_start_rxp_cpu		(struct bce_softc *);
 static void bce_init_rxp_cpu		(struct bce_softc *);
 static void bce_init_txp_cpu 		(struct bce_softc *);
 static void bce_init_tpat_cpu		(struct bce_softc *);
-static void bce_init_cp_cpu		  	(struct bce_softc *);
+static void bce_init_cp_cpu	  	(struct bce_softc *);
 static void bce_init_com_cpu	  	(struct bce_softc *);
-static void bce_init_cpus			(struct bce_softc *);
+static void bce_init_cpus		(struct bce_softc *);
 
 static void	bce_print_adapter_info	(struct bce_softc *);
 static void bce_probe_pci_caps		(device_t, struct bce_softc *);
-static void bce_stop				(struct bce_softc *);
-static int  bce_reset				(struct bce_softc *, u32);
-static int  bce_chipinit 			(struct bce_softc *);
-static int  bce_blockinit 			(struct bce_softc *);
+static void bce_stop			(struct bce_softc *);
+static int  bce_reset			(struct bce_softc *, u32);
+static int  bce_chipinit 		(struct bce_softc *);
+static int  bce_blockinit 		(struct bce_softc *);
 
 static int  bce_init_tx_chain		(struct bce_softc *);
 static void bce_free_tx_chain		(struct bce_softc *);
 
-static int  bce_get_rx_buf			(struct bce_softc *, struct mbuf *, u16 *, u16 *, u32 *);
+static int  bce_get_rx_buf		(struct bce_softc *, 
+    struct mbuf *, u16 *, u16 *, u32 *);
 static int  bce_init_rx_chain		(struct bce_softc *);
 static void bce_fill_rx_chain		(struct bce_softc *);
 static void bce_free_rx_chain		(struct bce_softc *);
 
 #ifdef BCE_JUMBO_HDRSPLIT
-static int  bce_get_pg_buf			(struct bce_softc *, struct mbuf *, u16 *, u16 *);
+static int  bce_get_pg_buf		(struct bce_softc *, 
+    struct mbuf *, u16 *, u16 *);
 static int  bce_init_pg_chain		(struct bce_softc *);
 static void bce_fill_pg_chain		(struct bce_softc *);
 static void bce_free_pg_chain		(struct bce_softc *);
 #endif
 
-static struct mbuf *bce_tso_setup	(struct bce_softc *, struct mbuf **, u16 *);
-static int  bce_tx_encap			(struct bce_softc *, struct mbuf **);
+static struct mbuf *bce_tso_setup	(struct bce_softc *, 
+    struct mbuf **, u16 *);
+static int  bce_tx_encap		(struct bce_softc *, struct mbuf **);
 static void bce_start_locked		(struct ifnet *);
-static void bce_start				(struct ifnet *);
-static int  bce_ioctl				(struct ifnet *, u_long, caddr_t);
-static void bce_watchdog			(struct bce_softc *);
-static int  bce_ifmedia_upd			(struct ifnet *);
+static void bce_start			(struct ifnet *);
+static int  bce_ioctl			(struct ifnet *, u_long, caddr_t);
+static void bce_watchdog		(struct bce_softc *);
+static int  bce_ifmedia_upd		(struct ifnet *);
 static void bce_ifmedia_upd_locked	(struct ifnet *);
-static void bce_ifmedia_sts			(struct ifnet *, struct ifmediareq *);
-static void bce_init_locked			(struct bce_softc *);
-static void bce_init				(void *);
+static void bce_ifmedia_sts		(struct ifnet *, struct ifmediareq *);
+static void bce_init_locked		(struct bce_softc *);
+static void bce_init			(void *);
 static void bce_mgmt_init_locked	(struct bce_softc *sc);
 
-static void bce_init_ctx			(struct bce_softc *);
+static void bce_init_ctx		(struct bce_softc *);
 static void bce_get_mac_addr		(struct bce_softc *);
 static void bce_set_mac_addr		(struct bce_softc *);
-static void bce_phy_intr			(struct bce_softc *);
-static inline u16 bce_get_hw_rx_cons(struct bce_softc *);
-static void bce_rx_intr				(struct bce_softc *);
-static void bce_tx_intr				(struct bce_softc *);
+static void bce_phy_intr		(struct bce_softc *);
+static inline u16 bce_get_hw_rx_cons	(struct bce_softc *);
+static void bce_rx_intr			(struct bce_softc *);
+static void bce_tx_intr			(struct bce_softc *);
 static void bce_disable_intr		(struct bce_softc *);
-static void bce_enable_intr			(struct bce_softc *, int);
+static void bce_enable_intr		(struct bce_softc *, int);
 
-static void bce_intr				(void *);
-static void bce_set_rx_mode			(struct bce_softc *);
+static void bce_intr			(void *);
+static void bce_set_rx_mode		(struct bce_softc *);
 static void bce_stats_update		(struct bce_softc *);
-static void bce_tick				(void *);
-static void bce_pulse				(void *);
-static void bce_add_sysctls			(struct bce_softc *);
+static void bce_tick			(void *);
+static void bce_pulse			(void *);
+static void bce_add_sysctls		(struct bce_softc *);
 
 
 /****************************************************************************/
@@ -540,15 +549,15 @@ bce_probe(device_t dev)
 	sdid = pci_get_subdevice(dev);
 
 	DBPRINT(sc, BCE_EXTREME_LOAD,
-		"%s(); VID = 0x%04X, DID = 0x%04X, SVID = 0x%04X, "
-		"SDID = 0x%04X\n", __FUNCTION__, vid, did, svid, sdid);
+	    "%s(); VID = 0x%04X, DID = 0x%04X, SVID = 0x%04X, "
+	    "SDID = 0x%04X\n", __FUNCTION__, vid, did, svid, sdid);
 
 	/* Look through the list of known devices for a match. */
 	while(t->bce_name != NULL) {
 
 		if ((vid == t->bce_vid) && (did == t->bce_did) &&
-			((svid == t->bce_svid) || (t->bce_svid == PCI_ANY_ID)) &&
-			((sdid == t->bce_sdid) || (t->bce_sdid == PCI_ANY_ID))) {
+		    ((svid == t->bce_svid) || (t->bce_svid == PCI_ANY_ID)) &&
+		    ((sdid == t->bce_sdid) || (t->bce_sdid == PCI_ANY_ID))) {
 
 			descbuf = malloc(BCE_DEVDESC_MAX, M_TEMP, M_NOWAIT);
 
@@ -557,8 +566,8 @@ bce_probe(device_t dev)
 
 			/* Print out the device identity. */
 			snprintf(descbuf, BCE_DEVDESC_MAX, "%s (%c%d)",
-				t->bce_name,
-			    (((pci_read_config(dev, PCIR_REVID, 4) & 0xf0) >> 4) + 'A'),
+			    t->bce_name, (((pci_read_config(dev, 
+			    PCIR_REVID, 4) & 0xf0) >> 4) + 'A'),
 			    (pci_read_config(dev, PCIR_REVID, 4) & 0xf));
 
 			device_set_desc_copy(dev, descbuf);
@@ -590,21 +599,21 @@ bce_print_adapter_info(struct bce_softc 
 
 	BCE_PRINTF("ASIC (0x%08X); ", sc->bce_chipid);
 	printf("Rev (%c%d); ", ((BCE_CHIP_ID(sc) & 0xf000) >> 12) + 'A',
-		((BCE_CHIP_ID(sc) & 0x0ff0) >> 4));
+	    ((BCE_CHIP_ID(sc) & 0x0ff0) >> 4));
 
 	/* Bus info. */
 	if (sc->bce_flags & BCE_PCIE_FLAG) {
 		printf("Bus (PCIe x%d, ", sc->link_width);
 		switch (sc->link_speed) {
-			case 1: printf("2.5Gbps); "); break;
-			case 2:	printf("5Gbps); "); break;
-			default: printf("Unknown link speed); ");
+		case 1: printf("2.5Gbps); "); break;
+		case 2:	printf("5Gbps); "); break;
+		default: printf("Unknown link speed); ");
 		}
 	} else {
 		printf("Bus (PCI%s, %s, %dMHz); ",
-			((sc->bce_flags & BCE_PCIX_FLAG) ? "-X" : ""),
-			((sc->bce_flags & BCE_PCI_32BIT_FLAG) ? "32-bit" : "64-bit"),
-			sc->bus_speed_mhz);
+		    ((sc->bce_flags & BCE_PCIX_FLAG) ? "-X" : ""),
+		    ((sc->bce_flags & BCE_PCI_32BIT_FLAG) ? 
+		    "32-bit" : "64-bit"), sc->bus_speed_mhz);
 	}
 
 	/* Firmware version and device features. */
@@ -612,30 +621,30 @@ bce_print_adapter_info(struct bce_softc 
 
 #ifdef BCE_JUMBO_HDRSPLIT
 	printf("SPLT");
-    i++;
+	i++;
 #endif
 
-    if (sc->bce_flags & BCE_USING_MSI_FLAG) {
-        if (i > 0) printf("|");
+	if (sc->bce_flags & BCE_USING_MSI_FLAG) {
+		if (i > 0) printf("|");
 		printf("MSI"); i++;
-    }
+	}
 
-    if (sc->bce_flags & BCE_USING_MSIX_FLAG) {
-        if (i > 0) printf("|");
+	if (sc->bce_flags & BCE_USING_MSIX_FLAG) {
+		if (i > 0) printf("|");
 		printf("MSI-X"); i++;
-    }
+	}
 
-    if (sc->bce_phy_flags & BCE_PHY_2_5G_CAPABLE_FLAG) {
-        if (i > 0) printf("|");
+	if (sc->bce_phy_flags & BCE_PHY_2_5G_CAPABLE_FLAG) {
+		if (i > 0) printf("|");
 		printf("2.5G"); i++;
-    }
+	}
 
-    if (sc->bce_flags & BCE_MFW_ENABLE_FLAG) {
-        if (i > 0) printf("|");
-        printf("MFW); MFW (%s)\n", sc->bce_mfw_ver);
-    } else {
-        printf(")\n");
-    }
+	if (sc->bce_flags & BCE_MFW_ENABLE_FLAG) {
+		if (i > 0) printf("|");
+		printf("MFW); MFW (%s)\n", sc->bce_mfw_ver);
+	} else {
+		printf(")\n");
+	}
 
 	DBEXIT(BCE_VERBOSE_LOAD);
 }
@@ -667,8 +676,8 @@ bce_probe_pci_caps(device_t dev, struct 
 	if (pci_find_extcap(dev, PCIY_EXPRESS, ®) == 0) {
 		if (reg != 0) {
 			u16 link_status = pci_read_config(dev, reg + 0x12, 2);
-			DBPRINT(sc, BCE_INFO_LOAD, "PCIe link_status = 0x%08X\n",
-				link_status);
+			DBPRINT(sc, BCE_INFO_LOAD, "PCIe link_status = "
+			    "0x%08X\n",	link_status);
 			sc->link_speed = link_status & 0xf;
 			sc->link_width = (link_status >> 4) & 0x3f;
 			sc->bce_cap_flags |= BCE_PCIE_CAPABLE_FLAG;
@@ -730,7 +739,7 @@ bce_attach(device_t dev)
 
 	if (sc->bce_res_mem == NULL) {
 		BCE_PRINTF("%s(%d): PCI memory allocation failed\n",
-			__FILE__, __LINE__);
+		    __FILE__, __LINE__);
 		rc = ENXIO;
 		goto bce_attach_fail;
 	}
@@ -801,14 +810,14 @@ bce_attach(device_t dev)
 	}
 
 	sc->bce_res_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ,
-		&rid, RF_SHAREABLE | RF_ACTIVE);
+	    &rid, RF_SHAREABLE | RF_ACTIVE);
 
 	sc->bce_irq_rid = rid;
 
 	/* Report any IRQ allocation errors. */
 	if (sc->bce_res_irq == NULL) {
 		BCE_PRINTF("%s(%d): PCI map interrupt failed!\n",
-			__FILE__, __LINE__);
+		    __FILE__, __LINE__);
 		rc = ENXIO;
 		goto bce_attach_fail;
 	}
@@ -823,28 +832,28 @@ bce_attach(device_t dev)
 	 * valid until this is done.
 	 */
 	pci_write_config(dev, BCE_PCICFG_MISC_CONFIG,
-			       BCE_PCICFG_MISC_CONFIG_REG_WINDOW_ENA |
-			       BCE_PCICFG_MISC_CONFIG_TARGET_MB_WORD_SWAP, 4);
+	    BCE_PCICFG_MISC_CONFIG_REG_WINDOW_ENA |
+	    BCE_PCICFG_MISC_CONFIG_TARGET_MB_WORD_SWAP, 4);
 
 	/* Save ASIC revsion info. */
 	sc->bce_chipid =  REG_RD(sc, BCE_MISC_ID);
 
 	/* Weed out any non-production controller revisions. */
 	switch(BCE_CHIP_ID(sc)) {
-		case BCE_CHIP_ID_5706_A0:
-		case BCE_CHIP_ID_5706_A1:
-		case BCE_CHIP_ID_5708_A0:
-		case BCE_CHIP_ID_5708_B0:
-		case BCE_CHIP_ID_5709_A0:
-		case BCE_CHIP_ID_5709_B0:
-		case BCE_CHIP_ID_5709_B1:
-		case BCE_CHIP_ID_5709_B2:
-			BCE_PRINTF("%s(%d): Unsupported controller revision (%c%d)!\n",
-				__FILE__, __LINE__,
-				(((pci_read_config(dev, PCIR_REVID, 4) & 0xf0) >> 4) + 'A'),
-			    (pci_read_config(dev, PCIR_REVID, 4) & 0xf));
-			rc = ENODEV;
-			goto bce_attach_fail;
+	case BCE_CHIP_ID_5706_A0:
+	case BCE_CHIP_ID_5706_A1:
+	case BCE_CHIP_ID_5708_A0:
+	case BCE_CHIP_ID_5708_B0:
+	case BCE_CHIP_ID_5709_A0:
+	case BCE_CHIP_ID_5709_B0:
+	case BCE_CHIP_ID_5709_B1:
+	case BCE_CHIP_ID_5709_B2:
+		BCE_PRINTF("%s(%d): Unsupported controller revision (%c%d)!\n",
+		    __FILE__, __LINE__,
+		    (((pci_read_config(dev, PCIR_REVID, 4) & 0xf0) >> 4) + 'A'),
+		    (pci_read_config(dev, PCIR_REVID, 4) & 0xf));
+		rc = ENODEV;
+		goto bce_attach_fail;
 	}
 
 	/*
@@ -866,58 +875,67 @@ bce_attach(device_t dev)
 	if ((val & BCE_SHM_HDR_SIGNATURE_SIG_MASK) == BCE_SHM_HDR_SIGNATURE_SIG)
 		/* Multi-port devices use different offsets in shared memory. */
 		sc->bce_shmem_base = REG_RD_IND(sc, BCE_SHM_HDR_ADDR_0 +
-			(pci_get_function(sc->bce_dev) << 2));
+		    (pci_get_function(sc->bce_dev) << 2));
 	else
 		sc->bce_shmem_base = HOST_VIEW_SHMEM_BASE;
 
 	DBPRINT(sc, BCE_VERBOSE_FIRMWARE, "%s(): bce_shmem_base = 0x%08X\n",
-		__FUNCTION__, sc->bce_shmem_base);
+	    __FUNCTION__, sc->bce_shmem_base);
 
 	/* Fetch the bootcode revision. */
-    val = bce_shmem_rd(sc, BCE_DEV_INFO_BC_REV);
-    for (int i = 0, j = 0; i < 3; i++) {
-        u8 num;
-
-        num = (u8) (val >> (24 - (i * 8)));
-        for (int k = 100, skip0 = 1; k >= 1; num %= k, k /= 10) {
-            if (num >= k || !skip0 || k == 1) {
-                sc->bce_bc_ver[j++] = (num / k) + '0';
-                skip0 = 0;
-            }
-        }
-        if (i != 2)
-            sc->bce_bc_ver[j++] = '.';
-    }
-
-    /* Check if any management firwmare is running. */
-    val = bce_shmem_rd(sc, BCE_PORT_FEATURE);
-    if (val & BCE_PORT_FEATURE_ASF_ENABLED) {
-        sc->bce_flags |= BCE_MFW_ENABLE_FLAG;
-
-        /* Allow time for firmware to enter the running state. */
-        for (int i = 0; i < 30; i++) {
-            val = bce_shmem_rd(sc, BCE_BC_STATE_CONDITION);
-            if (val & BCE_CONDITION_MFW_RUN_MASK)
-                break;
-            DELAY(10000);
-        }
-    }
-
-    /* Check the current bootcode state. */
-    val = bce_shmem_rd(sc, BCE_BC_STATE_CONDITION);
-    val &= BCE_CONDITION_MFW_RUN_MASK;
-    if (val != BCE_CONDITION_MFW_RUN_UNKNOWN &&
-        val != BCE_CONDITION_MFW_RUN_NONE) {
-        u32 addr = bce_shmem_rd(sc, BCE_MFW_VER_PTR);
-        int i = 0;
-
-        for (int j = 0; j < 3; j++) {
-            val = bce_reg_rd_ind(sc, addr + j * 4);
-            val = bswap32(val);
-            memcpy(&sc->bce_mfw_ver[i], &val, 4);
-            i += 4;
-        }
-    }
+	val = bce_shmem_rd(sc, BCE_DEV_INFO_BC_REV);
+	for (int i = 0, j = 0; i < 3; i++) {
+		u8 num;
+
+		num = (u8) (val >> (24 - (i * 8)));
+		for (int k = 100, skip0 = 1; k >= 1; num %= k, k /= 10) {
+			if (num >= k || !skip0 || k == 1) {
+				sc->bce_bc_ver[j++] = (num / k) + '0';
+				skip0 = 0;
+			}
+		}
+
+		if (i != 2)
+			sc->bce_bc_ver[j++] = '.';
+	}
+
+	/* Check if any management firwmare is enabled. */
+	val = bce_shmem_rd(sc, BCE_PORT_FEATURE);
+	if (val & BCE_PORT_FEATURE_ASF_ENABLED) {
+		sc->bce_flags |= BCE_MFW_ENABLE_FLAG;
+
+		/* Allow time for firmware to enter the running state. */
+		for (int i = 0; i < 30; i++) {
+			val = bce_shmem_rd(sc, BCE_BC_STATE_CONDITION);
+			if (val & BCE_CONDITION_MFW_RUN_MASK)
+				break;
+			DELAY(10000);
+		}
+
+		/* Check if management firmware is running. */
+		val = bce_shmem_rd(sc, BCE_BC_STATE_CONDITION);
+		val &= BCE_CONDITION_MFW_RUN_MASK;
+		if ((val != BCE_CONDITION_MFW_RUN_UNKNOWN) &&
+		    (val != BCE_CONDITION_MFW_RUN_NONE)) {
+			u32 addr = bce_shmem_rd(sc, BCE_MFW_VER_PTR);
+			int i = 0;
+
+			/* Read the management firmware version string. */
+			for (int j = 0; j < 3; j++) {
+				val = bce_reg_rd_ind(sc, addr + j * 4);
+				val = bswap32(val);
+				memcpy(&sc->bce_mfw_ver[i], &val, 4);
+				i += 4;
+			}
+		} else {
+			/* May cause firmware synchronization timeouts. */
+			BCE_PRINTF("%s(%d): Management firmware enabled "
+			    "but not running!\n", __FILE__, __LINE__);
+			strcpy(sc->bce_mfw_ver, "NOT RUNNING!");
+
+			/* ToDo: Any action the driver should take? */
+		}
+	}
 
 	/* Get PCI bus information (speed and type). */
 	val = REG_RD(sc, BCE_PCICFG_MISC_STATUS);
@@ -964,10 +982,10 @@ bce_attach(device_t dev)
 	if (val & BCE_PCICFG_MISC_STATUS_32BIT_DET)
 		sc->bce_flags |= BCE_PCI_32BIT_FLAG;
 
-	/* Reset the controller and announce to bootcode that driver is present. */
+	/* Reset controller and announce to bootcode that driver is present. */
 	if (bce_reset(sc, BCE_DRV_MSG_CODE_RESET)) {
 		BCE_PRINTF("%s(%d): Controller reset failed!\n",
-			__FILE__, __LINE__);
+		    __FILE__, __LINE__);
 		rc = ENXIO;
 		goto bce_attach_fail;
 	}
@@ -975,7 +993,7 @@ bce_attach(device_t dev)
 	/* Initialize the controller. */
 	if (bce_chipinit(sc)) {
 		BCE_PRINTF("%s(%d): Controller initialization failed!\n",
-			__FILE__, __LINE__);
+		    __FILE__, __LINE__);
 		rc = ENXIO;
 		goto bce_attach_fail;
 	}
@@ -983,7 +1001,7 @@ bce_attach(device_t dev)
 	/* Perform NVRAM test. */
 	if (bce_nvram_test(sc)) {
 		BCE_PRINTF("%s(%d): NVRAM test failed!\n",
-			__FILE__, __LINE__);
+		    __FILE__, __LINE__);
 		rc = ENXIO;
 		goto bce_attach_fail;
 	}
@@ -1024,6 +1042,14 @@ bce_attach(device_t dev)
 	sc->bce_rx_ticks               = 18;
 #endif
 
+	/* Not used for L2. */
+	sc->bce_comp_prod_trip_int = 0;
+	sc->bce_comp_prod_trip = 0;
+	sc->bce_com_ticks_int = 0;
+	sc->bce_com_ticks = 0;
+	sc->bce_cmd_ticks_int = 0;
+	sc->bce_cmd_ticks = 0;
+
 	/* Update statistics once every second. */
 	sc->bce_stats_ticks = 1000000 & 0xffff00;
 
@@ -1507,7 +1533,8 @@ bce_miibus_read_reg(device_t dev, int ph
 
 	/* Make sure we are accessing the correct PHY address. */
 	if (phy != sc->bce_phy_addr) {
-		DBPRINT(sc, BCE_INSANE_PHY, "Invalid PHY address %d for PHY read!\n", phy);
+		DBPRINT(sc, BCE_INSANE_PHY, "Invalid PHY address %d "
+		    "for PHY read!\n", phy);
 		return(0);
 	}
 
@@ -1533,8 +1560,8 @@ bce_miibus_read_reg(device_t dev, int ph
 
 
 	val = BCE_MIPHY(phy) | BCE_MIREG(reg) |
-		BCE_EMAC_MDIO_COMM_COMMAND_READ | BCE_EMAC_MDIO_COMM_DISEXT |
-		BCE_EMAC_MDIO_COMM_START_BUSY;
+	    BCE_EMAC_MDIO_COMM_COMMAND_READ | BCE_EMAC_MDIO_COMM_DISEXT |
+	    BCE_EMAC_MDIO_COMM_START_BUSY;
 	REG_WR(sc, BCE_EMAC_MDIO_COMM, val);
 
 	for (i = 0; i < BCE_PHY_TIMEOUT; i++) {
@@ -1552,8 +1579,8 @@ bce_miibus_read_reg(device_t dev, int ph
 	}
 
 	if (val & BCE_EMAC_MDIO_COMM_START_BUSY) {
-		BCE_PRINTF("%s(%d): Error: PHY read timeout! phy = %d, reg = 0x%04X\n",
-			__FILE__, __LINE__, phy, reg);
+		BCE_PRINTF("%s(%d): Error: PHY read timeout! phy = %d, "
+		    "reg = 0x%04X\n", __FILE__, __LINE__, phy, reg);
 		val = 0x0;
 	} else {
 		val = REG_RD(sc, BCE_EMAC_MDIO_COMM);
@@ -1595,17 +1622,18 @@ bce_miibus_write_reg(device_t dev, int p
 
 	/* Make sure we are accessing the correct PHY address. */
 	if (phy != sc->bce_phy_addr) {
-		DBPRINT(sc, BCE_INSANE_PHY, "Invalid PHY address %d for PHY write!\n", phy);
+		DBPRINT(sc, BCE_INSANE_PHY, "Invalid PHY address %d "
+		    "for PHY write!\n", phy);
 		return(0);
 	}
 
 	DB_PRINT_PHY_REG(reg, val);
 
-    /*
-     * The 5709S PHY is an IEEE Clause 45 PHY
-     * with special mappings to work with IEEE
-     * Clause 22 register accesses.
-     */
+	/*
+	 * The 5709S PHY is an IEEE Clause 45 PHY
+	 * with special mappings to work with IEEE
+	 * Clause 22 register accesses.
+	 */
 	if ((sc->bce_phy_flags & BCE_PHY_IEEE_CLAUSE_45_FLAG) != 0) {
 		if (reg >= MII_BMCR && reg <= MII_ANLPRNP)
 			reg += 0x10;
@@ -1622,8 +1650,8 @@ bce_miibus_write_reg(device_t dev, int p
 	}
 
 	val1 = BCE_MIPHY(phy) | BCE_MIREG(reg) | val |
-		BCE_EMAC_MDIO_COMM_COMMAND_WRITE |
-		BCE_EMAC_MDIO_COMM_START_BUSY | BCE_EMAC_MDIO_COMM_DISEXT;
+	    BCE_EMAC_MDIO_COMM_COMMAND_WRITE |
+	    BCE_EMAC_MDIO_COMM_START_BUSY | BCE_EMAC_MDIO_COMM_DISEXT;
 	REG_WR(sc, BCE_EMAC_MDIO_COMM, val1);
 
 	for (i = 0; i < BCE_PHY_TIMEOUT; i++) {
@@ -1638,7 +1666,7 @@ bce_miibus_write_reg(device_t dev, int p
 
 	if (val1 & BCE_EMAC_MDIO_COMM_START_BUSY)
 		BCE_PRINTF("%s(%d): PHY write timeout!\n",
-			__FILE__, __LINE__);
+		    __FILE__, __LINE__);
 
 	if (sc->bce_phy_flags & BCE_PHY_INT_MODE_AUTO_POLLING_FLAG) {
 		val1 = REG_RD(sc, BCE_EMAC_MDIO_MODE);
@@ -2653,18 +2681,22 @@ bce_get_media(struct bce_softc *sc)
 		 * for Copper or SerDes operation.
 		 */
 		if (bond_id == BCE_MISC_DUAL_MEDIA_CTRL_BOND_ID_C) {
-			DBPRINT(sc, BCE_INFO_LOAD, "5709 bonded for copper.\n");
+			DBPRINT(sc, BCE_INFO_LOAD, "5709 bonded "
+			    "for copper.\n");
 			goto bce_get_media_exit;
 		} else if (bond_id == BCE_MISC_DUAL_MEDIA_CTRL_BOND_ID_S) {
-			DBPRINT(sc, BCE_INFO_LOAD, "5709 bonded for dual media.\n");
+			DBPRINT(sc, BCE_INFO_LOAD, "5709 bonded "
+			    "for dual media.\n");
 			sc->bce_phy_flags |= BCE_PHY_SERDES_FLAG;
 			goto bce_get_media_exit;
 		}
 
 		if (val & BCE_MISC_DUAL_MEDIA_CTRL_STRAP_OVERRIDE)
-			strap = (val & BCE_MISC_DUAL_MEDIA_CTRL_PHY_CTRL) >> 21;
+			strap = (val & 
+			    BCE_MISC_DUAL_MEDIA_CTRL_PHY_CTRL) >> 21;
 		else
-			strap = (val & BCE_MISC_DUAL_MEDIA_CTRL_PHY_CTRL_STRAP) >> 8;
+			strap = (val & 
+			    BCE_MISC_DUAL_MEDIA_CTRL_PHY_CTRL_STRAP) >> 8;
 
 		if (pci_get_function(sc->bce_dev) == 0) {
 			switch (strap) {
@@ -2672,13 +2704,13 @@ bce_get_media(struct bce_softc *sc)
 			case 0x5:
 			case 0x6:
 				DBPRINT(sc, BCE_INFO_LOAD,
-					"BCM5709 s/w configured for SerDes.\n");
+				    "BCM5709 s/w configured for SerDes.\n");
 				sc->bce_phy_flags |= BCE_PHY_SERDES_FLAG;
-                break;
+				break;
 			default:
 				DBPRINT(sc, BCE_INFO_LOAD,
-					"BCM5709 s/w configured for Copper.\n");
-                break;
+				    "BCM5709 s/w configured for Copper.\n");
+				break;
 			}
 		} else {
 			switch (strap) {
@@ -2686,13 +2718,13 @@ bce_get_media(struct bce_softc *sc)
 			case 0x2:
 			case 0x4:
 				DBPRINT(sc, BCE_INFO_LOAD,
-					"BCM5709 s/w configured for SerDes.\n");
+				    "BCM5709 s/w configured for SerDes.\n");
 				sc->bce_phy_flags |= BCE_PHY_SERDES_FLAG;
-                break;
+				break;
 			default:
 				DBPRINT(sc, BCE_INFO_LOAD,
-					"BCM5709 s/w configured for Copper.\n");
-                break;
+				    "BCM5709 s/w configured for Copper.\n");
+				break;
 			}
 		}
 
@@ -2703,21 +2735,23 @@ bce_get_media(struct bce_softc *sc)
 
 		sc->bce_flags |= BCE_NO_WOL_FLAG;
 
-		/* 5708S, 5709S, and 5716S use a separate PHY for SerDes. */
-		if (BCE_CHIP_NUM(sc) != BCE_CHIP_NUM_5706) 
-			sc->bce_phy_addr = 2;
-
-		if (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709) {
+		if (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5709)
 			sc->bce_phy_flags |= BCE_PHY_IEEE_CLAUSE_45_FLAG;
 
+		if (BCE_CHIP_NUM(sc) != BCE_CHIP_NUM_5706) {
+			/* 5708S/09S/16S use a separate PHY for SerDes. */
+			sc->bce_phy_addr = 2;
+
 			val = bce_shmem_rd(sc, BCE_SHARED_HW_CFG_CONFIG);
 			if (val & BCE_SHARED_HW_CFG_PHY_2_5G) {
-				sc->bce_phy_flags |= BCE_PHY_2_5G_CAPABLE_FLAG;
-				DBPRINT(sc, BCE_INFO_LOAD, "Found 2.5Gb capable adapter\n");
+				sc->bce_phy_flags |= 
+				    BCE_PHY_2_5G_CAPABLE_FLAG;
+				DBPRINT(sc, BCE_INFO_LOAD, "Found 2.5Gb "
+				    "capable adapter\n");
 			}
-        }
+		}
 	} else if ((BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5706) ||
-		   (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5708))
+	    (BCE_CHIP_NUM(sc) == BCE_CHIP_NUM_5708))
 		sc->bce_phy_flags |= BCE_PHY_CRC_FIX_FLAG;
 
 bce_get_media_exit:
@@ -2746,13 +2780,13 @@ bce_init_media(struct bce_softc *sc)
 		 * is done in mii layer.
 		 */
 
-        /* Select auto-negotiation MMD of the PHY. */
-        bce_miibus_write_reg(sc->bce_dev, sc->bce_phy_addr,
+		/* Select auto-negotiation MMD of the PHY. */
+		bce_miibus_write_reg(sc->bce_dev, sc->bce_phy_addr,
 		    BRGPHY_BLOCK_ADDR, BRGPHY_BLOCK_ADDR_ADDR_EXT);
 		bce_miibus_write_reg(sc->bce_dev, sc->bce_phy_addr,
 		    BRGPHY_ADDR_EXT, BRGPHY_ADDR_EXT_AN_MMD);
 
-        /* Select IEEE0 block of AN MMD (assumed in all brgphy(4) code). */
+		/* Set IEEE0 block of AN MMD (assumed in brgphy(4) code). */
 		bce_miibus_write_reg(sc->bce_dev, sc->bce_phy_addr,
 		    BRGPHY_BLOCK_ADDR, BRGPHY_BLOCK_ADDR_COMBO_IEEE0);
 	}
@@ -2778,7 +2812,7 @@ bce_dma_free(struct bce_softc *sc)
 	/* Free, unmap, and destroy the status block. */
 	if (sc->status_block != NULL) {
 		bus_dmamem_free(
-			sc->status_tag,
+		   sc->status_tag,
 		    sc->status_block,
 		    sc->status_map);
 		sc->status_block = NULL;
@@ -2786,7 +2820,7 @@ bce_dma_free(struct bce_softc *sc)
 
 	if (sc->status_map != NULL) {
 		bus_dmamap_unload(
-			sc->status_tag,
+		    sc->status_tag,
 		    sc->status_map);
 		bus_dmamap_destroy(sc->status_tag,
 		    sc->status_map);
@@ -2802,7 +2836,7 @@ bce_dma_free(struct bce_softc *sc)
 	/* Free, unmap, and destroy the statistics block. */
 	if (sc->stats_block != NULL) {
 		bus_dmamem_free(
-			sc->stats_tag,
+		    sc->stats_tag,
 		    sc->stats_block,
 		    sc->stats_map);
 		sc->stats_block = NULL;
@@ -2810,7 +2844,7 @@ bce_dma_free(struct bce_softc *sc)
 
 	if (sc->stats_map != NULL) {
 		bus_dmamap_unload(
-			sc->stats_tag,
+		    sc->stats_tag,
 		    sc->stats_map);
 		bus_dmamap_destroy(sc->stats_tag,
 		    sc->stats_map);
@@ -2829,7 +2863,7 @@ bce_dma_free(struct bce_softc *sc)
 		for (i = 0; i < sc->ctx_pages; i++ ) {
 			if (sc->ctx_block[i] != NULL) {
 				bus_dmamem_free(
-					sc->ctx_tag,
+				    sc->ctx_tag,
 				    sc->ctx_block[i],
 				    sc->ctx_map[i]);
 				sc->ctx_block[i] = NULL;
@@ -2837,10 +2871,10 @@ bce_dma_free(struct bce_softc *sc)
 
 			if (sc->ctx_map[i] != NULL) {
 				bus_dmamap_unload(
-					sc->ctx_tag,
-		    		sc->ctx_map[i]);
+				    sc->ctx_tag,
+				    sc->ctx_map[i]);
 				bus_dmamap_destroy(
-					sc->ctx_tag,
+				    sc->ctx_tag,
 				    sc->ctx_map[i]);
 				sc->ctx_map[i] = NULL;
 			}
@@ -2858,7 +2892,7 @@ bce_dma_free(struct bce_softc *sc)
 	for (i = 0; i < TX_PAGES; i++ ) {
 		if (sc->tx_bd_chain[i] != NULL) {
 			bus_dmamem_free(
-				sc->tx_bd_chain_tag,
+			    sc->tx_bd_chain_tag,
 			    sc->tx_bd_chain[i],
 			    sc->tx_bd_chain_map[i]);
 			sc->tx_bd_chain[i] = NULL;
@@ -2866,10 +2900,10 @@ bce_dma_free(struct bce_softc *sc)
 
 		if (sc->tx_bd_chain_map[i] != NULL) {
 			bus_dmamap_unload(
-				sc->tx_bd_chain_tag,
-		    	sc->tx_bd_chain_map[i]);
+			    sc->tx_bd_chain_tag,
+			    sc->tx_bd_chain_map[i]);
 			bus_dmamap_destroy(
-				sc->tx_bd_chain_tag,
+			    sc->tx_bd_chain_tag,
 			    sc->tx_bd_chain_map[i]);
 			sc->tx_bd_chain_map[i] = NULL;
 		}
@@ -2886,7 +2920,7 @@ bce_dma_free(struct bce_softc *sc)
 	for (i = 0; i < RX_PAGES; i++ ) {
 		if (sc->rx_bd_chain[i] != NULL) {
 			bus_dmamem_free(
-				sc->rx_bd_chain_tag,
+			    sc->rx_bd_chain_tag,
 			    sc->rx_bd_chain[i],
 			    sc->rx_bd_chain_map[i]);
 			sc->rx_bd_chain[i] = NULL;
@@ -2894,10 +2928,10 @@ bce_dma_free(struct bce_softc *sc)
 
 		if (sc->rx_bd_chain_map[i] != NULL) {
 			bus_dmamap_unload(
-				sc->rx_bd_chain_tag,
-		    	sc->rx_bd_chain_map[i]);
+			    sc->rx_bd_chain_tag,
+			    sc->rx_bd_chain_map[i]);
 			bus_dmamap_destroy(
-				sc->rx_bd_chain_tag,
+			    sc->rx_bd_chain_tag,
 			    sc->rx_bd_chain_map[i]);
 			sc->rx_bd_chain_map[i] = NULL;
 		}
@@ -2915,7 +2949,7 @@ bce_dma_free(struct bce_softc *sc)
 	for (i = 0; i < PG_PAGES; i++ ) {
 		if (sc->pg_bd_chain[i] != NULL) {
 			bus_dmamem_free(
-				sc->pg_bd_chain_tag,
+			    sc->pg_bd_chain_tag,
 			    sc->pg_bd_chain[i],
 			    sc->pg_bd_chain_map[i]);
 			sc->pg_bd_chain[i] = NULL;
@@ -2923,10 +2957,10 @@ bce_dma_free(struct bce_softc *sc)
 
 		if (sc->pg_bd_chain_map[i] != NULL) {
 			bus_dmamap_unload(
-				sc->pg_bd_chain_tag,
-		    	sc->pg_bd_chain_map[i]);
+			    sc->pg_bd_chain_tag,
+			    sc->pg_bd_chain_map[i]);
 			bus_dmamap_destroy(
-				sc->pg_bd_chain_tag,
+			    sc->pg_bd_chain_tag,
 			    sc->pg_bd_chain_map[i]);
 			sc->pg_bd_chain_map[i] = NULL;
 		}
@@ -2944,9 +2978,9 @@ bce_dma_free(struct bce_softc *sc)
 	for (i = 0; i < TOTAL_TX_BD; i++) {
 		if (sc->tx_mbuf_map[i] != NULL) {
 			bus_dmamap_unload(sc->tx_mbuf_tag,
-				sc->tx_mbuf_map[i]);
+			    sc->tx_mbuf_map[i]);
 			bus_dmamap_destroy(sc->tx_mbuf_tag,
-	 			sc->tx_mbuf_map[i]);
+	 		    sc->tx_mbuf_map[i]);
 			sc->tx_mbuf_map[i] = NULL;
 		}
 	}
@@ -2961,9 +2995,9 @@ bce_dma_free(struct bce_softc *sc)
 	for (i = 0; i < TOTAL_RX_BD; i++) {
 		if (sc->rx_mbuf_map[i] != NULL) {
 			bus_dmamap_unload(sc->rx_mbuf_tag,
-				sc->rx_mbuf_map[i]);
+			    sc->rx_mbuf_map[i]);
 			bus_dmamap_destroy(sc->rx_mbuf_tag,
-	 			sc->rx_mbuf_map[i]);
+	 		    sc->rx_mbuf_map[i]);
 			sc->rx_mbuf_map[i] = NULL;
 		}
 	}
@@ -2979,9 +3013,9 @@ bce_dma_free(struct bce_softc *sc)
 	for (i = 0; i < TOTAL_PG_BD; i++) {
 		if (sc->pg_mbuf_map[i] != NULL) {
 			bus_dmamap_unload(sc->pg_mbuf_tag,
-				sc->pg_mbuf_map[i]);
+			    sc->pg_mbuf_map[i]);
 			bus_dmamap_destroy(sc->pg_mbuf_tag,
-	 			sc->pg_mbuf_map[i]);
+	 		    sc->pg_mbuf_map[i]);
 			sc->pg_mbuf_map[i] = NULL;
 		}
 	}
@@ -3074,20 +3108,12 @@ bce_dma_alloc(device_t dev)
 	/*
 	 * Allocate the parent bus DMA tag appropriate for PCI.
 	 */
-	if (bus_dma_tag_create(NULL,
-			1,
-			BCE_DMA_BOUNDARY,
-			sc->max_bus_addr,
-			BUS_SPACE_MAXADDR,
-			NULL, NULL,
-			MAXBSIZE,
-			BUS_SPACE_UNRESTRICTED,
-			BUS_SPACE_MAXSIZE_32BIT,
-			0,
-			NULL, NULL,
-			&sc->parent_tag)) {
+	if (bus_dma_tag_create(NULL, 1,	BCE_DMA_BOUNDARY,
+	    sc->max_bus_addr, BUS_SPACE_MAXADDR, NULL, NULL,
+	    MAXBSIZE, BUS_SPACE_UNRESTRICTED, BUS_SPACE_MAXSIZE_32BIT,
+	    0, NULL, NULL, &sc->parent_tag)) {
 		BCE_PRINTF("%s(%d): Could not allocate parent DMA tag!\n",
-			__FILE__, __LINE__);
+		    __FILE__, __LINE__);
 		rc = ENOMEM;
 		goto bce_dma_alloc_exit;
 	}
@@ -3097,117 +3123,89 @@ bce_dma_alloc(device_t dev)
 	 * memory, map the memory into DMA space, and fetch the physical
 	 * address of the block.
 	 */
-	if (bus_dma_tag_create(sc->parent_tag,
-	    	BCE_DMA_ALIGN,
-	    	BCE_DMA_BOUNDARY,
-	    	sc->max_bus_addr,
-	    	BUS_SPACE_MAXADDR,
-	    	NULL, NULL,
-	    	BCE_STATUS_BLK_SZ,
-	    	1,
-	    	BCE_STATUS_BLK_SZ,
-	    	0,
-	    	NULL, NULL,
-	    	&sc->status_tag)) {
-		BCE_PRINTF("%s(%d): Could not allocate status block DMA tag!\n",
-			__FILE__, __LINE__);
+	if (bus_dma_tag_create(sc->parent_tag, BCE_DMA_ALIGN,
+	    BCE_DMA_BOUNDARY, sc->max_bus_addr,	BUS_SPACE_MAXADDR,

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

From owner-svn-src-head@FreeBSD.ORG  Tue Apr  6 16:23:12 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 77F64106566C;
	Tue,  6 Apr 2010 16:23:12 +0000 (UTC) (envelope-from imp@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 67A388FC0A;
	Tue,  6 Apr 2010 16:23:12 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o36GNC9X016551;
	Tue, 6 Apr 2010 16:23:12 GMT (envelope-from imp@svn.freebsd.org)
Received: (from imp@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o36GNCEL016549;
	Tue, 6 Apr 2010 16:23:12 GMT (envelope-from imp@svn.freebsd.org)
Message-Id: <201004061623.o36GNCEL016549@svn.freebsd.org>
From: Warner Losh 
Date: Tue, 6 Apr 2010 16:23:12 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206276 - head/tools/tools/nanobsd
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Tue, 06 Apr 2010 16:23:12 -0000

Author: imp
Date: Tue Apr  6 16:23:12 2010
New Revision: 206276
URL: http://svn.freebsd.org/changeset/base/206276

Log:
  Fix comment about NANO_ARCH.  It can be set now.  Also add a warning
  about how it confuses TARGET and TARGET_ARCH and the need to separate
  the two out into independent variables.

Modified:
  head/tools/tools/nanobsd/nanobsd.sh

Modified: head/tools/tools/nanobsd/nanobsd.sh
==============================================================================
--- head/tools/tools/nanobsd/nanobsd.sh	Tue Apr  6 15:53:59 2010	(r206275)
+++ head/tools/tools/nanobsd/nanobsd.sh	Tue Apr  6 16:23:12 2010	(r206276)
@@ -132,7 +132,10 @@ NANO_MD_BACKING="file"
 PPLEVEL=3
 
 #######################################################################
-# Not a variable at this time
+# Architecture to build.  Corresponds to TARGET_ARCH in a buildworld.
+# Unfortunately, there's no way to set TARGET at this time, and it 
+# conflates the two, so architectures where TARGET != TARGET_ARCH do
+# not work.  This defaults to the arch of the current machine.
 
 NANO_ARCH=`uname -p`
 

From owner-svn-src-head@FreeBSD.ORG  Tue Apr  6 17:07:18 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id D76781065670;
	Tue,  6 Apr 2010 17:07:18 +0000 (UTC) (envelope-from imp@bsdimp.com)
Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85])
	by mx1.freebsd.org (Postfix) with ESMTP id 97D388FC13;
	Tue,  6 Apr 2010 17:07:18 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
	by harmony.bsdimp.com (8.14.3/8.14.1) with ESMTP id o36Gwd1a013258;
	Tue, 6 Apr 2010 10:58:40 -0600 (MDT) (envelope-from imp@bsdimp.com)
Date: Tue, 06 Apr 2010 10:54:17 -0600 (MDT)
Message-Id: <20100406.105417.934842008305588111.imp@bsdimp.com>
To: netchild@freebsd.org
From: "M. Warner Losh" 
In-Reply-To: <20100405181450.13494itjj2ehj5og@webmail.leidinger.net>
References: <20100405143123.14716pelm4tos2kg@webmail.leidinger.net>
	<20100405133505.GK2415@deviant.kiev.zoral.com.ua>
	<20100405181450.13494itjj2ehj5og@webmail.leidinger.net>
X-Mailer: Mew version 6.3 on Emacs 22.3 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Cc: kostikbel@gmail.com, svn-src-head@freebsd.org, svn-src-all@freebsd.org,
	src-committers@freebsd.org
Subject: Re: svn commit: r206082 - in head: . share/man/man7 share/mk
 sys/conf
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Tue, 06 Apr 2010 17:07:18 -0000

In message: <20100405181450.13494itjj2ehj5og@webmail.leidinger.net>
            Alexander Leidinger  writes:
: Warner, do you mind if I back-out r206082 and change the place where
: NORMAL_CTFCONVERT is used instead (fist I have to search for it
: again... not today)? It would make it consistent with all other places
: (SYSTEM_CTFCONVERT and the plain test and use of CTFxxx).

Go ahead.  I just did the fast and dirty fix.  I though it was
consistent with how other things were done, but if not, feel free to
correct it.  Also, see bde's commentary :)

Warner

From owner-svn-src-head@FreeBSD.ORG  Tue Apr  6 18:57:51 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id F39421065677;
	Tue,  6 Apr 2010 18:57:50 +0000 (UTC)
	(envelope-from tuexen@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id E431C8FC1B;
	Tue,  6 Apr 2010 18:57:50 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o36Ivo0C050928;
	Tue, 6 Apr 2010 18:57:50 GMT (envelope-from tuexen@svn.freebsd.org)
Received: (from tuexen@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o36Ivopc050925;
	Tue, 6 Apr 2010 18:57:50 GMT (envelope-from tuexen@svn.freebsd.org)
Message-Id: <201004061857.o36Ivopc050925@svn.freebsd.org>
From: Michael Tuexen 
Date: Tue, 6 Apr 2010 18:57:50 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206281 - head/sys/netinet
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Tue, 06 Apr 2010 18:57:51 -0000

Author: tuexen
Date: Tue Apr  6 18:57:50 2010
New Revision: 206281
URL: http://svn.freebsd.org/changeset/base/206281

Log:
  Fix a off-by-one bug in zeroing out the mapping arrays.
  Fix sctp_print_mapping_array().
  
  MFC after: 1 week

Modified:
  head/sys/netinet/sctp_indata.c
  head/sys/netinet/sctputil.c

Modified: head/sys/netinet/sctp_indata.c
==============================================================================
--- head/sys/netinet/sctp_indata.c	Tue Apr  6 18:39:16 2010	(r206280)
+++ head/sys/netinet/sctp_indata.c	Tue Apr  6 18:57:50 2010	(r206281)
@@ -2275,8 +2275,7 @@ sctp_slide_mapping_arrays(struct sctp_tc
 	asoc->cumulative_tsn = asoc->mapping_array_base_tsn + (at - 1);
 
 	if (compare_with_wrap(asoc->cumulative_tsn, asoc->highest_tsn_inside_map, MAX_TSN) &&
-	    compare_with_wrap(asoc->cumulative_tsn, asoc->highest_tsn_inside_nr_map, MAX_TSN)
-	    ) {
+	    compare_with_wrap(asoc->cumulative_tsn, asoc->highest_tsn_inside_nr_map, MAX_TSN)) {
 #ifdef INVARIANTS
 		panic("huh, cumack 0x%x greater than high-tsn 0x%x in map",
 		    asoc->cumulative_tsn, asoc->highest_tsn_inside_map);
@@ -2378,7 +2377,7 @@ sctp_slide_mapping_arrays(struct sctp_tc
 				    asoc->nr_mapping_array[slide_from + ii];
 
 			}
-			for (ii = distance; ii <= asoc->mapping_array_size; ii++) {
+			for (ii = distance; ii < asoc->mapping_array_size; ii++) {
 				asoc->mapping_array[ii] = 0;
 				asoc->nr_mapping_array[ii] = 0;
 			}

Modified: head/sys/netinet/sctputil.c
==============================================================================
--- head/sys/netinet/sctputil.c	Tue Apr  6 18:39:16 2010	(r206280)
+++ head/sys/netinet/sctputil.c	Tue Apr  6 18:57:50 2010	(r206281)
@@ -1187,50 +1187,38 @@ sctp_init_asoc(struct sctp_inpcb *m, str
 void
 sctp_print_mapping_array(struct sctp_association *asoc)
 {
-	int i, limit;
+	unsigned int i, limit;
 
-	printf("Mapping size:%d baseTSN:%8.8x cumAck:%8.8x highestTSN:%8.8x\n",
+	printf("Mapping array size: %d, baseTSN: %8.8x, cumAck: %8.8x, highestTSN: (%8.8x, %8.8x).\n",
 	    asoc->mapping_array_size,
 	    asoc->mapping_array_base_tsn,
 	    asoc->cumulative_tsn,
-	    asoc->highest_tsn_inside_map
-	    );
-	limit = asoc->mapping_array_size;
-	for (i = asoc->mapping_array_size; i >= 0; i--) {
-		if (asoc->mapping_array[i]) {
-			limit = i;
+	    asoc->highest_tsn_inside_map,
+	    asoc->highest_tsn_inside_nr_map);
+	for (limit = asoc->mapping_array_size; limit > 1; limit--) {
+		if (asoc->mapping_array[limit - 1]) {
 			break;
 		}
 	}
-	if (limit == 0)
-		limit = 1;
+	printf("Renegable mapping array (last %d entries are zero):\n", asoc->mapping_array_size - limit);
 	for (i = 0; i < limit; i++) {
-		printf("%2.2x ", asoc->mapping_array[i]);
+		printf("%2.2x%c", asoc->mapping_array[i], ((i + 1) % 16) ? ' ' : '\n');
 		if (((i + 1) % 16) == 0)
 			printf("\n");
 	}
-	printf("\n");
-	printf("NR Mapping size:%d baseTSN:%8.8x highestTSN:%8.8x\n",
-	    asoc->mapping_array_size,
-	    asoc->mapping_array_base_tsn,
-	    asoc->highest_tsn_inside_nr_map
-	    );
-	limit = asoc->mapping_array_size;
-	for (i = asoc->mapping_array_size; i >= 0; i--) {
-		if (asoc->nr_mapping_array[i]) {
-			limit = i;
+	if (limit % 16)
+		printf("\n");
+	for (limit = asoc->mapping_array_size; limit > 1; limit--) {
+		if (asoc->nr_mapping_array[limit - 1]) {
 			break;
 		}
 	}
-	if (limit == 0)
-		limit = 1;
-
+	printf("Non renegable mapping array (last %d entries are zero):\n", asoc->mapping_array_size - limit);
 	for (i = 0; i < limit; i++) {
-		printf("%2.2x ", asoc->nr_mapping_array[i]);
-		if (((i + 1) % 16) == 0)
-			printf("\n");
+		printf("%2.2x%c", asoc->mapping_array[i], ((i + 1) % 16) ? ' ' : '\n');
 	}
-	printf("\n");
+	if (limit % 16)
+		printf("\n");
 }
 
 int
@@ -1240,9 +1228,7 @@ sctp_expand_mapping_array(struct sctp_as
 	uint8_t *new_array1, *new_array2;
 	uint32_t new_size;
 
-
 	new_size = asoc->mapping_array_size + ((needed + 7) / 8 + SCTP_MAPPING_ARRAY_INCR);
-
 	SCTP_MALLOC(new_array1, uint8_t *, new_size, SCTP_M_MAP);
 	SCTP_MALLOC(new_array2, uint8_t *, new_size, SCTP_M_MAP);
 	if ((new_array1 == NULL) || (new_array2 == NULL)) {

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 08:00:27 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 7949B106566C;
	Wed,  7 Apr 2010 08:00:27 +0000 (UTC)
	(envelope-from netchild@freebsd.org)
Received: from mail.ebusiness-leidinger.de (mail.ebusiness-leidinger.de
	[217.11.53.44])
	by mx1.freebsd.org (Postfix) with ESMTP id 03CC48FC17;
	Wed,  7 Apr 2010 08:00:26 +0000 (UTC)
Received: from outgoing.leidinger.net (pD9E2D3E3.dip.t-dialin.net
	[217.226.211.227])
	by mail.ebusiness-leidinger.de (Postfix) with ESMTPSA id 2BD468442CF;
	Wed,  7 Apr 2010 10:00:21 +0200 (CEST)
Received: from webmail.leidinger.net (webmail.leidinger.net [192.168.1.102])
	by outgoing.leidinger.net (Postfix) with ESMTP id 6E3F7504E;
	Wed,  7 Apr 2010 10:00:16 +0200 (CEST)
Received: (from www@localhost)
	by webmail.leidinger.net (8.14.3/8.13.8/Submit) id o3780Geb058012;
	Wed, 7 Apr 2010 10:00:16 +0200 (CEST)
	(envelope-from netchild@FreeBSD.org)
Received: from pslux.cec.eu.int (pslux.cec.eu.int [158.169.9.14]) by
	webmail.leidinger.net (Horde Framework) with HTTP; Wed, 07 Apr 2010
	10:00:15 +0200
Message-ID: <20100407100015.117169nw2iu6xp4w@webmail.leidinger.net>
Date: Wed, 07 Apr 2010 10:00:15 +0200
From: Alexander Leidinger 
To: "M. Warner Losh" 
References: <20100405143123.14716pelm4tos2kg@webmail.leidinger.net>
	<20100405133505.GK2415@deviant.kiev.zoral.com.ua>
	<20100405181450.13494itjj2ehj5og@webmail.leidinger.net>
	<20100406.105417.934842008305588111.imp@bsdimp.com>
In-Reply-To: <20100406.105417.934842008305588111.imp@bsdimp.com>
MIME-Version: 1.0
Content-Type: text/plain;
 charset=UTF-8;
 DelSp="Yes";
 format="flowed"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit
User-Agent: Dynamic Internet Messaging Program (DIMP) H3 (1.1.4)
X-EBL-MailScanner-Information: Please contact the ISP for more information
X-EBL-MailScanner-ID: 2BD468442CF.62636
X-EBL-MailScanner: Found to be clean
X-EBL-MailScanner-SpamCheck: not spam, spamhaus-ZEN,
	SpamAssassin (not cached, score=-0.763, required 6,
	autolearn=disabled, ALL_TRUSTED -1.44, J_CHICKENPOX_83 0.60,
	TW_SV 0.08)
X-EBL-MailScanner-From: netchild@freebsd.org
X-EBL-MailScanner-Watermark: 1271232022.03556@SbFFZiGcYqDht0wdGx+Mow
X-EBL-Spam-Status: No
Cc: kostikbel@gmail.com, svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org,
	src-committers@FreeBSD.org
Subject: Re: svn commit: r206082 - in head: . share/man/man7 share/mk
 sys/conf
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 08:00:27 -0000

Quoting "M. Warner Losh"  (from Tue, 06 Apr 2010  
10:54:17 -0600 (MDT)):

> In message: <20100405181450.13494itjj2ehj5og@webmail.leidinger.net>
>             Alexander Leidinger  writes:
> : Warner, do you mind if I back-out r206082 and change the place where
> : NORMAL_CTFCONVERT is used instead (fist I have to search for it
> : again... not today)? It would make it consistent with all other places
> : (SYSTEM_CTFCONVERT and the plain test and use of CTFxxx).
>
> Go ahead.  I just did the fast and dirty fix.  I though it was
> consistent with how other things were done, but if not, feel free to
> correct it.  Also, see bde's commentary :)

I can not find it, can you please forward it to me?

Here is what I have ATM (copy&paste, so tabs are probably mangled):
---snip---
Index: usr.sbin/config/mkmakefile.c
===================================================================
--- usr.sbin/config/mkmakefile.c        (revision 206031)
+++ usr.sbin/config/mkmakefile.c        (working copy)
@@ -741,7 +741,7 @@
                                 printf("config: don't know rules for  
%s\n", np);                                break;
                         }
-                       snprintf(cmd, sizeof(cmd), "${%s_%c%s}\n.if  
defined(NORMAL_CTFCONVERT) &&  
!empty(NORMAL_CTFCONVERT)\n\t${NORMAL_CTFCONVERT}\n.endif", ftype,
+                       snprintf(cmd, sizeof(cmd),  
"${%s_%c%s}\n\t@${NORMAL_CTFCONVERT}", ftype,
                             toupper(och),
                             ftp->f_flags & NOWERROR ? "_NOWERROR" : "");
                         compilewith = cmd;
Index: sys/conf/kern.pre.mk
===================================================================
--- sys/conf/kern.pre.mk        (revision 206248)
+++ sys/conf/kern.pre.mk        (working copy)
@@ -128,7 +128,7 @@
  NORMAL_M= ${AWK} -f $S/tools/makeobjops.awk ${.IMPSRC} -c ; \
           ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.PREFIX}.c

-NORMAL_CTFCONVERT= @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] ||  
${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+NORMAL_CTFCONVERT= [ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] ||  
${CTFCONVERT} ${CTFFLAGS} ${.TARGET}

  NORMAL_LINT=   ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC}

---snip---

Bye,
Alexander.

-- 
http://www.Leidinger.net  Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org     netchild @ FreeBSD.org  : PGP ID = 72077137
Look before you leap.
		-- Samuel Butler


From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 08:23:58 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 88D9B106566B;
	Wed,  7 Apr 2010 08:23:58 +0000 (UTC)
	(envelope-from luigi@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 77E748FC0A;
	Wed,  7 Apr 2010 08:23:58 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o378Nwk3037903;
	Wed, 7 Apr 2010 08:23:58 GMT (envelope-from luigi@svn.freebsd.org)
Received: (from luigi@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o378Nwgr037901;
	Wed, 7 Apr 2010 08:23:58 GMT (envelope-from luigi@svn.freebsd.org)
Message-Id: <201004070823.o378Nwgr037901@svn.freebsd.org>
From: Luigi Rizzo 
Date: Wed, 7 Apr 2010 08:23:58 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206339 - head/sys/netinet/ipfw
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 08:23:58 -0000

Author: luigi
Date: Wed Apr  7 08:23:58 2010
New Revision: 206339
URL: http://svn.freebsd.org/changeset/base/206339

Log:
  Hopefully fix the recent breakage in rule deletion.
  A few  more tests and this will also go into -stable where
  the problem is more critical.

Modified:
  head/sys/netinet/ipfw/ip_fw_sockopt.c

Modified: head/sys/netinet/ipfw/ip_fw_sockopt.c
==============================================================================
--- head/sys/netinet/ipfw/ip_fw_sockopt.c	Wed Apr  7 04:51:19 2010	(r206338)
+++ head/sys/netinet/ipfw/ip_fw_sockopt.c	Wed Apr  7 08:23:58 2010	(r206339)
@@ -232,12 +232,49 @@ ipfw_reap_rules(struct ip_fw *head)
 	}
 }
 
+/*
+ * Used by del_entry() to check if a rule should be kept.
+ * Returns 1 if the rule must be kept, 0 otherwise.
+ *
+ * Called with cmd = {0,1,5}.
+ * cmd == 0 matches on rule numbers, excludes rules in RESVD_SET if n == 0 ;
+ * cmd == 1 matches on set numbers only, rule numbers are ignored;
+ * cmd == 5 matches on rule and set numbers.
+ *
+ * n == 0 is a wildcard for rule numbers, there is no wildcard for sets.
+ *
+ * Rules to keep are
+ *	(default || reserved || !match_set || !match_number)
+ * where
+ *   default ::= (rule->rulenum == IPFW_DEFAULT_RULE)
+ *	// the default rule is always protected
+ *
+ *   reserved ::= (cmd == 0 && n == 0 && rule->set == RESVD_SET)
+ *	// RESVD_SET is protected only if cmd == 0 and n == 0 ("ipfw flush")
+ *
+ *   match_set ::= (cmd == 0 || rule->set == set)
+ *	// set number is ignored for cmd == 0
+ *
+ *   match_number ::= (cmd == 1 || n == 0 || n == rule->rulenum)
+ *	// number is ignored for cmd == 1 or n == 0
+ *
+ */
+static int
+keep_rule(struct ip_fw *rule, uint8_t cmd, uint8_t set, uint32_t n)
+{
+	return
+		 (rule->rulenum == IPFW_DEFAULT_RULE)		||
+		 (cmd == 0 && n == 0 && rule->set == RESVD_SET)	||
+		!(cmd == 0 || rule->set == set)			||
+		!(cmd == 1 || n == 0 || n == rule->rulenum);
+}
+
 /**
- * Remove all rules with given number, and also do set manipulation.
+ * Remove all rules with given number, or do set manipulation.
  * Assumes chain != NULL && *chain != NULL.
  *
- * The argument is an u_int32_t. The low 16 bit are the rule or set number,
- * the next 8 bits are the new set, the top 8 bits are the command:
+ * The argument is an uint32_t. The low 16 bit are the rule or set number;
+ * the next 8 bits are the new set; the top 8 bits indicate the command:
  *
  *	0	delete rules numbered "rulenum"
  *	1	delete rules in set "rulenum"
@@ -247,26 +284,26 @@ ipfw_reap_rules(struct ip_fw *head)
  *	5	delete rules "rulenum" and set "new_set"
  */
 static int
-del_entry(struct ip_fw_chain *chain, u_int32_t arg)
+del_entry(struct ip_fw_chain *chain, uint32_t arg)
 {
 	struct ip_fw *rule;
-	uint32_t rulenum;	/* rule or old_set */
+	uint32_t num;	/* rule number or old_set */
 	uint8_t cmd, new_set;
-	int start, end = 0, i, ofs, n;
+	int start, end, i, ofs, n;
 	struct ip_fw **map = NULL;
 	int error = 0;
 
-	rulenum = arg & 0xffff;
+	num = arg & 0xffff;
 	cmd = (arg >> 24) & 0xff;
 	new_set = (arg >> 16) & 0xff;
 
 	if (cmd > 5 || new_set > RESVD_SET)
 		return EINVAL;
 	if (cmd == 0 || cmd == 2 || cmd == 5) {
-		if (rulenum >= IPFW_DEFAULT_RULE)
+		if (num >= IPFW_DEFAULT_RULE)
 			return EINVAL;
 	} else {
-		if (rulenum > RESVD_SET)	/* old_set */
+		if (num > RESVD_SET)	/* old_set */
 			return EINVAL;
 	}
 
@@ -274,20 +311,24 @@ del_entry(struct ip_fw_chain *chain, u_i
 	chain->reap = NULL;	/* prepare for deletions */
 
 	switch (cmd) {
-	case 0:	/* delete rules "rulenum" (rulenum == 0 matches all) */
+	case 0:	/* delete rules "num" (num == 0 matches all) */
 	case 1:	/* delete all rules in set N */
 	case 5: /* delete rules with number N and set "new_set". */
 
 		/*
 		 * Locate first rule to delete (start), the rule after
 		 * the last one to delete (end), and count how many
-		 * rules to delete (n)
+		 * rules to delete (n). Always use keep_rule() to
+		 * determine which rules to keep.
 		 */
 		n = 0;
-		if (cmd == 1) { /* look for a specific set, must scan all */
-			new_set = rulenum;
-			for (start = -1, i = 0; i < chain->n_rules; i++) {
-				if (chain->map[i]->set != new_set)
+		if (cmd == 1) {
+			/* look for a specific set including RESVD_SET.
+			 * Must scan the entire range, ignore num.
+			 */
+			new_set = num;
+			for (start = -1, end = i = 0; i < chain->n_rules; i++) {
+				if (keep_rule(chain->map[i], cmd, new_set, 0))
 					continue;
 				if (start < 0)
 					start = i;
@@ -296,61 +337,54 @@ del_entry(struct ip_fw_chain *chain, u_i
 			}
 			end++;	/* first non-matching */
 		} else {
-			start = ipfw_find_rule(chain, rulenum, 0);
+			/* Optimized search on rule numbers */
+			start = ipfw_find_rule(chain, num, 0);
 			for (end = start; end < chain->n_rules; end++) {
 				rule = chain->map[end];
-				if (rulenum > 0 && rule->rulenum != rulenum)
+				if (num > 0 && rule->rulenum != num)
 					break;
-				if (rule->set != RESVD_SET &&
-				    (cmd == 0 || rule->set == new_set) )
+				if (!keep_rule(rule, cmd, new_set, num))
 					n++;
 			}
 		}
-		if (n == 0 && arg == 0)
-			break; /* special case, flush on empty ruleset */
-		/* allocate the map, if needed */
-		if (n > 0)
-			map = get_map(chain, -n, 1 /* locked */);
-		if (n == 0 || map == NULL) {
+
+		if (n == 0) {
+			/* A flush request (arg == 0) on empty ruleset
+			 * returns with no error. On the contrary,
+			 * if there is no match on a specific request,
+			 * we return EINVAL.
+			 */
+			error = (arg == 0) ? 0 : EINVAL;
+			break;
+		}
+
+		/* We have something to delete. Allocate the new map */
+		map = get_map(chain, -n, 1 /* locked */);
+		if (map == NULL) {
 			error = EINVAL;
 			break;
 		}
-		/*
-		 * bcopy the initial part of the map, then individually
-		 * copy all matching entries between start and end,
-		 * and then bcopy the final part.
-		 * Once we are done we can swap maps and clean up the
-		 * deleted rules (unfortunately we need to repeat a
-		 * convoluted test). Rules to keep are
-		 *	(set == RESVD_SET || !match_set || !match_rule)
-		 * where
-		 *   match_set ::= (cmd == 0 || rule->set == new_set)
-		 *   match_rule ::= (cmd == 1 || rule->rulenum == rulenum)
-		 */
+
+		/* 1. bcopy the initial part of the map */
 		if (start > 0)
 			bcopy(chain->map, map, start * sizeof(struct ip_fw *));
+		/* 2. copy active rules between start and end */
 		for (i = ofs = start; i < end; i++) {
 			rule = chain->map[i];
-			if (rule->set == RESVD_SET ||
-			    !(cmd == 0 || rule->set == new_set) ||
-			    !(cmd == 1 || rule->rulenum == rulenum) ) {
-				map[ofs++] = chain->map[i];
-			}
+			if (keep_rule(rule, cmd, new_set, num))
+				map[ofs++] = rule;
 		}
+		/* 3. copy the final part of the map */
 		bcopy(chain->map + end, map + ofs,
 			(chain->n_rules - end) * sizeof(struct ip_fw *));
-
+		/* 4. swap the maps (under BH_LOCK) */
 		map = swap_map(chain, map, chain->n_rules - n);
-		/* now remove the rules deleted */
+		/* 5. now remove the rules deleted from the old map */
 		for (i = start; i < end; i++) {
 			int l;
 			rule = map[i];
-			/* same test as above */
-			if (rule->set == RESVD_SET ||
-			    !(cmd == 0 || rule->set == new_set) ||
-			    !(cmd == 1 || rule->rulenum == rulenum) )
+			if (keep_rule(rule, cmd, new_set, num))
 				continue;
-
 			l = RULESIZE(rule);
 			chain->static_len -= l;
 			ipfw_remove_dyn_children(rule);
@@ -359,32 +393,38 @@ del_entry(struct ip_fw_chain *chain, u_i
 		}
 		break;
 
-	case 2:	/* move rules with given number to new set */
-		for (i = 0; i < chain->n_rules; i++) {
+	/*
+	 * In the next 3 cases the loop stops at (n_rules - 1)
+	 * because the default rule is never eligible..
+	 */
+
+	case 2:	/* move rules with given RULE number to new set */
+		for (i = 0; i < chain->n_rules - 1; i++) {
 			rule = chain->map[i];
-			if (rule->rulenum == rulenum)
+			if (rule->rulenum == num)
 				rule->set = new_set;
 		}
 		break;
 
-	case 3: /* move rules with given set number to new set */
-		for (i = 0; i < chain->n_rules; i++) {
+	case 3: /* move rules with given SET number to new set */
+		for (i = 0; i < chain->n_rules - 1; i++) {
 			rule = chain->map[i];
-			if (rule->set == rulenum)
+			if (rule->set == num)
 				rule->set = new_set;
 		}
 		break;
 
 	case 4: /* swap two sets */
-		for (i = 0; i < chain->n_rules; i++) {
+		for (i = 0; i < chain->n_rules - 1; i++) {
 			rule = chain->map[i];
-			if (rule->set == rulenum)
+			if (rule->set == num)
 				rule->set = new_set;
 			else if (rule->set == new_set)
-				rule->set = rulenum;
+				rule->set = num;
 		}
 		break;
 	}
+
 	rule = chain->reap;
 	chain->reap = NULL;
 	IPFW_UH_WUNLOCK(chain);

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 13:02:20 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id D2C6A106567B;
	Wed,  7 Apr 2010 13:02:20 +0000 (UTC)
	(envelope-from luigi@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id C16018FC0C;
	Wed,  7 Apr 2010 13:02:20 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37D2KTl002269;
	Wed, 7 Apr 2010 13:02:20 GMT (envelope-from luigi@svn.freebsd.org)
Received: (from luigi@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37D2KKV002267;
	Wed, 7 Apr 2010 13:02:20 GMT (envelope-from luigi@svn.freebsd.org)
Message-Id: <201004071302.o37D2KKV002267@svn.freebsd.org>
From: Luigi Rizzo 
Date: Wed, 7 Apr 2010 13:02:20 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206341 - head/sys/modules/dummynet
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 13:02:20 -0000

Author: luigi
Date: Wed Apr  7 13:02:20 2010
New Revision: 206341
URL: http://svn.freebsd.org/changeset/base/206341

Log:
  add priority scheduler to the module

Modified:
  head/sys/modules/dummynet/Makefile

Modified: head/sys/modules/dummynet/Makefile
==============================================================================
--- head/sys/modules/dummynet/Makefile	Wed Apr  7 12:42:49 2010	(r206340)
+++ head/sys/modules/dummynet/Makefile	Wed Apr  7 13:02:20 2010	(r206341)
@@ -7,6 +7,7 @@ KMOD=   dummynet
 SRCS=   ip_dummynet.c
 SRCS+= ip_dn_glue.c ip_dn_io.c
 SRCS+= dn_heap.c dn_sched_fifo.c dn_sched_qfq.c dn_sched_rr.c dn_sched_wf2q.c 
+SRCS+= dn_sched_prio.c
 SRCS+=	opt_inet6.h
 
 .if !defined(KERNBUILDDIR)

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 15:29:14 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 04516106566B;
	Wed,  7 Apr 2010 15:29:14 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id E699F8FC0A;
	Wed,  7 Apr 2010 15:29:13 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37FTDrI035634;
	Wed, 7 Apr 2010 15:29:13 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37FTDi0035619;
	Wed, 7 Apr 2010 15:29:13 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004071529.o37FTDi0035619@svn.freebsd.org>
From: Rui Paulo 
Date: Wed, 7 Apr 2010 15:29:13 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206358 - in head/sys: conf dev/bwi dev/bwn dev/iwn
	dev/ral dev/usb/wlan dev/wpi modules/wlan net80211
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 15:29:14 -0000

Author: rpaulo
Date: Wed Apr  7 15:29:13 2010
New Revision: 206358
URL: http://svn.freebsd.org/changeset/base/206358

Log:
  net80211 rate control framework (net80211 ratectl).
  
  This framework allows drivers to abstract the rate control algorithm and
  just feed the framework with the usable parameters. The rate control
  framework will now deal with passing the parameters to the selected
  algorithm. Right now we have AMRR (the default) and RSSADAPT but there's
  no way to select one with ifconfig, yet.
  The objective is to have more rate control algorithms in the net80211
  stack so all drivers[0] can use it. Ideally, we'll have the well-known
  sample rate control algorithm in the net80211 at some point so all
  drivers can use it (not just ath).
  
  [0] all drivers that do rate control in software, that is.
  
  Reviewed by:	bschmidt, thompsa, weyongo
  MFC after:	1 months

Added:
  head/sys/net80211/ieee80211_ratectl.c   (contents, props changed)
  head/sys/net80211/ieee80211_ratectl.h   (contents, props changed)
Modified:
  head/sys/conf/files
  head/sys/dev/bwi/if_bwi.c
  head/sys/dev/bwi/if_bwivar.h
  head/sys/dev/bwn/if_bwn.c
  head/sys/dev/bwn/if_bwnvar.h
  head/sys/dev/iwn/if_iwn.c
  head/sys/dev/iwn/if_iwnvar.h
  head/sys/dev/ral/rt2560.c
  head/sys/dev/ral/rt2560var.h
  head/sys/dev/ral/rt2661.c
  head/sys/dev/ral/rt2661var.h
  head/sys/dev/usb/wlan/if_rum.c
  head/sys/dev/usb/wlan/if_rumvar.h
  head/sys/dev/usb/wlan/if_run.c
  head/sys/dev/usb/wlan/if_runvar.h
  head/sys/dev/usb/wlan/if_ural.c
  head/sys/dev/usb/wlan/if_uralvar.h
  head/sys/dev/usb/wlan/if_urtw.c
  head/sys/dev/usb/wlan/if_zyd.c
  head/sys/dev/usb/wlan/if_zydreg.h
  head/sys/dev/wpi/if_wpi.c
  head/sys/dev/wpi/if_wpivar.h
  head/sys/modules/wlan/Makefile
  head/sys/net80211/ieee80211.c
  head/sys/net80211/ieee80211_amrr.c
  head/sys/net80211/ieee80211_amrr.h
  head/sys/net80211/ieee80211_freebsd.h
  head/sys/net80211/ieee80211_node.c
  head/sys/net80211/ieee80211_node.h
  head/sys/net80211/ieee80211_rssadapt.c
  head/sys/net80211/ieee80211_rssadapt.h
  head/sys/net80211/ieee80211_var.h

Modified: head/sys/conf/files
==============================================================================
--- head/sys/conf/files	Wed Apr  7 15:19:52 2010	(r206357)
+++ head/sys/conf/files	Wed Apr  7 15:29:13 2010	(r206358)
@@ -2380,6 +2380,7 @@ net80211/ieee80211_phy.c	optional wlan
 net80211/ieee80211_power.c	optional wlan
 net80211/ieee80211_proto.c	optional wlan
 net80211/ieee80211_radiotap.c	optional wlan
+net80211/ieee80211_ratectl.c	optional wlan
 net80211/ieee80211_regdomain.c	optional wlan
 net80211/ieee80211_rssadapt.c	optional wlan wlan_rssadapt
 net80211/ieee80211_scan.c	optional wlan

Modified: head/sys/dev/bwi/if_bwi.c
==============================================================================
--- head/sys/dev/bwi/if_bwi.c	Wed Apr  7 15:19:52 2010	(r206357)
+++ head/sys/dev/bwi/if_bwi.c	Wed Apr  7 15:29:13 2010	(r206358)
@@ -64,8 +64,8 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 #include 
-#include 
 #include 
+#include 
 
 #include 
 
@@ -112,9 +112,6 @@ static void	bwi_set_channel(struct ieee8
 static void	bwi_scan_end(struct ieee80211com *);
 static int	bwi_newstate(struct ieee80211vap *, enum ieee80211_state, int);
 static void	bwi_updateslot(struct ifnet *);
-static struct ieee80211_node *bwi_node_alloc(struct ieee80211vap *,
-		    const uint8_t [IEEE80211_ADDR_LEN]);
-static void	bwi_newassoc(struct ieee80211_node *, int);
 static int	bwi_media_change(struct ifnet *);
 
 static void	bwi_calibrate(void *);
@@ -525,7 +522,6 @@ bwi_attach(struct bwi_softc *sc)
 	ic->ic_vap_delete = bwi_vap_delete;
 	ic->ic_raw_xmit = bwi_raw_xmit;
 	ic->ic_updateslot = bwi_updateslot;
-	ic->ic_node_alloc = bwi_node_alloc;
 	ic->ic_scan_start = bwi_scan_start;
 	ic->ic_scan_end = bwi_scan_end;
 	ic->ic_set_channel = bwi_set_channel;
@@ -621,10 +617,7 @@ bwi_vap_create(struct ieee80211com *ic,
 #if 0
 	vap->iv_update_beacon = bwi_beacon_update;
 #endif
-	ieee80211_amrr_init(&bvp->bv_amrr, vap,
-	    IEEE80211_AMRR_MIN_SUCCESS_THRESHOLD,
-	    IEEE80211_AMRR_MAX_SUCCESS_THRESHOLD,
-	    500 /*ms*/);
+	ieee80211_ratectl_init(vap);
 
 	/* complete setup */
 	ieee80211_vap_attach(vap, bwi_media_change, ieee80211_media_status);
@@ -637,7 +630,7 @@ bwi_vap_delete(struct ieee80211vap *vap)
 {
 	struct bwi_vap *bvp = BWI_VAP(vap);
 
-	ieee80211_amrr_cleanup(&bvp->bv_amrr);
+	ieee80211_ratectl_deinit(vap);
 	ieee80211_vap_detach(vap);
 	free(bvp, M_80211_VAP);
 }
@@ -1831,7 +1824,7 @@ bwi_newstate(struct ieee80211vap *vap, e
 #endif
 		if (vap->iv_opmode == IEEE80211_M_STA) {
 			/* fake a join to init the tx rate */
-			bwi_newassoc(ni, 1);
+			ic->ic_newassoc(ni, 1);
 		}
 
 		callout_reset(&sc->sc_calib_ch, hz, bwi_calibrate, sc);
@@ -1842,25 +1835,6 @@ back:
 	return error;
 }
 
-/* ARGUSED */
-static struct ieee80211_node *
-bwi_node_alloc(struct ieee80211vap *vap, const uint8_t mac[IEEE80211_ADDR_LEN])
-{
-	struct bwi_node *bn;
-
-	bn = malloc(sizeof(struct bwi_node), M_80211_NODE, M_NOWAIT | M_ZERO);
-	return bn != NULL ? &bn->ni : NULL;
-}
-
-static void
-bwi_newassoc(struct ieee80211_node *ni, int isnew)
-{
-	struct ieee80211vap *vap = ni->ni_vap;
-
-	ieee80211_amrr_node_init(&BWI_VAP(vap)->bv_amrr,
-	    &BWI_NODE(ni)->amn, ni);
-}
-
 static int
 bwi_media_change(struct ifnet *ifp)
 {
@@ -3012,7 +2986,7 @@ bwi_encap(struct bwi_softc *sc, int idx,
 	} else if (tp->ucastrate != IEEE80211_FIXED_RATE_NONE) {
 		rate = rate_fb = tp->ucastrate;
 	} else {
-		rix = ieee80211_amrr_choose(ni, &BWI_NODE(ni)->amn);
+		rix = ieee80211_ratectl_rate(ni, NULL, pkt_len);
 		rate = ni->ni_txrate;
 
 		if (rix > 0) {
@@ -3369,6 +3343,7 @@ _bwi_txeof(struct bwi_softc *sc, uint16_
 	struct bwi_txbuf *tb;
 	int ring_idx, buf_idx;
 	struct ieee80211_node *ni;
+	struct ieee80211vap *vap;
 
 	if (tx_id == 0) {
 		if_printf(ifp, "%s: zero tx id\n", __func__);
@@ -3393,8 +3368,8 @@ _bwi_txeof(struct bwi_softc *sc, uint16_
 	bus_dmamap_unload(sc->sc_buf_dtag, tb->tb_dmap);
 
 	ni = tb->tb_ni;
+	vap = ni->ni_vap;
 	if (tb->tb_ni != NULL) {
-		struct bwi_node *bn = (struct bwi_node *) tb->tb_ni;
 		const struct bwi_txbuf_hdr *hdr =
 		    mtod(tb->tb_mbuf, const struct bwi_txbuf_hdr *);
 
@@ -3407,8 +3382,9 @@ _bwi_txeof(struct bwi_softc *sc, uint16_
 			 * well so to avoid over-aggressive downshifting we
 			 * treat any number of retries as "1".
 			 */
-			ieee80211_amrr_tx_complete(&bn->amn, acked,
-			    data_txcnt > 1);
+			ieee80211_ratectl_tx_complete(vap, ni,
+			    (data_txcnt > 1) ? IEEE80211_RATECTL_TX_SUCCESS :
+			        IEEE80211_RATECTL_TX_FAILURE, &acked, NULL);
 		}
 
 		/*

Modified: head/sys/dev/bwi/if_bwivar.h
==============================================================================
--- head/sys/dev/bwi/if_bwivar.h	Wed Apr  7 15:19:52 2010	(r206357)
+++ head/sys/dev/bwi/if_bwivar.h	Wed Apr  7 15:29:13 2010	(r206358)
@@ -533,15 +533,8 @@ struct bwi_rx_radiotap_hdr {
 	/* TODO: sq */
 };
 
-struct bwi_node {
-	struct ieee80211_node		ni;	/* must be the first */
-	struct ieee80211_amrr_node	amn;
-};
-#define	BWI_NODE(ni)	((struct bwi_node *)(ni))
-
 struct bwi_vap {
 	struct ieee80211vap	bv_vap;
-	struct ieee80211_amrr	bv_amrr;
 	int			(*bv_newstate)(struct ieee80211vap *,
 				    enum ieee80211_state, int);
 };

Modified: head/sys/dev/bwn/if_bwn.c
==============================================================================
--- head/sys/dev/bwn/if_bwn.c	Wed Apr  7 15:19:52 2010	(r206357)
+++ head/sys/dev/bwn/if_bwn.c	Wed Apr  7 15:29:13 2010	(r206358)
@@ -67,8 +67,8 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 #include 
-#include 
 #include 
+#include 
 
 #include 
 #include 
@@ -180,18 +180,14 @@ static void	bwn_addchannels(struct ieee8
 		    const struct bwn_channelinfo *, int);
 static int	bwn_raw_xmit(struct ieee80211_node *, struct mbuf *,
 		    const struct ieee80211_bpf_params *);
-static void	bwn_newassoc(struct ieee80211_node *, int);
 static void	bwn_updateslot(struct ifnet *);
 static void	bwn_update_promisc(struct ifnet *);
 static void	bwn_wme_init(struct bwn_mac *);
 static int	bwn_wme_update(struct ieee80211com *);
-static struct ieee80211_node *bwn_node_alloc(struct ieee80211vap *,
-		    const uint8_t [IEEE80211_ADDR_LEN]);
 static void	bwn_wme_clear(struct bwn_softc *);
 static void	bwn_wme_load(struct bwn_mac *);
 static void	bwn_wme_loadparams(struct bwn_mac *,
 		    const struct wmeParams *, uint16_t);
-static void	bwn_node_cleanup(struct ieee80211_node *);
 static void	bwn_scan_start(struct ieee80211com *);
 static void	bwn_scan_end(struct ieee80211com *);
 static void	bwn_set_channel(struct ieee80211com *);
@@ -1088,15 +1084,10 @@ bwn_attach_post(struct bwn_softc *sc)
 
 	/* override default methods */
 	ic->ic_raw_xmit = bwn_raw_xmit;
-	ic->ic_newassoc = bwn_newassoc;
 	ic->ic_updateslot = bwn_updateslot;
 	ic->ic_update_promisc = bwn_update_promisc;
 	ic->ic_wme.wme_update = bwn_wme_update;
 
-	ic->ic_node_alloc = bwn_node_alloc;
-	sc->sc_node_cleanup = ic->ic_node_cleanup;
-	ic->ic_node_cleanup = bwn_node_cleanup;
-
 	ic->ic_scan_start = bwn_scan_start;
 	ic->ic_scan_end = bwn_scan_end;
 	ic->ic_set_channel = bwn_set_channel;
@@ -2772,20 +2763,6 @@ bwn_raw_xmit(struct ieee80211_node *ni, 
 }
 
 /*
- * Setup driver-specific state for a newly associated node.
- * Note that we're called also on a re-associate, the isnew
- * param tells us if this is the first time or not.
- */
-static void
-bwn_newassoc(struct ieee80211_node *ni, int isnew)
-{
-	struct ieee80211vap *vap = ni->ni_vap;
-
-	ieee80211_amrr_node_init(&BWN_VAP(vap)->bv_amrr,
-	    &BWN_NODE(ni)->bn_amn, ni);
-}
-
-/*
  * Callback from the 802.11 layer to update the slot time
  * based on the current setting.  We use it to notify the
  * firmware of ERP changes and the f/w takes care of things
@@ -2857,32 +2834,6 @@ bwn_wme_update(struct ieee80211com *ic)
 	return (0);
 }
 
-static struct ieee80211_node *
-bwn_node_alloc(struct ieee80211vap *vap, const uint8_t mac[IEEE80211_ADDR_LEN])
-{
-	struct ieee80211com *ic = vap->iv_ic;
-	struct bwn_softc *sc = ic->ic_ifp->if_softc;
-	const size_t space = sizeof(struct bwn_node);
-	struct bwn_node *bn;
-
-	bn = malloc(space, M_80211_NODE, M_NOWAIT|M_ZERO);
-	if (bn == NULL) {
-		/* XXX stat+msg */
-		return (NULL);
-	}
-	DPRINTF(sc, BWN_DEBUG_NODE, "%s: bn %p\n", __func__, bn);
-	return (&bn->bn_node);
-}
-
-static void
-bwn_node_cleanup(struct ieee80211_node *ni)
-{
-	struct ieee80211com *ic = ni->ni_ic;
-	struct bwn_softc *sc = ic->ic_ifp->if_softc;
-
-	sc->sc_node_cleanup(ni);
-}
-
 static void
 bwn_scan_start(struct ieee80211com *ic)
 {
@@ -3018,10 +2969,7 @@ bwn_vap_create(struct ieee80211com *ic,
 	/* override max aid so sta's cannot assoc when we're out of sta id's */
 	vap->iv_max_aid = BWN_STAID_MAX;
 
-	ieee80211_amrr_init(&bvp->bv_amrr, vap,
-	    IEEE80211_AMRR_MIN_SUCCESS_THRESHOLD,
-	    IEEE80211_AMRR_MAX_SUCCESS_THRESHOLD,
-	    500 /*ms*/);
+	ieee80211_ratectl_init(vap);
 
 	/* complete setup */
 	ieee80211_vap_attach(vap, ieee80211_media_change,
@@ -3034,7 +2982,7 @@ bwn_vap_delete(struct ieee80211vap *vap)
 {
 	struct bwn_vap *bvp = BWN_VAP(vap);
 
-	ieee80211_amrr_cleanup(&bvp->bv_amrr);
+	ieee80211_ratectl_deinit(vap);
 	ieee80211_vap_detach(vap);
 	free(bvp, M_80211_VAP);
 }
@@ -9040,12 +8988,12 @@ bwn_handle_txeof(struct bwn_mac *mac, co
 	struct bwn_dma_ring *dr;
 	struct bwn_dmadesc_generic *desc;
 	struct bwn_dmadesc_meta *meta;
-	struct bwn_node *bn;
 	struct bwn_pio_txqueue *tq;
 	struct bwn_pio_txpkt *tp = NULL;
 	struct bwn_softc *sc = mac->mac_sc;
 	struct bwn_stats *stats = &mac->mac_stats;
 	struct ieee80211_node *ni;
+	struct ieee80211vap *vap;
 	int slot;
 
 	BWN_ASSERT_LOCKED(mac->mac_sc);
@@ -9074,9 +9022,12 @@ bwn_handle_txeof(struct bwn_mac *mac, co
 				dr->getdesc(dr, slot, &desc, &meta);
 				if (meta->mt_islast) {
 					ni = meta->mt_ni;
-					bn = (struct bwn_node *)ni;
-					ieee80211_amrr_tx_complete(&bn->bn_amn,
-					    status->ack, 0);
+					vap = ni->ni_vap;
+					ieee80211_ratectl_tx_complete(vap, ni,
+					    status->ack ?
+					      IEEE80211_RATECTL_TX_SUCCESS :
+					      IEEE80211_RATECTL_TX_FAILURE,
+					    NULL, 0);
 					break;
 				}
 				slot = bwn_dma_nextslot(dr, slot);
@@ -9092,8 +9043,12 @@ bwn_handle_txeof(struct bwn_mac *mac, co
 				return;
 			}
 			ni = tp->tp_ni;
-			bn = (struct bwn_node *)ni;
-			ieee80211_amrr_tx_complete(&bn->bn_amn, status->ack, 0);
+			vap = ni->ni_vap;
+			ieee80211_ratectl_tx_complete(vap, ni,
+			    status->ack ?
+			      IEEE80211_RATECTL_TX_SUCCESS :
+			      IEEE80211_RATECTL_TX_FAILURE,
+			    NULL, 0);
 		}
 		bwn_pio_handle_txeof(mac, status);
 	}
@@ -9678,7 +9633,7 @@ bwn_set_txhdr(struct bwn_mac *mac, struc
 	else if (tp->ucastrate != IEEE80211_FIXED_RATE_NONE)
 		rate = rate_fb = tp->ucastrate;
 	else {
-		rix = ieee80211_amrr_choose(ni, &BWN_NODE(ni)->bn_amn);
+		rix = ieee80211_ratectl_rate(ni, NULL, 0);
 		rate = ni->ni_txrate;
 
 		if (rix > 0)

Modified: head/sys/dev/bwn/if_bwnvar.h
==============================================================================
--- head/sys/dev/bwn/if_bwnvar.h	Wed Apr  7 15:19:52 2010	(r206357)
+++ head/sys/dev/bwn/if_bwnvar.h	Wed Apr  7 15:29:13 2010	(r206358)
@@ -883,18 +883,11 @@ struct bwn_mac {
 	TAILQ_ENTRY(bwn_mac)	mac_list;
 };
 
-struct bwn_node {
-	struct ieee80211_node		bn_node;	/* must be the first */
-	struct ieee80211_amrr_node	bn_amn;
-};
-#define	BWN_NODE(ni)			((struct bwn_node *)(ni))
-
 /*
  * Driver-specific vap state.
  */
 struct bwn_vap {
 	struct ieee80211vap		bv_vap;	/* base class */
-	struct ieee80211_amrr		bv_amrr;
 	int				(*bv_newstate)(struct ieee80211vap *,
 					    enum ieee80211_state, int);
 };

Modified: head/sys/dev/iwn/if_iwn.c
==============================================================================
--- head/sys/dev/iwn/if_iwn.c	Wed Apr  7 15:19:52 2010	(r206357)
+++ head/sys/dev/iwn/if_iwn.c	Wed Apr  7 15:29:13 2010	(r206358)
@@ -65,9 +65,9 @@ __FBSDID("$FreeBSD$");
 #include 
 
 #include 
-#include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -755,11 +755,7 @@ iwn_vap_create(struct ieee80211com *ic,
 	ivp->iv_newstate = vap->iv_newstate;
 	vap->iv_newstate = iwn_newstate;
 
-	ieee80211_amrr_init(&ivp->iv_amrr, vap,
-	    IEEE80211_AMRR_MIN_SUCCESS_THRESHOLD,
-	    IEEE80211_AMRR_MAX_SUCCESS_THRESHOLD,
-	    500 /* ms */);
-
+	ieee80211_ratectl_init(vap);
 	/* Complete setup. */
 	ieee80211_vap_attach(vap, ieee80211_media_change,
 	    ieee80211_media_status);
@@ -772,7 +768,7 @@ iwn_vap_delete(struct ieee80211vap *vap)
 {
 	struct iwn_vap *ivp = IWN_VAP(vap);
 
-	ieee80211_amrr_cleanup(&ivp->iv_amrr);
+	ieee80211_ratectl_deinit(vap);
 	ieee80211_vap_detach(vap);
 	free(ivp, M_80211_VAP);
 }
@@ -1858,11 +1854,8 @@ iwn_node_alloc(struct ieee80211vap *vap,
 void
 iwn_newassoc(struct ieee80211_node *ni, int isnew)
 {
-	struct ieee80211vap *vap = ni->ni_vap;
-	struct iwn_node *wn = (void *)ni;
-
-	ieee80211_amrr_node_init(&IWN_VAP(vap)->iv_amrr,
-	    &wn->amn, ni);
+	/* XXX move */
+	ieee80211_ratectl_node_init(ni);
 }
 
 int
@@ -2291,9 +2284,9 @@ iwn_tx_done(struct iwn_softc *sc, struct
 	struct ifnet *ifp = sc->sc_ifp;
 	struct iwn_tx_ring *ring = &sc->txq[desc->qid & 0xf];
 	struct iwn_tx_data *data = &ring->data[desc->idx];
-	struct iwn_node *wn = (void *)data->ni;
 	struct mbuf *m;
 	struct ieee80211_node *ni;
+	struct ieee80211vap *vap;
 
 	KASSERT(data->ni != NULL, ("no node"));
 
@@ -2302,6 +2295,7 @@ iwn_tx_done(struct iwn_softc *sc, struct
 	bus_dmamap_unload(ring->data_dmat, data->map);
 	m = data->m, data->m = NULL;
 	ni = data->ni, data->ni = NULL;
+	vap = ni->ni_vap;
 
 	if (m->m_flags & M_TXCB) {
 		/*
@@ -2331,11 +2325,11 @@ iwn_tx_done(struct iwn_softc *sc, struct
 	 */
 	if (status & 0x80) {
 		ifp->if_oerrors++;
-		ieee80211_amrr_tx_complete(&wn->amn,
-		    IEEE80211_AMRR_FAILURE, ackfailcnt);
+		ieee80211_ratectl_tx_complete(vap, ni,
+		    IEEE80211_RATECTL_TX_FAILURE, &ackfailcnt, NULL);
 	} else {
-		ieee80211_amrr_tx_complete(&wn->amn,
-		    IEEE80211_AMRR_SUCCESS, ackfailcnt);
+		ieee80211_ratectl_tx_complete(vap, ni,
+		    IEEE80211_RATECTL_TX_SUCCESS, &ackfailcnt, NULL);
 	}
 	m_freem(m);
 	ieee80211_free_node(ni);
@@ -2851,7 +2845,8 @@ iwn_tx_data(struct iwn_softc *sc, struct
 	else if (tp->ucastrate != IEEE80211_FIXED_RATE_NONE)
 		rate = tp->ucastrate;
 	else {
-		(void) ieee80211_amrr_choose(ni, &wn->amn);
+		/* XXX pass pktlen */
+		(void) ieee80211_ratectl_rate(ni, NULL, 0);
 		rate = ni->ni_txrate;
 	}
 	ridx = iwn_plcp_signal(rate);
@@ -6434,4 +6429,3 @@ DRIVER_MODULE(iwn, pci, iwn_driver, iwn_
 MODULE_DEPEND(iwn, pci, 1, 1, 1);
 MODULE_DEPEND(iwn, firmware, 1, 1, 1);
 MODULE_DEPEND(iwn, wlan, 1, 1, 1);
-MODULE_DEPEND(iwn, wlan_amrr, 1, 1, 1);

Modified: head/sys/dev/iwn/if_iwnvar.h
==============================================================================
--- head/sys/dev/iwn/if_iwnvar.h	Wed Apr  7 15:19:52 2010	(r206357)
+++ head/sys/dev/iwn/if_iwnvar.h	Wed Apr  7 15:29:13 2010	(r206358)
@@ -99,7 +99,6 @@ struct iwn_rx_ring {
 
 struct iwn_node {
 	struct	ieee80211_node		ni;	/* must be the first */
-	struct	ieee80211_amrr_node	amn;
 	uint16_t			disable_tid;
 	uint8_t				id;
 	uint8_t				ridx[IEEE80211_RATE_MAXSIZE];
@@ -193,8 +192,6 @@ struct iwn_hal {
 
 struct iwn_vap {
 	struct ieee80211vap	iv_vap;
-	struct ieee80211_amrr	iv_amrr;
-	struct callout		iv_amrr_to;
 	uint8_t			iv_ridx;
 
 	int			(*iv_newstate)(struct ieee80211vap *,

Modified: head/sys/dev/ral/rt2560.c
==============================================================================
--- head/sys/dev/ral/rt2560.c	Wed Apr  7 15:19:52 2010	(r206357)
+++ head/sys/dev/ral/rt2560.c	Wed Apr  7 15:29:13 2010	(r206358)
@@ -54,7 +54,7 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 #include 
-#include 
+#include 
 
 #include 
 #include 
@@ -103,8 +103,6 @@ static void		rt2560_reset_rx_ring(struct
 			    struct rt2560_rx_ring *);
 static void		rt2560_free_rx_ring(struct rt2560_softc *,
 			    struct rt2560_rx_ring *);
-static struct ieee80211_node *rt2560_node_alloc(struct ieee80211vap *,
-			    const uint8_t [IEEE80211_ADDR_LEN]);
 static void		rt2560_newassoc(struct ieee80211_node *, int);
 static int		rt2560_newstate(struct ieee80211vap *,
 			    enum ieee80211_state, int);
@@ -307,7 +305,6 @@ rt2560_attach(device_t dev, int id)
 	ic->ic_raw_xmit = rt2560_raw_xmit;
 	ic->ic_updateslot = rt2560_update_slot;
 	ic->ic_update_promisc = rt2560_update_promisc;
-	ic->ic_node_alloc = rt2560_node_alloc;
 	ic->ic_scan_start = rt2560_scan_start;
 	ic->ic_scan_end = rt2560_scan_end;
 	ic->ic_set_channel = rt2560_set_channel;
@@ -430,11 +427,7 @@ rt2560_vap_create(struct ieee80211com *i
 	vap->iv_newstate = rt2560_newstate;
 	vap->iv_update_beacon = rt2560_beacon_update;
 
-	ieee80211_amrr_init(&rvp->amrr, vap,
-	    IEEE80211_AMRR_MIN_SUCCESS_THRESHOLD,
-	    IEEE80211_AMRR_MAX_SUCCESS_THRESHOLD,
-	    500 /* ms */);
-
+	ieee80211_ratectl_init(vap);
 	/* complete setup */
 	ieee80211_vap_attach(vap, ieee80211_media_change, ieee80211_media_status);
 	if (TAILQ_FIRST(&ic->ic_vaps) == vap)
@@ -447,7 +440,7 @@ rt2560_vap_delete(struct ieee80211vap *v
 {
 	struct rt2560_vap *rvp = RT2560_VAP(vap);
 
-	ieee80211_amrr_cleanup(&rvp->amrr);
+	ieee80211_ratectl_deinit(vap);
 	ieee80211_vap_detach(vap);
 	free(rvp, M_80211_VAP);
 }
@@ -764,25 +757,11 @@ rt2560_free_rx_ring(struct rt2560_softc 
 		bus_dma_tag_destroy(ring->data_dmat);
 }
 
-static struct ieee80211_node *
-rt2560_node_alloc(struct ieee80211vap *vap,
-	const uint8_t mac[IEEE80211_ADDR_LEN])
-{
-	struct rt2560_node *rn;
-
-	rn = malloc(sizeof (struct rt2560_node), M_80211_NODE,
-	    M_NOWAIT | M_ZERO);
-
-	return (rn != NULL) ? &rn->ni : NULL;
-}
-
 static void
 rt2560_newassoc(struct ieee80211_node *ni, int isnew)
 {
-	struct ieee80211vap *vap = ni->ni_vap;
-
-	ieee80211_amrr_node_init(&RT2560_VAP(vap)->amrr,
-	    &RT2560_NODE(ni)->amrr, ni);
+	/* XXX move */
+	ieee80211_ratectl_node_init(ni);
 }
 
 static int
@@ -955,10 +934,11 @@ rt2560_tx_intr(struct rt2560_softc *sc)
 	struct ifnet *ifp = sc->sc_ifp;
 	struct rt2560_tx_desc *desc;
 	struct rt2560_tx_data *data;
-	struct rt2560_node *rn;
 	struct mbuf *m;
 	uint32_t flags;
 	int retrycnt;
+	struct ieee80211vap *vap;
+	struct ieee80211_node *ni;
 
 	bus_dmamap_sync(sc->txq.desc_dmat, sc->txq.desc_map,
 	    BUS_DMASYNC_POSTREAD);
@@ -973,15 +953,19 @@ rt2560_tx_intr(struct rt2560_softc *sc)
 		    !(flags & RT2560_TX_VALID))
 			break;
 
-		rn = (struct rt2560_node *)data->ni;
 		m = data->m;
+		ni = data->ni;
+		vap = ni->ni_vap;
 
 		switch (flags & RT2560_TX_RESULT_MASK) {
 		case RT2560_TX_SUCCESS:
+			retrycnt = 0;
+
 			DPRINTFN(sc, 10, "%s\n", "data frame sent successfully");
 			if (data->rix != IEEE80211_FIXED_RATE_NONE)
-				ieee80211_amrr_tx_complete(&rn->amrr,
-				    IEEE80211_AMRR_SUCCESS, 0);
+				ieee80211_ratectl_tx_complete(vap, ni,
+				    IEEE80211_RATECTL_TX_SUCCESS,
+				    &retrycnt, NULL);
 			ifp->if_opackets++;
 			break;
 
@@ -991,8 +975,9 @@ rt2560_tx_intr(struct rt2560_softc *sc)
 			DPRINTFN(sc, 9, "data frame sent after %u retries\n",
 			    retrycnt);
 			if (data->rix != IEEE80211_FIXED_RATE_NONE)
-				ieee80211_amrr_tx_complete(&rn->amrr,
-				    IEEE80211_AMRR_SUCCESS, retrycnt);
+				ieee80211_ratectl_tx_complete(vap, ni,
+				    IEEE80211_RATECTL_TX_SUCCESS,
+				    &retrycnt, NULL);
 			ifp->if_opackets++;
 			break;
 
@@ -1002,8 +987,9 @@ rt2560_tx_intr(struct rt2560_softc *sc)
 			DPRINTFN(sc, 9, "data frame failed after %d retries\n",
 			    retrycnt);
 			if (data->rix != IEEE80211_FIXED_RATE_NONE)
-				ieee80211_amrr_tx_complete(&rn->amrr,
-				    IEEE80211_AMRR_FAILURE, retrycnt);
+				ieee80211_ratectl_tx_complete(vap, ni,
+				    IEEE80211_RATECTL_TX_FAILURE,
+				    &retrycnt, NULL);
 			ifp->if_oerrors++;
 			break;
 
@@ -1022,6 +1008,7 @@ rt2560_tx_intr(struct rt2560_softc *sc)
 		data->m = NULL;
 		ieee80211_free_node(data->ni);
 		data->ni = NULL;
+		ni = NULL;
 
 		/* descriptor is no longer valid */
 		desc->flags &= ~htole32(RT2560_TX_VALID);
@@ -1821,7 +1808,7 @@ rt2560_tx_data(struct rt2560_softc *sc, 
 	} else if (tp->ucastrate != IEEE80211_FIXED_RATE_NONE) {
 		rate = tp->ucastrate;
 	} else {
-		(void) ieee80211_amrr_choose(ni, &RT2560_NODE(ni)->amrr);
+		(void) ieee80211_ratectl_rate(ni, NULL, 0);
 		rate = ni->ni_txrate;
 	}
 

Modified: head/sys/dev/ral/rt2560var.h
==============================================================================
--- head/sys/dev/ral/rt2560var.h	Wed Apr  7 15:19:52 2010	(r206357)
+++ head/sys/dev/ral/rt2560var.h	Wed Apr  7 15:29:13 2010	(r206358)
@@ -95,16 +95,9 @@ struct rt2560_rx_ring {
 	int			cur_decrypt;
 };
 
-struct rt2560_node {
-	struct ieee80211_node	ni;
-	struct ieee80211_amrr_node amrr;
-};
-#define	RT2560_NODE(ni)		((struct rt2560_node *)(ni))
-
 struct rt2560_vap {
 	struct ieee80211vap	ral_vap;
 	struct ieee80211_beacon_offsets	ral_bo;
-	struct ieee80211_amrr	amrr;
 
 	int			(*ral_newstate)(struct ieee80211vap *,
 				    enum ieee80211_state, int);

Modified: head/sys/dev/ral/rt2661.c
==============================================================================
--- head/sys/dev/ral/rt2661.c	Wed Apr  7 15:19:52 2010	(r206357)
+++ head/sys/dev/ral/rt2661.c	Wed Apr  7 15:29:13 2010	(r206358)
@@ -55,7 +55,7 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 #include 
-#include 
+#include 
 
 #include 
 #include 
@@ -100,8 +100,6 @@ static void		rt2661_reset_rx_ring(struct
 			    struct rt2661_rx_ring *);
 static void		rt2661_free_rx_ring(struct rt2661_softc *,
 			    struct rt2661_rx_ring *);
-static struct ieee80211_node *rt2661_node_alloc(struct ieee80211vap *,
-			    const uint8_t [IEEE80211_ADDR_LEN]);
 static void		rt2661_newassoc(struct ieee80211_node *, int);
 static int		rt2661_newstate(struct ieee80211vap *,
 			    enum ieee80211_state, int);
@@ -307,7 +305,6 @@ rt2661_attach(device_t dev, int id)
 
 	ieee80211_ifattach(ic, macaddr);
 	ic->ic_newassoc = rt2661_newassoc;
-	ic->ic_node_alloc = rt2661_node_alloc;
 #if 0
 	ic->ic_wme.wme_update = rt2661_wme_update;
 #endif
@@ -428,11 +425,7 @@ rt2661_vap_create(struct ieee80211com *i
 	vap->iv_update_beacon = rt2661_beacon_update;
 #endif
 
-	ieee80211_amrr_init(&rvp->amrr, vap,
-	    IEEE80211_AMRR_MIN_SUCCESS_THRESHOLD,
-	    IEEE80211_AMRR_MAX_SUCCESS_THRESHOLD,
-	    500 /* ms */);
-
+	ieee80211_ratectl_init(vap);
 	/* complete setup */
 	ieee80211_vap_attach(vap, ieee80211_media_change, ieee80211_media_status);
 	if (TAILQ_FIRST(&ic->ic_vaps) == vap)
@@ -445,7 +438,7 @@ rt2661_vap_delete(struct ieee80211vap *v
 {
 	struct rt2661_vap *rvp = RT2661_VAP(vap);
 
-	ieee80211_amrr_cleanup(&rvp->amrr);
+	ieee80211_ratectl_deinit(vap);
 	ieee80211_vap_detach(vap);
 	free(rvp, M_80211_VAP);
 }
@@ -771,25 +764,11 @@ rt2661_free_rx_ring(struct rt2661_softc 
 		bus_dma_tag_destroy(ring->data_dmat);
 }
 
-static struct ieee80211_node *
-rt2661_node_alloc(struct ieee80211vap *vap,
-	const uint8_t mac[IEEE80211_ADDR_LEN])
-{
-	struct rt2661_node *rn;
-
-	rn = malloc(sizeof (struct rt2661_node), M_80211_NODE,
-	    M_NOWAIT | M_ZERO);
-
-	return (rn != NULL) ? &rn->ni : NULL;
-}
-
 static void
 rt2661_newassoc(struct ieee80211_node *ni, int isnew)
 {
-	struct ieee80211vap *vap = ni->ni_vap;
-
-	ieee80211_amrr_node_init(&RT2661_VAP(vap)->amrr,
-	    &RT2661_NODE(ni)->amrr, ni);
+	/* XXX move */
+	ieee80211_ratectl_node_init(ni);
 }
 
 static int
@@ -899,9 +878,9 @@ rt2661_tx_intr(struct rt2661_softc *sc)
 	struct ifnet *ifp = sc->sc_ifp;
 	struct rt2661_tx_ring *txq;
 	struct rt2661_tx_data *data;
-	struct rt2661_node *rn;
 	uint32_t val;
 	int qid, retrycnt;
+	struct ieee80211vap *vap;
 
 	for (;;) {
 		struct ieee80211_node *ni;
@@ -921,13 +900,12 @@ rt2661_tx_intr(struct rt2661_softc *sc)
 		data->m = NULL;
 		ni = data->ni;
 		data->ni = NULL;
+		vap = ni->ni_vap;
 
 		/* if no frame has been sent, ignore */
 		if (ni == NULL)
 			continue;
 
-		rn = RT2661_NODE(ni);
-
 		switch (RT2661_TX_RESULT(val)) {
 		case RT2661_TX_SUCCESS:
 			retrycnt = RT2661_TX_RETRYCNT(val);
@@ -935,8 +913,9 @@ rt2661_tx_intr(struct rt2661_softc *sc)
 			DPRINTFN(sc, 10, "data frame sent successfully after "
 			    "%d retries\n", retrycnt);
 			if (data->rix != IEEE80211_FIXED_RATE_NONE)
-				ieee80211_amrr_tx_complete(&rn->amrr,
-				    IEEE80211_AMRR_SUCCESS, retrycnt);
+				ieee80211_ratectl_tx_complete(vap, ni,
+				    IEEE80211_RATECTL_TX_SUCCESS,
+				    &retrycnt, NULL);
 			ifp->if_opackets++;
 			break;
 
@@ -946,8 +925,9 @@ rt2661_tx_intr(struct rt2661_softc *sc)
 			DPRINTFN(sc, 9, "%s\n",
 			    "sending data frame failed (too much retries)");
 			if (data->rix != IEEE80211_FIXED_RATE_NONE)
-				ieee80211_amrr_tx_complete(&rn->amrr,
-				    IEEE80211_AMRR_FAILURE, retrycnt);
+				ieee80211_ratectl_tx_complete(vap, ni,
+				    IEEE80211_RATECTL_TX_FAILURE,
+				    &retrycnt, NULL);
 			ifp->if_oerrors++;
 			break;
 
@@ -1511,7 +1491,7 @@ rt2661_tx_data(struct rt2661_softc *sc, 
 	} else if (tp->ucastrate != IEEE80211_FIXED_RATE_NONE) {
 		rate = tp->ucastrate;
 	} else {
-		(void) ieee80211_amrr_choose(ni, &RT2661_NODE(ni)->amrr);
+		(void) ieee80211_ratectl_rate(ni, NULL, 0);
 		rate = ni->ni_txrate;
 	}
 	rate &= IEEE80211_RATE_VAL;

Modified: head/sys/dev/ral/rt2661var.h
==============================================================================
--- head/sys/dev/ral/rt2661var.h	Wed Apr  7 15:19:52 2010	(r206357)
+++ head/sys/dev/ral/rt2661var.h	Wed Apr  7 15:29:13 2010	(r206358)
@@ -88,15 +88,8 @@ struct rt2661_rx_ring {
 	int			next;
 };
 
-struct rt2661_node {
-	struct ieee80211_node	ni;
-	struct ieee80211_amrr_node amrr;
-};
-#define	RT2661_NODE(ni)		((struct rt2661_node *)(ni))
-
 struct rt2661_vap {
 	struct ieee80211vap	ral_vap;
-	struct ieee80211_amrr	amrr;
 
 	int			(*ral_newstate)(struct ieee80211vap *,
 				    enum ieee80211_state, int);

Modified: head/sys/dev/usb/wlan/if_rum.c
==============================================================================
--- head/sys/dev/usb/wlan/if_rum.c	Wed Apr  7 15:19:52 2010	(r206357)
+++ head/sys/dev/usb/wlan/if_rum.c	Wed Apr  7 15:29:13 2010	(r206358)
@@ -64,7 +64,7 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 #include 
-#include 
+#include 
 
 #include 
 #include 
@@ -140,7 +140,6 @@ static const struct usb_device_id rum_de
 };
 
 MODULE_DEPEND(rum, wlan, 1, 1, 1);
-MODULE_DEPEND(rum, wlan_amrr, 1, 1, 1);
 MODULE_DEPEND(rum, usb, 1, 1, 1);
 
 static device_probe_t rum_match;
@@ -212,17 +211,14 @@ static int		rum_prepare_beacon(struct ru
 			    struct ieee80211vap *);
 static int		rum_raw_xmit(struct ieee80211_node *, struct mbuf *,
 			    const struct ieee80211_bpf_params *);
-static struct ieee80211_node *rum_node_alloc(struct ieee80211vap *,
-			    const uint8_t mac[IEEE80211_ADDR_LEN]);
-static void		rum_newassoc(struct ieee80211_node *, int);
 static void		rum_scan_start(struct ieee80211com *);
 static void		rum_scan_end(struct ieee80211com *);
 static void		rum_set_channel(struct ieee80211com *);
 static int		rum_get_rssi(struct rum_softc *, uint8_t);
-static void		rum_amrr_start(struct rum_softc *,
+static void		rum_ratectl_start(struct rum_softc *,
 			    struct ieee80211_node *);
-static void		rum_amrr_timeout(void *);
-static void		rum_amrr_task(void *, int);
+static void		rum_ratectl_timeout(void *);
+static void		rum_ratectl_task(void *, int);
 static int		rum_pause(struct rum_softc *, int);
 
 static const struct {
@@ -511,9 +507,7 @@ rum_attach(device_t self)
 
 	ieee80211_ifattach(ic, sc->sc_bssid);
 	ic->ic_update_promisc = rum_update_promisc;
-	ic->ic_newassoc = rum_newassoc;
 	ic->ic_raw_xmit = rum_raw_xmit;
-	ic->ic_node_alloc = rum_node_alloc;
 	ic->ic_scan_start = rum_scan_start;
 	ic->ic_scan_end = rum_scan_end;
 	ic->ic_set_channel = rum_set_channel;
@@ -608,13 +602,10 @@ rum_vap_create(struct ieee80211com *ic,
 	rvp->newstate = vap->iv_newstate;
 	vap->iv_newstate = rum_newstate;
 
-	usb_callout_init_mtx(&rvp->amrr_ch, &sc->sc_mtx, 0);
-	TASK_INIT(&rvp->amrr_task, 0, rum_amrr_task, rvp);
-	ieee80211_amrr_init(&rvp->amrr, vap,
-	    IEEE80211_AMRR_MIN_SUCCESS_THRESHOLD,
-	    IEEE80211_AMRR_MAX_SUCCESS_THRESHOLD,
-	    1000 /* 1 sec */);
-
+	usb_callout_init_mtx(&rvp->ratectl_ch, &sc->sc_mtx, 0);
+	TASK_INIT(&rvp->ratectl_task, 0, rum_ratectl_task, rvp);
+	ieee80211_ratectl_init(vap);
+	ieee80211_ratectl_setinterval(vap, 1000 /* 1 sec */);
 	/* complete setup */
 	ieee80211_vap_attach(vap, ieee80211_media_change, ieee80211_media_status);
 	ic->ic_opmode = opmode;
@@ -627,9 +618,9 @@ rum_vap_delete(struct ieee80211vap *vap)
 	struct rum_vap *rvp = RUM_VAP(vap);
 	struct ieee80211com *ic = vap->iv_ic;
 
-	usb_callout_drain(&rvp->amrr_ch);
-	ieee80211_draintask(ic, &rvp->amrr_task);
-	ieee80211_amrr_cleanup(&rvp->amrr);
+	usb_callout_drain(&rvp->ratectl_ch);
+	ieee80211_draintask(ic, &rvp->ratectl_task);
+	ieee80211_ratectl_deinit(vap);
 	ieee80211_vap_detach(vap);
 	free(rvp, M_80211_VAP);
 }
@@ -716,7 +707,7 @@ rum_newstate(struct ieee80211vap *vap, e
 
 	IEEE80211_UNLOCK(ic);
 	RUM_LOCK(sc);
-	usb_callout_stop(&rvp->amrr_ch);
+	usb_callout_stop(&rvp->ratectl_ch);
 
 	switch (nstate) {
 	case IEEE80211_S_INIT:
@@ -751,7 +742,7 @@ rum_newstate(struct ieee80211vap *vap, e
 		/* enable automatic rate adaptation */
 		tp = &vap->iv_txparms[ieee80211_chan2mode(ic->ic_curchan)];
 		if (tp->ucastrate == IEEE80211_FIXED_RATE_NONE)
-			rum_amrr_start(sc, ni);
+			rum_ratectl_start(sc, ni);
 		break;
 	default:
 		break;
@@ -2194,7 +2185,7 @@ bad:
 }
 
 static void
-rum_amrr_start(struct rum_softc *sc, struct ieee80211_node *ni)
+rum_ratectl_start(struct rum_softc *sc, struct ieee80211_node *ni)
 {
 	struct ieee80211vap *vap = ni->ni_vap;
 	struct rum_vap *rvp = RUM_VAP(vap);
@@ -2202,23 +2193,23 @@ rum_amrr_start(struct rum_softc *sc, str
 	/* clear statistic registers (STA_CSR0 to STA_CSR5) */
 	rum_read_multi(sc, RT2573_STA_CSR0, sc->sta, sizeof sc->sta);
 
-	ieee80211_amrr_node_init(&rvp->amrr, &RUM_NODE(ni)->amn, ni);
+	ieee80211_ratectl_node_init(ni);
 
-	usb_callout_reset(&rvp->amrr_ch, hz, rum_amrr_timeout, rvp);
+	usb_callout_reset(&rvp->ratectl_ch, hz, rum_ratectl_timeout, rvp);
 }
 
 static void
-rum_amrr_timeout(void *arg)
+rum_ratectl_timeout(void *arg)
 {
 	struct rum_vap *rvp = arg;
 	struct ieee80211vap *vap = &rvp->vap;
 	struct ieee80211com *ic = vap->iv_ic;
 
-	ieee80211_runtask(ic, &rvp->amrr_task);
+	ieee80211_runtask(ic, &rvp->ratectl_task);
 }
 
 static void
-rum_amrr_task(void *arg, int pending)
+rum_ratectl_task(void *arg, int pending)
 {
 	struct rum_vap *rvp = arg;
 	struct ieee80211vap *vap = &rvp->vap;
@@ -2227,6 +2218,7 @@ rum_amrr_task(void *arg, int pending)
 	struct rum_softc *sc = ifp->if_softc;
 	struct ieee80211_node *ni = vap->iv_bss;
 	int ok, fail;
+	int sum, retrycnt;
 
 	RUM_LOCK(sc);
 	/* read and clear statistic registers (STA_CSR0 to STA_CSR10) */
@@ -2235,36 +2227,18 @@ rum_amrr_task(void *arg, int pending)
 	ok = (le32toh(sc->sta[4]) >> 16) +	/* TX ok w/o retry */
 	    (le32toh(sc->sta[5]) & 0xffff);	/* TX ok w/ retry */
 	fail = (le32toh(sc->sta[5]) >> 16);	/* TX retry-fail count */
+	sum = ok+fail;
+	retrycnt = (le32toh(sc->sta[5]) & 0xffff) + fail;
 
-	ieee80211_amrr_tx_update(&RUM_NODE(ni)->amn,
-	    ok+fail, ok, (le32toh(sc->sta[5]) & 0xffff) + fail);
-	(void) ieee80211_amrr_choose(ni, &RUM_NODE(ni)->amn);
+	ieee80211_ratectl_tx_update(vap, ni, &sum, &ok, &retrycnt);
+	(void) ieee80211_ratectl_rate(ni, NULL, 0);
 
 	ifp->if_oerrors += fail;	/* count TX retry-fail as Tx errors */
 
-	usb_callout_reset(&rvp->amrr_ch, hz, rum_amrr_timeout, rvp);
+	usb_callout_reset(&rvp->ratectl_ch, hz, rum_ratectl_timeout, rvp);
 	RUM_UNLOCK(sc);
 }
 
-/* ARGUSED */
-static struct ieee80211_node *
-rum_node_alloc(struct ieee80211vap *vap __unused,
-	const uint8_t mac[IEEE80211_ADDR_LEN] __unused)
-{
-	struct rum_node *rn;
-
-	rn = malloc(sizeof(struct rum_node), M_80211_NODE, M_NOWAIT | M_ZERO);
-	return rn != NULL ? &rn->ni : NULL;
-}
-
-static void
-rum_newassoc(struct ieee80211_node *ni, int isnew)
-{
-	struct ieee80211vap *vap = ni->ni_vap;
-
-	ieee80211_amrr_node_init(&RUM_VAP(vap)->amrr, &RUM_NODE(ni)->amn, ni);
-}
-
 static void
 rum_scan_start(struct ieee80211com *ic)
 {

Modified: head/sys/dev/usb/wlan/if_rumvar.h
==============================================================================
--- head/sys/dev/usb/wlan/if_rumvar.h	Wed Apr  7 15:19:52 2010	(r206357)
+++ head/sys/dev/usb/wlan/if_rumvar.h	Wed Apr  7 15:29:13 2010	(r206358)
@@ -67,18 +67,11 @@ struct rum_tx_data {
 };
 typedef STAILQ_HEAD(, rum_tx_data) rum_txdhead;
 
-struct rum_node {
-	struct ieee80211_node	ni;
-	struct ieee80211_amrr_node amn;
-};
-#define	RUM_NODE(ni)	((struct rum_node *)(ni))
-
 struct rum_vap {
 	struct ieee80211vap		vap;
 	struct ieee80211_beacon_offsets	bo;
-	struct ieee80211_amrr		amrr;

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 16:29:11 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 0CAAC106566B;
	Wed,  7 Apr 2010 16:29:11 +0000 (UTC)
	(envelope-from joel@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id D79478FC13;
	Wed,  7 Apr 2010 16:29:10 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37GTAnj048942;
	Wed, 7 Apr 2010 16:29:10 GMT (envelope-from joel@svn.freebsd.org)
Received: (from joel@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37GTAhJ048936;
	Wed, 7 Apr 2010 16:29:10 GMT (envelope-from joel@svn.freebsd.org)
Message-Id: <201004071629.o37GTAhJ048936@svn.freebsd.org>
From: Joel Dahl 
Date: Wed, 7 Apr 2010 16:29:10 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206360 - in head/sys: libkern netgraph vm
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 16:29:11 -0000

Author: joel (doc committer)
Date: Wed Apr  7 16:29:10 2010
New Revision: 206360
URL: http://svn.freebsd.org/changeset/base/206360

Log:
  Start copyright notice with /*-

Modified:
  head/sys/libkern/iconv_xlat.c
  head/sys/libkern/strcasecmp.c
  head/sys/netgraph/ng_pipe.c
  head/sys/netgraph/ng_pipe.h
  head/sys/vm/memguard.c
  head/sys/vm/memguard.h

Modified: head/sys/libkern/iconv_xlat.c
==============================================================================
--- head/sys/libkern/iconv_xlat.c	Wed Apr  7 15:33:19 2010	(r206359)
+++ head/sys/libkern/iconv_xlat.c	Wed Apr  7 16:29:10 2010	(r206360)
@@ -1,4 +1,4 @@
-/*
+/*-
  * Copyright (c) 2000-2001, Boris Popov
  * All rights reserved.
  *

Modified: head/sys/libkern/strcasecmp.c
==============================================================================
--- head/sys/libkern/strcasecmp.c	Wed Apr  7 15:33:19 2010	(r206359)
+++ head/sys/libkern/strcasecmp.c	Wed Apr  7 16:29:10 2010	(r206360)
@@ -1,4 +1,4 @@
-/*
+/*-
  * Copyright (c) 1987, 1993
  *	The Regents of the University of California.  All rights reserved.
  *

Modified: head/sys/netgraph/ng_pipe.c
==============================================================================
--- head/sys/netgraph/ng_pipe.c	Wed Apr  7 15:33:19 2010	(r206359)
+++ head/sys/netgraph/ng_pipe.c	Wed Apr  7 16:29:10 2010	(r206360)
@@ -1,4 +1,4 @@
-/*
+/*-
  * Copyright (c) 2004-2008 University of Zagreb
  * Copyright (c) 2007-2008 FreeBSD Foundation
  *

Modified: head/sys/netgraph/ng_pipe.h
==============================================================================
--- head/sys/netgraph/ng_pipe.h	Wed Apr  7 15:33:19 2010	(r206359)
+++ head/sys/netgraph/ng_pipe.h	Wed Apr  7 16:29:10 2010	(r206360)
@@ -1,4 +1,4 @@
-/*
+/*-
  * Copyright (c) 2004-2008 University of Zagreb
  * Copyright (c) 2007-2008 FreeBSD Foundation
  *

Modified: head/sys/vm/memguard.c
==============================================================================
--- head/sys/vm/memguard.c	Wed Apr  7 15:33:19 2010	(r206359)
+++ head/sys/vm/memguard.c	Wed Apr  7 16:29:10 2010	(r206360)
@@ -1,4 +1,4 @@
-/*
+/*-
  * Copyright (c) 2005,
  *     Bosko Milekic .  All rights reserved.
  *

Modified: head/sys/vm/memguard.h
==============================================================================
--- head/sys/vm/memguard.h	Wed Apr  7 15:33:19 2010	(r206359)
+++ head/sys/vm/memguard.h	Wed Apr  7 16:29:10 2010	(r206360)
@@ -1,4 +1,4 @@
-/*
+/*-
  * Copyright (c) 2005,
  *     Bosko Milekic .  All rights reserved.
  *

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 16:50:39 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id C4E76106564A;
	Wed,  7 Apr 2010 16:50:39 +0000 (UTC)
	(envelope-from joel@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id B38F58FC08;
	Wed,  7 Apr 2010 16:50:39 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37Godw0053749;
	Wed, 7 Apr 2010 16:50:39 GMT (envelope-from joel@svn.freebsd.org)
Received: (from joel@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37Godqk053693;
	Wed, 7 Apr 2010 16:50:39 GMT (envelope-from joel@svn.freebsd.org)
Message-Id: <201004071650.o37Godqk053693@svn.freebsd.org>
From: Joel Dahl 
Date: Wed, 7 Apr 2010 16:50:39 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206361 - in head/sys: fs/nwfs fs/smbfs libkern netncp
	netsmb sys
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 16:50:39 -0000

Author: joel (doc committer)
Date: Wed Apr  7 16:50:38 2010
New Revision: 206361
URL: http://svn.freebsd.org/changeset/base/206361

Log:
  Switch to our preferred 2-clause BSD license.
  
  Approved by:	bp

Modified:
  head/sys/fs/nwfs/nwfs.h
  head/sys/fs/nwfs/nwfs_io.c
  head/sys/fs/nwfs/nwfs_ioctl.c
  head/sys/fs/nwfs/nwfs_mount.h
  head/sys/fs/nwfs/nwfs_node.c
  head/sys/fs/nwfs/nwfs_node.h
  head/sys/fs/nwfs/nwfs_subr.c
  head/sys/fs/nwfs/nwfs_subr.h
  head/sys/fs/nwfs/nwfs_vfsops.c
  head/sys/fs/nwfs/nwfs_vnops.c
  head/sys/fs/smbfs/smbfs.h
  head/sys/fs/smbfs/smbfs_io.c
  head/sys/fs/smbfs/smbfs_node.c
  head/sys/fs/smbfs/smbfs_node.h
  head/sys/fs/smbfs/smbfs_smb.c
  head/sys/fs/smbfs/smbfs_subr.c
  head/sys/fs/smbfs/smbfs_subr.h
  head/sys/fs/smbfs/smbfs_vfsops.c
  head/sys/fs/smbfs/smbfs_vnops.c
  head/sys/libkern/iconv.c
  head/sys/libkern/iconv_converter_if.m
  head/sys/libkern/iconv_xlat.c
  head/sys/netncp/ncp_conn.c
  head/sys/netncp/ncp_conn.h
  head/sys/netncp/ncp_file.h
  head/sys/netncp/ncp_lib.h
  head/sys/netncp/ncp_login.c
  head/sys/netncp/ncp_ncp.c
  head/sys/netncp/ncp_ncp.h
  head/sys/netncp/ncp_nls.c
  head/sys/netncp/ncp_nls.h
  head/sys/netncp/ncp_rcfile.h
  head/sys/netncp/ncp_rq.c
  head/sys/netncp/ncp_rq.h
  head/sys/netncp/ncp_sock.c
  head/sys/netncp/ncp_sock.h
  head/sys/netncp/ncp_subr.c
  head/sys/netncp/ncp_subr.h
  head/sys/netncp/ncp_user.h
  head/sys/netsmb/netbios.h
  head/sys/netsmb/smb.h
  head/sys/netsmb/smb_conn.c
  head/sys/netsmb/smb_conn.h
  head/sys/netsmb/smb_dev.c
  head/sys/netsmb/smb_dev.h
  head/sys/netsmb/smb_iod.c
  head/sys/netsmb/smb_rq.c
  head/sys/netsmb/smb_rq.h
  head/sys/netsmb/smb_smb.c
  head/sys/netsmb/smb_subr.c
  head/sys/netsmb/smb_subr.h
  head/sys/netsmb/smb_tran.h
  head/sys/netsmb/smb_trantcp.c
  head/sys/netsmb/smb_trantcp.h
  head/sys/netsmb/smb_usr.c
  head/sys/sys/iconv.h
  head/sys/sys/mchain.h

Modified: head/sys/fs/nwfs/nwfs.h
==============================================================================
--- head/sys/fs/nwfs/nwfs.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/nwfs/nwfs.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 1999, Boris Popov
+ * Copyright (c) 1999 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/nwfs/nwfs_io.c
==============================================================================
--- head/sys/fs/nwfs/nwfs_io.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/nwfs/nwfs_io.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 1999, Boris Popov
+ * Copyright (c) 1999 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/nwfs/nwfs_ioctl.c
==============================================================================
--- head/sys/fs/nwfs/nwfs_ioctl.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/nwfs/nwfs_ioctl.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 1999, Boris Popov
+ * Copyright (c) 1999 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/nwfs/nwfs_mount.h
==============================================================================
--- head/sys/fs/nwfs/nwfs_mount.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/nwfs/nwfs_mount.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 1999, Boris Popov
+ * Copyright (c) 1999 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/nwfs/nwfs_node.c
==============================================================================
--- head/sys/fs/nwfs/nwfs_node.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/nwfs/nwfs_node.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/nwfs/nwfs_node.h
==============================================================================
--- head/sys/fs/nwfs/nwfs_node.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/nwfs/nwfs_node.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/nwfs/nwfs_subr.c
==============================================================================
--- head/sys/fs/nwfs/nwfs_subr.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/nwfs/nwfs_subr.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/nwfs/nwfs_subr.h
==============================================================================
--- head/sys/fs/nwfs/nwfs_subr.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/nwfs/nwfs_subr.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 1999, Boris Popov
+ * Copyright (c) 1999 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/nwfs/nwfs_vfsops.c
==============================================================================
--- head/sys/fs/nwfs/nwfs_vfsops.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/nwfs/nwfs_vfsops.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/nwfs/nwfs_vnops.c
==============================================================================
--- head/sys/fs/nwfs/nwfs_vnops.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/nwfs/nwfs_vnops.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/smbfs/smbfs.h
==============================================================================
--- head/sys/fs/smbfs/smbfs.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/smbfs/smbfs.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2000-2001, Boris Popov
+ * Copyright (c) 2000-2001 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/smbfs/smbfs_io.c
==============================================================================
--- head/sys/fs/smbfs/smbfs_io.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/smbfs/smbfs_io.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2000-2001, Boris Popov
+ * Copyright (c) 2000-2001 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/smbfs/smbfs_node.c
==============================================================================
--- head/sys/fs/smbfs/smbfs_node.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/smbfs/smbfs_node.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/smbfs/smbfs_node.h
==============================================================================
--- head/sys/fs/smbfs/smbfs_node.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/smbfs/smbfs_node.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2000-2001, Boris Popov
+ * Copyright (c) 2000-2001 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/smbfs/smbfs_smb.c
==============================================================================
--- head/sys/fs/smbfs/smbfs_smb.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/smbfs/smbfs_smb.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/smbfs/smbfs_subr.c
==============================================================================
--- head/sys/fs/smbfs/smbfs_subr.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/smbfs/smbfs_subr.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2000-2001, Boris Popov
+ * Copyright (c) 2000-2001 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/smbfs/smbfs_subr.h
==============================================================================
--- head/sys/fs/smbfs/smbfs_subr.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/smbfs/smbfs_subr.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2000-2001, Boris Popov
+ * Copyright (c) 2000-2001 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/smbfs/smbfs_vfsops.c
==============================================================================
--- head/sys/fs/smbfs/smbfs_vfsops.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/smbfs/smbfs_vfsops.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2000-2001, Boris Popov
+ * Copyright (c) 2000-2001 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/fs/smbfs/smbfs_vnops.c
==============================================================================
--- head/sys/fs/smbfs/smbfs_vnops.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/fs/smbfs/smbfs_vnops.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/libkern/iconv.c
==============================================================================
--- head/sys/libkern/iconv.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/libkern/iconv.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2000-2001, Boris Popov
+ * Copyright (c) 2000-2001 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/libkern/iconv_converter_if.m
==============================================================================
--- head/sys/libkern/iconv_converter_if.m	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/libkern/iconv_converter_if.m	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 #-
-# Copyright (c) 2000-2001, Boris Popov
+# Copyright (c) 2000-2001 Boris Popov
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
 # 2. Redistributions in binary form must reproduce the above copyright
 #    notice, this list of conditions and the following disclaimer in the
 #    documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-#    must display the following acknowledgement:
-#    This product includes software developed by Boris Popov.
-# 4. Neither the name of the author nor the names of any co-contributors
-#    may be used to endorse or promote products derived from this software
-#    without specific prior written permission.
 #
 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/libkern/iconv_xlat.c
==============================================================================
--- head/sys/libkern/iconv_xlat.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/libkern/iconv_xlat.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2000-2001, Boris Popov
+ * Copyright (c) 2000-2001 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netncp/ncp_conn.c
==============================================================================
--- head/sys/netncp/ncp_conn.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netncp/ncp_conn.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 1999, Boris Popov
+ * Copyright (c) 1999 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netncp/ncp_conn.h
==============================================================================
--- head/sys/netncp/ncp_conn.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netncp/ncp_conn.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 1999, Boris Popov
+ * Copyright (c) 1999 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netncp/ncp_file.h
==============================================================================
--- head/sys/netncp/ncp_file.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netncp/ncp_file.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 1999, Boris Popov
+ * Copyright (c) 1999 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netncp/ncp_lib.h
==============================================================================
--- head/sys/netncp/ncp_lib.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netncp/ncp_lib.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netncp/ncp_login.c
==============================================================================
--- head/sys/netncp/ncp_login.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netncp/ncp_login.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netncp/ncp_ncp.c
==============================================================================
--- head/sys/netncp/ncp_ncp.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netncp/ncp_ncp.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netncp/ncp_ncp.h
==============================================================================
--- head/sys/netncp/ncp_ncp.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netncp/ncp_ncp.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 1999, Boris Popov
+ * Copyright (c) 1999 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netncp/ncp_nls.c
==============================================================================
--- head/sys/netncp/ncp_nls.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netncp/ncp_nls.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 1999, Boris Popov
+ * Copyright (c) 1999 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netncp/ncp_nls.h
==============================================================================
--- head/sys/netncp/ncp_nls.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netncp/ncp_nls.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 1999, Boris Popov
+ * Copyright (c) 1999 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netncp/ncp_rcfile.h
==============================================================================
--- head/sys/netncp/ncp_rcfile.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netncp/ncp_rcfile.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 1999, Boris Popov
+ * Copyright (c) 1999 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netncp/ncp_rq.c
==============================================================================
--- head/sys/netncp/ncp_rq.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netncp/ncp_rq.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netncp/ncp_rq.h
==============================================================================
--- head/sys/netncp/ncp_rq.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netncp/ncp_rq.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netncp/ncp_sock.c
==============================================================================
--- head/sys/netncp/ncp_sock.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netncp/ncp_sock.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netncp/ncp_sock.h
==============================================================================
--- head/sys/netncp/ncp_sock.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netncp/ncp_sock.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 1999, Boris Popov
+ * Copyright (c) 1999 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netncp/ncp_subr.c
==============================================================================
--- head/sys/netncp/ncp_subr.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netncp/ncp_subr.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netncp/ncp_subr.h
==============================================================================
--- head/sys/netncp/ncp_subr.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netncp/ncp_subr.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 1999, Boris Popov
+ * Copyright (c) 1999 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netncp/ncp_user.h
==============================================================================
--- head/sys/netncp/ncp_user.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netncp/ncp_user.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 1999, Boris Popov
+ * Copyright (c) 1999 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netsmb/netbios.h
==============================================================================
--- head/sys/netsmb/netbios.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netsmb/netbios.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netsmb/smb.h
==============================================================================
--- head/sys/netsmb/smb.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netsmb/smb.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netsmb/smb_conn.c
==============================================================================
--- head/sys/netsmb/smb_conn.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netsmb/smb_conn.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netsmb/smb_conn.h
==============================================================================
--- head/sys/netsmb/smb_conn.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netsmb/smb_conn.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netsmb/smb_dev.c
==============================================================================
--- head/sys/netsmb/smb_dev.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netsmb/smb_dev.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netsmb/smb_dev.h
==============================================================================
--- head/sys/netsmb/smb_dev.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netsmb/smb_dev.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netsmb/smb_iod.c
==============================================================================
--- head/sys/netsmb/smb_iod.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netsmb/smb_iod.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netsmb/smb_rq.c
==============================================================================
--- head/sys/netsmb/smb_rq.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netsmb/smb_rq.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2000-2001, Boris Popov
+ * Copyright (c) 2000-2001 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netsmb/smb_rq.h
==============================================================================
--- head/sys/netsmb/smb_rq.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netsmb/smb_rq.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2000-2001, Boris Popov
+ * Copyright (c) 2000-2001 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netsmb/smb_smb.c
==============================================================================
--- head/sys/netsmb/smb_smb.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netsmb/smb_smb.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netsmb/smb_subr.c
==============================================================================
--- head/sys/netsmb/smb_subr.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netsmb/smb_subr.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netsmb/smb_subr.h
==============================================================================
--- head/sys/netsmb/smb_subr.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netsmb/smb_subr.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2000-2001, Boris Popov
+ * Copyright (c) 2000-2001 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netsmb/smb_tran.h
==============================================================================
--- head/sys/netsmb/smb_tran.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netsmb/smb_tran.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2000-2001, Boris Popov
+ * Copyright (c) 2000-2001 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netsmb/smb_trantcp.c
==============================================================================
--- head/sys/netsmb/smb_trantcp.c	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netsmb/smb_trantcp.c	Wed Apr  7 16:50:38 2010	(r206361)
@@ -10,12 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *    This product includes software developed by Boris Popov.
- * 4. Neither the name of the author nor the names of any co-contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

Modified: head/sys/netsmb/smb_trantcp.h
==============================================================================
--- head/sys/netsmb/smb_trantcp.h	Wed Apr  7 16:29:10 2010	(r206360)
+++ head/sys/netsmb/smb_trantcp.h	Wed Apr  7 16:50:38 2010	(r206361)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2000-2001, Boris Popov
+ * Copyright (c) 2000-2001 Boris Popov
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 17:03:05 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 6BC69106564A;
	Wed,  7 Apr 2010 17:03:05 +0000 (UTC)
	(envelope-from jkim@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 59C918FC12;
	Wed,  7 Apr 2010 17:03:05 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37H351O056558;
	Wed, 7 Apr 2010 17:03:05 GMT (envelope-from jkim@svn.freebsd.org)
Received: (from jkim@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37H35oh056555;
	Wed, 7 Apr 2010 17:03:05 GMT (envelope-from jkim@svn.freebsd.org)
Message-Id: <201004071703.o37H35oh056555@svn.freebsd.org>
From: Jung-uk Kim 
Date: Wed, 7 Apr 2010 17:03:05 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206362 - head/sys/dev/syscons/logo
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 17:03:05 -0000

Author: jkim
Date: Wed Apr  7 17:03:05 2010
New Revision: 206362
URL: http://svn.freebsd.org/changeset/base/206362

Log:
  Copy Beastie image file to prepare for an official logo image.

Added:
  head/sys/dev/syscons/logo/beastie.c
     - copied unchanged from r206361, head/sys/dev/syscons/logo/logo.c

Copied: head/sys/dev/syscons/logo/beastie.c (from r206361, head/sys/dev/syscons/logo/logo.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/dev/syscons/logo/beastie.c	Wed Apr  7 17:03:05 2010	(r206362, copy of r206361, head/sys/dev/syscons/logo/logo.c)
@@ -0,0 +1,358 @@
+/* $FreeBSD$ */
+
+#define logo_width 88
+#define logo_height 88
+
+unsigned int logo_w = logo_width;
+unsigned int logo_h = logo_height;
+
+unsigned char logo_pal[768] = {
+    0x00, 0x00, 0x00,
+    0x33, 0x33, 0x33,
+    0x66, 0x66, 0x66,
+    0x99, 0x99, 0x99,
+    0xcc, 0xcc, 0xcc,
+    0xff, 0xff, 0xff,
+    0x90, 0x8f, 0x90,
+    0x56, 0x4b, 0x55,
+    0xa3, 0xa5, 0xab,
+    0xfd, 0xfd, 0xfd,
+    0x6d, 0x6e, 0x74,
+    0x41, 0x2b, 0x39,
+    0xcb, 0xc8, 0xcb,
+    0xcf, 0xbb, 0xba,
+    0x8e, 0x82, 0x87,
+    0x5c, 0x5d, 0x60,
+    0x52, 0x2a, 0x37,
+    0x7f, 0x76, 0x7d,
+    0x82, 0x82, 0x85,
+    0x7a, 0x3e, 0x45,
+    0x7f, 0x6e, 0x70,
+    0xef, 0xef, 0xed,
+    0x53, 0x41, 0x4b,
+    0x67, 0x2b, 0x35,
+    0x6a, 0x55, 0x62,
+    0xe7, 0xe2, 0xe3,
+    0x64, 0x35, 0x3f,
+    0xf7, 0xe0, 0xe7,
+    0xb1, 0xb2, 0xb2,
+    0x31, 0x2b, 0x35,
+    0x7a, 0x2d, 0x37,
+    0x69, 0x4c, 0x56,
+    0x95, 0x9d, 0xa4,
+    0x85, 0x61, 0x69,
+    0x40, 0x34, 0x41,
+    0x8f, 0x2e, 0x39,
+    0x7a, 0x50, 0x5a,
+    0xde, 0xe1, 0xe0,
+    0x32, 0x33, 0x3d,
+    0xa0, 0x9b, 0x9c,
+    0x68, 0x63, 0x67,
+    0x76, 0x60, 0x67,
+    0xba, 0xb6, 0xb8,
+    0x29, 0x24, 0x41,
+    0x38, 0x21, 0x29,
+    0x42, 0x21, 0x27,
+    0xa2, 0x2a, 0x32,
+    0x56, 0x55, 0x58,
+    0x55, 0x21, 0x2b,
+    0x7a, 0x20, 0x2a,
+    0x37, 0x16, 0x21,
+    0x4d, 0x18, 0x37,
+    0x8a, 0x3a, 0x3e,
+    0xc0, 0xc2, 0xc4,
+    0x64, 0x23, 0x2c,
+    0x37, 0x1a, 0x24,
+    0x42, 0x18, 0x20,
+    0x4c, 0x21, 0x2b,
+    0xa0, 0x23, 0x2e,
+    0x95, 0x6c, 0x76,
+    0x26, 0x16, 0x1c,
+    0xa5, 0x18, 0x23,
+    0x84, 0x20, 0x2b,
+    0x6d, 0x3f, 0x49,
+    0xae, 0xa7, 0xac,
+    0x2a, 0x1f, 0x24,
+    0x90, 0x21, 0x30,
+    0xa0, 0x39, 0x3e,
+    0x95, 0x0f, 0x1c,
+    0x84, 0x13, 0x1e,
+    0x4e, 0x17, 0x24,
+    0x8c, 0x56, 0x5f,
+    0xe0, 0xc4, 0xcb,
+    0xa5, 0x7f, 0x8e,
+    0xff, 0xff, 0xf1,
+    0x3d, 0x3d, 0x5d,
+    0x61, 0x19, 0x26,
+    0xd5, 0xd5, 0xd5,
+    0xff, 0xf1, 0xed,
+    0xb6, 0x9c, 0xa5,
+    0x87, 0x4c, 0x5a,
+    0xa0, 0x76, 0x76,
+    0xc8, 0xa0, 0xa0,
+    0xa2, 0xc1, 0xc8,
+    0x91, 0xae, 0xb6,
+    0x52, 0x8b, 0xae,
+    0xb3, 0xd2, 0xd4,
+    0x95, 0xb7, 0xc1,
+    0x54, 0x6e, 0x83,
+    0x67, 0x90, 0xa6,
+    0x44, 0x3e, 0x45,
+    0x23, 0x40, 0x6a,
+    0x41, 0x6e, 0x97,
+    0x7e, 0x8e, 0x91,
+    0x52, 0x33, 0x41,
+    0x39, 0x49, 0x68,
+    0x1d, 0x2a, 0x48,
+    0x17, 0x21, 0x45,
+    0x90, 0x17, 0x1f,
+    0x38, 0x54, 0x71,
+    0x1c, 0x33, 0x58,
+    0x1c, 0x1e, 0x23,
+    0x6c, 0x17, 0x21,
+    0xb0, 0xc5, 0xc1,
+    0x5d, 0x7f, 0x96,
+    0xe9, 0xbf, 0xc1,
+    0x96, 0x06, 0x0f,
+    0x78, 0x16, 0x1e,
+    0xab, 0x0e, 0x18,
+    0xa6, 0x06, 0x0e,
+    0x4c, 0x4c, 0x54,
+    0x61, 0x42, 0x4c,
+    0x48, 0x5f, 0x84,
+    0xa0, 0xb8, 0xbe,
+    0x5c, 0x66, 0x7f,
+    0x7b, 0x9e, 0xa9,
+    0x6f, 0x75, 0x7f,
+    0x45, 0x54, 0x74,
+    0x32, 0x3e, 0x63,
+    0xb1, 0xb4, 0xb3,
+    0x66, 0x9d, 0xb4,
+    0x7a, 0x9f, 0xbb,
+    0x82, 0xaa, 0xba,
+    0x13, 0x15, 0x17,
+    0x0b, 0x0b, 0x0a,
+    0x37, 0x66, 0x92,
+    0x4c, 0x7f, 0xa5,
+    0x24, 0x4c, 0x7b,
+    0x25, 0x5f, 0x91,
+    0x40, 0x7d, 0xa5,
+    0x1d, 0x56, 0x88,
+    0x2d, 0x6f, 0xa0,
+    0x70, 0x81, 0x8f,
+    0x58, 0x97, 0xbd,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00,
+};
+
+unsigned char logo_img[logo_width*logo_height] = {
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x09, 0x0a, 0x0b, 0x07, 0x0c, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0d, 0x0e, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x09, 0x0f, 0x0b, 0x10, 0x11, 0x09, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x12, 0x13, 0x14, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x15, 0x16, 0x0b, 0x17, 0x18, 0x19, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x11, 0x13, 0x1a, 0x1b, 0x05, 0x05, 0x05, 0x04, 0x03, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x1c, 0x1d, 0x10, 0x1e, 0x1f, 0x19, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x20, 0x0b, 0x1e, 0x21, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x19, 0x22, 0x0b, 0x17, 0x23, 0x24, 0x15, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x25, 0x26, 0x10, 0x23, 0x27, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x05, 0x05, 0x05, 0x25, 0x27, 0x11, 0x28, 0x29, 0x11, 0x06, 0x0d, 0x09, 0x05, 0x2a, 0x2b, 0x2c, 0x2d, 0x1e, 0x2e, 0x21, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x2f, 0x0b, 0x30, 0x31, 0x0c, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x15, 0x06, 0x16, 0x22, 0x1d, 0x2c, 0x32, 0x33, 0x17, 0x17, 0x17, 0x22, 0x14, 0x16, 0x1d, 0x2c, 0x2d, 0x1e, 0x2e, 0x34, 0x0c, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x35, 0x2b, 0x2c, 0x36, 0x36, 0x35, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x27, 0x0b, 0x2c, 0x2c, 0x37, 0x32, 0x38, 0x2c, 0x2d, 0x39, 0x36, 0x17, 0x30, 0x2c, 0x2c, 0x2d, 0x2c, 0x2c, 0x1a, 0x3a, 0x3a, 0x3b, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0a, 0x2d, 0x2b, 0x33, 0x31, 0x0e, 0x05, 0x05, 0x05, 0x05, 0x09, 0x28, 0x2c, 0x37, 0x3c, 0x32, 0x38, 0x38, 0x37, 0x2c, 0x30, 0x36, 0x36, 0x17, 0x31, 0x36, 0x23, 0x23, 0x17, 0x2c, 0x17, 0x3a, 0x3d, 0x13, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x22, 0x2c, 0x37, 0x33, 0x3e, 0x31, 0x3f, 0x40, 0x19, 0x05, 0x11, 0x2c, 0x2c, 0x32, 0x32, 0x32, 0x38, 0x37, 0x41, 0x30, 0x3a, 0x3a, 0x2e, 0x42, 0x43, 0x17, 0x1a, 0x13, 0x23, 0x31, 0x1a, 0x2e, 0x3d, 0x1a, 0x09, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0b, 0x37, 0x32, 0x37, 0x33, 0x44, 0x44, 0x45, 0x17, 0x1a, 0x10, 0x2d, 0x37, 0x38, 0x46, 0x33, 0x46, 0x32, 0x2c, 0x23, 0x23, 0x47, 0x21, 0x13, 0x43, 0x34, 0x48, 0x19, 0x49, 0x34, 0x17, 0x1e, 0x3a, 0x13, 0x4a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4b, 0x32, 0x32, 0x32, 0x32, 0x4c, 0x45, 0x44, 0x44, 0x42, 0x36, 0x30, 0x33, 0x46, 0x38, 0x33, 0x46, 0x38, 0x31, 0x23, 0x27, 0x09, 0x4a, 0x4d, 0x47, 0x43, 0x0d, 0x4e, 0x4a, 0x4f, 0x34, 0x1a, 0x2e, 0x29, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x11, 0x33, 0x32, 0x32, 0x32, 0x33, 0x4c, 0x31, 0x45, 0x3e, 0x31, 0x36, 0x46, 0x46, 0x33, 0x33, 0x39, 0x30, 0x23, 0x50, 0x4a, 0x4a, 0x4a, 0x4a, 0x4d, 0x47, 0x51, 0x4e, 0x4a, 0x4a, 0x0e, 0x13, 0x1a, 0x27, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x35, 0x2b, 0x32, 0x32, 0x2b, 0x32, 0x33, 0x4c, 0x33, 0x4c, 0x4c, 0x36, 0x30, 0x30, 0x30, 0x30, 0x31, 0x23, 0x3a, 0x49, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4f, 0x50, 0x1b, 0x4e, 0x4a, 0x19, 0x50, 0x16, 0x0c, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, 0x32, 0x32, 0x32, 0x32, 0x2b, 0x33, 0x33, 0x30, 0x2d, 0x39, 0x30, 0x30, 0x30, 0x4c, 0x36, 0x42, 0x3a, 0x52, 0x05, 0x4a, 0x4a, 0x4a, 0x4a, 0x09, 0x3b, 0x52, 0x4e, 0x4a, 0x4a, 0x4f, 0x1a, 0x2a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4d, 0x2b, 0x2b, 0x32, 0x32, 0x32, 0x37, 0x2c, 0x2c, 0x2c, 0x2c, 0x2d, 0x10, 0x30, 0x30, 0x3e, 0x23, 0x3a, 0x0d, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x40, 0x51, 0x4a, 0x4a, 0x25, 0x15, 0x1f, 0x27, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x40, 0x22, 0x2c, 0x32, 0x32, 0x32, 0x38, 0x2d, 0x2c, 0x41, 0x32, 0x39, 0x46, 0x4c, 0x31, 0x2e, 0x2e, 0x0c, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x25, 0x53, 0x18, 0x4a, 0x54, 0x55, 0x56, 0x51, 0x11, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x2a, 0x22, 0x32, 0x32, 0x32, 0x38, 0x38, 0x32, 0x2c, 0x37, 0x38, 0x30, 0x30, 0x3e, 0x3a, 0x3a, 0x2a, 0x4a, 0x4a, 0x05, 0x4a, 0x57, 0x58, 0x59, 0x5a, 0x35, 0x58, 0x5b, 0x5c, 0x5d, 0x5e, 0x4a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4d, 0x07, 0x37, 0x32, 0x38, 0x38, 0x32, 0x32, 0x41, 0x38, 0x30, 0x30, 0x3e, 0x3a, 0x3d, 0x27, 0x05, 0x4a, 0x4a, 0x4a, 0x5c, 0x5f, 0x59, 0x1d, 0x29, 0x2f, 0x60, 0x61, 0x26, 0x0b, 0x1c, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4e, 0x0a, 0x2d, 0x38, 0x38, 0x32, 0x37, 0x32, 0x2d, 0x39, 0x36, 0x31, 0x62, 0x3d, 0x0e, 0x4a, 0x4a, 0x4a, 0x09, 0x63, 0x64, 0x64, 0x61, 0x2d, 0x1d, 0x65, 0x61, 0x2b, 0x17, 0x16, 0x4a, 0x05, 0x05, 0x04, 0x03, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x27, 0x2c, 0x38, 0x38, 0x37, 0x37, 0x38, 0x2d, 0x30, 0x31, 0x42, 0x3a, 0x18, 0x09, 0x05, 0x05, 0x4a, 0x63, 0x60, 0x60, 0x2b, 0x10, 0x2d, 0x41, 0x41, 0x30, 0x42, 0x3e, 0x29, 0x09, 0x05, 0x05, 0x04, 0x03, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x2a, 0x37, 0x32, 0x38, 0x32, 0x41, 0x38, 0x38, 0x30, 0x66, 0x31, 0x3a, 0x1e, 0x67, 0x4a, 0x4a, 0x05, 0x68, 0x64, 0x61, 0x2b, 0x17, 0x36, 0x10, 0x33, 0x31, 0x42, 0x3d, 0x45, 0x06, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x1c, 0x2c, 0x32, 0x32, 0x37, 0x41, 0x2c, 0x46, 0x30, 0x36, 0x36, 0x42, 0x42, 0x29, 0x1b, 0x4a, 0x4a, 0x4d, 0x26, 0x60, 0x0b, 0x17, 0x36, 0x44, 0x45, 0x66, 0x3e, 0x44, 0x44, 0x1a, 0x05, 0x05, 0x05, 0x05, 0x05, 0x15, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0c, 0x2c, 0x32, 0x32, 0x38, 0x37, 0x32, 0x37, 0x30, 0x36, 0x4c, 0x31, 0x1e, 0x10, 0x1f, 0x52, 0x69, 0x52, 0x07, 0x2c, 0x10, 0x36, 0x62, 0x6a, 0x44, 0x6b, 0x3e, 0x44, 0x6c, 0x30, 0x09, 0x05, 0x05, 0x25, 0x54, 0x19, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x25, 0x2c, 0x37, 0x38, 0x37, 0x2c, 0x32, 0x32, 0x46, 0x30, 0x46, 0x4c, 0x31, 0x66, 0x4c, 0x36, 0x1a, 0x1a, 0x17, 0x37, 0x37, 0x10, 0x31, 0x62, 0x45, 0x4c, 0x3e, 0x44, 0x62, 0x30, 0x09, 0x05, 0x0a, 0x70, 0x71, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x22, 0x32, 0x32, 0x38, 0x41, 0x41, 0x38, 0x2d, 0x46, 0x66, 0x44, 0x6c, 0x6c, 0x6c, 0x3d, 0x3a, 0x42, 0x31, 0x32, 0x32, 0x32, 0x33, 0x33, 0x30, 0x36, 0x3e, 0x3e, 0x31, 0x07, 0x05, 0x12, 0x6e, 0x72, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x2d, 0x2c, 0x38, 0x32, 0x41, 0x37, 0x2d, 0x46, 0x66, 0x6a, 0x6c, 0x6d, 0x6d, 0x6c, 0x3d, 0x3d, 0x31, 0x38, 0x38, 0x39, 0x33, 0x39, 0x36, 0x30, 0x30, 0x66, 0x30, 0x40, 0x4d, 0x5f, 0x4d, 0x4d, 0x05, 0x05, 0x05, 0x15, 0x04, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x09, 0x5a, 0x2d, 0x32, 0x32, 0x37, 0x37, 0x32, 0x38, 0x46, 0x46, 0x66, 0x45, 0x44, 0x62, 0x44, 0x44, 0x3e, 0x31, 0x31, 0x31, 0x31, 0x31, 0x33, 0x37, 0x30, 0x10, 0x06, 0x05, 0x12, 0x0a, 0x05, 0x05, 0x05, 0x08, 0x68, 0x73, 0x05, 0x04, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x35, 0x22, 0x32, 0x32, 0x32, 0x3c, 0x37, 0x37, 0x2d, 0x39, 0x39, 0x39, 0x36, 0x36, 0x6b, 0x3e, 0x3e, 0x3e, 0x3e, 0x31, 0x4c, 0x39, 0x2d, 0x10, 0x16, 0x2a, 0x05, 0x05, 0x74, 0x74, 0x05, 0x05, 0x0c, 0x75, 0x5f, 0x1c, 0x05, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x40, 0x2c, 0x32, 0x32, 0x32, 0x41, 0x37, 0x41, 0x2c, 0x2c, 0x41, 0x2c, 0x33, 0x36, 0x31, 0x36, 0x31, 0x31, 0x17, 0x46, 0x2c, 0x16, 0x40, 0x05, 0x05, 0x05, 0x05, 0x20, 0x5f, 0x4d, 0x72, 0x76, 0x06, 0x25, 0x4a, 0x05, 0x05, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x40, 0x0b, 0x2d, 0x37, 0x2d, 0x2c, 0x2c, 0x37, 0x37, 0x38, 0x2c, 0x37, 0x2c, 0x10, 0x10, 0x39, 0x30, 0x0b, 0x2c, 0x11, 0x09, 0x05, 0x09, 0x4a, 0x05, 0x05, 0x19, 0x1d, 0x26, 0x76, 0x08, 0x05, 0x05, 0x05, 0x15, 0x25, 0x4d, 0x53, 0x77, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4d, 0x5a, 0x2c, 0x37, 0x2d, 0x2c, 0x37, 0x37, 0x39, 0x39, 0x33, 0x38, 0x2c, 0x2d, 0x2d, 0x2c, 0x5e, 0x2a, 0x05, 0x15, 0x3b, 0x17, 0x1f, 0x19, 0x05, 0x06, 0x26, 0x60, 0x5f, 0x0c, 0x05, 0x05, 0x05, 0x35, 0x68, 0x78, 0x56, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x35, 0x2c, 0x2c, 0x2c, 0x37, 0x32, 0x37, 0x2c, 0x37, 0x32, 0x46, 0x33, 0x46, 0x39, 0x11, 0x15, 0x05, 0x05, 0x18, 0x31, 0x44, 0x6a, 0x30, 0x6e, 0x2b, 0x4b, 0x11, 0x5f, 0x63, 0x72, 0x54, 0x20, 0x74, 0x58, 0x25, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x15, 0x0b, 0x2c, 0x38, 0x2d, 0x39, 0x39, 0x2d, 0x37, 0x3c, 0x32, 0x37, 0x0b, 0x18, 0x05, 0x05, 0x05, 0x4e, 0x26, 0x32, 0x45, 0x6a, 0x46, 0x2b, 0x72, 0x4e, 0x05, 0x35, 0x0a, 0x75, 0x5f, 0x70, 0x08, 0x09, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x35, 0x22, 0x2d, 0x30, 0x6b, 0x6b, 0x66, 0x36, 0x30, 0x36, 0x4c, 0x36, 0x30, 0x18, 0x05, 0x05, 0x05, 0x09, 0x4b, 0x32, 0x46, 0x66, 0x38, 0x0b, 0x09, 0x05, 0x05, 0x05, 0x05, 0x09, 0x05, 0x05, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0a, 0x2c, 0x2c, 0x31, 0x62, 0x62, 0x6b, 0x31, 0x45, 0x44, 0x44, 0x45, 0x31, 0x10, 0x0c, 0x4d, 0x0c, 0x08, 0x0b, 0x3c, 0x32, 0x33, 0x66, 0x17, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x09, 0x22, 0x2c, 0x2d, 0x31, 0x45, 0x6b, 0x36, 0x31, 0x6b, 0x62, 0x45, 0x6a, 0x66, 0x30, 0x0b, 0x2c, 0x2c, 0x2c, 0x2c, 0x37, 0x46, 0x6b, 0x44, 0x62, 0x5e, 0x05, 0x05, 0x05, 0x05, 0x04, 0x03, 0x03, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0c, 0x1d, 0x2c, 0x39, 0x36, 0x4c, 0x30, 0x30, 0x30, 0x36, 0x4c, 0x66, 0x4c, 0x36, 0x30, 0x37, 0x41, 0x2c, 0x2d, 0x2c, 0x3c, 0x33, 0x6b, 0x44, 0x44, 0x39, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x2d, 0x2d, 0x2d, 0x36, 0x39, 0x2d, 0x32, 0x38, 0x38, 0x46, 0x6a, 0x6d, 0x3d, 0x62, 0x46, 0x3c, 0x37, 0x2d, 0x32, 0x32, 0x32, 0x38, 0x4c, 0x30, 0x16, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0a, 0x37, 0x38, 0x38, 0x39, 0x37, 0x2c, 0x37, 0x37, 0x30, 0x45, 0x6d, 0x6d, 0x62, 0x62, 0x38, 0x3c, 0x3c, 0x32, 0x37, 0x32, 0x32, 0x32, 0x2c, 0x14, 0x15, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x6e, 0x37, 0x38, 0x38, 0x38, 0x37, 0x2c, 0x2d, 0x30, 0x31, 0x62, 0x6a, 0x6d, 0x6a, 0x6a, 0x46, 0x32, 0x32, 0x37, 0x37, 0x32, 0x30, 0x17, 0x29, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4a, 0x0b, 0x38, 0x38, 0x38, 0x2c, 0x2c, 0x0b, 0x2d, 0x39, 0x4c, 0x45, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x38, 0x37, 0x2c, 0x41, 0x18, 0x1c, 0x0c, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x15, 0x0b, 0x2d, 0x38, 0x38, 0x37, 0x2c, 0x2c, 0x2c, 0x37, 0x32, 0x4c, 0x6b, 0x44, 0x44, 0x45, 0x6a, 0x45, 0x38, 0x37, 0x1c, 0x09, 0x05, 0x05, 0x04, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x09, 0x1d, 0x38, 0x38, 0x38, 0x38, 0x2c, 0x3c, 0x37, 0x37, 0x32, 0x32, 0x46, 0x36, 0x1e, 0x6b, 0x4c, 0x46, 0x32, 0x22, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, 0x37, 0x32, 0x37, 0x38, 0x38, 0x37, 0x32, 0x3c, 0x32, 0x32, 0x37, 0x38, 0x2d, 0x2d, 0x38, 0x2c, 0x2c, 0x4f, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x08, 0x3c, 0x37, 0x41, 0x38, 0x2d, 0x37, 0x37, 0x3c, 0x32, 0x3c, 0x32, 0x37, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0c, 0x41, 0x3c, 0x3c, 0x38, 0x32, 0x3c, 0x3c, 0x3c, 0x41, 0x32, 0x41, 0x37, 0x2c, 0x2c, 0x41, 0x38, 0x45, 0x18, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x2a, 0x2c, 0x3c, 0x37, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x37, 0x2c, 0x2c, 0x2c, 0x2c, 0x4c, 0x45, 0x6a, 0x1a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x11, 0x2c, 0x37, 0x41, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x41, 0x37, 0x37, 0x4c, 0x44, 0x6d, 0x6a, 0x1a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x5a, 0x2c, 0x41, 0x3c, 0x3c, 0x3c, 0x32, 0x2c, 0x32, 0x2c, 0x2c, 0x38, 0x38, 0x36, 0x45, 0x62, 0x44, 0x45, 0x29, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x2a, 0x2c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x37, 0x37, 0x32, 0x37, 0x39, 0x4c, 0x4c, 0x45, 0x62, 0x44, 0x62, 0x30, 0x2a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4a, 0x5a, 0x41, 0x3c, 0x3c, 0x3c, 0x3c, 0x32, 0x3c, 0x37, 0x37, 0x2d, 0x46, 0x4c, 0x6b, 0x6b, 0x45, 0x3e, 0x36, 0x29, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x27, 0x3c, 0x37, 0x3c, 0x3c, 0x37, 0x37, 0x32, 0x38, 0x37, 0x37, 0x37, 0x38, 0x39, 0x36, 0x4c, 0x30, 0x10, 0x16, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x04, 0x05, 0x05, 0x25, 0x1d, 0x37, 0x37, 0x41, 0x32, 0x3c, 0x32, 0x41, 0x37, 0x32, 0x2c, 0x41, 0x37, 0x2c, 0x32, 0x37, 0x2c, 0x2c, 0x5a, 0x0c, 0x05, 0x05, 0x05, 0x04, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x05, 0x05, 0x15, 0x5a, 0x37, 0x2c, 0x41, 0x2c, 0x2c, 0x41, 0x37, 0x41, 0x41, 0x3c, 0x2c, 0x41, 0x41, 0x3c, 0x37, 0x2c, 0x39, 0x0b, 0x0b, 0x25, 0x05, 0x05, 0x05, 0x05, 0x04, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x2a, 0x22, 0x2d, 0x37, 0x2c, 0x3c, 0x1d, 0x2c, 0x38, 0x2c, 0x41, 0x2c, 0x2c, 0x2d, 0x39, 0x37, 0x3c, 0x37, 0x30, 0x1a, 0x5e, 0x6e, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x2a, 0x6e, 0x0b, 0x2d, 0x38, 0x41, 0x41, 0x6e, 0x5a, 0x2c, 0x41, 0x32, 0x38, 0x32, 0x39, 0x3f, 0x6f, 0x16, 0x37, 0x1a, 0x1f, 0x1f, 0x16, 0x1d, 0x0c, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x09, 0x40, 0x07, 0x2c, 0x37, 0x2c, 0x2d, 0x2c, 0x1d, 0x0e, 0x09, 0x0b, 0x4b, 0x07, 0x41, 0x38, 0x2d, 0x10, 0x2d, 0x10, 0x0b, 0x2b, 0x33, 0x3f, 0x21, 0x29, 0x07, 0x5e, 0x2f, 0x12, 0x08, 0x2a, 0x0c, 0x25, 0x09, 0x09, 0x09, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x19, 0x40, 0x28, 0x22, 0x2c, 0x38, 0x32, 0x32, 0x32, 0x1d, 0x0e, 0x19, 0x05, 0x35, 0x2c, 0x4b, 0x70, 0x0b, 0x32, 0x2c, 0x16, 0x16, 0x16, 0x0b, 0x22, 0x26, 0x0b, 0x10, 0x3f, 0x29, 0x1f, 0x47, 0x1f, 0x1f, 0x5e, 0x0b, 0x4b, 0x74, 0x84, 0x74, 0x84, 0x06, 0x35, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x09, 0x4d, 0x27, 0x0a, 0x22, 0x1d, 0x2c, 0x2c, 0x37, 0x32, 0x41, 0x41, 0x16, 0x27, 0x15, 0x09, 0x4a, 0x09, 0x28, 0x2d, 0x0b, 0x76, 0x2c, 0x37, 0x2d, 0x37, 0x32, 0x37, 0x0b, 0x0b, 0x5e, 0x5a, 0x4b, 0x0b, 0x0b, 0x07, 0x6e, 0x16, 0x5e, 0x10, 0x76, 0x5c, 0x68, 0x79, 0x7a, 0x53, 0x71, 0x54, 0x5d, 0x08, 0x4d, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x04, 0x05, 0x05, 0x05, 0x25, 0x27, 0x28, 0x0b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x41, 0x41, 0x41, 0x22, 0x11, 0x35, 0x4d, 0x4d, 0x35, 0x1c, 0x06, 0x0a, 0x22, 0x38, 0x38, 0x37, 0x38, 0x38, 0x38, 0x2d, 0x39, 0x39, 0x39, 0x10, 0x39, 0x10, 0x4b, 0x12, 0x08, 0x35, 0x67, 0x2a, 0x08, 0x74, 0x70, 0x81, 0x55, 0x78, 0x79, 0x57, 0x53, 0x71, 0x71, 0x73, 0x84, 0x25, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x05, 0x09, 0x27, 0x16, 0x0b, 0x2c, 0x2d, 0x2c, 0x41, 0x41, 0x1d, 0x22, 0x5a, 0x0f, 0x14, 0x0a, 0x28, 0x0a, 0x28, 0x28, 0x28, 0x6e, 0x5a, 0x65, 0x1d, 0x0b, 0x2d, 0x38, 0x46, 0x38, 0x38, 0x38, 0x39, 0x2d, 0x46, 0x39, 0x30, 0x39, 0x4b, 0x68, 0x79, 0x7a, 0x57, 0x67, 0x67, 0x56, 0x53, 0x71, 0x68, 0x7e, 0x85, 0x59, 0x73, 0x79, 0x54, 0x7a, 0x54, 0x06, 0x1c, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x4d, 0x16, 0x0b, 0x10, 0x39, 0x2d, 0x0b, 0x28, 0x06, 0x2a, 0x25, 0x35, 0x06, 0x11, 0x0a, 0x28, 0x07, 0x5a, 0x22, 0x26, 0x5a, 0x41, 0x7b, 0x7c, 0x60, 0x76, 0x22, 0x1d, 0x32, 0x38, 0x46, 0x46, 0x46, 0x38, 0x38, 0x38, 0x38, 0x2b, 0x75, 0x7d, 0x7e, 0x55, 0x78, 0x7a, 0x57, 0x57, 0x57, 0x71, 0x20, 0x68, 0x55, 0x85, 0x7a, 0x57, 0x53, 0x71, 0x57, 0x5d, 0x19, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x0c, 0x16, 0x0b, 0x30, 0x39, 0x18, 0x2a, 0x09, 0x05, 0x4e, 0x19, 0x25, 0x0c, 0x27, 0x11, 0x0a, 0x0a, 0x2f, 0x5a, 0x5a, 0x26, 0x5a, 0x7b, 0x7c, 0x7c, 0x61, 0x7f, 0x7f, 0x7f, 0x76, 0x22, 0x22, 0x0b, 0x2d, 0x0b, 0x2d, 0x2d, 0x33, 0x0b, 0x5f, 0x80, 0x7d, 0x5c, 0x81, 0x55, 0x59, 0x59, 0x73, 0x73, 0x54, 0x5c, 0x5c, 0x7e, 0x55, 0x59, 0x73, 0x7a, 0x71, 0x19, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x09, 0x25, 0x08, 0x07, 0x5e, 0x10, 0x22, 0x1c, 0x4a, 0x05, 0x09, 0x05, 0x15, 0x4d, 0x19, 0x19, 0x4d, 0x08, 0x12, 0x74, 0x0f, 0x6e, 0x5a, 0x26, 0x1d, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x61, 0x5b, 0x82, 0x82, 0x80, 0x80, 0x82, 0x7f, 0x7f, 0x7f, 0x7f, 0x5b, 0x7f, 0x82, 0x80, 0x7d, 0x5c, 0x7e, 0x79, 0x54, 0x54, 0x7a, 0x73, 0x0f, 0x2a, 0x25, 0x19, 0x09, 0x4a, 0x05, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x09, 0x4d, 0x2a, 0x06, 0x74, 0x28, 0x22, 0x22, 0x2d, 0x2c, 0x0e, 0x05, 0x05, 0x05, 0x05, 0x05, 0x3b, 0x07, 0x19, 0x09, 0x25, 0x0c, 0x27, 0x12, 0x0f, 0x2f, 0x26, 0x26, 0x1d, 0x65, 0x65, 0x7c, 0x7c, 0x7b, 0x7c, 0x7b, 0x7b, 0x60, 0x5b, 0x7f, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x80, 0x80, 0x83, 0x83, 0x81, 0x7e, 0x59, 0x73, 0x73, 0x84, 0x5d, 0x25, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x19, 0x08, 0x12, 0x0a, 0x0f, 0x6e, 0x5a, 0x26, 0x22, 0x2c, 0x2c, 0x0b, 0x27, 0x05, 0x05, 0x05, 0x15, 0x1e, 0x1e, 0x6f, 0x0c, 0x09, 0x15, 0x0c, 0x20, 0x12, 0x0f, 0x6e, 0x5a, 0x26, 0x26, 0x26, 0x65, 0x65, 0x65, 0x65, 0x7b, 0x7c, 0x7b, 0x65, 0x7b, 0x61, 0x61, 0x60, 0x64, 0x64, 0x64, 0x5b, 0x5b, 0x5f, 0x63, 0x70, 0x63, 0x58, 0x5d, 0x2a, 0x15, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x4a, 0x4d, 0x27, 0x11, 0x0a, 0x28, 0x6e, 0x5a, 0x26, 0x65, 0x41, 0x1d, 0x2c, 0x2c, 0x5e, 0x29, 0x0e, 0x14, 0x17, 0x31, 0x6b, 0x30, 0x14, 0x25, 0x09, 0x15, 0x4d, 0x08, 0x74, 0x0a, 0x0f, 0x2f, 0x5a, 0x26, 0x26, 0x1d, 0x1d, 0x1d, 0x2b, 0x65, 0x1d, 0x41, 0x65, 0x65, 0x7b, 0x65, 0x65, 0x1d, 0x6e, 0x74, 0x5d, 0x1c, 0x25, 0x15, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x19, 0x4d, 0x08, 0x06, 0x0a, 0x2f, 0x6e, 0x2f, 0x6e, 0x26, 0x41, 0x7b, 0x65, 0x41, 0x37, 0x33, 0x30, 0x36, 0x36, 0x4c, 0x6b, 0x66, 0x30, 0x14, 0x35, 0x4a, 0x09, 0x15, 0x15, 0x25, 0x25, 0x0c, 0x1c, 0x08, 0x06, 0x5d, 0x5d, 0x5d, 0x0e, 0x06, 0x12, 0x06, 0x08, 0x1c, 0x2a, 0x0c, 0x19, 0x09, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x09, 0x19, 0x35, 0x08, 0x12, 0x28, 0x2f, 0x2f, 0x6e, 0x5a, 0x41, 0x7c, 0x3c, 0x3c, 0x2c, 0x41, 0x2d, 0x2d, 0x39, 0x30, 0x4c, 0x4c, 0x66, 0x66, 0x31, 0x24, 0x20, 0x4a, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x4a, 0x09, 0x4a, 0x09, 0x09, 0x05, 0x09, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x09, 0x15, 0x0c, 0x1c, 0x12, 0x28, 0x2f, 0x5a, 0x1d, 0x7c, 0x7b, 0x41, 0x7b, 0x3c, 0x7b, 0x3c, 0x41, 0x41, 0x5a, 0x16, 0x28, 0x14, 0x14, 0x14, 0x3b, 0x12, 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x4a, 0x09, 0x15, 0x1c, 0x12, 0x12, 0x0a, 0x0f, 0x2f, 0x07, 0x2f, 0x0a, 0x12, 0x27, 0x0c, 0x4d, 0x15, 0x09, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x09, 0x15, 0x15, 0x15, 0x19, 0x4e, 0x4e, 0x05, 0x4a, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+unsigned int logo_img_size = sizeof(logo_img);

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 17:07:06 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 4AD021065688;
	Wed,  7 Apr 2010 17:07:06 +0000 (UTC)
	(envelope-from jkim@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 38B448FC20;
	Wed,  7 Apr 2010 17:07:06 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37H76Pc057494;
	Wed, 7 Apr 2010 17:07:06 GMT (envelope-from jkim@svn.freebsd.org)
Received: (from jkim@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37H76OW057492;
	Wed, 7 Apr 2010 17:07:06 GMT (envelope-from jkim@svn.freebsd.org)
Message-Id: <201004071707.o37H76OW057492@svn.freebsd.org>
From: Jung-uk Kim 
Date: Wed, 7 Apr 2010 17:07:06 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206363 - head/sys/dev/syscons/logo
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 17:07:06 -0000

Author: jkim
Date: Wed Apr  7 17:07:06 2010
New Revision: 206363
URL: http://svn.freebsd.org/changeset/base/206363

Log:
  Add the official FreeBSD logo image file for logo_saver.

Modified:
  head/sys/dev/syscons/logo/logo.c

Modified: head/sys/dev/syscons/logo/logo.c
==============================================================================
--- head/sys/dev/syscons/logo/logo.c	Wed Apr  7 17:03:05 2010	(r206362)
+++ head/sys/dev/syscons/logo/logo.c	Wed Apr  7 17:07:06 2010	(r206363)
@@ -1,358 +1,841 @@
 /* $FreeBSD$ */
 
-#define logo_width 88
-#define logo_height 88
+#define	LOGO_WIDTH	66
+#define	LOGO_HEIGHT	69
 
-unsigned int logo_w = logo_width;
-unsigned int logo_h = logo_height;
+unsigned int logo_w = LOGO_WIDTH;
+unsigned int logo_h = LOGO_HEIGHT;
 
-unsigned char logo_pal[768] = {
-    0x00, 0x00, 0x00,
-    0x33, 0x33, 0x33,
-    0x66, 0x66, 0x66,
-    0x99, 0x99, 0x99,
-    0xcc, 0xcc, 0xcc,
-    0xff, 0xff, 0xff,
-    0x90, 0x8f, 0x90,
-    0x56, 0x4b, 0x55,
-    0xa3, 0xa5, 0xab,
-    0xfd, 0xfd, 0xfd,
-    0x6d, 0x6e, 0x74,
-    0x41, 0x2b, 0x39,
-    0xcb, 0xc8, 0xcb,
-    0xcf, 0xbb, 0xba,
-    0x8e, 0x82, 0x87,
-    0x5c, 0x5d, 0x60,
-    0x52, 0x2a, 0x37,
-    0x7f, 0x76, 0x7d,
-    0x82, 0x82, 0x85,
-    0x7a, 0x3e, 0x45,
-    0x7f, 0x6e, 0x70,
-    0xef, 0xef, 0xed,
-    0x53, 0x41, 0x4b,
-    0x67, 0x2b, 0x35,
-    0x6a, 0x55, 0x62,
-    0xe7, 0xe2, 0xe3,
-    0x64, 0x35, 0x3f,
-    0xf7, 0xe0, 0xe7,
-    0xb1, 0xb2, 0xb2,
-    0x31, 0x2b, 0x35,
-    0x7a, 0x2d, 0x37,
-    0x69, 0x4c, 0x56,
-    0x95, 0x9d, 0xa4,
-    0x85, 0x61, 0x69,
-    0x40, 0x34, 0x41,
-    0x8f, 0x2e, 0x39,
-    0x7a, 0x50, 0x5a,
-    0xde, 0xe1, 0xe0,
-    0x32, 0x33, 0x3d,
-    0xa0, 0x9b, 0x9c,
-    0x68, 0x63, 0x67,
-    0x76, 0x60, 0x67,
-    0xba, 0xb6, 0xb8,
-    0x29, 0x24, 0x41,
-    0x38, 0x21, 0x29,
-    0x42, 0x21, 0x27,
-    0xa2, 0x2a, 0x32,
-    0x56, 0x55, 0x58,
-    0x55, 0x21, 0x2b,
-    0x7a, 0x20, 0x2a,
-    0x37, 0x16, 0x21,
-    0x4d, 0x18, 0x37,
-    0x8a, 0x3a, 0x3e,
-    0xc0, 0xc2, 0xc4,
-    0x64, 0x23, 0x2c,
-    0x37, 0x1a, 0x24,
-    0x42, 0x18, 0x20,
-    0x4c, 0x21, 0x2b,
-    0xa0, 0x23, 0x2e,
-    0x95, 0x6c, 0x76,
-    0x26, 0x16, 0x1c,
-    0xa5, 0x18, 0x23,
-    0x84, 0x20, 0x2b,
-    0x6d, 0x3f, 0x49,
-    0xae, 0xa7, 0xac,
-    0x2a, 0x1f, 0x24,
-    0x90, 0x21, 0x30,
-    0xa0, 0x39, 0x3e,
-    0x95, 0x0f, 0x1c,
-    0x84, 0x13, 0x1e,
-    0x4e, 0x17, 0x24,
-    0x8c, 0x56, 0x5f,
-    0xe0, 0xc4, 0xcb,
-    0xa5, 0x7f, 0x8e,
-    0xff, 0xff, 0xf1,
-    0x3d, 0x3d, 0x5d,
-    0x61, 0x19, 0x26,
-    0xd5, 0xd5, 0xd5,
-    0xff, 0xf1, 0xed,
-    0xb6, 0x9c, 0xa5,
-    0x87, 0x4c, 0x5a,
-    0xa0, 0x76, 0x76,
-    0xc8, 0xa0, 0xa0,
-    0xa2, 0xc1, 0xc8,
-    0x91, 0xae, 0xb6,
-    0x52, 0x8b, 0xae,
-    0xb3, 0xd2, 0xd4,
-    0x95, 0xb7, 0xc1,
-    0x54, 0x6e, 0x83,
-    0x67, 0x90, 0xa6,
-    0x44, 0x3e, 0x45,
-    0x23, 0x40, 0x6a,
-    0x41, 0x6e, 0x97,
-    0x7e, 0x8e, 0x91,
-    0x52, 0x33, 0x41,
-    0x39, 0x49, 0x68,
-    0x1d, 0x2a, 0x48,
-    0x17, 0x21, 0x45,
-    0x90, 0x17, 0x1f,
-    0x38, 0x54, 0x71,
-    0x1c, 0x33, 0x58,
-    0x1c, 0x1e, 0x23,
-    0x6c, 0x17, 0x21,
-    0xb0, 0xc5, 0xc1,
-    0x5d, 0x7f, 0x96,
-    0xe9, 0xbf, 0xc1,
-    0x96, 0x06, 0x0f,
-    0x78, 0x16, 0x1e,
-    0xab, 0x0e, 0x18,
-    0xa6, 0x06, 0x0e,
-    0x4c, 0x4c, 0x54,
-    0x61, 0x42, 0x4c,
-    0x48, 0x5f, 0x84,
-    0xa0, 0xb8, 0xbe,
-    0x5c, 0x66, 0x7f,
-    0x7b, 0x9e, 0xa9,
-    0x6f, 0x75, 0x7f,
-    0x45, 0x54, 0x74,
-    0x32, 0x3e, 0x63,
-    0xb1, 0xb4, 0xb3,
-    0x66, 0x9d, 0xb4,
-    0x7a, 0x9f, 0xbb,
-    0x82, 0xaa, 0xba,
-    0x13, 0x15, 0x17,
-    0x0b, 0x0b, 0x0a,
-    0x37, 0x66, 0x92,
-    0x4c, 0x7f, 0xa5,
-    0x24, 0x4c, 0x7b,
-    0x25, 0x5f, 0x91,
-    0x40, 0x7d, 0xa5,
-    0x1d, 0x56, 0x88,
-    0x2d, 0x6f, 0xa0,
-    0x70, 0x81, 0x8f,
-    0x58, 0x97, 0xbd,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00,
+unsigned char logo_pal[256 * 3] = {
+	0x00, 0x00, 0x00,
+	0x0b, 0x00, 0x00,
+	0x0b, 0x0b, 0x0b,
+	0x13, 0x01, 0x01,
+	0x1b, 0x05, 0x04,
+	0x13, 0x13, 0x13,
+	0x1b, 0x1b, 0x1b,
+	0x1c, 0x15, 0x14,
+	0x25, 0x03, 0x01,
+	0x33, 0x0e, 0x0c,
+	0x23, 0x21, 0x1a,
+	0x23, 0x23, 0x23,
+	0x2b, 0x2b, 0x2b,
+	0x3c, 0x3c, 0x3c,
+	0x34, 0x32, 0x32,
+	0x35, 0x30, 0x2a,
+	0x58, 0x00, 0x00,
+	0x4c, 0x0f, 0x0d,
+	0x47, 0x24, 0x15,
+	0x6c, 0x01, 0x01,
+	0x66, 0x09, 0x09,
+	0x66, 0x17, 0x15,
+	0x74, 0x01, 0x00,
+	0x7b, 0x00, 0x00,
+	0x77, 0x09, 0x08,
+	0x79, 0x19, 0x17,
+	0x6e, 0x3e, 0x3e,
+	0x76, 0x35, 0x35,
+	0x72, 0x2b, 0x26,
+	0x65, 0x2a, 0x20,
+	0x5a, 0x4f, 0x32,
+	0x44, 0x44, 0x44,
+	0x4b, 0x4a, 0x4a,
+	0x57, 0x56, 0x56,
+	0x56, 0x4d, 0x4c,
+	0x77, 0x45, 0x45,
+	0x6d, 0x5d, 0x4f,
+	0x6c, 0x6c, 0x6c,
+	0x62, 0x62, 0x62,
+	0x76, 0x75, 0x75,
+	0x72, 0x67, 0x55,
+	0x84, 0x00, 0x00,
+	0x8b, 0x00, 0x00,
+	0x88, 0x0c, 0x0b,
+	0x89, 0x18, 0x17,
+	0x93, 0x00, 0x00,
+	0x9b, 0x00, 0x00,
+	0x99, 0x0a, 0x06,
+	0x95, 0x17, 0x16,
+	0x95, 0x11, 0x0c,
+	0x87, 0x2a, 0x29,
+	0x99, 0x29, 0x27,
+	0x98, 0x37, 0x37,
+	0x86, 0x39, 0x34,
+	0xa4, 0x00, 0x00,
+	0xab, 0x00, 0x00,
+	0xab, 0x0c, 0x01,
+	0xa7, 0x0b, 0x06,
+	0xa8, 0x13, 0x0a,
+	0xa6, 0x16, 0x15,
+	0xb3, 0x00, 0x00,
+	0xbb, 0x00, 0x00,
+	0xb7, 0x0a, 0x03,
+	0xb3, 0x12, 0x00,
+	0xba, 0x15, 0x03,
+	0xb5, 0x18, 0x17,
+	0xb7, 0x27, 0x03,
+	0xb9, 0x27, 0x18,
+	0xa8, 0x2a, 0x16,
+	0xa8, 0x26, 0x25,
+	0xb9, 0x2a, 0x29,
+	0xb6, 0x39, 0x37,
+	0xab, 0x35, 0x2f,
+	0xae, 0x4c, 0x36,
+	0x93, 0x5d, 0x39,
+	0x90, 0x4e, 0x4b,
+	0x91, 0x67, 0x56,
+	0x8a, 0x75, 0x70,
+	0xa8, 0x49, 0x47,
+	0xb4, 0x5a, 0x58,
+	0xb2, 0x53, 0x4b,
+	0xac, 0x71, 0x53,
+	0xb8, 0x7a, 0x78,
+	0xb2, 0x65, 0x64,
+	0xc3, 0x01, 0x00,
+	0xc3, 0x0a, 0x00,
+	0xcb, 0x00, 0x00,
+	0xca, 0x0b, 0x00,
+	0xc7, 0x08, 0x08,
+	0xc5, 0x13, 0x00,
+	0xcb, 0x12, 0x00,
+	0xcb, 0x1a, 0x01,
+	0xc3, 0x18, 0x05,
+	0xc9, 0x17, 0x14,
+	0xd3, 0x00, 0x00,
+	0xd2, 0x0b, 0x00,
+	0xdb, 0x00, 0x00,
+	0xd8, 0x0c, 0x05,
+	0xd3, 0x14, 0x00,
+	0xd3, 0x1b, 0x01,
+	0xdb, 0x1c, 0x01,
+	0xd9, 0x14, 0x03,
+	0xd5, 0x18, 0x15,
+	0xc8, 0x25, 0x01,
+	0xd4, 0x23, 0x02,
+	0xd3, 0x2b, 0x01,
+	0xdb, 0x22, 0x01,
+	0xdb, 0x2a, 0x01,
+	0xd5, 0x27, 0x1c,
+	0xd6, 0x33, 0x02,
+	0xdb, 0x33, 0x02,
+	0xda, 0x3a, 0x03,
+	0xd4, 0x3c, 0x1a,
+	0xc8, 0x33, 0x17,
+	0xca, 0x29, 0x24,
+	0xc8, 0x32, 0x2b,
+	0xd3, 0x35, 0x2d,
+	0xe3, 0x00, 0x00,
+	0xeb, 0x00, 0x00,
+	0xea, 0x0b, 0x00,
+	0xe5, 0x18, 0x03,
+	0xf1, 0x03, 0x00,
+	0xf4, 0x0b, 0x00,
+	0xf4, 0x17, 0x01,
+	0xe2, 0x24, 0x01,
+	0xe3, 0x2a, 0x01,
+	0xe9, 0x2c, 0x02,
+	0xea, 0x28, 0x07,
+	0xe3, 0x33, 0x01,
+	0xe3, 0x3b, 0x02,
+	0xea, 0x33, 0x02,
+	0xeb, 0x3c, 0x02,
+	0xe9, 0x3c, 0x09,
+	0xf4, 0x25, 0x04,
+	0xf3, 0x34, 0x0e,
+	0xed, 0x35, 0x29,
+	0xd9, 0x45, 0x0b,
+	0xd7, 0x43, 0x14,
+	0xc8, 0x40, 0x19,
+	0xd7, 0x56, 0x3a,
+	0xcf, 0x46, 0x34,
+	0xec, 0x43, 0x03,
+	0xeb, 0x4c, 0x04,
+	0xe4, 0x47, 0x05,
+	0xe9, 0x58, 0x17,
+	0xf0, 0x47, 0x03,
+	0xf1, 0x4f, 0x11,
+	0xee, 0x4a, 0x2d,
+	0xee, 0x6d, 0x19,
+	0xee, 0x6c, 0x34,
+	0xcf, 0x66, 0x33,
+	0xc9, 0x4b, 0x49,
+	0xc6, 0x57, 0x57,
+	0xdb, 0x55, 0x4a,
+	0xd7, 0x58, 0x52,
+	0xcf, 0x4e, 0x49,
+	0xd3, 0x69, 0x54,
+	0xc9, 0x69, 0x67,
+	0xc9, 0x77, 0x76,
+	0xda, 0x7a, 0x77,
+	0xd3, 0x72, 0x6d,
+	0xf5, 0x59, 0x4c,
+	0xed, 0x71, 0x51,
+	0xe5, 0x74, 0x65,
+	0xef, 0x76, 0x6e,
+	0xb6, 0x8c, 0x6b,
+	0xa4, 0x8c, 0x63,
+	0xf2, 0x98, 0x28,
+	0xf2, 0x92, 0x36,
+	0xf3, 0xa8, 0x2b,
+	0xf6, 0xb4, 0x35,
+	0xed, 0xaa, 0x34,
+	0xdb, 0x95, 0x2c,
+	0xf1, 0x8f, 0x52,
+	0xfa, 0x87, 0x67,
+	0xfa, 0x97, 0x75,
+	0xef, 0x8e, 0x73,
+	0xf2, 0xb1, 0x4f,
+	0xf5, 0xa6, 0x79,
+	0xf0, 0xae, 0x71,
+	0xd1, 0x88, 0x76,
+	0xf6, 0xcc, 0x69,
+	0xfc, 0xe9, 0x76,
+	0x89, 0x89, 0x89,
+	0x98, 0x97, 0x97,
+	0x90, 0x8f, 0x8f,
+	0xb3, 0x94, 0x89,
+	0xa6, 0xa6, 0xa5,
+	0xb8, 0xb8, 0xb8,
+	0xb2, 0xa8, 0xa6,
+	0xc3, 0x8c, 0x8b,
+	0xd5, 0x88, 0x87,
+	0xd7, 0x99, 0x98,
+	0xcd, 0x9a, 0x9a,
+	0xd0, 0xa6, 0x93,
+	0xc6, 0xaa, 0xa4,
+	0xd5, 0xa7, 0xa7,
+	0xd9, 0xb8, 0xb6,
+	0xc6, 0xb9, 0xb5,
+	0xfa, 0x9a, 0x8a,
+	0xef, 0x94, 0x8d,
+	0xed, 0xa6, 0x93,
+	0xf7, 0xa7, 0x86,
+	0xf5, 0xa9, 0x98,
+	0xf6, 0xb7, 0x87,
+	0xf6, 0xb5, 0x97,
+	0xec, 0xab, 0x93,
+	0xe5, 0xa7, 0xa6,
+	0xe2, 0xb4, 0xb4,
+	0xfa, 0xac, 0xa3,
+	0xf3, 0xb6, 0xa6,
+	0xfa, 0xba, 0xb5,
+	0xe8, 0xb6, 0xac,
+	0xf5, 0xc2, 0x94,
+	0xfa, 0xc7, 0xa8,
+	0xf8, 0xc7, 0xba,
+	0xfa, 0xd4, 0xab,
+	0xf9, 0xd5, 0xb8,
+	0xeb, 0xc5, 0xb1,
+	0xfd, 0xea, 0x8b,
+	0xfd, 0xeb, 0xba,
+	0xfd, 0xef, 0xae,
+	0xd2, 0xc7, 0xbf,
+	0xca, 0xc8, 0xc7,
+	0xd5, 0xc7, 0xc7,
+	0xd7, 0xd6, 0xd6,
+	0xd3, 0xd1, 0xc4,
+	0xea, 0xc6, 0xc6,
+	0xec, 0xd3, 0xd3,
+	0xe8, 0xda, 0xd9,
+	0xf8, 0xca, 0xc8,
+	0xfa, 0xd8, 0xc7,
+	0xf1, 0xd5, 0xd4,
+	0xf3, 0xda, 0xda,
+	0xfb, 0xdb, 0xd3,
+	0xfb, 0xdd, 0xdb,
+	0xf8, 0xd7, 0xd5,
+	0xef, 0xde, 0xc8,
+	0xfb, 0xe4, 0xcd,
+	0xfc, 0xe8, 0xc9,
+	0xfc, 0xe4, 0xdc,
+	0xfb, 0xeb, 0xdb,
+	0xf8, 0xe6, 0xd6,
+	0xfd, 0xf7, 0xcb,
+	0xf1, 0xe9, 0xd9,
+	0xe9, 0xe6, 0xe6,
+	0xfa, 0xe4, 0xe3,
+	0xfb, 0xeb, 0xe3,
+	0xfa, 0xec, 0xea,
+	0xf4, 0xe7, 0xe4,
+	0xfc, 0xf1, 0xe3,
+	0xfc, 0xf2, 0xec,
+	0xf4, 0xf4, 0xf4,
+	0xfc, 0xf4, 0xf2,
+	0xfd, 0xf9, 0xf5,
+	0xfd, 0xfc, 0xfb
 };
 
-unsigned char logo_img[logo_width*logo_height] = {
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x09, 0x0a, 0x0b, 0x07, 0x0c, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0d, 0x0e, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x09, 0x0f, 0x0b, 0x10, 0x11, 0x09, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x12, 0x13, 0x14, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x15, 0x16, 0x0b, 0x17, 0x18, 0x19, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x11, 0x13, 0x1a, 0x1b, 0x05, 0x05, 0x05, 0x04, 0x03, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x1c, 0x1d, 0x10, 0x1e, 0x1f, 0x19, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x20, 0x0b, 0x1e, 0x21, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x19, 0x22, 0x0b, 0x17, 0x23, 0x24, 0x15, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x25, 0x26, 0x10, 0x23, 0x27, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x05, 0x05, 0x05, 0x25, 0x27, 0x11, 0x28, 0x29, 0x11, 0x06, 0x0d, 0x09, 0x05, 0x2a, 0x2b, 0x2c, 0x2d, 0x1e, 0x2e, 0x21, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x2f, 0x0b, 0x30, 0x31, 0x0c, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x15, 0x06, 0x16, 0x22, 0x1d, 0x2c, 0x32, 0x33, 0x17, 0x17, 0x17, 0x22, 0x14, 0x16, 0x1d, 0x2c, 0x2d, 0x1e, 0x2e, 0x34, 0x0c, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x35, 0x2b, 0x2c, 0x36, 0x36, 0x35, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x27, 0x0b, 0x2c, 0x2c, 0x37, 0x32, 0x38, 0x2c, 0x2d, 0x39, 0x36, 0x17, 0x30, 0x2c, 0x2c, 0x2d, 0x2c, 0x2c, 0x1a, 0x3a, 0x3a, 0x3b, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0a, 0x2d, 0x2b, 0x33, 0x31, 0x0e, 0x05, 0x05, 0x05, 0x05, 0x09, 0x28, 0x2c, 0x37, 0x3c, 0x32, 0x38, 0x38, 0x37, 0x2c, 0x30, 0x36, 0x36, 0x17, 0x31, 0x36, 0x23, 0x23, 0x17, 0x2c, 0x17, 0x3a, 0x3d, 0x13, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x22, 0x2c, 0x37, 0x33, 0x3e, 0x31, 0x3f, 0x40, 0x19, 0x05, 0x11, 0x2c, 0x2c, 0x32, 0x32, 0x32, 0x38, 0x37, 0x41, 0x30, 0x3a, 0x3a, 0x2e, 0x42, 0x43, 0x17, 0x1a, 0x13, 0x23, 0x31, 0x1a, 0x2e, 0x3d, 0x1a, 0x09, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0b, 0x37, 0x32, 0x37, 0x33, 0x44, 0x44, 0x45, 0x17, 0x1a, 0x10, 0x2d, 0x37, 0x38, 0x46, 0x33, 0x46, 0x32, 0x2c, 0x23, 0x23, 0x47, 0x21, 0x13, 0x43, 0x34, 0x48, 0x19, 0x49, 0x34, 0x17, 0x1e, 0x3a, 0x13, 0x4a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4b, 0x32, 0x32, 0x32, 0x32, 0x4c, 0x45, 0x44, 0x44, 0x42, 0x36, 0x30, 0x33, 0x46, 0x38, 0x33, 0x46, 0x38, 0x31, 0x23, 0x27, 0x09, 0x4a, 0x4d, 0x47, 0x43, 0x0d, 0x4e, 0x4a, 0x4f, 0x34, 0x1a, 0x2e, 0x29, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x11, 0x33, 0x32, 0x32, 0x32, 0x33, 0x4c, 0x31, 0x45, 0x3e, 0x31, 0x36, 0x46, 0x46, 0x33, 0x33, 0x39, 0x30, 0x23, 0x50, 0x4a, 0x4a, 0x4a, 0x4a, 0x4d, 0x47, 0x51, 0x4e, 0x4a, 0x4a, 0x0e, 0x13, 0x1a, 0x27, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x35, 0x2b, 0x32, 0x32, 0x2b, 0x32, 0x33, 0x4c, 0x33, 0x4c, 0x4c, 0x36, 0x30, 0x30, 0x30, 0x30, 0x31, 0x23, 0x3a, 0x49, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4f, 0x50, 0x1b, 0x4e, 0x4a, 0x19, 0x50, 0x16, 0x0c, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, 0x32, 0x32, 0x32, 0x32, 0x2b, 0x33, 0x33, 0x30, 0x2d, 0x39, 0x30, 0x30, 0x30, 0x4c, 0x36, 0x42, 0x3a, 0x52, 0x05, 0x4a, 0x4a, 0x4a, 0x4a, 0x09, 0x3b, 0x52, 0x4e, 0x4a, 0x4a, 0x4f, 0x1a, 0x2a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4d, 0x2b, 0x2b, 0x32, 0x32, 0x32, 0x37, 0x2c, 0x2c, 0x2c, 0x2c, 0x2d, 0x10, 0x30, 0x30, 0x3e, 0x23, 0x3a, 0x0d, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x40, 0x51, 0x4a, 0x4a, 0x25, 0x15, 0x1f, 0x27, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x40, 0x22, 0x2c, 0x32, 0x32, 0x32, 0x38, 0x2d, 0x2c, 0x41, 0x32, 0x39, 0x46, 0x4c, 0x31, 0x2e, 0x2e, 0x0c, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x25, 0x53, 0x18, 0x4a, 0x54, 0x55, 0x56, 0x51, 0x11, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x2a, 0x22, 0x32, 0x32, 0x32, 0x38, 0x38, 0x32, 0x2c, 0x37, 0x38, 0x30, 0x30, 0x3e, 0x3a, 0x3a, 0x2a, 0x4a, 0x4a, 0x05, 0x4a, 0x57, 0x58, 0x59, 0x5a, 0x35, 0x58, 0x5b, 0x5c, 0x5d, 0x5e, 0x4a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4d, 0x07, 0x37, 0x32, 0x38, 0x38, 0x32, 0x32, 0x41, 0x38, 0x30, 0x30, 0x3e, 0x3a, 0x3d, 0x27, 0x05, 0x4a, 0x4a, 0x4a, 0x5c, 0x5f, 0x59, 0x1d, 0x29, 0x2f, 0x60, 0x61, 0x26, 0x0b, 0x1c, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4e, 0x0a, 0x2d, 0x38, 0x38, 0x32, 0x37, 0x32, 0x2d, 0x39, 0x36, 0x31, 0x62, 0x3d, 0x0e, 0x4a, 0x4a, 0x4a, 0x09, 0x63, 0x64, 0x64, 0x61, 0x2d, 0x1d, 0x65, 0x61, 0x2b, 0x17, 0x16, 0x4a, 0x05, 0x05, 0x04, 0x03, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x27, 0x2c, 0x38, 0x38, 0x37, 0x37, 0x38, 0x2d, 0x30, 0x31, 0x42, 0x3a, 0x18, 0x09, 0x05, 0x05, 0x4a, 0x63, 0x60, 0x60, 0x2b, 0x10, 0x2d, 0x41, 0x41, 0x30, 0x42, 0x3e, 0x29, 0x09, 0x05, 0x05, 0x04, 0x03, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x2a, 0x37, 0x32, 0x38, 0x32, 0x41, 0x38, 0x38, 0x30, 0x66, 0x31, 0x3a, 0x1e, 0x67, 0x4a, 0x4a, 0x05, 0x68, 0x64, 0x61, 0x2b, 0x17, 0x36, 0x10, 0x33, 0x31, 0x42, 0x3d, 0x45, 0x06, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x1c, 0x2c, 0x32, 0x32, 0x37, 0x41, 0x2c, 0x46, 0x30, 0x36, 0x36, 0x42, 0x42, 0x29, 0x1b, 0x4a, 0x4a, 0x4d, 0x26, 0x60, 0x0b, 0x17, 0x36, 0x44, 0x45, 0x66, 0x3e, 0x44, 0x44, 0x1a, 0x05, 0x05, 0x05, 0x05, 0x05, 0x15, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0c, 0x2c, 0x32, 0x32, 0x38, 0x37, 0x32, 0x37, 0x30, 0x36, 0x4c, 0x31, 0x1e, 0x10, 0x1f, 0x52, 0x69, 0x52, 0x07, 0x2c, 0x10, 0x36, 0x62, 0x6a, 0x44, 0x6b, 0x3e, 0x44, 0x6c, 0x30, 0x09, 0x05, 0x05, 0x25, 0x54, 0x19, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x25, 0x2c, 0x37, 0x38, 0x37, 0x2c, 0x32, 0x32, 0x46, 0x30, 0x46, 0x4c, 0x31, 0x66, 0x4c, 0x36, 0x1a, 0x1a, 0x17, 0x37, 0x37, 0x10, 0x31, 0x62, 0x45, 0x4c, 0x3e, 0x44, 0x62, 0x30, 0x09, 0x05, 0x0a, 0x70, 0x71, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x22, 0x32, 0x32, 0x38, 0x41, 0x41, 0x38, 0x2d, 0x46, 0x66, 0x44, 0x6c, 0x6c, 0x6c, 0x3d, 0x3a, 0x42, 0x31, 0x32, 0x32, 0x32, 0x33, 0x33, 0x30, 0x36, 0x3e, 0x3e, 0x31, 0x07, 0x05, 0x12, 0x6e, 0x72, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x2d, 0x2c, 0x38, 0x32, 0x41, 0x37, 0x2d, 0x46, 0x66, 0x6a, 0x6c, 0x6d, 0x6d, 0x6c, 0x3d, 0x3d, 0x31, 0x38, 0x38, 0x39, 0x33, 0x39, 0x36, 0x30, 0x30, 0x66, 0x30, 0x40, 0x4d, 0x5f, 0x4d, 0x4d, 0x05, 0x05, 0x05, 0x15, 0x04, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x09, 0x5a, 0x2d, 0x32, 0x32, 0x37, 0x37, 0x32, 0x38, 0x46, 0x46, 0x66, 0x45, 0x44, 0x62, 0x44, 0x44, 0x3e, 0x31, 0x31, 0x31, 0x31, 0x31, 0x33, 0x37, 0x30, 0x10, 0x06, 0x05, 0x12, 0x0a, 0x05, 0x05, 0x05, 0x08, 0x68, 0x73, 0x05, 0x04, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x35, 0x22, 0x32, 0x32, 0x32, 0x3c, 0x37, 0x37, 0x2d, 0x39, 0x39, 0x39, 0x36, 0x36, 0x6b, 0x3e, 0x3e, 0x3e, 0x3e, 0x31, 0x4c, 0x39, 0x2d, 0x10, 0x16, 0x2a, 0x05, 0x05, 0x74, 0x74, 0x05, 0x05, 0x0c, 0x75, 0x5f, 0x1c, 0x05, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x40, 0x2c, 0x32, 0x32, 0x32, 0x41, 0x37, 0x41, 0x2c, 0x2c, 0x41, 0x2c, 0x33, 0x36, 0x31, 0x36, 0x31, 0x31, 0x17, 0x46, 0x2c, 0x16, 0x40, 0x05, 0x05, 0x05, 0x05, 0x20, 0x5f, 0x4d, 0x72, 0x76, 0x06, 0x25, 0x4a, 0x05, 0x05, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x40, 0x0b, 0x2d, 0x37, 0x2d, 0x2c, 0x2c, 0x37, 0x37, 0x38, 0x2c, 0x37, 0x2c, 0x10, 0x10, 0x39, 0x30, 0x0b, 0x2c, 0x11, 0x09, 0x05, 0x09, 0x4a, 0x05, 0x05, 0x19, 0x1d, 0x26, 0x76, 0x08, 0x05, 0x05, 0x05, 0x15, 0x25, 0x4d, 0x53, 0x77, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4d, 0x5a, 0x2c, 0x37, 0x2d, 0x2c, 0x37, 0x37, 0x39, 0x39, 0x33, 0x38, 0x2c, 0x2d, 0x2d, 0x2c, 0x5e, 0x2a, 0x05, 0x15, 0x3b, 0x17, 0x1f, 0x19, 0x05, 0x06, 0x26, 0x60, 0x5f, 0x0c, 0x05, 0x05, 0x05, 0x35, 0x68, 0x78, 0x56, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x35, 0x2c, 0x2c, 0x2c, 0x37, 0x32, 0x37, 0x2c, 0x37, 0x32, 0x46, 0x33, 0x46, 0x39, 0x11, 0x15, 0x05, 0x05, 0x18, 0x31, 0x44, 0x6a, 0x30, 0x6e, 0x2b, 0x4b, 0x11, 0x5f, 0x63, 0x72, 0x54, 0x20, 0x74, 0x58, 0x25, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x15, 0x0b, 0x2c, 0x38, 0x2d, 0x39, 0x39, 0x2d, 0x37, 0x3c, 0x32, 0x37, 0x0b, 0x18, 0x05, 0x05, 0x05, 0x4e, 0x26, 0x32, 0x45, 0x6a, 0x46, 0x2b, 0x72, 0x4e, 0x05, 0x35, 0x0a, 0x75, 0x5f, 0x70, 0x08, 0x09, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x35, 0x22, 0x2d, 0x30, 0x6b, 0x6b, 0x66, 0x36, 0x30, 0x36, 0x4c, 0x36, 0x30, 0x18, 0x05, 0x05, 0x05, 0x09, 0x4b, 0x32, 0x46, 0x66, 0x38, 0x0b, 0x09, 0x05, 0x05, 0x05, 0x05, 0x09, 0x05, 0x05, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0a, 0x2c, 0x2c, 0x31, 0x62, 0x62, 0x6b, 0x31, 0x45, 0x44, 0x44, 0x45, 0x31, 0x10, 0x0c, 0x4d, 0x0c, 0x08, 0x0b, 0x3c, 0x32, 0x33, 0x66, 0x17, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x09, 0x22, 0x2c, 0x2d, 0x31, 0x45, 0x6b, 0x36, 0x31, 0x6b, 0x62, 0x45, 0x6a, 0x66, 0x30, 0x0b, 0x2c, 0x2c, 0x2c, 0x2c, 0x37, 0x46, 0x6b, 0x44, 0x62, 0x5e, 0x05, 0x05, 0x05, 0x05, 0x04, 0x03, 0x03, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0c, 0x1d, 0x2c, 0x39, 0x36, 0x4c, 0x30, 0x30, 0x30, 0x36, 0x4c, 0x66, 0x4c, 0x36, 0x30, 0x37, 0x41, 0x2c, 0x2d, 0x2c, 0x3c, 0x33, 0x6b, 0x44, 0x44, 0x39, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x2d, 0x2d, 0x2d, 0x36, 0x39, 0x2d, 0x32, 0x38, 0x38, 0x46, 0x6a, 0x6d, 0x3d, 0x62, 0x46, 0x3c, 0x37, 0x2d, 0x32, 0x32, 0x32, 0x38, 0x4c, 0x30, 0x16, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0a, 0x37, 0x38, 0x38, 0x39, 0x37, 0x2c, 0x37, 0x37, 0x30, 0x45, 0x6d, 0x6d, 0x62, 0x62, 0x38, 0x3c, 0x3c, 0x32, 0x37, 0x32, 0x32, 0x32, 0x2c, 0x14, 0x15, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x6e, 0x37, 0x38, 0x38, 0x38, 0x37, 0x2c, 0x2d, 0x30, 0x31, 0x62, 0x6a, 0x6d, 0x6a, 0x6a, 0x46, 0x32, 0x32, 0x37, 0x37, 0x32, 0x30, 0x17, 0x29, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4a, 0x0b, 0x38, 0x38, 0x38, 0x2c, 0x2c, 0x0b, 0x2d, 0x39, 0x4c, 0x45, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x38, 0x37, 0x2c, 0x41, 0x18, 0x1c, 0x0c, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x15, 0x0b, 0x2d, 0x38, 0x38, 0x37, 0x2c, 0x2c, 0x2c, 0x37, 0x32, 0x4c, 0x6b, 0x44, 0x44, 0x45, 0x6a, 0x45, 0x38, 0x37, 0x1c, 0x09, 0x05, 0x05, 0x04, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x09, 0x1d, 0x38, 0x38, 0x38, 0x38, 0x2c, 0x3c, 0x37, 0x37, 0x32, 0x32, 0x46, 0x36, 0x1e, 0x6b, 0x4c, 0x46, 0x32, 0x22, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, 0x37, 0x32, 0x37, 0x38, 0x38, 0x37, 0x32, 0x3c, 0x32, 0x32, 0x37, 0x38, 0x2d, 0x2d, 0x38, 0x2c, 0x2c, 0x4f, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x08, 0x3c, 0x37, 0x41, 0x38, 0x2d, 0x37, 0x37, 0x3c, 0x32, 0x3c, 0x32, 0x37, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x0c, 0x41, 0x3c, 0x3c, 0x38, 0x32, 0x3c, 0x3c, 0x3c, 0x41, 0x32, 0x41, 0x37, 0x2c, 0x2c, 0x41, 0x38, 0x45, 0x18, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x2a, 0x2c, 0x3c, 0x37, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x37, 0x2c, 0x2c, 0x2c, 0x2c, 0x4c, 0x45, 0x6a, 0x1a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x11, 0x2c, 0x37, 0x41, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x41, 0x37, 0x37, 0x4c, 0x44, 0x6d, 0x6a, 0x1a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x5a, 0x2c, 0x41, 0x3c, 0x3c, 0x3c, 0x32, 0x2c, 0x32, 0x2c, 0x2c, 0x38, 0x38, 0x36, 0x45, 0x62, 0x44, 0x45, 0x29, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x2a, 0x2c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x37, 0x37, 0x32, 0x37, 0x39, 0x4c, 0x4c, 0x45, 0x62, 0x44, 0x62, 0x30, 0x2a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x4a, 0x5a, 0x41, 0x3c, 0x3c, 0x3c, 0x3c, 0x32, 0x3c, 0x37, 0x37, 0x2d, 0x46, 0x4c, 0x6b, 0x6b, 0x45, 0x3e, 0x36, 0x29, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x27, 0x3c, 0x37, 0x3c, 0x3c, 0x37, 0x37, 0x32, 0x38, 0x37, 0x37, 0x37, 0x38, 0x39, 0x36, 0x4c, 0x30, 0x10, 0x16, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x04, 0x05, 0x05, 0x25, 0x1d, 0x37, 0x37, 0x41, 0x32, 0x3c, 0x32, 0x41, 0x37, 0x32, 0x2c, 0x41, 0x37, 0x2c, 0x32, 0x37, 0x2c, 0x2c, 0x5a, 0x0c, 0x05, 0x05, 0x05, 0x04, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x05, 0x05, 0x15, 0x5a, 0x37, 0x2c, 0x41, 0x2c, 0x2c, 0x41, 0x37, 0x41, 0x41, 0x3c, 0x2c, 0x41, 0x41, 0x3c, 0x37, 0x2c, 0x39, 0x0b, 0x0b, 0x25, 0x05, 0x05, 0x05, 0x05, 0x04, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x2a, 0x22, 0x2d, 0x37, 0x2c, 0x3c, 0x1d, 0x2c, 0x38, 0x2c, 0x41, 0x2c, 0x2c, 0x2d, 0x39, 0x37, 0x3c, 0x37, 0x30, 0x1a, 0x5e, 0x6e, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x2a, 0x6e, 0x0b, 0x2d, 0x38, 0x41, 0x41, 0x6e, 0x5a, 0x2c, 0x41, 0x32, 0x38, 0x32, 0x39, 0x3f, 0x6f, 0x16, 0x37, 0x1a, 0x1f, 0x1f, 0x16, 0x1d, 0x0c, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x09, 0x40, 0x07, 0x2c, 0x37, 0x2c, 0x2d, 0x2c, 0x1d, 0x0e, 0x09, 0x0b, 0x4b, 0x07, 0x41, 0x38, 0x2d, 0x10, 0x2d, 0x10, 0x0b, 0x2b, 0x33, 0x3f, 0x21, 0x29, 0x07, 0x5e, 0x2f, 0x12, 0x08, 0x2a, 0x0c, 0x25, 0x09, 0x09, 0x09, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x19, 0x40, 0x28, 0x22, 0x2c, 0x38, 0x32, 0x32, 0x32, 0x1d, 0x0e, 0x19, 0x05, 0x35, 0x2c, 0x4b, 0x70, 0x0b, 0x32, 0x2c, 0x16, 0x16, 0x16, 0x0b, 0x22, 0x26, 0x0b, 0x10, 0x3f, 0x29, 0x1f, 0x47, 0x1f, 0x1f, 0x5e, 0x0b, 0x4b, 0x74, 0x84, 0x74, 0x84, 0x06, 0x35, 0x09, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x09, 0x4d, 0x27, 0x0a, 0x22, 0x1d, 0x2c, 0x2c, 0x37, 0x32, 0x41, 0x41, 0x16, 0x27, 0x15, 0x09, 0x4a, 0x09, 0x28, 0x2d, 0x0b, 0x76, 0x2c, 0x37, 0x2d, 0x37, 0x32, 0x37, 0x0b, 0x0b, 0x5e, 0x5a, 0x4b, 0x0b, 0x0b, 0x07, 0x6e, 0x16, 0x5e, 0x10, 0x76, 0x5c, 0x68, 0x79, 0x7a, 0x53, 0x71, 0x54, 0x5d, 0x08, 0x4d, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x04, 0x05, 0x05, 0x05, 0x25, 0x27, 0x28, 0x0b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x41, 0x41, 0x41, 0x22, 0x11, 0x35, 0x4d, 0x4d, 0x35, 0x1c, 0x06, 0x0a, 0x22, 0x38, 0x38, 0x37, 0x38, 0x38, 0x38, 0x2d, 0x39, 0x39, 0x39, 0x10, 0x39, 0x10, 0x4b, 0x12, 0x08, 0x35, 0x67, 0x2a, 0x08, 0x74, 0x70, 0x81, 0x55, 0x78, 0x79, 0x57, 0x53, 0x71, 0x71, 0x73, 0x84, 0x25, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x05, 0x09, 0x27, 0x16, 0x0b, 0x2c, 0x2d, 0x2c, 0x41, 0x41, 0x1d, 0x22, 0x5a, 0x0f, 0x14, 0x0a, 0x28, 0x0a, 0x28, 0x28, 0x28, 0x6e, 0x5a, 0x65, 0x1d, 0x0b, 0x2d, 0x38, 0x46, 0x38, 0x38, 0x38, 0x39, 0x2d, 0x46, 0x39, 0x30, 0x39, 0x4b, 0x68, 0x79, 0x7a, 0x57, 0x67, 0x67, 0x56, 0x53, 0x71, 0x68, 0x7e, 0x85, 0x59, 0x73, 0x79, 0x54, 0x7a, 0x54, 0x06, 0x1c, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x4d, 0x16, 0x0b, 0x10, 0x39, 0x2d, 0x0b, 0x28, 0x06, 0x2a, 0x25, 0x35, 0x06, 0x11, 0x0a, 0x28, 0x07, 0x5a, 0x22, 0x26, 0x5a, 0x41, 0x7b, 0x7c, 0x60, 0x76, 0x22, 0x1d, 0x32, 0x38, 0x46, 0x46, 0x46, 0x38, 0x38, 0x38, 0x38, 0x2b, 0x75, 0x7d, 0x7e, 0x55, 0x78, 0x7a, 0x57, 0x57, 0x57, 0x71, 0x20, 0x68, 0x55, 0x85, 0x7a, 0x57, 0x53, 0x71, 0x57, 0x5d, 0x19, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x0c, 0x16, 0x0b, 0x30, 0x39, 0x18, 0x2a, 0x09, 0x05, 0x4e, 0x19, 0x25, 0x0c, 0x27, 0x11, 0x0a, 0x0a, 0x2f, 0x5a, 0x5a, 0x26, 0x5a, 0x7b, 0x7c, 0x7c, 0x61, 0x7f, 0x7f, 0x7f, 0x76, 0x22, 0x22, 0x0b, 0x2d, 0x0b, 0x2d, 0x2d, 0x33, 0x0b, 0x5f, 0x80, 0x7d, 0x5c, 0x81, 0x55, 0x59, 0x59, 0x73, 0x73, 0x54, 0x5c, 0x5c, 0x7e, 0x55, 0x59, 0x73, 0x7a, 0x71, 0x19, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x09, 0x25, 0x08, 0x07, 0x5e, 0x10, 0x22, 0x1c, 0x4a, 0x05, 0x09, 0x05, 0x15, 0x4d, 0x19, 0x19, 0x4d, 0x08, 0x12, 0x74, 0x0f, 0x6e, 0x5a, 0x26, 0x1d, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x61, 0x5b, 0x82, 0x82, 0x80, 0x80, 0x82, 0x7f, 0x7f, 0x7f, 0x7f, 0x5b, 0x7f, 0x82, 0x80, 0x7d, 0x5c, 0x7e, 0x79, 0x54, 0x54, 0x7a, 0x73, 0x0f, 0x2a, 0x25, 0x19, 0x09, 0x4a, 0x05, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x09, 0x4d, 0x2a, 0x06, 0x74, 0x28, 0x22, 0x22, 0x2d, 0x2c, 0x0e, 0x05, 0x05, 0x05, 0x05, 0x05, 0x3b, 0x07, 0x19, 0x09, 0x25, 0x0c, 0x27, 0x12, 0x0f, 0x2f, 0x26, 0x26, 0x1d, 0x65, 0x65, 0x7c, 0x7c, 0x7b, 0x7c, 0x7b, 0x7b, 0x60, 0x5b, 0x7f, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x80, 0x80, 0x83, 0x83, 0x81, 0x7e, 0x59, 0x73, 0x73, 0x84, 0x5d, 0x25, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x19, 0x08, 0x12, 0x0a, 0x0f, 0x6e, 0x5a, 0x26, 0x22, 0x2c, 0x2c, 0x0b, 0x27, 0x05, 0x05, 0x05, 0x15, 0x1e, 0x1e, 0x6f, 0x0c, 0x09, 0x15, 0x0c, 0x20, 0x12, 0x0f, 0x6e, 0x5a, 0x26, 0x26, 0x26, 0x65, 0x65, 0x65, 0x65, 0x7b, 0x7c, 0x7b, 0x65, 0x7b, 0x61, 0x61, 0x60, 0x64, 0x64, 0x64, 0x5b, 0x5b, 0x5f, 0x63, 0x70, 0x63, 0x58, 0x5d, 0x2a, 0x15, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x4a, 0x4d, 0x27, 0x11, 0x0a, 0x28, 0x6e, 0x5a, 0x26, 0x65, 0x41, 0x1d, 0x2c, 0x2c, 0x5e, 0x29, 0x0e, 0x14, 0x17, 0x31, 0x6b, 0x30, 0x14, 0x25, 0x09, 0x15, 0x4d, 0x08, 0x74, 0x0a, 0x0f, 0x2f, 0x5a, 0x26, 0x26, 0x1d, 0x1d, 0x1d, 0x2b, 0x65, 0x1d, 0x41, 0x65, 0x65, 0x7b, 0x65, 0x65, 0x1d, 0x6e, 0x74, 0x5d, 0x1c, 0x25, 0x15, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x19, 0x4d, 0x08, 0x06, 0x0a, 0x2f, 0x6e, 0x2f, 0x6e, 0x26, 0x41, 0x7b, 0x65, 0x41, 0x37, 0x33, 0x30, 0x36, 0x36, 0x4c, 0x6b, 0x66, 0x30, 0x14, 0x35, 0x4a, 0x09, 0x15, 0x15, 0x25, 0x25, 0x0c, 0x1c, 0x08, 0x06, 0x5d, 0x5d, 0x5d, 0x0e, 0x06, 0x12, 0x06, 0x08, 0x1c, 0x2a, 0x0c, 0x19, 0x09, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x09, 0x19, 0x35, 0x08, 0x12, 0x28, 0x2f, 0x2f, 0x6e, 0x5a, 0x41, 0x7c, 0x3c, 0x3c, 0x2c, 0x41, 0x2d, 0x2d, 0x39, 0x30, 0x4c, 0x4c, 0x66, 0x66, 0x31, 0x24, 0x20, 0x4a, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x4a, 0x09, 0x4a, 0x09, 0x09, 0x05, 0x09, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x09, 0x15, 0x0c, 0x1c, 0x12, 0x28, 0x2f, 0x5a, 0x1d, 0x7c, 0x7b, 0x41, 0x7b, 0x3c, 0x7b, 0x3c, 0x41, 0x41, 0x5a, 0x16, 0x28, 0x14, 0x14, 0x14, 0x3b, 0x12, 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x4a, 0x09, 0x15, 0x1c, 0x12, 0x12, 0x0a, 0x0f, 0x2f, 0x07, 0x2f, 0x0a, 0x12, 0x27, 0x0c, 0x4d, 0x15, 0x09, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x09, 0x15, 0x15, 0x15, 0x19, 0x4e, 0x4e, 0x05, 0x4a, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+unsigned char logo_img[LOGO_WIDTH * LOGO_HEIGHT] = {
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+	0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+	0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x02, 0x01, 0x03, 0x03, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x02, 0x02,
+	0x02, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0b,
+	0x0b, 0x06, 0x06, 0x06, 0x05, 0x05, 0x02, 0x02,
+	0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x01, 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x04, 0x10, 0x2c, 0x48, 0x47, 0x33,
+	0x14, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x05, 0x05,
+	0x06, 0x0b, 0x0c, 0x1f, 0x21, 0x25, 0xb7, 0xb9,
+	0xb8, 0xb8, 0xb9, 0xb9, 0x27, 0x26, 0x20, 0x0d,
+	0x0c, 0x06, 0x06, 0x05, 0x02, 0x02, 0x02, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x08, 0x11, 0x2c, 0x45, 0x44, 0x31, 0x18, 0x09,
+	0x00, 0x00, 0x00, 0x00, 0x13, 0x2b, 0x45, 0x47,
+	0xa0, 0xc8, 0xc8, 0x9c, 0x47, 0x15, 0x08, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x05, 0x06,
+	0x0b, 0x0d, 0x26, 0xb8, 0xbc, 0xe1, 0xf5, 0xfc,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
+	0xf5, 0xdf, 0xbb, 0xb7, 0x21, 0x0e, 0x0b, 0x05,
+	0x05, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01,
+	0x11, 0x35, 0x9a, 0xa4, 0xa4, 0x9f, 0x97, 0x3a,
+	0x2a, 0x16, 0x08, 0x00, 0x00, 0x04, 0x2a, 0x29,
+	0x31, 0x45, 0x97, 0xc8, 0xe6, 0xd3, 0xc7, 0xb0,
+	0x9c, 0x1c, 0x08, 0x00, 0x02, 0x02, 0x05, 0x06,
+	0x0c, 0x21, 0xb8, 0xe1, 0xfc, 0xff, 0xff, 0xff,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf5, 0xbc,
+	0x27, 0x1f, 0x0c, 0x06, 0x02, 0x02, 0x00, 0x01,
+	0x12, 0x50, 0xb0, 0xd1, 0xd3, 0xd3, 0xd2, 0x9f,
+	0x46, 0x2f, 0x29, 0x2a, 0x10, 0x00, 0x00, 0x08,
+	0x2e, 0x29, 0x2a, 0x3a, 0x43, 0x9b, 0xd4, 0xf8,
+	0xec, 0xd3, 0xd1, 0xc7, 0xa3, 0x1c, 0x0a, 0x0a,
+	0x0c, 0x26, 0xbc, 0xf5, 0xff, 0xff, 0xff, 0xff,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+	0xff, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xfd, 0xfe,
+	0xff, 0xff, 0xfc, 0xe1, 0xb7, 0x1f, 0x0c, 0x06,
+	0x12, 0x51, 0xd2, 0xed, 0xec, 0xec, 0xf6, 0xeb,
+	0xcf, 0x97, 0x41, 0x2d, 0x29, 0x2d, 0x13, 0x00,
+	0x00, 0x03, 0x2e, 0x2a, 0x2a, 0x2e, 0x3a, 0x72,
+	0x99, 0xd1, 0xe9, 0xec, 0xd7, 0xd7, 0xd6, 0xd5,
+	0xb4, 0x4c, 0xbb, 0xf5, 0xff, 0xff, 0xff, 0xff,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+	0xff, 0xff, 0xfd, 0xe9, 0xe9, 0xe8, 0xe9, 0xe9,
+	0xe9, 0xeb, 0xf0, 0xf8, 0xfc, 0xfe, 0xfd, 0xe1,
+	0x4d, 0x51, 0xd2, 0xf0, 0xf6, 0xf7, 0xf6, 0xfd,
+	0xf6, 0xd1, 0x9a, 0x73, 0x3a, 0x2d, 0x29, 0x2d,
+	0x10, 0x00, 0x00, 0x01, 0x2d, 0x2d, 0x29, 0x2d,
+	0x39, 0x40, 0x6c, 0xa1, 0xa4, 0xcb, 0xd3, 0xe6,
+	0xe6, 0xe7, 0xeb, 0xf4, 0xff, 0xff, 0xff, 0xff,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xe9, 0xe9,
+	0xe8, 0xec, 0xec, 0xe4, 0xcf, 0xc0, 0xc0, 0xda,
+	0xe9, 0xd8, 0xd8, 0xfa, 0xfb, 0xfb, 0xf8, 0xfb,
+	0xf8, 0xec, 0xd1, 0xa3, 0x8c, 0x41, 0x2f, 0x2a,
+	0x29, 0x2e, 0x11, 0x00, 0x00, 0x00, 0x16, 0x36,
+	0x29, 0x2d, 0x2e, 0x3c, 0x5d, 0x6c, 0x87, 0xa1,
+	0xa4, 0xcb, 0xe7, 0xf8, 0xfc, 0xff, 0xff, 0xff,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+	0xfd, 0xe9, 0xe8, 0xe8, 0xe8, 0xbf, 0x41, 0x3e,
+	0x3b, 0x8c, 0xcd, 0xf1, 0xfe, 0xfd, 0xfd, 0xfb,
+	0xfb, 0xf0, 0xe6, 0xc7, 0xa4, 0x9a, 0x73, 0x39,
+	0x2d, 0x29, 0x2a, 0x3b, 0x08, 0x00, 0x00, 0x00,
+	0x11, 0x37, 0x2a, 0x2a, 0x2d, 0x37, 0x3e, 0x61,
+	0x87, 0x87, 0xa1, 0xc7, 0xf6, 0xff, 0xff, 0xff,
+	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
+	0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
+	0xff, 0xff, 0xff, 0xff, 0xf9, 0xe5, 0xe3, 0x46,
+	0x36, 0x3a, 0x8c, 0xd4, 0xfb, 0xff, 0xfe, 0xff,
+	0xfd, 0xf8, 0xf0, 0xe6, 0xd1, 0xc8, 0xa4, 0x74,
+	0x3e, 0x36, 0x2a, 0x29, 0x3b, 0x30, 0x01, 0x00,
+	0x00, 0x00, 0x08, 0x3b, 0x2f, 0x29, 0x2a, 0x36,
+	0x3e, 0x58, 0x6c, 0x87, 0xc7, 0xf9, 0xff, 0xff,
+	0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff,
+	0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfc,
+	0xff, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xf9,
+	0xe3, 0x45, 0x39, 0x8c, 0xe7, 0xff, 0xff, 0xff,
+	0xff, 0xff, 0xfb, 0xeb, 0xe6, 0xd3, 0xc7, 0xa4,
+	0x8c, 0x3e, 0x3c, 0x2f, 0x29, 0x31, 0x47, 0x11,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x41, 0x2a,
+	0x29, 0x2f, 0x38, 0x5d, 0x6c, 0xa4, 0xf6, 0xff,
+	0xff, 0xff, 0xff, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe,
+	0xff, 0xfe, 0xfd, 0xfb, 0xfb, 0xfd, 0xfd, 0xfc,
+	0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd,
+	0xfc, 0xff, 0xe9, 0x47, 0x3a, 0xb0, 0xff, 0xff,
+	0xff, 0xff, 0xff, 0xfd, 0xf6, 0xec, 0xd3, 0xd1,
+	0xc8, 0x8c, 0x58, 0x3e, 0x36, 0x2d, 0x29, 0x45,
+	0x47, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09,
+	0x47, 0x2f, 0x29, 0x2f, 0x3a, 0x41, 0x98, 0xe8,
+	0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xfb, 0xfe,
+	0xfd, 0xfe, 0xfe, 0xfb, 0xfb, 0xfb, 0xfa, 0xfb,
+	0xfb, 0xfb, 0xfd, 0xfd, 0xf8, 0xf8, 0xfd, 0xfd,
+	0xf8, 0xfd, 0xf8, 0xf8, 0xf8, 0xc0, 0x97, 0xcc,
+	0xff, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xeb, 0xec,
+	0xd3, 0xc8, 0x87, 0x5f, 0x3d, 0x37, 0x2f, 0x2a,
+	0x30, 0x4f, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x01, 0x34, 0x46, 0x2b, 0x2b, 0x3b, 0x97,
+	0xe3, 0xfd, 0xff, 0xff, 0xfd, 0xf8, 0xfd, 0xfd,
+	0xfd, 0xfd, 0xfd, 0xfd, 0xf8, 0xf8, 0xf7, 0xf7,
+	0xfa, 0xfa, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
+	0xf8, 0xf8, 0xfa, 0xf7, 0xf7, 0xfa, 0xf1, 0xe3,
+	0xbf, 0xca, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xf6,
+	0xeb, 0xd7, 0xaf, 0x87, 0x60, 0x57, 0x3c, 0x36,
+	0x2d, 0x2b, 0x4e, 0x9d, 0x09, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x01, 0x12, 0x98, 0x30, 0x2b,
+	0x48, 0xc4, 0xfc, 0xff, 0xff, 0xfd, 0xf8, 0xf8,
+	0xfd, 0xfd, 0xfb, 0xfb, 0xfd, 0xfd, 0xf8, 0xf8,
+	0xf6, 0xf1, 0xf1, 0xf0, 0xf7, 0xf8, 0xf9, 0xf9,
+	0xf7, 0xf4, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf4,
+	0xf9, 0xf0, 0xd0, 0xce, 0xf0, 0xff, 0xff, 0xfd,
+	0xfb, 0xeb, 0xd3, 0xa4, 0x87, 0x61, 0x5e, 0x3e,
+	0x38, 0x2e, 0x2a, 0x33, 0x9e, 0x34, 0x01, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x4e,
+	0x50, 0x33, 0xbe, 0xf8, 0xfd, 0xff, 0xfd, 0xf8,
+	0xf8, 0xfb, 0xfb, 0xfe, 0xfb, 0xfb, 0xfb, 0xf8,
+	0xf6, 0xf6, 0xeb, 0xef, 0xef, 0xf0, 0xf6, 0xf6,
+	0xeb, 0xf2, 0xef, 0xee, 0xee, 0xef, 0xef, 0xee,
+	0xf2, 0xf6, 0xe9, 0xf4, 0xe8, 0xcf, 0xd1, 0xf7,
+	0xf0, 0xea, 0xd3, 0xc7, 0xa1, 0x87, 0x78, 0x5f,
+	0x55, 0x3c, 0x36, 0x2a, 0x2c, 0x4f, 0x9e, 0x11,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x1d, 0xa0, 0x53, 0xe4, 0xfc, 0xff, 0xfd,
+	0xf6, 0xf6, 0xfb, 0xfb, 0xfd, 0xfe, 0xfb, 0xfb,
+	0xf8, 0xf6, 0xf6, 0xf6, 0xeb, 0xef, 0xe7, 0xea,
+	0xea, 0xe7, 0xe7, 0xe7, 0xd9, 0xef, 0xe7, 0xe7,
+	0xe7, 0xea, 0xe9, 0xe9, 0xe9, 0xe9, 0xe4, 0xbf,
+	0x97, 0xcb, 0xd2, 0xc7, 0xae, 0xa1, 0x87, 0x78,
+	0x61, 0x57, 0x3d, 0x36, 0x2d, 0x2b, 0x4e, 0xbf,
+	0x4e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x04, 0x53, 0xe4, 0xf6, 0xfe,
+	0xfd, 0xf7, 0xf0, 0xf8, 0xfb, 0xfe, 0xff, 0xff,
+	0xfe, 0xfb, 0xf7, 0xf6, 0xeb, 0xec, 0xeb, 0xe7,
+	0xe7, 0xe7, 0xe7, 0xd9, 0xd9, 0xd9, 0xd9, 0xd7,
+	0xd9, 0xd7, 0xe6, 0xe4, 0xe4, 0xe6, 0xe4, 0xe4,
+	0xe4, 0xd0, 0x97, 0x99, 0xca, 0xaf, 0xa1, 0x93,
+	0x87, 0x61, 0x57, 0x3d, 0x37, 0x2f, 0x2b, 0x34,
+	0x9e, 0xbf, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x27, 0xe5,
+	0xf9, 0xff, 0xf7, 0xf2, 0xf7, 0xf7, 0xfb, 0xff,
+	0xff, 0xff, 0xfe, 0xfa, 0xf1, 0xf6, 0xec, 0xe6,
+	0xe6, 0xe6, 0xd7, 0xd6, 0xd8, 0xd6, 0xd6, 0xd6,
+	0xd6, 0xd2, 0xd3, 0xe3, 0xe3, 0xda, 0xe3, 0xd0,
+	0xe3, 0xe3, 0xe3, 0xe3, 0xc1, 0x49, 0xa1, 0xa1,
+	0xa1, 0x87, 0x77, 0x5f, 0x3e, 0x3e, 0x36, 0x2a,
+	0x2c, 0x53, 0xc0, 0x9d, 0x0f, 0x02, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0c,
+	0xdf, 0xe8, 0xfd, 0xfb, 0xe7, 0xea, 0xf1, 0xf8,
+	0xfe, 0xff, 0xff, 0xff, 0xfe, 0xf1, 0xf0, 0xec,
+	0xe6, 0xe6, 0xd7, 0xd6, 0xd6, 0xd2, 0xcd, 0xcd,
+	0xcd, 0xcd, 0xcd, 0xd1, 0xcf, 0xcf, 0xcf, 0xcf,
+	0xcf, 0xcf, 0xd0, 0xd0, 0xcf, 0xd0, 0xd0, 0xbe,
+	0x47, 0x87, 0x87, 0x77, 0x61, 0x3d, 0x3c, 0x2e,
+	0x2d, 0x2b, 0x4e, 0xc1, 0xc8, 0xc4, 0x27, 0x02,
+	0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x02, 0x25, 0xe5, 0xe9, 0xfe, 0xec, 0xe7, 0xea,
+	0xf0, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xee,
+	0xe7, 0xe6, 0xd3, 0xd1, 0xcd, 0xcd, 0xca, 0xca,
+	0xcb, 0xca, 0xae, 0xa2, 0xa2, 0xa1, 0x99, 0x9b,
+	0x9b, 0x9b, 0x97, 0x97, 0x98, 0x9d, 0x9e, 0xbe,
+	0xc0, 0xc0, 0x52, 0x48, 0x66, 0x5e, 0x3d, 0x3c,
+	0x36, 0x2d, 0x2b, 0x33, 0x9e, 0xcf, 0x9e, 0xe0,
+	0xbc, 0x0b, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x06, 0xbc, 0xe4, 0xf8, 0xf6, 0xd7,
+	0xd9, 0xea, 0xf0, 0xfb, 0xff, 0xff, 0xff, 0xf7,
+	0xee, 0xd9, 0xd7, 0xd3, 0xcb, 0xcc, 0xca, 0xb2,
+	0xaf, 0xa2, 0x95, 0x93, 0x86, 0x86, 0x87, 0x72,
+	0x72, 0x72, 0x72, 0x72, 0x46, 0x46, 0x46, 0x46,
+	0x46, 0x47, 0x4e, 0x53, 0x52, 0x53, 0x48, 0x3e,
+	0x3c, 0x36, 0x2e, 0x2a, 0x2c, 0x4f, 0xcf, 0x9d,
+	0x52, 0xc6, 0xe1, 0x21, 0x02, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x20, 0xe5, 0xe3, 0xfd,
+	0xd7, 0xd4, 0xd9, 0xea, 0xf4, 0xf7, 0xfb, 0xfb,
+	0xfa, 0xee, 0xd9, 0xd6, 0xd2, 0xcb, 0xc7, 0xaf,
+	0xae, 0xa1, 0x92, 0x86, 0x85, 0x85, 0x7b, 0x66,
+	0x66, 0x66, 0x66, 0x5d, 0x5d, 0x5d, 0x41, 0x41,
+	0x41, 0x41, 0x41, 0x45, 0x45, 0x48, 0x34, 0x4e,
+	0x4b, 0x34, 0x30, 0x2f, 0x2b, 0x2b, 0x4e, 0xbf,
+	0x9f, 0x34, 0x53, 0xbd, 0xe1, 0xbb, 0x05, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xb9, 0xe4,
+	0xe4, 0xf7, 0xcd, 0xd2, 0xd7, 0xea, 0xf1, 0xfa,
+	0xfa, 0xf1, 0xef, 0xd9, 0xd6, 0xcc, 0xc7, 0xaf,
+	0xae, 0x93, 0x86, 0x85, 0x85, 0x7b, 0x7a, 0x7b,
+	0x77, 0x61, 0x61, 0x58, 0x58, 0x58, 0x58, 0x3e,
+	0x3e, 0x3e, 0x3e, 0x3b, 0x3b, 0x3b, 0x3b, 0x30,
+	0x33, 0x33, 0x33, 0x4b, 0x35, 0x32, 0x19, 0x2b,
+	0x45, 0x73, 0x34, 0x23, 0x4c, 0xba, 0xdf, 0xdf,
+	0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
+	0xdf, 0xe3, 0xe9, 0xda, 0xc9, 0xcd, 0xd7, 0xf2,
+	0xfa, 0xfb, 0xfa, 0xf1, 0xdc, 0xd5, 0xca, 0xaf,
+	0xae, 0x95, 0x86, 0x85, 0x85, 0x7b, 0x7a, 0x7a,
+	0x7a, 0x79, 0x75, 0x61, 0x60, 0x5e, 0x56, 0x54,
+	0x58, 0x3d, 0x3e, 0x3c, 0x37, 0x39, 0x39, 0x36,
+	0x39, 0x2f, 0x30, 0x30, 0x2c, 0x32, 0x35, 0x35,
+	0x23, 0x1b, 0x1b, 0x1b, 0x1a, 0x1a, 0x4b, 0xa5,
+	0xc3, 0xe1, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x0d, 0xe5, 0xd0, 0xe9, 0xce, 0xb2, 0xce,
+	0xd9, 0xee, 0xfe, 0xff, 0xfa, 0xdc, 0xd8, 0xb2,
+	0xae, 0xa2, 0x86, 0x85, 0x7b, 0x7b, 0x7a, 0x7a,
+	0x79, 0x79, 0x79, 0x76, 0x60, 0x5e, 0x5e, 0x5e,
+	0x56, 0x54, 0x3d, 0x3d, 0x3c, 0x3c, 0x37, 0x37,
+	0x36, 0x2e, 0x2f, 0x2f, 0x2f, 0x2b, 0x2b, 0x2c,
+	0x19, 0x1c, 0x35, 0x23, 0x23, 0x1a, 0x1a, 0x23,
+	0x4b, 0x4c, 0xba, 0xe1, 0xb9, 0x05, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x25, 0xe9, 0xd0, 0xe6, 0xb4,
+	0xb0, 0xcc, 0xd8, 0xfa, 0xff, 0xff, 0xfa, 0xd8,
+	0xd5, 0xa2, 0x90, 0x82, 0x85, 0x7b, 0x7a, 0x7a,
+	0x79, 0x79, 0x79, 0x79, 0x79, 0x76, 0x60, 0x5e,
+	0x5e, 0x58, 0x56, 0x54, 0x3d, 0x3d, 0x3c, 0x37,
+	0x37, 0x36, 0x36, 0x2e, 0x2e, 0x2f, 0x2f, 0x2b,
+	0x2b, 0x2b, 0x2b, 0x19, 0x19, 0x1c, 0x23, 0x23,
+	0x23, 0x23, 0x4b, 0x4b, 0xa5, 0xdf, 0xbc, 0x0b,
+	0x00, 0x00, 0x00, 0x00, 0x02, 0xb8, 0xe4, 0xd0,
+	0xce, 0xa3, 0xad, 0xcc, 0xd8, 0xfa, 0xff, 0xfb,
+	0xe7, 0xd5, 0xad, 0x92, 0x85, 0x85, 0x78, 0x7a,
+	0x7a, 0x79, 0x79, 0x79, 0x79, 0x76, 0x76, 0x60,
+	0x5e, 0x5e, 0x56, 0x56, 0x54, 0x54, 0x3d, 0x3d,
+	0x3c, 0x37, 0x37, 0x36, 0x36, 0x2e, 0x2e, 0x2d,
+	0x2d, 0x2a, 0x2a, 0x2b, 0x18, 0x18, 0x19, 0x15,
+	0x1c, 0x1a, 0x1a, 0x23, 0x23, 0x4a, 0x51, 0xc5,
+	0xe2, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x05, 0xbc,
+	0xe3, 0xc4, 0xa3, 0x95, 0xb1, 0xb3, 0xd8, 0xee,
+	0xfa, 0xef, 0xd5, 0xad, 0x94, 0x86, 0x78, 0x77,
+	0x77, 0x7a, 0x76, 0x76, 0x79, 0x79, 0x76, 0x76,
+	0x76, 0x60, 0x5e, 0x56, 0x56, 0x54, 0x54, 0x3d,
+	0x3d, 0x3c, 0x3c, 0x37, 0x37, 0x36, 0x2e, 0x2e,
+	0x2d, 0x2d, 0x2a, 0x2a, 0x29, 0x29, 0x17, 0x16,
+	0x18, 0x14, 0x15, 0x15, 0x1c, 0x1b, 0x35, 0x35,
+	0x49, 0xc3, 0xe1, 0x21, 0x00, 0x00, 0x00, 0x00,
+	0x0b, 0xe1, 0xd0, 0xc4, 0x8b, 0x94, 0xad, 0xb3,
+	0xcd, 0xd6, 0xd8, 0xcd, 0xb1, 0x94, 0x91, 0x7c,
+	0x77, 0x77, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76,
+	0x76, 0x76, 0x75, 0x5e, 0x56, 0x56, 0x56, 0x54,
+	0x54, 0x3d, 0x3d, 0x3c, 0x3c, 0x37, 0x37, 0x36,
+	0x2e, 0x2d, 0x2d, 0x2d, 0x2a, 0x2a, 0x29, 0x29,
+	0x17, 0x16, 0x18, 0x14, 0x14, 0x14, 0x15, 0x15,
+	0x1c, 0x19, 0x49, 0xc2, 0xf4, 0x25, 0x00, 0x00,
+	0x00, 0x00, 0x0e, 0xe1, 0xc5, 0xbf, 0x8a, 0x90,
+	0xa8, 0xad, 0xb2, 0xcc, 0xb2, 0xad, 0x95, 0x92,
+	0x91, 0x78, 0x75, 0x75, 0x75, 0x75, 0x75, 0x76,
+	0x76, 0x75, 0x76, 0x75, 0x75, 0x5e, 0x56, 0x56,
+	0x54, 0x3d, 0x3d, 0x3d, 0x3c, 0x3c, 0x37, 0x36,
+	0x36, 0x36, 0x2d, 0x2d, 0x2d, 0x2d, 0x2a, 0x29,
+	0x29, 0x17, 0x17, 0x16, 0x16, 0x17, 0x18, 0x14,
+	0x14, 0x14, 0x14, 0x18, 0x44, 0xc2, 0xf5, 0xb7,
+	0x02, 0x00, 0x00, 0x00, 0x1f, 0xf5, 0xc4, 0xa0,
+	0x6f, 0x8f, 0x90, 0x95, 0xad, 0xad, 0x95, 0x94,
+	0x92, 0x91, 0x91, 0x78, 0x75, 0x75, 0x75, 0x75,
+	0x75, 0x76, 0x75, 0x75, 0x75, 0x75, 0x60, 0x56,
+	0x56, 0x54, 0x54, 0x3d, 0x3d, 0x3c, 0x3c, 0x37,
+	0x37, 0x36, 0x36, 0x36, 0x2e, 0x2d, 0x2d, 0x2a,
+	0x2a, 0x29, 0x29, 0x17, 0x29, 0x2a, 0x2d, 0x2d,
+	0x13, 0x13, 0x14, 0x13, 0x14, 0x18, 0x44, 0xc2,
+	0xfa, 0xb8, 0x02, 0x00, 0x00, 0x00, 0x20, 0xf5,
+	0xc4, 0x9d, 0x6d, 0x80, 0x8f, 0x88, 0x90, 0x90,
+	0x92, 0x91, 0x86, 0x83, 0x83, 0x7c, 0x75, 0x75,
+	0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75,
+	0x5e, 0x54, 0x54, 0x3d, 0x3d, 0x3d, 0x3c, 0x3c,
+	0x3c, 0x37, 0x37, 0x36, 0x36, 0x2d, 0x2e, 0x2d,
+	0x2d, 0x2a, 0x2a, 0x29, 0x29, 0x2a, 0x36, 0x37,
+	0x36, 0x17, 0x13, 0x13, 0x13, 0x13, 0x13, 0x18,
+	0x44, 0xd5, 0xf5, 0xbb, 0x02, 0x00, 0x00, 0x00,
+	0x21, 0xf5, 0xc0, 0x50, 0x68, 0x6b, 0x80, 0x80,
+	0x80, 0x83, 0x80, 0x82, 0x82, 0x82, 0x83, 0x7e,
+	0x60, 0x75, 0x60, 0x75, 0x75, 0x75, 0x75, 0x75,
+	0x75, 0x60, 0x5e, 0x54, 0x3d, 0x3d, 0x3d, 0x3d,
+	0x3c, 0x3c, 0x37, 0x37, 0x36, 0x36, 0x2e, 0x2d,
+	0x2d, 0x2d, 0x2a, 0x2a, 0x2a, 0x2d, 0x37, 0x3c,
+	0x37, 0x37, 0x2a, 0x13, 0x13, 0x13, 0x16, 0x18,
+	0x17, 0x29, 0x44, 0xd8, 0xf4, 0xbb, 0x02, 0x00,
+	0x00, 0x00, 0x21, 0xf5, 0xc4, 0x49, 0x68, 0x6a,
+	0x7c, 0x7d, 0x7e, 0x7e, 0x7e, 0x7e, 0x82, 0x82,
+	0x82, 0x82, 0x75, 0x60, 0x60, 0x60, 0x60, 0x60,
+	0x60, 0x60, 0x60, 0x60, 0x56, 0x3d, 0x3d, 0x3d,
+	0x3c, 0x3c, 0x37, 0x37, 0x37, 0x36, 0x36, 0x2e,
+	0x2e, 0x2d, 0x2d, 0x2d, 0x2d, 0x2e, 0x3c, 0x3c,
+	0x3c, 0x3c, 0x37, 0x2e, 0x16, 0x13, 0x16, 0x16,
+	0x17, 0x17, 0x29, 0x2a, 0x46, 0xd8, 0xfa, 0xbb,
+	0x02, 0x00, 0x00, 0x00, 0x1f, 0xf5, 0xc4, 0x50,
+	0x59, 0x6a, 0x6a, 0x7c, 0x7c, 0x7e, 0x7d, 0x7e,
+	0x7e, 0x7e, 0x82, 0x82, 0x65, 0x5e, 0x60, 0x60,
+	0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x56, 0x3d,
+	0x3c, 0x3c, 0x3c, 0x37, 0x37, 0x37, 0x36, 0x36,
+	0x2e, 0x2e, 0x2e, 0x2d, 0x2d, 0x36, 0x3c, 0x3d,
+	0x3c, 0x3c, 0x3c, 0x37, 0x37, 0x29, 0x13, 0x13,
+	0x16, 0x17, 0x17, 0x29, 0x2a, 0x2f, 0x8b, 0xdc,
+	0xf9, 0xb8, 0x02, 0x00, 0x00, 0x00, 0x0d, 0xf5,
+	0xc4, 0x47, 0x40, 0x63, 0x64, 0x64, 0x64, 0x7c,
+	0x7c, 0x7c, 0x7e, 0x85, 0x7e, 0x7e, 0x7c, 0x60,
+	0x60, 0x5e, 0x60, 0x5e, 0x60, 0x5e, 0x60, 0x5e,
+	0x54, 0x3c, 0x3c, 0x3c, 0x37, 0x37, 0x37, 0x36,
+	0x36, 0x36, 0x36, 0x2d, 0x2d, 0x36, 0x3d, 0x3d,
+	0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x37, 0x36, 0x16,
+	0x13, 0x13, 0x16, 0x17, 0x29, 0x2a, 0x2a, 0x2e,
+	0xad, 0xdc, 0xf1, 0xb8, 0x02, 0x00, 0x00, 0x00,
+	0x0c, 0xe5, 0xe0, 0x4e, 0x3f, 0x5b, 0x65, 0x6a,
+	0x64, 0x7c, 0x7c, 0x7c, 0x7d, 0x7c, 0x7e, 0x7e,
+	0x7e, 0x61, 0x5e, 0x5e, 0x5e, 0x60, 0x5e, 0x5e,
+	0x5e, 0x5e, 0x3d, 0x3c, 0x37, 0x37, 0x37, 0x36,
+	0x36, 0x36, 0x36, 0x2e, 0x2d, 0x36, 0x3c, 0x3d,
+	0x3d, 0x3d, 0x3d, 0x3c, 0x3c, 0x37, 0x37, 0x37,
+	0x2a, 0x13, 0x13, 0x16, 0x17, 0x29, 0x29, 0x2a,
+	0x2d, 0x43, 0xd5, 0xdc, 0xf4, 0xb7, 0x00, 0x00,
+	0x00, 0x00, 0x06, 0xdf, 0xe4, 0x50, 0x38, 0x40,
+	0x62, 0x65, 0x64, 0x64, 0x7c, 0x7c, 0x7c, 0x7e,
+	0x7d, 0x7e, 0x7e, 0x64, 0x5e, 0x5e, 0x5e, 0x5e,
+	0x5e, 0x5e, 0x5e, 0x5e, 0x3d, 0x37, 0x37, 0x37,
+	0x36, 0x36, 0x36, 0x2e, 0x2e, 0x2d, 0x36, 0x3d,
+	0x3d, 0x3d, 0x3d, 0x3d, 0x3c, 0x3c, 0x3c, 0x37,
+	0x37, 0x36, 0x17, 0x13, 0x16, 0x16, 0x17, 0x29,
+	0x2a, 0x2d, 0x36, 0x95, 0xdb, 0xdc, 0xf4, 0x25,
+	0x00, 0x00, 0x00, 0x00, 0x05, 0xbc, 0xf9, 0x4f,
+	0x2f, 0x3f, 0x5c, 0x64, 0x64, 0x64, 0x64, 0x64,
+	0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x5f, 0x5e,
+	0x56, 0x56, 0x5e, 0x5e, 0x5e, 0x56, 0x3c, 0x36,
+	0x36, 0x36, 0x36, 0x36, 0x2e, 0x2e, 0x2d, 0x36,
+	0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3c, 0x3c, 0x3c,
+	0x3c, 0x37, 0x37, 0x2d, 0x16, 0x13, 0x16, 0x17,
+	0x29, 0x29, 0x2d, 0x2d, 0x44, 0xb5, 0xdd, 0xef,
+	0xe1, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9,
+	0xfc, 0x52, 0x31, 0x3f, 0x3f, 0x5c, 0x63, 0x65,
+	0x64, 0x64, 0x7c, 0x7c, 0x7c, 0x7e, 0x7d, 0x7d,
+	0x64, 0x56, 0x5e, 0x56, 0x56, 0x56, 0x56, 0x56,
+	0x3c, 0x36, 0x36, 0x2e, 0x2e, 0x2e, 0x2e, 0x2d,
+	0x36, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3c, 0x3c,
+	0x3c, 0x37, 0x37, 0x37, 0x37, 0x2a, 0x13, 0x13,
+	0x16, 0x17, 0x29, 0x2a, 0x2d, 0x39, 0xad, 0xb6,
+	0xdd, 0xf3, 0xe2, 0x0e, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x26, 0xfc, 0xc4, 0x30, 0x2f, 0x3f, 0x3f,
+	0x59, 0x62, 0x64, 0x64, 0x6a, 0x64, 0x7c, 0x7c,
+	0x7c, 0x7d, 0x7d, 0x65, 0x56, 0x56, 0x56, 0x56,
+	0x56, 0x56, 0x37, 0x2e, 0x2e, 0x2e, 0x2e, 0x2d,
+	0x2d, 0x36, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3c,
+	0x3c, 0x3c, 0x3c, 0x37, 0x37, 0x37, 0x36, 0x29,
+	0x13, 0x16, 0x17, 0x29, 0x2a, 0x2a, 0x2e, 0x96,
+	0xb6, 0xdb, 0xdd, 0xf3, 0xbd, 0x06, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x0e, 0xe1, 0xe5, 0x32, 0x2d,
+	0x3f, 0x3f, 0x3f, 0x5a, 0x63, 0x65, 0x64, 0x64,
+	0x6a, 0x64, 0x7c, 0x7c, 0x7d, 0x7c, 0x57, 0x56,
+	0x54, 0x54, 0x56, 0x54, 0x37, 0x2e, 0x2e, 0x2d,
+	0x2d, 0x2d, 0x36, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d,
+	0x3c, 0x3c, 0x3c, 0x37, 0x3c, 0x37, 0x37, 0x36,
+	0x36, 0x17, 0x16, 0x17, 0x29, 0x29, 0x2d, 0x2d,
+	0x47, 0xb5, 0xdb, 0xdd, 0xf3, 0xf4, 0xb7, 0x02,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xbc, 0xfd,
+	0x4f, 0x2a, 0x2f, 0x38, 0x3f, 0x59, 0x65, 0x63,
+	0x65, 0x64, 0x64, 0x64, 0x6a, 0x7c, 0x6b, 0x7c,
+	0x6a, 0x57, 0x54, 0x54, 0x54, 0x54, 0x37, 0x2d,
+	0x2d, 0x2d, 0x2d, 0x2d, 0x3c, 0x3d, 0x3d, 0x3d,
+	0x3d, 0x3c, 0x3c, 0x3c, 0x37, 0x37, 0x37, 0x37,
+	0x36, 0x36, 0x36, 0x17, 0x16, 0x17, 0x29, 0x2a,
+	0x2d, 0x43, 0xb1, 0xb6, 0xdb, 0xdd, 0xf3, 0xe5,

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 17:12:57 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id B1A5A106564A;
	Wed,  7 Apr 2010 17:12:57 +0000 (UTC)
	(envelope-from yongari@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id A2AF88FC0A;
	Wed,  7 Apr 2010 17:12:57 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37HCveg058840;
	Wed, 7 Apr 2010 17:12:57 GMT (envelope-from yongari@svn.freebsd.org)
Received: (from yongari@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37HCvMX058838;
	Wed, 7 Apr 2010 17:12:57 GMT (envelope-from yongari@svn.freebsd.org)
Message-Id: <201004071712.o37HCvMX058838@svn.freebsd.org>
From: Pyun YongHyeon 
Date: Wed, 7 Apr 2010 17:12:57 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206364 - head/sys/dev/msk
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 17:12:57 -0000

Author: yongari
Date: Wed Apr  7 17:12:57 2010
New Revision: 206364
URL: http://svn.freebsd.org/changeset/base/206364

Log:
  Partial revert r204545.
  Just relying on status LE ownership of status block seems to cause
  poor performance. Always read current status index register first
  and then check status ownership as we had before. Accessing status
  index register seems to trigger immediate status update if
  controller have pending status updates.
  
  MFC after:	1 week
  Reported by:	Andre Albsmeier  siemens dot com>
  Tested by:	Andre Albsmeier  siemens dot com>

Modified:
  head/sys/dev/msk/if_msk.c

Modified: head/sys/dev/msk/if_msk.c
==============================================================================
--- head/sys/dev/msk/if_msk.c	Wed Apr  7 17:07:06 2010	(r206363)
+++ head/sys/dev/msk/if_msk.c	Wed Apr  7 17:12:57 2010	(r206364)
@@ -3473,6 +3473,9 @@ msk_handle_events(struct msk_softc *sc)
 	uint32_t control, status;
 	int cons, len, port, rxprog;
 
+	if (sc->msk_stat_cons == CSR_READ_2(sc, STAT_PUT_IDX))
+		return (0);
+
 	/* Sync status LEs. */
 	bus_dmamap_sync(sc->msk_stat_tag, sc->msk_stat_map,
 	    BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
@@ -3556,7 +3559,7 @@ msk_handle_events(struct msk_softc *sc)
 	if (rxput[MSK_PORT_B] > 0)
 		msk_rxput(sc->msk_if[MSK_PORT_B]);
 
-	return (rxprog > sc->msk_process_limit ? EAGAIN : 0);
+	return (sc->msk_stat_cons != CSR_READ_2(sc, STAT_PUT_IDX));
 }
 
 static void

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 17:13:19 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 19AB71065672;
	Wed,  7 Apr 2010 17:13:19 +0000 (UTC)
	(envelope-from jkim@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id E49CE8FC1B;
	Wed,  7 Apr 2010 17:13:18 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37HDIPT058950;
	Wed, 7 Apr 2010 17:13:18 GMT (envelope-from jkim@svn.freebsd.org)
Received: (from jkim@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37HDIMK058949;
	Wed, 7 Apr 2010 17:13:18 GMT (envelope-from jkim@svn.freebsd.org)
Message-Id: <201004071713.o37HDIMK058949@svn.freebsd.org>
From: Jung-uk Kim 
Date: Wed, 7 Apr 2010 17:13:18 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206365 - head/sys/modules/syscons/beastie
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 17:13:19 -0000

Author: jkim
Date: Wed Apr  7 17:13:18 2010
New Revision: 206365
URL: http://svn.freebsd.org/changeset/base/206365

Log:
  Copy logo_saver module to beastie_saver.

Added:
  head/sys/modules/syscons/beastie/
     - copied from r206361, head/sys/modules/syscons/logo/

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 17:13:34 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id AE43B1065670;
	Wed,  7 Apr 2010 17:13:34 +0000 (UTC)
	(envelope-from yanefbsd@gmail.com)
Received: from qw-out-2122.google.com (qw-out-2122.google.com [74.125.92.27])
	by mx1.freebsd.org (Postfix) with ESMTP id 2017D8FC16;
	Wed,  7 Apr 2010 17:13:33 +0000 (UTC)
Received: by qw-out-2122.google.com with SMTP id 5so323587qwi.7
	for ; Wed, 07 Apr 2010 10:13:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=domainkey-signature:mime-version:received:in-reply-to:references
	:date:received:message-id:subject:from:to:cc:content-type
	:content-transfer-encoding;
	bh=b4Oe76kqTQdc9MCa80nPXcKQHbImGzeKNOq4vJEpxD8=;
	b=lcoerExxPzos/gcyP7eSp6xBcQ1OniDyODb51Zr9XyxaYYvs6XyBOXdEaeRHFnUA5s
	yBkSWVgLXKEemYzdlt1vfxW8WFTRCEQhE6NwBCrfsPmD4h1FXB8Fn/HgHUSdaUkuADMO
	A1kOlTd4ZAOd11t51A1dVY9uIu5tJMyKEofWg=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma;
	h=mime-version:in-reply-to:references:date:message-id:subject:from:to
	:cc:content-type:content-transfer-encoding;
	b=AaA+i7TejP9yDEyNZCmEGUF9JDb4mVNrjQh6qXA5+F3+6Powa5FlO/PS5pLqtlWBZa
	gFuyBiN31RNZO/Rd6MX/aEU8AA7nXkFkI93Zu1x3xBfsY0z+D6kWL7Hry+Bj0nLIuAFs
	IcheAl1pRHn+GbAmFNKjS/Jaz3NT5EHROufIQ=
MIME-Version: 1.0
Received: by 10.229.33.72 with HTTP; Wed, 7 Apr 2010 10:13:33 -0700 (PDT)
In-Reply-To: <201004071707.o37H76OW057492@svn.freebsd.org>
References: <201004071707.o37H76OW057492@svn.freebsd.org>
Date: Wed, 7 Apr 2010 10:13:33 -0700
Received: by 10.229.190.133 with SMTP id di5mr2051603qcb.23.1270660413253; 
	Wed, 07 Apr 2010 10:13:33 -0700 (PDT)
Message-ID: 
From: Garrett Cooper 
To: Jung-uk Kim 
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org,
	src-committers@freebsd.org
Subject: Re: svn commit: r206363 - head/sys/dev/syscons/logo
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 17:13:34 -0000

On Wed, Apr 7, 2010 at 10:07 AM, Jung-uk Kim  wrote:
> Author: jkim
> Date: Wed Apr =A07 17:07:06 2010
> New Revision: 206363
> URL: http://svn.freebsd.org/changeset/base/206363
>
> Log:
> =A0Add the official FreeBSD logo image file for logo_saver.
>
> Modified:
> =A0head/sys/dev/syscons/logo/logo.c

Please readd the beastie logo based saver as beastie saver, or
something similar.
Thanks,
-Garrett

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 17:20:55 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 8107D1065672;
	Wed,  7 Apr 2010 17:20:55 +0000 (UTC)
	(envelope-from jkim@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 71A7F8FC1C;
	Wed,  7 Apr 2010 17:20:55 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37HKtnk060678;
	Wed, 7 Apr 2010 17:20:55 GMT (envelope-from jkim@svn.freebsd.org)
Received: (from jkim@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37HKtdn060675;
	Wed, 7 Apr 2010 17:20:55 GMT (envelope-from jkim@svn.freebsd.org)
Message-Id: <201004071720.o37HKtdn060675@svn.freebsd.org>
From: Jung-uk Kim 
Date: Wed, 7 Apr 2010 17:20:55 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206366 - in head/sys/modules/syscons: . beastie
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 17:20:55 -0000

Author: jkim
Date: Wed Apr  7 17:20:55 2010
New Revision: 206366
URL: http://svn.freebsd.org/changeset/base/206366

Log:
  Reconnect the old Beastie logo_saver to build as beastie_saver.

Modified:
  head/sys/modules/syscons/Makefile
  head/sys/modules/syscons/beastie/Makefile

Modified: head/sys/modules/syscons/Makefile
==============================================================================
--- head/sys/modules/syscons/Makefile	Wed Apr  7 17:13:18 2010	(r206365)
+++ head/sys/modules/syscons/Makefile	Wed Apr  7 17:20:55 2010	(r206366)
@@ -1,6 +1,7 @@
 # $FreeBSD$
 
 SUBDIR=	${_apm} \
+	${_beastie} \
 	blank \
 	${_daemon} \
 	${_dragon} \
@@ -18,6 +19,7 @@ _apm=		apm
 .endif
 
 .if ${MACHINE_ARCH} != "sparc64"
+_beastie=	beastie
 _daemon=	daemon
 _dragon=	dragon
 _fire=		fire

Modified: head/sys/modules/syscons/beastie/Makefile
==============================================================================
--- head/sys/modules/syscons/beastie/Makefile	Wed Apr  7 17:13:18 2010	(r206365)
+++ head/sys/modules/syscons/beastie/Makefile	Wed Apr  7 17:20:55 2010	(r206366)
@@ -2,7 +2,7 @@
 
 .PATH:	${.CURDIR}/../../../dev/syscons/logo
 
-KMOD=	logo_saver
-SRCS=	logo_saver.c logo.c
+KMOD=	beastie_saver
+SRCS=	beastie.c logo_saver.c
 
 .include 

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 17:31:56 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 575101065676;
	Wed,  7 Apr 2010 17:31:56 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 4822C8FC16;
	Wed,  7 Apr 2010 17:31:56 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37HVuWZ063130;
	Wed, 7 Apr 2010 17:31:56 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37HVuZb063128;
	Wed, 7 Apr 2010 17:31:56 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004071731.o37HVuZb063128@svn.freebsd.org>
From: Rui Paulo 
Date: Wed, 7 Apr 2010 17:31:56 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206367 - head/sys/net80211
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 17:31:56 -0000

Author: rpaulo
Date: Wed Apr  7 17:31:56 2010
New Revision: 206367
URL: http://svn.freebsd.org/changeset/base/206367

Log:
  Fix build.
  
  Pointy hat:	me
  MFC after:	1 month

Modified:
  head/sys/net80211/ieee80211_ratectl.h

Modified: head/sys/net80211/ieee80211_ratectl.h
==============================================================================
--- head/sys/net80211/ieee80211_ratectl.h	Wed Apr  7 17:20:55 2010	(r206366)
+++ head/sys/net80211/ieee80211_ratectl.h	Wed Apr  7 17:31:56 2010	(r206367)
@@ -94,7 +94,7 @@ ieee80211_ratectl_rate(struct ieee80211_
 	const struct ieee80211vap *vap = ni->ni_vap;
 
 	if (ni->ni_rctls == NULL)	/* ratectl not setup */
-		return;
+		return 0;
 	return vap->iv_rate->ir_rate(ni, arg, iarg);
 }
 

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 17:40:49 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 17E9E106567F;
	Wed,  7 Apr 2010 17:40:49 +0000 (UTC)
	(envelope-from jkim@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id E21D78FC1F;
	Wed,  7 Apr 2010 17:40:48 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37HemN5065139;
	Wed, 7 Apr 2010 17:40:48 GMT (envelope-from jkim@svn.freebsd.org)
Received: (from jkim@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37HemWo065137;
	Wed, 7 Apr 2010 17:40:48 GMT (envelope-from jkim@svn.freebsd.org)
Message-Id: <201004071740.o37HemWo065137@svn.freebsd.org>
From: Jung-uk Kim 
Date: Wed, 7 Apr 2010 17:40:48 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206368 - head/usr.sbin/sysinstall
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 17:40:49 -0000

Author: jkim
Date: Wed Apr  7 17:40:48 2010
New Revision: 206368
URL: http://svn.freebsd.org/changeset/base/206368

Log:
  Add an entry for the old Beastie logo saver and re-sort.

Modified:
  head/usr.sbin/sysinstall/menus.c

Modified: head/usr.sbin/sysinstall/menus.c
==============================================================================
--- head/usr.sbin/sysinstall/menus.c	Wed Apr  7 17:31:56 2010	(r206367)
+++ head/usr.sbin/sysinstall/menus.c	Wed Apr  7 17:40:48 2010	(r206368)
@@ -1980,26 +1980,28 @@ DMenu MenuSysconsSaver = {
     NULL,
     { { "1 Blank",	"Simply blank the screen",
 	dmenuVarCheck, configSaver, NULL, "saver=blank" },
-      { "2 Daemon",	"\"BSD Daemon\" animated screen saver (text)",
+      { "2 Beastie",	"\"BSD Daemon\" animated screen saver (graphics)",
+	dmenuVarCheck, configSaver, NULL, "saver=beastie" },
+      { "3 Daemon",	"\"BSD Daemon\" animated screen saver (text)",
 	dmenuVarCheck, configSaver, NULL, "saver=daemon" },
-      { "3 Fade",	"Fade out effect screen saver",
+      { "4 Dragon",	"Dragon screensaver (graphics)",
+	dmenuVarCheck, configSaver, NULL, "saver=dragon" },
+      { "5 Fade",	"Fade out effect screen saver",
 	dmenuVarCheck, configSaver, NULL, "saver=fade" },
-      { "4 Fire",	"Flames effect screen saver",
+      { "6 Fire",	"Flames effect screen saver",
 	dmenuVarCheck, configSaver, NULL, "saver=fire" },
-      { "5 Green",	"\"Green\" power saving mode (if supported by monitor)",
+      { "7 Green",	"\"Green\" power saving mode (if supported by monitor)",
 	dmenuVarCheck, configSaver, NULL, "saver=green" },
-      { "6 Logo",	"\"BSD Daemon\" animated screen saver (graphics)",
+      { "8 Logo",	"FreeBSD \"logo\" animated screen saver (graphics)",
 	dmenuVarCheck, configSaver, NULL, "saver=logo" },
-      { "7 Rain",	"Rain drops screen saver",
+      { "9 Rain",	"Rain drops screen saver",
 	dmenuVarCheck, configSaver, NULL, "saver=rain" },
-      { "8 Snake",	"Draw a FreeBSD \"snake\" on your screen",
+      { "a Snake",	"Draw a FreeBSD \"snake\" on your screen",
 	dmenuVarCheck, configSaver, NULL, "saver=snake" },
-      { "9 Star",	"A \"twinkling stars\" effect",
+      { "b Star",	"A \"twinkling stars\" effect",
 	dmenuVarCheck, configSaver, NULL, "saver=star" },
-      { "Warp",	"A \"stars warping\" effect",
+      { "c Warp",	"A \"stars warping\" effect",
 	dmenuVarCheck, configSaver, NULL, "saver=warp" },
-      { "Dragon", "Dragon screensaver (graphics)",
-	dmenuVarCheck, configSaver, NULL, "saver=dragon" },
       { "Timeout",	"Set the screen saver timeout interval",
 	NULL, configSaverTimeout, NULL, NULL, ' ', ' ', ' ' },
       { NULL } },

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 17:42:30 2010
Return-Path: 
Delivered-To: svn-src-head@FreeBSD.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 88034106566C;
	Wed,  7 Apr 2010 17:42:30 +0000 (UTC)
	(envelope-from gavin@FreeBSD.org)
Received: from mail-gw2.york.ac.uk (mail-gw2.york.ac.uk [144.32.128.247])
	by mx1.freebsd.org (Postfix) with ESMTP id 36AA38FC2B;
	Wed,  7 Apr 2010 17:42:29 +0000 (UTC)
Received: from mail-gw7.york.ac.uk (mail-gw7.york.ac.uk [144.32.129.30])
	by mail-gw2.york.ac.uk (8.13.6/8.13.6) with ESMTP id o37HgQsf024375;
	Wed, 7 Apr 2010 18:42:26 +0100 (BST)
Received: from buffy-128.york.ac.uk ([144.32.128.160] helo=buffy.york.ac.uk)
	by mail-gw7.york.ac.uk with esmtps (TLSv1:AES256-SHA:256) (Exim 4.68)
	(envelope-from )
	id 1NzZGk-00036X-AA; Wed, 07 Apr 2010 18:42:26 +0100
Received: from buffy.york.ac.uk (localhost [127.0.0.1])
	by buffy.york.ac.uk (8.14.3/8.14.3) with ESMTP id o37HgPkH080636;
	Wed, 7 Apr 2010 18:42:26 +0100 (BST)
	(envelope-from gavin@FreeBSD.org)
Received: (from ga9@localhost)
	by buffy.york.ac.uk (8.14.3/8.14.3/Submit) id o37HgPqN080635;
	Wed, 7 Apr 2010 18:42:25 +0100 (BST)
	(envelope-from gavin@FreeBSD.org)
X-Authentication-Warning: buffy.york.ac.uk: ga9 set sender to
	gavin@FreeBSD.org using -f
From: Gavin Atkinson 
To: Rui Paulo 
In-Reply-To: <201004071529.o37FTDi0035619@svn.freebsd.org>
References: <201004071529.o37FTDi0035619@svn.freebsd.org>
Content-Type: text/plain; charset="ASCII"
Content-Transfer-Encoding: quoted-printable
Date: Wed, 07 Apr 2010 18:42:24 +0100
Message-ID: <1270662144.74915.108.camel@buffy.york.ac.uk>
Mime-Version: 1.0
X-Mailer: Evolution 2.28.1 FreeBSD GNOME Team Port 
X-York-MailScanner: Found to be clean
X-York-MailScanner-From: gavin@freebsd.org
Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org,
	src-committers@FreeBSD.org
Subject: Re: svn commit: r206358 - in head/sys: conf dev/bwi dev/bwn
 dev/iwn dev/ral dev/usb/wlan dev/wpi modules/wlan net80211
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 17:42:30 -0000

On Wed, 2010-04-07 at 15:29 +0000, Rui Paulo wrote:
> Author: rpaulo
> Date: Wed Apr  7 15:29:13 2010
> New Revision: 206358
> URL: http://svn.freebsd.org/changeset/base/206358
>=20
> Log:
>   net80211 rate control framework (net80211 ratectl).

This looks to be great work!  Thanks for doing this.

[...]

>   MFC after:    1 months

The changes change KBI - I don't think it can be MFC'd as-is?
(especially the sys/net80211/ieee80211_var.h changes)

Also...

> @@ -3393,8 +3368,8 @@ _bwi_txeof(struct bwi_softc *sc, uint16_
>  	bus_dmamap_unload(sc->sc_buf_dtag, tb->tb_dmap);
> =20
>  	ni =3D tb->tb_ni;
> +	vap =3D ni->ni_vap;
>  	if (tb->tb_ni !=3D NULL) {
> -		struct bwi_node *bn =3D (struct bwi_node *) tb->tb_ni;

If (tb->tb_ni) can indeed be NULL here, we'll now panic. If not, there's
no need for the conditional.

> @@ -921,13 +900,12 @@ rt2661_tx_intr(struct rt2661_softc *sc)
>  		data->m =3D NULL;
>  		ni =3D data->ni;
>  		data->ni =3D NULL;
> +		vap =3D ni->ni_vap;
> =20
>  		/* if no frame has been sent, ignore */
>  		if (ni =3D=3D NULL)
>  			continue;
> =20
> -		rn =3D RT2661_NODE(ni);
> -

Same here.  Either we'll panic, or the test for (ni =3D=3D NULL) isn't
needed.

> @@ -1022,6 +1008,7 @@ rt2560_tx_intr(struct rt2560_softc *sc)
>                 data->m =3D NULL;
>                 ieee80211_free_node(data->ni);
>                 data->ni =3D NULL;
> +               ni =3D NULL;
>=20
>                 /* descriptor is no longer valid */
>                 desc->flags &=3D ~htole32(RT2560_TX_VALID);

This seems unnecessary - we never read "ni" again.  Either we fall out
of the loop and exit the subroutine, or we go round the loop again and
overwrite it.

> Index: head/sys/dev/usb/wlan/if_urtw.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> --- head/sys/dev/usb/wlan/if_urtw.c     (revision 206357)
> +++ head/sys/dev/usb/wlan/if_urtw.c     (revision 206358)
> @@ -62,6 +62,7 @@ __FBSDID("$FreeBSD$");
>  #include 
>=20
>  SYSCTL_NODE(_hw_usb, OID_AUTO, urtw, CTLFLAG_RW, 0, "USB Realtek 8187L")=
;
> +#define URTW_DEBUG
>  #ifdef URTW_DEBUG
>  int urtw_debug =3D 0;
> SYSCTL_INT(_hw_usb_urtw, OID_AUTO, debug, CTLFLAG_RW, &urtw_debug, 0,

Is this change intentional?

Thanks,

Gavin

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 17:46:09 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 14E2F106567C;
	Wed,  7 Apr 2010 17:46:09 +0000 (UTC)
	(envelope-from rpaulo@gmail.com)
Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.155])
	by mx1.freebsd.org (Postfix) with ESMTP id 10BDE8FC1A;
	Wed,  7 Apr 2010 17:46:07 +0000 (UTC)
Received: by fg-out-1718.google.com with SMTP id l26so1500160fgb.13
	for ; Wed, 07 Apr 2010 10:46:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=domainkey-signature:received:received:sender:subject:mime-version
	:content-type:from:in-reply-to:date:cc:content-transfer-encoding
	:message-id:references:to:x-mailer;
	bh=6fkfVUeEUgMl06X+9zefJPnpYAy7QPeLNXVAwqMDyNU=;
	b=lNaTrks8gJqolLfh08WOJGbqN3rZVckl4hn44Ks8P8/kjeecjYFqR43j4XNDRznFeC
	a8yHUOfOZBsDcSJOQgtNrkYpI4k0aPweAJei1hCCw+NP91yp3eDm7ICD8u5bYQ9issxu
	8MzU+gztpt0La00qIRn/BtUz3dHitAknGle8Q=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma;
	h=sender:subject:mime-version:content-type:from:in-reply-to:date:cc
	:content-transfer-encoding:message-id:references:to:x-mailer;
	b=c8ev9HP/t4zYoT3xjXBsEwXP9m48wenDK6VV2jx7/AZo7UEcpLdoUxfY8A2jQiOT0r
	D6qLXWYcVT4QvOI8VgDrVf/GjY9P1Cy/kZgeAWjqM33YjKASC5i0L0Ffj4Y9C7JdrHoX
	mWA6DrnHTGnojAieTuoz/HucG+roUL/W/bsTE=
Received: by 10.87.35.9 with SMTP id n9mr1004599fgj.45.1270662366906;
	Wed, 07 Apr 2010 10:46:06 -0700 (PDT)
Received: from [10.0.10.2] (54.81.54.77.rev.vodafone.pt [77.54.81.54])
	by mx.google.com with ESMTPS id 16sm9657382fxm.4.2010.04.07.10.46.05
	(version=TLSv1/SSLv3 cipher=RC4-MD5);
	Wed, 07 Apr 2010 10:46:06 -0700 (PDT)
Sender: Rui Paulo 
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Rui Paulo 
In-Reply-To: <1270662144.74915.108.camel@buffy.york.ac.uk>
Date: Wed, 7 Apr 2010 18:46:03 +0100
Content-Transfer-Encoding: 7bit
Message-Id: 
References: <201004071529.o37FTDi0035619@svn.freebsd.org>
	<1270662144.74915.108.camel@buffy.york.ac.uk>
To: Gavin Atkinson 
X-Mailer: Apple Mail (2.1078)
Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org,
	src-committers@FreeBSD.org
Subject: Re: svn commit: r206358 - in head/sys: conf dev/bwi dev/bwn dev/iwn
	dev/ral dev/usb/wlan dev/wpi modules/wlan net80211
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 17:46:09 -0000


On 7 Apr 2010, at 18:42, Gavin Atkinson wrote:

> On Wed, 2010-04-07 at 15:29 +0000, Rui Paulo wrote:
>> Author: rpaulo
>> Date: Wed Apr  7 15:29:13 2010
>> New Revision: 206358
>> URL: http://svn.freebsd.org/changeset/base/206358
>> 
>> Log:
>>  net80211 rate control framework (net80211 ratectl).
> 
> This looks to be great work!  Thanks for doing this.
> 
> [...]
> 
>>  MFC after:    1 months
> 
> The changes change KBI - I don't think it can be MFC'd as-is?
> (especially the sys/net80211/ieee80211_var.h changes)

It can be MFC'ed but not as-is.

> 
> Also...
> 
>> @@ -3393,8 +3368,8 @@ _bwi_txeof(struct bwi_softc *sc, uint16_
>> 	bus_dmamap_unload(sc->sc_buf_dtag, tb->tb_dmap);
>> 
>> 	ni = tb->tb_ni;
>> +	vap = ni->ni_vap;
>> 	if (tb->tb_ni != NULL) {
>> -		struct bwi_node *bn = (struct bwi_node *) tb->tb_ni;
> 
> If (tb->tb_ni) can indeed be NULL here, we'll now panic. If not, there's
> no need for the conditional.
> 
>> @@ -921,13 +900,12 @@ rt2661_tx_intr(struct rt2661_softc *sc)
>> 		data->m = NULL;
>> 		ni = data->ni;
>> 		data->ni = NULL;
>> +		vap = ni->ni_vap;
>> 
>> 		/* if no frame has been sent, ignore */
>> 		if (ni == NULL)
>> 			continue;
>> 
>> -		rn = RT2661_NODE(ni);
>> -
> 
> Same here.  Either we'll panic, or the test for (ni == NULL) isn't
> needed.

Right, this needs to be moved down.

> 
>> @@ -1022,6 +1008,7 @@ rt2560_tx_intr(struct rt2560_softc *sc)
>>                data->m = NULL;
>>                ieee80211_free_node(data->ni);
>>                data->ni = NULL;
>> +               ni = NULL;
>> 
>>                /* descriptor is no longer valid */
>>                desc->flags &= ~htole32(RT2560_TX_VALID);
> 
> This seems unnecessary - we never read "ni" again.  Either we fall out
> of the loop and exit the subroutine, or we go round the loop again and
> overwrite it.

I'll remove it.

> 
>> Index: head/sys/dev/usb/wlan/if_urtw.c
>> ===================================================================
>> --- head/sys/dev/usb/wlan/if_urtw.c     (revision 206357)
>> +++ head/sys/dev/usb/wlan/if_urtw.c     (revision 206358)
>> @@ -62,6 +62,7 @@ __FBSDID("$FreeBSD$");
>> #include 
>> 
>> SYSCTL_NODE(_hw_usb, OID_AUTO, urtw, CTLFLAG_RW, 0, "USB Realtek 8187L");
>> +#define URTW_DEBUG
>> #ifdef URTW_DEBUG
>> int urtw_debug = 0;
>> SYSCTL_INT(_hw_usb_urtw, OID_AUTO, debug, CTLFLAG_RW, &urtw_debug, 0,
> 
> Is this change intentional?

No.

Regards,
--
Rui Paulo


From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 17:48:13 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 8A2DF1065676;
	Wed,  7 Apr 2010 17:48:13 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 7AC298FC21;
	Wed,  7 Apr 2010 17:48:13 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37HmDZn066832;
	Wed, 7 Apr 2010 17:48:13 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37HmDZB066830;
	Wed, 7 Apr 2010 17:48:13 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004071748.o37HmDZB066830@svn.freebsd.org>
From: Rui Paulo 
Date: Wed, 7 Apr 2010 17:48:13 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206369 - head/sys/dev/usb/wlan
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 17:48:13 -0000

Author: rpaulo
Date: Wed Apr  7 17:48:13 2010
New Revision: 206369
URL: http://svn.freebsd.org/changeset/base/206369

Log:
  Remove debugging code that snuck in.

Modified:
  head/sys/dev/usb/wlan/if_urtw.c

Modified: head/sys/dev/usb/wlan/if_urtw.c
==============================================================================
--- head/sys/dev/usb/wlan/if_urtw.c	Wed Apr  7 17:40:48 2010	(r206368)
+++ head/sys/dev/usb/wlan/if_urtw.c	Wed Apr  7 17:48:13 2010	(r206369)
@@ -62,7 +62,6 @@ __FBSDID("$FreeBSD$");
 #include 
 
 SYSCTL_NODE(_hw_usb, OID_AUTO, urtw, CTLFLAG_RW, 0, "USB Realtek 8187L");
-#define URTW_DEBUG
 #ifdef URTW_DEBUG
 int urtw_debug = 0;
 SYSCTL_INT(_hw_usb_urtw, OID_AUTO, debug, CTLFLAG_RW, &urtw_debug, 0,

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 17:49:48 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 3C0E31065687;
	Wed,  7 Apr 2010 17:49:48 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 2CCBE8FC21;
	Wed,  7 Apr 2010 17:49:48 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37Hnm6A067195;
	Wed, 7 Apr 2010 17:49:48 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37HnmVP067193;
	Wed, 7 Apr 2010 17:49:48 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004071749.o37HnmVP067193@svn.freebsd.org>
From: Rui Paulo 
Date: Wed, 7 Apr 2010 17:49:48 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206370 - head/sys/dev/bwi
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 17:49:48 -0000

Author: rpaulo
Date: Wed Apr  7 17:49:47 2010
New Revision: 206370
URL: http://svn.freebsd.org/changeset/base/206370

Log:
  Avoid NULL deref.
  
  Submitted by:	gavin
  MFC after:	1 month

Modified:
  head/sys/dev/bwi/if_bwi.c

Modified: head/sys/dev/bwi/if_bwi.c
==============================================================================
--- head/sys/dev/bwi/if_bwi.c	Wed Apr  7 17:48:13 2010	(r206369)
+++ head/sys/dev/bwi/if_bwi.c	Wed Apr  7 17:49:47 2010	(r206370)
@@ -3368,10 +3368,10 @@ _bwi_txeof(struct bwi_softc *sc, uint16_
 	bus_dmamap_unload(sc->sc_buf_dtag, tb->tb_dmap);
 
 	ni = tb->tb_ni;
-	vap = ni->ni_vap;
 	if (tb->tb_ni != NULL) {
 		const struct bwi_txbuf_hdr *hdr =
 		    mtod(tb->tb_mbuf, const struct bwi_txbuf_hdr *);
+		vap = ni->ni_vap;
 
 		/* NB: update rate control only for unicast frames */
 		if (hdr->txh_mac_ctrl & htole32(BWI_TXH_MAC_C_ACK)) {

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 17:51:07 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 10C591065674;
	Wed,  7 Apr 2010 17:51:07 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 018DA8FC16;
	Wed,  7 Apr 2010 17:51:07 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37Hp6Mf067552;
	Wed, 7 Apr 2010 17:51:06 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37Hp6kg067550;
	Wed, 7 Apr 2010 17:51:06 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004071751.o37Hp6kg067550@svn.freebsd.org>
From: Rui Paulo 
Date: Wed, 7 Apr 2010 17:51:06 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206371 - head/sys/dev/ral
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 17:51:07 -0000

Author: rpaulo
Date: Wed Apr  7 17:51:06 2010
New Revision: 206371
URL: http://svn.freebsd.org/changeset/base/206371

Log:
  Avoid NULL deref.
  
  Submitted by:	gavin
  MFC after:	1 month

Modified:
  head/sys/dev/ral/rt2661.c

Modified: head/sys/dev/ral/rt2661.c
==============================================================================
--- head/sys/dev/ral/rt2661.c	Wed Apr  7 17:49:47 2010	(r206370)
+++ head/sys/dev/ral/rt2661.c	Wed Apr  7 17:51:06 2010	(r206371)
@@ -900,11 +900,12 @@ rt2661_tx_intr(struct rt2661_softc *sc)
 		data->m = NULL;
 		ni = data->ni;
 		data->ni = NULL;
-		vap = ni->ni_vap;
 
 		/* if no frame has been sent, ignore */
 		if (ni == NULL)
 			continue;
+		else
+			vap = ni->ni_vap;
 
 		switch (RT2661_TX_RESULT(val)) {
 		case RT2661_TX_SUCCESS:

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 17:52:32 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id CF287106564A;
	Wed,  7 Apr 2010 17:52:32 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id BFB4B8FC18;
	Wed,  7 Apr 2010 17:52:32 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37HqW5a067928;
	Wed, 7 Apr 2010 17:52:32 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37HqW6Z067926;
	Wed, 7 Apr 2010 17:52:32 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004071752.o37HqW6Z067926@svn.freebsd.org>
From: Rui Paulo 
Date: Wed, 7 Apr 2010 17:52:32 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206372 - head/sys/dev/ral
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 17:52:32 -0000

Author: rpaulo
Date: Wed Apr  7 17:52:32 2010
New Revision: 206372
URL: http://svn.freebsd.org/changeset/base/206372

Log:
  Remove unnecessary assignment.
  
  Submitted by:	gavin
  MFC after:	1 month

Modified:
  head/sys/dev/ral/rt2560.c

Modified: head/sys/dev/ral/rt2560.c
==============================================================================
--- head/sys/dev/ral/rt2560.c	Wed Apr  7 17:51:06 2010	(r206371)
+++ head/sys/dev/ral/rt2560.c	Wed Apr  7 17:52:32 2010	(r206372)
@@ -1008,7 +1008,6 @@ rt2560_tx_intr(struct rt2560_softc *sc)
 		data->m = NULL;
 		ieee80211_free_node(data->ni);
 		data->ni = NULL;
-		ni = NULL;
 
 		/* descriptor is no longer valid */
 		desc->flags &= ~htole32(RT2560_TX_VALID);

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 18:04:25 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id D01151065670;
	Wed,  7 Apr 2010 18:04:25 +0000 (UTC)
	(envelope-from jkim@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id C025E8FC19;
	Wed,  7 Apr 2010 18:04:25 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37I4Prl070677;
	Wed, 7 Apr 2010 18:04:25 GMT (envelope-from jkim@svn.freebsd.org)
Received: (from jkim@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37I4PDI070675;
	Wed, 7 Apr 2010 18:04:25 GMT (envelope-from jkim@svn.freebsd.org)
Message-Id: <201004071804.o37I4PDI070675@svn.freebsd.org>
From: Jung-uk Kim 
Date: Wed, 7 Apr 2010 18:04:25 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206374 - head/share/man/man4
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 18:04:25 -0000

Author: jkim
Date: Wed Apr  7 18:04:25 2010
New Revision: 206374
URL: http://svn.freebsd.org/changeset/base/206374

Log:
  Reflect recent logo_saver changes and mention dragon_saver.

Modified:
  head/share/man/man4/splash.4

Modified: head/share/man/man4/splash.4
==============================================================================
--- head/share/man/man4/splash.4	Wed Apr  7 17:58:29 2010	(r206373)
+++ head/share/man/man4/splash.4	Wed Apr  7 18:04:25 2010	(r206374)
@@ -26,7 +26,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd January 15, 2006
+.Dd April 7, 2010
 .Dt SPLASH 4
 .Os
 .Sh NAME
@@ -99,10 +99,16 @@ Currently the following screen saver mod
 .Bl -tag -width splash_module.ko -compact
 .It Pa blank_saver.ko
 This screen saver simply blanks the screen.
+.It Pa beastie_saver.ko
+Animated graphical
+.Bx
+Daemon.
 .It Pa daemon_saver.ko
 Animated
 .Bx
 Daemon screen saver.
+.It Pa dragon_saver.ko
+Draws a random dragon curve.
 .It Pa fade_saver.ko
 The screen will gradually fade away.
 .It Pa fire_saver.ko
@@ -111,8 +117,8 @@ A fire which becomes higher as load incr
 If the monitor supports power saving mode, it will be turned off.
 .It Pa logo_saver.ko
 Animated graphical
-.Bx
-Daemon.
+.Fx
+logo.
 .It Pa rain_saver.ko
 Draws a shower on the screen.
 .It Pa snake_saver.ko

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 18:14:31 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 042B3106567E;
	Wed,  7 Apr 2010 18:14:31 +0000 (UTC) (envelope-from ume@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id E8DD28FC2E;
	Wed,  7 Apr 2010 18:14:30 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37IEUb6072972;
	Wed, 7 Apr 2010 18:14:30 GMT (envelope-from ume@svn.freebsd.org)
Received: (from ume@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37IEUCA072970;
	Wed, 7 Apr 2010 18:14:30 GMT (envelope-from ume@svn.freebsd.org)
Message-Id: <201004071814.o37IEUCA072970@svn.freebsd.org>
From: Hajimu UMEMOTO 
Date: Wed, 7 Apr 2010 18:14:30 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206375 - head/etc
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 18:14:31 -0000

Author: ume
Date: Wed Apr  7 18:14:30 2010
New Revision: 206375
URL: http://svn.freebsd.org/changeset/base/206375

Log:
  firewall_trusted_ipv6 was gone by r202460.  Remove stale comment about
  it as well.

Modified:
  head/etc/rc.firewall

Modified: head/etc/rc.firewall
==============================================================================
--- head/etc/rc.firewall	Wed Apr  7 18:04:25 2010	(r206374)
+++ head/etc/rc.firewall	Wed Apr  7 18:14:30 2010	(r206375)
@@ -426,7 +426,7 @@ case ${firewall_type} in
 	#			 	 offers services.
 	#  firewall_allowservices:	List of IPs which has access to
 	#				 $firewall_myservices.
-	#  firewall_trusted:		List of IPv4s which has full access 
+	#  firewall_trusted:		List of IPs which has full access 
 	#				 to this host. Be very carefull 
 	#				 when setting this. This option can
 	#				 seriously degrade the level of 
@@ -437,11 +437,6 @@ case ${firewall_type} in
 	#  firewall_nologports:		List of TCP/UDP ports for which
 	#				 denied incomming packets are not
 	#				 logged.
-	#  firewall_trusted_ipv6:	List of IPv6s which has full access 
-	#				 to this host. Be very carefull 
-	#				 when setting this. This option can
-	#				 seriously degrade the level of 
-	#				 protection provided by the firewall.
 
 	# Allow packets for which a state has been built.
 	${fwcmd} add check-state

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 18:16:05 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id DE080106566B;
	Wed,  7 Apr 2010 18:16:05 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id CC0BF8FC20;
	Wed,  7 Apr 2010 18:16:05 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37IG5mj073360;
	Wed, 7 Apr 2010 18:16:05 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37IG5Um073349;
	Wed, 7 Apr 2010 18:16:05 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004071816.o37IG5Um073349@svn.freebsd.org>
From: Rui Paulo 
Date: Wed, 7 Apr 2010 18:16:05 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206376 - head/sys/boot/i386/efi
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 18:16:06 -0000

Author: rpaulo
Date: Wed Apr  7 18:16:05 2010
New Revision: 206376
URL: http://svn.freebsd.org/changeset/base/206376

Log:
  EFI boot loader for FreeBSD/i386.
  
  Doesn't boot a kernel yet, but it can read an ELF file from the EFI FAT
  partition.

Added:
  head/sys/boot/i386/efi/
  head/sys/boot/i386/efi/Makefile   (contents, props changed)
  head/sys/boot/i386/efi/autoload.c   (contents, props changed)
  head/sys/boot/i386/efi/bootinfo.c   (contents, props changed)
  head/sys/boot/i386/efi/conf.c   (contents, props changed)
  head/sys/boot/i386/efi/devicename.c   (contents, props changed)
  head/sys/boot/i386/efi/efimd.c   (contents, props changed)
  head/sys/boot/i386/efi/elf32_freebsd.c   (contents, props changed)
  head/sys/boot/i386/efi/exec.c   (contents, props changed)
  head/sys/boot/i386/efi/i386_copy.c   (contents, props changed)
  head/sys/boot/i386/efi/ldscript.amd64   (contents, props changed)
  head/sys/boot/i386/efi/ldscript.i386   (contents, props changed)
  head/sys/boot/i386/efi/main.c   (contents, props changed)
  head/sys/boot/i386/efi/reloc.c   (contents, props changed)
  head/sys/boot/i386/efi/start.S   (contents, props changed)
  head/sys/boot/i386/efi/version   (contents, props changed)

Added: head/sys/boot/i386/efi/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/boot/i386/efi/Makefile	Wed Apr  7 18:16:05 2010	(r206376)
@@ -0,0 +1,69 @@
+# $FreeBSD$
+
+NO_MAN=
+WITHOUT_SSP=
+BUILDING_EFI=
+
+.include 
+
+PROG=		loader.sym
+INTERNALPROG=
+
+# architecture-specific loader code
+SRCS=	main.c exec.c conf.c vers.c reloc.c start.S elf32_freebsd.c
+SRCS+=	i386_copy.c bootinfo.c autoload.c devicename.c efimd.c
+
+CFLAGS+=	-I${.CURDIR}/../../efi/include
+CFLAGS+=	-I${.CURDIR}/../../efi/include/i386
+
+.if ${MK_FORTH} != "no"
+BOOT_FORTH=	yes
+CFLAGS+=	-DBOOT_FORTH
+CFLAGS+=	-I${.CURDIR}/../../ficl
+CFLAGS+=	-I${.CURDIR}/../../ficl/i386
+LIBFICL=	${.OBJDIR}/../../ficl/libficl.a
+.endif
+
+# Include bcache code.
+HAVE_BCACHE=    yes
+
+# Always add MI sources 
+.PATH:		${.CURDIR}/../../common
+.include	"${.CURDIR}/../../common/Makefile.inc"
+CFLAGS+=	-I${.CURDIR}/../../common
+
+FILES=	loader.efi
+FILESMODE_loader.efi=	${BINMODE}
+
+LDSCRIPT=	${.CURDIR}/ldscript.${MACHINE_ARCH}
+LDFLAGS=	-Wl,-T${LDSCRIPT} -shared -symbolic
+
+${PROG}:	${LDSCRIPT}
+
+CLEANFILES=	vers.c loader.efi
+
+NEWVERSWHAT=	"EFI loader" ${MACHINE_ARCH}
+
+vers.c:	${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version
+	sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT}
+
+OBJCOPY?=	objcopy
+OBJDUMP?=	objdump
+
+loader.efi: loader.sym
+	if [ `${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*' | wc -l` != 0 ]; then \
+		${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*'; \
+		exit 1; \
+	fi
+	${OBJCOPY} -j .data -j .dynamic -j .dynstr -j .dynsym -j .hash \
+	    -j .rel.dyn -j .reloc -j .sdata -j .text -j set_Xcommand_set \
+	    --target=efi-app-ia32 ${.ALLSRC} ${.TARGET}
+
+LIBEFI=		${.OBJDIR}/../../efi/libefi/libefi.a
+CFLAGS+=	-I${.CURDIR}/../libi386
+CFLAGS+=	-I${.CURDIR}/../btx/lib
+
+DPADD=		${LIBFICL} ${LIBEFI} ${LIBSTAND}
+LDADD=		${LIBFICL} ${LIBEFI} -lstand
+
+.include 

Added: head/sys/boot/i386/efi/autoload.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/boot/i386/efi/autoload.c	Wed Apr  7 18:16:05 2010	(r206376)
@@ -0,0 +1,9 @@
+#include 
+__FBSDID("$FreeBSD$");
+
+int
+i386_autoload(void)
+{
+
+	return (0);
+}

Added: head/sys/boot/i386/efi/bootinfo.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/boot/i386/efi/bootinfo.c	Wed Apr  7 18:16:05 2010	(r206376)
@@ -0,0 +1,297 @@
+/*-
+ * Copyright (c) 1998 Michael Smith 
+ * Copyright (c) 2006 Marcel Moolenaar
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include 
+__FBSDID("$FreeBSD$");
+
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+
+#include "bootstrap.h"
+#include "libi386.h"
+#include 
+
+/*
+ * Return a 'boothowto' value corresponding to the kernel arguments in
+ * (kargs) and any relevant environment variables.
+ */
+static struct 
+{
+	const char	*ev;
+	int		mask;
+} howto_names[] = {
+	{ "boot_askname",	RB_ASKNAME},
+	{ "boot_cdrom",		RB_CDROM},
+	{ "boot_ddb",		RB_KDB},
+	{ "boot_dfltroot",	RB_DFLTROOT},
+	{ "boot_gdb",		RB_GDB},
+	{ "boot_multicons",	RB_MULTIPLE},
+	{ "boot_mute",		RB_MUTE},
+	{ "boot_pause",		RB_PAUSE},
+	{ "boot_serial",	RB_SERIAL},
+	{ "boot_single",	RB_SINGLE},
+	{ "boot_verbose",	RB_VERBOSE},
+	{ NULL,	0}
+};
+
+static const char howto_switches[] = "aCdrgDmphsv";
+static int howto_masks[] = {
+	RB_ASKNAME, RB_CDROM, RB_KDB, RB_DFLTROOT, RB_GDB, RB_MULTIPLE,
+	RB_MUTE, RB_PAUSE, RB_SERIAL, RB_SINGLE, RB_VERBOSE
+};
+
+int
+bi_getboothowto(char *kargs)
+{
+	const char *sw;
+	char *opts;
+	int howto, i;
+
+	howto = 0;
+
+	/* Get the boot options from the environment first. */
+	for (i = 0; howto_names[i].ev != NULL; i++) {
+		if (getenv(howto_names[i].ev) != NULL)
+			howto |= howto_names[i].mask;
+	}
+
+	/* Parse kargs */
+	if (kargs == NULL)
+		return (howto);
+
+	opts = strchr(kargs, '-');
+	while (opts != NULL) {
+		while (*(++opts) != '\0') {
+			sw = strchr(howto_switches, *opts);
+			if (sw == NULL)
+				break;
+			howto |= howto_masks[sw - howto_switches];
+		}
+		opts = strchr(opts, '-');
+	}
+
+	return (howto);
+}
+
+/*
+ * Copy the environment into the load area starting at (addr).
+ * Each variable is formatted as =, with a single nul
+ * separating each variable, and a double nul terminating the environment.
+ */
+vm_offset_t
+bi_copyenv(vm_offset_t start)
+{
+	struct env_var *ep;
+	vm_offset_t addr, last;
+	size_t len;
+
+	addr = last = start;
+
+	/* Traverse the environment. */
+	for (ep = environ; ep != NULL; ep = ep->ev_next) {
+		len = strlen(ep->ev_name);
+		if (i386_copyin(ep->ev_name, addr, len) != len)
+			break;
+		addr += len;
+		if (i386_copyin("=", addr, 1) != 1)
+			break;
+		addr++;
+		if (ep->ev_value != NULL) {
+			len = strlen(ep->ev_value);
+			if (i386_copyin(ep->ev_value, addr, len) != len)
+				break;
+			addr += len;
+		}
+		if (i386_copyin("", addr, 1) != 1)
+			break;
+		last = ++addr;
+	}
+
+	if (i386_copyin("", last++, 1) != 1)
+		last = start;
+	return(last);
+}
+
+/*
+ * Copy module-related data into the load area, where it can be
+ * used as a directory for loaded modules.
+ *
+ * Module data is presented in a self-describing format.  Each datum
+ * is preceded by a 32-bit identifier and a 32-bit size field.
+ *
+ * Currently, the following data are saved:
+ *
+ * MOD_NAME	(variable)		module name (string)
+ * MOD_TYPE	(variable)		module type (string)
+ * MOD_ARGS	(variable)		module parameters (string)
+ * MOD_ADDR	sizeof(vm_offset_t)	module load address
+ * MOD_SIZE	sizeof(size_t)		module size
+ * MOD_METADATA	(variable)		type-specific metadata
+ */
+#define COPY32(v, a) {				\
+    u_int32_t	x = (v);			\
+    i386_copyin(&x, a, sizeof(x));		\
+    a += sizeof(x);				\
+}
+
+#define MOD_STR(t, a, s) {			\
+    COPY32(t, a);				\
+    COPY32(strlen(s) + 1, a);			\
+    i386_copyin(s, a, strlen(s) + 1);		\
+    a += roundup(strlen(s) + 1, sizeof(u_int64_t));\
+}
+
+#define MOD_NAME(a, s)	MOD_STR(MODINFO_NAME, a, s)
+#define MOD_TYPE(a, s)	MOD_STR(MODINFO_TYPE, a, s)
+#define MOD_ARGS(a, s)	MOD_STR(MODINFO_ARGS, a, s)
+
+#define MOD_VAR(t, a, s) {			\
+    COPY32(t, a);				\
+    COPY32(sizeof(s), a);			\
+    i386_copyin(&s, a, sizeof(s));		\
+    a += roundup(sizeof(s), sizeof(u_int64_t));	\
+}
+
+#define MOD_ADDR(a, s)	MOD_VAR(MODINFO_ADDR, a, s)
+#define MOD_SIZE(a, s)	MOD_VAR(MODINFO_SIZE, a, s)
+
+#define MOD_METADATA(a, mm) {			\
+    COPY32(MODINFO_METADATA | mm->md_type, a);	\
+    COPY32(mm->md_size, a);			\
+    i386_copyin(mm->md_data, a, mm->md_size);	\
+    a += roundup(mm->md_size, sizeof(u_int64_t));\
+}
+
+#define MOD_END(a) {				\
+    COPY32(MODINFO_END, a);			\
+    COPY32(0, a);				\
+}
+
+vm_offset_t
+bi_copymodules(vm_offset_t addr)
+{
+	struct preloaded_file *fp;
+	struct file_metadata *md;
+
+	/* Start with the first module on the list, should be the kernel. */
+	for (fp = file_findfile(NULL, NULL); fp != NULL; fp = fp->f_next) {
+		/* The name field must come first. */
+		MOD_NAME(addr, fp->f_name);
+		MOD_TYPE(addr, fp->f_type);
+		if (fp->f_args)
+			MOD_ARGS(addr, fp->f_args);
+		MOD_ADDR(addr, fp->f_addr);
+		MOD_SIZE(addr, fp->f_size);
+		for (md = fp->f_metadata; md != NULL; md = md->md_next) {
+			if (!(md->md_type & MODINFOMD_NOCOPY))
+				MOD_METADATA(addr, md);
+		}
+	}
+	MOD_END(addr);
+	return(addr);
+}
+
+/*
+ * Load the information expected by the kernel.
+ *
+ * - The kernel environment is copied into kernel space.
+ * - Module metadata are formatted and placed in kernel space.
+ */
+int
+bi_load(struct preloaded_file *fp, uint64_t *bi_addr)
+{
+	struct bootinfo bi;
+	struct preloaded_file *xp;
+	struct file_metadata *md;
+	struct devdesc *rootdev;
+	char *rootdevname;
+	vm_offset_t addr, ssym, esym;
+
+	bzero(&bi, sizeof(struct bootinfo));
+	bi.bi_version = 1;
+//	bi.bi_boothowto = bi_getboothowto(fp->f_args);
+
+	/* 
+	 * Allow the environment variable 'rootdev' to override the supplied
+	 * device. This should perhaps go to MI code and/or have $rootdev
+	 * tested/set by MI code before launching the kernel.
+	 */
+	rootdevname = getenv("rootdev");
+	i386_getdev((void**)&rootdev, rootdevname, NULL);
+	if (rootdev != NULL) {
+		/* Try reading /etc/fstab to select the root device. */
+		getrootmount(i386_fmtdev(rootdev));
+		free(rootdev);
+	}
+
+	md = file_findmetadata(fp, MODINFOMD_SSYM);
+	ssym = (md != NULL) ? *((vm_offset_t *)&(md->md_data)) : 0;
+	md = file_findmetadata(fp, MODINFOMD_ESYM);
+	esym = (md != NULL) ? *((vm_offset_t *)&(md->md_data)) : 0;
+	if (ssym != 0 && esym != 0) {
+		bi.bi_symtab = ssym;
+		bi.bi_esymtab = esym;
+	}
+
+	/* Find the last module in the chain. */
+	addr = 0;
+	for (xp = file_findfile(NULL, NULL); xp != NULL; xp = xp->f_next) {
+		if (addr < (xp->f_addr + xp->f_size))
+			addr = xp->f_addr + xp->f_size;
+	}
+
+	addr = (addr + 15) & ~15;
+
+	/* Copy module list and metadata. */
+	bi.bi_modulep = addr;
+	addr = bi_copymodules(addr);
+	if (addr <= bi.bi_modulep) {
+		addr = bi.bi_modulep;
+		bi.bi_modulep = 0;
+	}
+
+	addr = (addr + 15) & ~15;
+
+	/* Copy our environment. */
+	bi.bi_envp = addr;
+	addr = bi_copyenv(addr);
+	if (addr <= bi.bi_envp) {
+		addr = bi.bi_envp;
+		bi.bi_envp = 0;
+	}
+
+	addr = (addr + PAGE_MASK) & ~PAGE_MASK;
+	bi.bi_kernend = addr;
+
+	return (ldr_bootinfo(&bi, bi_addr));
+}

Added: head/sys/boot/i386/efi/conf.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/boot/i386/efi/conf.c	Wed Apr  7 18:16:05 2010	(r206376)
@@ -0,0 +1,77 @@
+/*-
+ * Copyright (c) 2006 Marcel Moolenaar
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include 
+__FBSDID("$FreeBSD$");
+
+#include 
+#include 
+#include 
+#include 
+
+struct devsw *devsw[] = {
+	&efipart_dev,
+	&efinet_dev,
+	NULL
+};
+
+struct fs_ops *file_system[] = {
+	&dosfs_fsops,
+	&ufs_fsops,
+	&cd9660_fsops,
+	&nfs_fsops,
+	&gzipfs_fsops,
+	NULL
+};
+
+struct netif_driver *netif_drivers[] = {
+	&efinetif,
+	NULL
+};
+
+#ifdef notyet
+extern struct file_format amd64_elf;
+extern struct file_format amd64_elf_obj;
+#endif
+extern struct file_format i386_elf;
+extern struct file_format i386_elf_obj;
+
+struct file_format *file_formats[] = {
+#ifdef notyet
+	&amd64_elf,
+	&amd64_elf_obj,
+#endif
+	&i386_elf,
+	&i386_elf_obj,
+	NULL
+};
+
+extern struct console efi_console;
+
+struct console *consoles[] = {
+	&efi_console,
+	NULL
+};

Added: head/sys/boot/i386/efi/devicename.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/boot/i386/efi/devicename.c	Wed Apr  7 18:16:05 2010	(r206376)
@@ -0,0 +1,169 @@
+/*-
+ * Copyright (c) 1998 Michael Smith 
+ * Copyright (c) 2006 Marcel Moolenaar
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include 
+__FBSDID("$FreeBSD$");
+
+#include 
+#include 
+#include 
+#include "bootstrap.h"
+
+#include 
+#include 
+
+static int i386_parsedev(struct devdesc **, const char *, const char **);
+
+/* 
+ * Point (dev) at an allocated device specifier for the device matching the
+ * path in (devspec). If it contains an explicit device specification,
+ * use that.  If not, use the default device.
+ */
+int
+i386_getdev(void **vdev, const char *devspec, const char **path)
+{
+	struct devdesc **dev = (struct devdesc **)vdev;
+	int rv;
+
+	/*
+	 * If it looks like this is just a path and no device, then
+	 * use the current device instead.
+	 */
+	if (devspec == NULL || *devspec == '/' || !strchr(devspec, ':')) {
+		rv = i386_parsedev(dev, getenv("currdev"), NULL);
+		if (rv == 0 && path != NULL)
+			*path = devspec;
+		return (rv);
+	}
+
+	/* Parse the device name off the beginning of the devspec. */
+	return (i386_parsedev(dev, devspec, path));
+}
+
+/*
+ * Point (dev) at an allocated device specifier matching the string version
+ * at the beginning of (devspec).  Return a pointer to the remaining
+ * text in (path).
+ *
+ * In all cases, the beginning of (devspec) is compared to the names
+ * of known devices in the device switch, and then any following text
+ * is parsed according to the rules applied to the device type.
+ *
+ * For disk-type devices, the syntax is:
+ *
+ * fs:
+ */
+static int
+i386_parsedev(struct devdesc **dev, const char *devspec, const char **path)
+{
+	struct devdesc *idev;
+	struct devsw *dv;
+	char *cp;
+	const char *np;
+	int i, err;
+
+	/* minimum length check */
+	if (strlen(devspec) < 2)
+		return (EINVAL);
+
+	/* look for a device that matches */
+	for (i = 0; devsw[i] != NULL; i++) {
+		dv = devsw[i];
+		if (!strncmp(devspec, dv->dv_name, strlen(dv->dv_name)))
+			break;
+	}
+	if (devsw[i] == NULL)
+		return (ENOENT);
+
+	idev = malloc(sizeof(struct devdesc));
+	if (idev == NULL)
+		return (ENOMEM);
+
+	idev->d_dev = dv;
+	idev->d_type = dv->dv_type;
+	idev->d_unit = -1;
+
+	err = 0;
+	np = devspec + strlen(dv->dv_name);
+	if (*np != '\0' && *np != ':') {
+		idev->d_unit = strtol(np, &cp, 0);
+		if (cp == np) {
+			idev->d_unit = -1;
+			free(idev);
+			return (EUNIT);
+		}
+	}
+	if (*cp != '\0' && *cp != ':') {
+		free(idev);
+		return (EINVAL);
+	}
+
+	if (path != NULL)
+		*path = (*cp == 0) ? cp : cp + 1;
+	if (dev != NULL)
+		*dev = idev;
+	else
+		free(idev);
+	return (0);
+}
+
+char *
+i386_fmtdev(void *vdev)
+{
+	struct devdesc *dev = (struct devdesc *)vdev;
+	static char buf[32];	/* XXX device length constant? */
+
+	switch(dev->d_type) {
+	case DEVT_NONE:
+		strcpy(buf, "(no device)");
+		break;
+
+	default:
+		sprintf(buf, "%s%d:", dev->d_dev->dv_name, dev->d_unit);
+		break;
+	}
+
+	return(buf);
+}
+
+/*
+ * Set currdev to suit the value being supplied in (value)
+ */
+int
+i386_setcurrdev(struct env_var *ev, int flags, const void *value)
+{
+	struct devdesc *ncurr;
+	int rv;
+
+	rv = i386_parsedev(&ncurr, value, NULL);
+	if (rv != 0)
+		return(rv);
+
+	free(ncurr);
+	env_setenv(ev->ev_name, flags | EV_NOHOOK, value, NULL, NULL);
+	return (0);
+}

Added: head/sys/boot/i386/efi/efimd.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/boot/i386/efi/efimd.c	Wed Apr  7 18:16:05 2010	(r206376)
@@ -0,0 +1,139 @@
+/*-
+ * Copyright (c) 2004, 2006 Marcel Moolenaar
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include 
+__FBSDID("$FreeBSD$");
+
+#include 
+
+#include 
+#include 
+
+#include 
+#include 
+
+#define EFI_INTEL_FPSWA		\
+    {0xc41b6531,0x97b9,0x11d3,{0x9a,0x29,0x00,0x90,0x27,0x3f,0xc1,0x4d}}
+
+static EFI_GUID fpswa_guid = EFI_INTEL_FPSWA;
+
+/* DIG64 Headless Console & Debug Port Table. */
+#define	HCDP_TABLE_GUID		\
+    {0xf951938d,0x620b,0x42ef,{0x82,0x79,0xa8,0x4b,0x79,0x61,0x78,0x98}}
+
+static EFI_GUID hcdp_guid = HCDP_TABLE_GUID;
+
+static UINTN mapkey;
+
+uint64_t
+ldr_alloc(vm_offset_t va)
+{
+
+	return (0);
+}
+
+int
+ldr_bootinfo(struct bootinfo *bi, uint64_t *bi_addr)
+{
+	VOID *fpswa;
+	EFI_MEMORY_DESCRIPTOR *mm;
+	EFI_PHYSICAL_ADDRESS addr;
+	EFI_HANDLE handle;
+	EFI_STATUS status;
+	size_t bisz;
+	UINTN mmsz, pages, sz;
+	UINT32 mmver;
+
+	bi->bi_systab = (uint64_t)ST;
+	bi->bi_hcdp = (uint64_t)efi_get_table(&hcdp_guid);
+
+	sz = sizeof(EFI_HANDLE);
+	status = BS->LocateHandle(ByProtocol, &fpswa_guid, 0, &sz, &handle);
+	if (status == 0)
+		status = BS->HandleProtocol(handle, &fpswa_guid, &fpswa);
+	bi->bi_fpswa = (status == 0) ? (uint64_t)fpswa : 0;
+
+	bisz = (sizeof(struct bootinfo) + 0x0f) & ~0x0f;
+
+	/*
+	 * Allocate enough pages to hold the bootinfo block and the memory
+	 * map EFI will return to us. The memory map has an unknown size,
+	 * so we have to determine that first. Note that the AllocatePages
+	 * call can itself modify the memory map, so we have to take that
+	 * into account as well. The changes to the memory map are caused
+	 * by splitting a range of free memory into two (AFAICT), so that
+	 * one is marked as being loader data.
+	 */
+	sz = 0;
+	BS->GetMemoryMap(&sz, NULL, &mapkey, &mmsz, &mmver);
+	sz += mmsz;
+	sz = (sz + 15) & ~15;
+	pages = EFI_SIZE_TO_PAGES(sz + bisz);
+	status = BS->AllocatePages(AllocateAnyPages, EfiLoaderData, pages,
+	    &addr);
+	if (EFI_ERROR(status)) {
+		printf("%s: AllocatePages() returned 0x%lx\n", __func__,
+		    (long)status);
+		return (ENOMEM);
+	}
+
+	/*
+	 * Read the memory map and stash it after bootinfo. Align the
+	 * memory map on a 16-byte boundary (the bootinfo block is page
+	 * aligned).
+	 */
+	*bi_addr = addr;
+	mm = (void *)(addr + bisz);
+	sz = (EFI_PAGE_SIZE * pages) - bisz;
+	status = BS->GetMemoryMap(&sz, mm, &mapkey, &mmsz, &mmver);
+	if (EFI_ERROR(status)) {
+		printf("%s: GetMemoryMap() returned 0x%lx\n", __func__,
+		    (long)status);
+		return (EINVAL);
+	}
+	bi->bi_memmap = (uint64_t)mm;
+	bi->bi_memmap_size = sz;
+	bi->bi_memdesc_size = mmsz;
+	bi->bi_memdesc_version = mmver;
+
+	bcopy(bi, (void *)(*bi_addr), sizeof(*bi));
+	return (0);
+}
+
+int
+ldr_enter(const char *kernel)
+{
+	EFI_STATUS status;
+
+	status = BS->ExitBootServices(IH, mapkey);
+	if (EFI_ERROR(status)) {
+		printf("%s: ExitBootServices() returned 0x%lx\n", __func__,
+		    (long)status);
+		return (EINVAL);
+	}
+
+	return (0);
+}

Added: head/sys/boot/i386/efi/elf32_freebsd.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/boot/i386/efi/elf32_freebsd.c	Wed Apr  7 18:16:05 2010	(r206376)
@@ -0,0 +1,87 @@
+/*-
+ * Copyright (c) 1998 Michael Smith 
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include 
+__FBSDID("$FreeBSD$");
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include "bootstrap.h"
+#include "../libi386/libi386.h"
+#include "../btx/lib/btxv86.h"
+
+extern void __exec(caddr_t addr, ...);
+
+
+static int	elf32_exec(struct preloaded_file *amp);
+static int	elf32_obj_exec(struct preloaded_file *amp);
+
+struct file_format i386_elf = { elf32_loadfile, elf32_exec };
+struct file_format i386_elf_obj = { elf32_obj_loadfile, elf32_obj_exec };
+
+/*
+ * There is an ELF kernel and one or more ELF modules loaded.  
+ * We wish to start executing the kernel image, so make such 
+ * preparations as are required, and do so.
+ */
+static int
+elf32_exec(struct preloaded_file *fp)
+{
+    struct file_metadata	*md;
+    Elf_Ehdr 			*ehdr;
+    vm_offset_t			entry, bootinfop, modulep, kernend;
+    int				boothowto, err, bootdev;
+
+    if ((md = file_findmetadata(fp, MODINFOMD_ELFHDR)) == NULL)
+	return(EFTYPE);
+    ehdr = (Elf_Ehdr *)&(md->md_data);
+
+    err = bi_load(fp->f_args, &boothowto, &bootdev, &bootinfop, &modulep, &kernend);
+    if (err != 0)
+	return(err);
+    entry = ehdr->e_entry & 0xffffff;
+
+    printf("Start @ 0x%lx ...\n", entry);
+
+    ldr_enter(fp->f_name);
+
+    dev_cleanup();
+    __exec((void *)entry, boothowto, bootdev, 0, 0, 0, bootinfop, modulep, kernend);
+
+    panic("exec returned");
+}
+
+static int
+elf32_obj_exec(struct preloaded_file *fp)
+{
+	return (EFTYPE);
+}

Added: head/sys/boot/i386/efi/exec.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/boot/i386/efi/exec.c	Wed Apr  7 18:16:05 2010	(r206376)
@@ -0,0 +1,59 @@
+/*-
+ * Copyright (c) 2010 Rui Paulo 
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include 
+__FBSDID("$FreeBSD$");
+
+#include 
+#include 
+#include "../btx/lib/btxv86.h"
+
+#include "../../common/bootstrap.h"
+
+uint32_t __base;
+struct __v86 __v86;
+
+void
+__v86int()
+{
+	printf("%s\n", __func__);
+	exit(1);
+}
+
+void
+__exec(caddr_t addr, ...)
+{
+	/* XXX this is wrong */
+	__asm __volatile("movl %cr0, %eax");
+	__asm __volatile("andl $0x7fffffff, %eax");
+	__asm __volatile("mov %eax, %cr0");
+	__asm __volatile("xorl %eax, %eax");
+	__asm __volatile("mov %eax, %cr3");
+	__asm __volatile("movl %cr0, %eax");
+	__asm __volatile("andl $0xfffffffe, %eax");
+	__asm __volatile("movl %eax, %cr0");
+	__asm __volatile("jmp %0" :: "r" (addr));
+}

Added: head/sys/boot/i386/efi/i386_copy.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/boot/i386/efi/i386_copy.c	Wed Apr  7 18:16:05 2010	(r206376)
@@ -0,0 +1,59 @@
+/*-
+ * Copyright (c) 1998 Michael Smith 
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include 
+__FBSDID("$FreeBSD$");
+
+/*
+ * MD primitives supporting placement of module data 
+ *
+ * XXX should check load address/size against memory top.
+ */
+#include 
+
+#include "libi386.h"
+#include "btxv86.h"
+
+ssize_t
+i386_copyin(const void *src, vm_offset_t dest, const size_t len)
+{
+    bcopy(src, PTOV(dest), len);
+    return(len);
+}
+
+ssize_t
+i386_copyout(const vm_offset_t src, void *dest, const size_t len)
+{
+    bcopy(PTOV(src), dest, len);
+    return(len);
+}
+
+
+ssize_t
+i386_readin(const int fd, vm_offset_t dest, const size_t len)
+{
+    return (read(fd, PTOV(dest), len));
+}

Added: head/sys/boot/i386/efi/ldscript.amd64
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/boot/i386/efi/ldscript.amd64	Wed Apr  7 18:16:05 2010	(r206376)
@@ -0,0 +1,75 @@
+/* $FreeBSD$ */
+OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
+OUTPUT_ARCH(i386:x86-64)
+ENTRY(_start)
+SECTIONS

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 18:24:39 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 5E12C106566B;
	Wed,  7 Apr 2010 18:24:39 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 4D2508FC16;
	Wed,  7 Apr 2010 18:24:39 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37IOdxn075328;
	Wed, 7 Apr 2010 18:24:39 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37IOdUa075326;
	Wed, 7 Apr 2010 18:24:39 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004071824.o37IOdUa075326@svn.freebsd.org>
From: Rui Paulo 
Date: Wed, 7 Apr 2010 18:24:39 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206378 - head/sys/boot/i386/efi
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 18:24:39 -0000

Author: rpaulo
Date: Wed Apr  7 18:24:38 2010
New Revision: 206378
URL: http://svn.freebsd.org/changeset/base/206378

Log:
  Add a copyright.

Modified:
  head/sys/boot/i386/efi/autoload.c

Modified: head/sys/boot/i386/efi/autoload.c
==============================================================================
--- head/sys/boot/i386/efi/autoload.c	Wed Apr  7 18:18:33 2010	(r206377)
+++ head/sys/boot/i386/efi/autoload.c	Wed Apr  7 18:24:38 2010	(r206378)
@@ -1,3 +1,29 @@
+/*-
+ * Copyright (c) 2010 Rui Paulo 
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 #include 
 __FBSDID("$FreeBSD$");
 

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 18:26:13 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id BD8C71065700;
	Wed,  7 Apr 2010 18:26:13 +0000 (UTC)
	(envelope-from joel@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id AD50B8FC17;
	Wed,  7 Apr 2010 18:26:13 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37IQDcB075733;
	Wed, 7 Apr 2010 18:26:13 GMT (envelope-from joel@svn.freebsd.org)
Received: (from joel@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37IQD0m075731;
	Wed, 7 Apr 2010 18:26:13 GMT (envelope-from joel@svn.freebsd.org)
Message-Id: <201004071826.o37IQD0m075731@svn.freebsd.org>
From: Joel Dahl 
Date: Wed, 7 Apr 2010 18:26:13 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206379 - head/sys/i386/i386
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 18:26:13 -0000

Author: joel (doc committer)
Date: Wed Apr  7 18:26:13 2010
New Revision: 206379
URL: http://svn.freebsd.org/changeset/base/206379

Log:
  Switch to our preferred 2-clause BSD license.
  
  Approved by:	jfv

Modified:
  head/sys/i386/i386/mpboot.s

Modified: head/sys/i386/i386/mpboot.s
==============================================================================
--- head/sys/i386/i386/mpboot.s	Wed Apr  7 18:24:38 2010	(r206378)
+++ head/sys/i386/i386/mpboot.s	Wed Apr  7 18:26:13 2010	(r206379)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 1995, Jack F. Vogel
+ * Copyright (c) 1995 Jack F. Vogel
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,11 +10,6 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by Jack F. Vogel
- * 4. The name of the developer may be used to endorse or promote products
- *    derived from this software without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 18:42:22 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 2AB5A1065672;
	Wed,  7 Apr 2010 18:42:22 +0000 (UTC)
	(envelope-from jkim@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 197848FC0C;
	Wed,  7 Apr 2010 18:42:22 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37IgLT7079402;
	Wed, 7 Apr 2010 18:42:21 GMT (envelope-from jkim@svn.freebsd.org)
Received: (from jkim@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37IgLpI079399;
	Wed, 7 Apr 2010 18:42:21 GMT (envelope-from jkim@svn.freebsd.org)
Message-Id: <201004071842.o37IgLpI079399@svn.freebsd.org>
From: Jung-uk Kim 
Date: Wed, 7 Apr 2010 18:42:21 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206380 - in head/sys: dev/syscons/logo
	modules/syscons/beastie
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 18:42:22 -0000

Author: jkim
Date: Wed Apr  7 18:42:21 2010
New Revision: 206380
URL: http://svn.freebsd.org/changeset/base/206380

Log:
  Correct beastie_saver module name.

Modified:
  head/sys/dev/syscons/logo/logo_saver.c
  head/sys/modules/syscons/beastie/Makefile

Modified: head/sys/dev/syscons/logo/logo_saver.c
==============================================================================
--- head/sys/dev/syscons/logo/logo_saver.c	Wed Apr  7 18:26:13 2010	(r206379)
+++ head/sys/dev/syscons/logo/logo_saver.c	Wed Apr  7 18:42:21 2010	(r206380)
@@ -171,4 +171,8 @@ static scrn_saver_t logo_module = {
 	NULL
 };
 
+#ifdef BEASTIE_LOGO
+SAVER_MODULE(beastie_saver, logo_module);
+#else
 SAVER_MODULE(logo_saver, logo_module);
+#endif

Modified: head/sys/modules/syscons/beastie/Makefile
==============================================================================
--- head/sys/modules/syscons/beastie/Makefile	Wed Apr  7 18:26:13 2010	(r206379)
+++ head/sys/modules/syscons/beastie/Makefile	Wed Apr  7 18:42:21 2010	(r206380)
@@ -5,4 +5,6 @@
 KMOD=	beastie_saver
 SRCS=	beastie.c logo_saver.c
 
+CFLAGS+=-DBEASTIE_LOGO
+
 .include 

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 18:52:51 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 9324B1065672;
	Wed,  7 Apr 2010 18:52:51 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 8237E8FC17;
	Wed,  7 Apr 2010 18:52:51 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37IqpZF081802;
	Wed, 7 Apr 2010 18:52:51 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37Iqp0E081800;
	Wed, 7 Apr 2010 18:52:51 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004071852.o37Iqp0E081800@svn.freebsd.org>
From: Rui Paulo 
Date: Wed, 7 Apr 2010 18:52:51 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206381 - head/sys/i386/include
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 18:52:51 -0000

Author: rpaulo
Date: Wed Apr  7 18:52:51 2010
New Revision: 206381
URL: http://svn.freebsd.org/changeset/base/206381

Log:
  Add EFI boot info fields.

Modified:
  head/sys/i386/include/bootinfo.h

Modified: head/sys/i386/include/bootinfo.h
==============================================================================
--- head/sys/i386/include/bootinfo.h	Wed Apr  7 18:42:21 2010	(r206380)
+++ head/sys/i386/include/bootinfo.h	Wed Apr  7 18:52:51 2010	(r206381)
@@ -65,6 +65,13 @@ struct bootinfo {
 	u_int32_t	bi_kernend;		/* end of kernel space */
 	u_int32_t	bi_envp;		/* environment */
 	u_int32_t	bi_modulep;		/* preloaded modules */
+	uint64_t	bi_hcdp;		/* DIG64 HCDP table */
+	uint64_t	bi_fpswa;		/* FPSWA interface */
+	uint64_t	bi_systab;		/* pa of EFI system table */
+	uint64_t	bi_memmap;		/* pa of EFI memory map */
+	uint64_t	bi_memmap_size;		/* size of EFI memory map */
+	uint64_t	bi_memdesc_size;	/* sizeof EFI memory desc */
+	uint32_t	bi_memdesc_version;	/* EFI memory desc version */
 };
 
 #ifdef _KERNEL

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 19:13:32 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 5838C106566B;
	Wed,  7 Apr 2010 19:13:32 +0000 (UTC)
	(envelope-from emaste@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 2C7E08FC13;
	Wed,  7 Apr 2010 19:13:32 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37JDWsK086512;
	Wed, 7 Apr 2010 19:13:32 GMT (envelope-from emaste@svn.freebsd.org)
Received: (from emaste@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37JDWK4086510;
	Wed, 7 Apr 2010 19:13:32 GMT (envelope-from emaste@svn.freebsd.org)
Message-Id: <201004071913.o37JDWK4086510@svn.freebsd.org>
From: Ed Maste 
Date: Wed, 7 Apr 2010 19:13:32 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206383 - head/share/man/man9
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 19:13:32 -0000

Author: emaste
Date: Wed Apr  7 19:13:31 2010
New Revision: 206383
URL: http://svn.freebsd.org/changeset/base/206383

Log:
  Remove extraneous '>'.

Modified:
  head/share/man/man9/stack.9

Modified: head/share/man/man9/stack.9
==============================================================================
--- head/share/man/man9/stack.9	Wed Apr  7 19:04:36 2010	(r206382)
+++ head/share/man/man9/stack.9	Wed Apr  7 19:13:31 2010	(r206383)
@@ -34,7 +34,7 @@
 .Nm stack
 .Nd kernel thread stack tracing routines
 .Sh SYNOPSIS
-.In sys/param.h>
+.In sys/param.h
 .In sys/stack.h
 In the kernel configuration file:
 .Cd "options DDB"

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 21:38:43 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 29B491065673;
	Wed,  7 Apr 2010 21:38:43 +0000 (UTC)
	(envelope-from jkim@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 170168FC1C;
	Wed,  7 Apr 2010 21:38:43 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37LcgVH018560;
	Wed, 7 Apr 2010 21:38:42 GMT (envelope-from jkim@svn.freebsd.org)
Received: (from jkim@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37LcgaL018558;
	Wed, 7 Apr 2010 21:38:42 GMT (envelope-from jkim@svn.freebsd.org)
Message-Id: <201004072138.o37LcgaL018558@svn.freebsd.org>
From: Jung-uk Kim 
Date: Wed, 7 Apr 2010 21:38:42 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206384 - head/sys/dev/fb
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 21:38:43 -0000

Author: jkim
Date: Wed Apr  7 21:38:42 2010
New Revision: 206384
URL: http://svn.freebsd.org/changeset/base/206384

Log:
  Allocate memory for VBE info block with malloc(9), not as static local.

Modified:
  head/sys/dev/fb/vesa.c

Modified: head/sys/dev/fb/vesa.c
==============================================================================
--- head/sys/dev/fb/vesa.c	Wed Apr  7 19:13:31 2010	(r206383)
+++ head/sys/dev/fb/vesa.c	Wed Apr  7 21:38:42 2010	(r206384)
@@ -763,8 +763,8 @@ vesa_get_bpscanline(struct vesa_mode *vm
 static int
 vesa_bios_init(void)
 {
-	static struct vesa_info buf;
 	struct vesa_mode vmode;
+	struct vesa_info *buf;
 	video_info_t *p;
 	x86regs_t regs;
 	size_t bsize;
@@ -800,7 +800,7 @@ vesa_bios_init(void)
 	x86bios_init_regs(®s);
 	regs.R_AX = 0x4f00;
 
-	vmbuf = x86bios_alloc(&offs, sizeof(buf));
+	vmbuf = x86bios_alloc(&offs, sizeof(*buf));
 	if (vmbuf == NULL)
 		return (1);
 
@@ -813,23 +813,23 @@ vesa_bios_init(void)
 	if (regs.R_AX != 0x004f || bcmp("VESA", vmbuf, 4) != 0)
 		goto fail;
 
-	bcopy(vmbuf, &buf, sizeof(buf));
+	vesa_adp_info = buf = malloc(sizeof(*buf), M_DEVBUF, M_WAITOK);
+	bcopy(vmbuf, buf, sizeof(*buf));
 
-	vesa_adp_info = &buf;
 	if (bootverbose) {
 		printf("VESA: information block\n");
-		hexdump(&buf, sizeof(buf), NULL, HD_OMIT_CHARS);
+		hexdump(buf, sizeof(*buf), NULL, HD_OMIT_CHARS);
 	}
 
-	vers = buf.v_version = le16toh(buf.v_version);
-	buf.v_oemstr = le32toh(buf.v_oemstr);
-	buf.v_flags = le32toh(buf.v_flags);
-	buf.v_modetable = le32toh(buf.v_modetable);
-	buf.v_memsize = le16toh(buf.v_memsize);
-	buf.v_revision = le16toh(buf.v_revision);
-	buf.v_venderstr = le32toh(buf.v_venderstr);
-	buf.v_prodstr = le32toh(buf.v_prodstr);
-	buf.v_revstr = le32toh(buf.v_revstr);
+	vers = buf->v_version = le16toh(buf->v_version);
+	buf->v_oemstr = le32toh(buf->v_oemstr);
+	buf->v_flags = le32toh(buf->v_flags);
+	buf->v_modetable = le32toh(buf->v_modetable);
+	buf->v_memsize = le16toh(buf->v_memsize);
+	buf->v_revision = le16toh(buf->v_revision);
+	buf->v_venderstr = le32toh(buf->v_venderstr);
+	buf->v_prodstr = le32toh(buf->v_prodstr);
+	buf->v_revstr = le32toh(buf->v_revstr);
 
 	if (vers < 0x0102) {
 		printf("VESA: VBE version %d.%d is not supported; "
@@ -839,21 +839,21 @@ vesa_bios_init(void)
 		return (1);
 	}
 
-	VESA_STRCPY(vesa_oemstr, buf.v_oemstr);
+	VESA_STRCPY(vesa_oemstr, buf->v_oemstr);
 	if (vers >= 0x0200) {
-		VESA_STRCPY(vesa_venderstr, buf.v_venderstr);
-		VESA_STRCPY(vesa_prodstr, buf.v_prodstr);
-		VESA_STRCPY(vesa_revstr, buf.v_revstr);
+		VESA_STRCPY(vesa_venderstr, buf->v_venderstr);
+		VESA_STRCPY(vesa_prodstr, buf->v_prodstr);
+		VESA_STRCPY(vesa_revstr, buf->v_revstr);
 	}
 	is_via_cle266 = strncmp(vesa_oemstr, VESA_VIA_CLE266,
 	    sizeof(VESA_VIA_CLE266)) == 0;
 
-	if (buf.v_modetable == 0)
+	if (buf->v_modetable == 0)
 		goto fail;
 
-	msize = (size_t)buf.v_memsize * 64 * 1024;
+	msize = (size_t)buf->v_memsize * 64 * 1024;
 
-	vesa_vmodetab = x86bios_offset(BIOS_SADDRTOLADDR(buf.v_modetable));
+	vesa_vmodetab = x86bios_offset(BIOS_SADDRTOLADDR(buf->v_modetable));
 
 	for (i = 0, modes = 0; (i < (M_VESA_MODE_MAX - M_VESA_BASE + 1)) &&
 	    (vesa_vmodetab[i] != 0xffff); ++i) {
@@ -1016,12 +1016,16 @@ vesa_bios_init(void)
 	if (!has_vesa_bios)
 		goto fail;
 
-	x86bios_free(vmbuf, sizeof(buf));
+	x86bios_free(vmbuf, sizeof(*buf));
 	return (0);
 
 fail:
 	if (vmbuf != NULL)
 		x86bios_free(vmbuf, sizeof(buf));
+	if (vesa_adp_info != NULL) {
+		free(vesa_adp_info, M_DEVBUF);
+		vesa_adp_info = NULL;
+	}
 	if (vesa_oemstr != NULL) {
 		free(vesa_oemstr, M_DEVBUF);
 		vesa_oemstr = NULL;
@@ -1875,6 +1879,8 @@ vesa_unload(void)
 	}
 	splx(s);
 
+	if (vesa_adp_info != NULL)
+		free(vesa_adp_info, M_DEVBUF);
 	if (vesa_oemstr != NULL)
 		free(vesa_oemstr, M_DEVBUF);
 	if (vesa_venderstr != NULL)

From owner-svn-src-head@FreeBSD.ORG  Wed Apr  7 22:54:54 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 055B1106566B;
	Wed,  7 Apr 2010 22:54:54 +0000 (UTC)
	(envelope-from delphij@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id E6F218FC08;
	Wed,  7 Apr 2010 22:54:53 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o37MsrRt035491;
	Wed, 7 Apr 2010 22:54:53 GMT (envelope-from delphij@svn.freebsd.org)
Received: (from delphij@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o37Msr5j035487;
	Wed, 7 Apr 2010 22:54:53 GMT (envelope-from delphij@svn.freebsd.org)
Message-Id: <201004072254.o37Msr5j035487@svn.freebsd.org>
From: Xin LI 
Date: Wed, 7 Apr 2010 22:54:53 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206387 - head/usr.bin/gzip
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Wed, 07 Apr 2010 22:54:54 -0000

Author: delphij
Date: Wed Apr  7 22:54:53 2010
New Revision: 206387
URL: http://svn.freebsd.org/changeset/base/206387

Log:
  Diff reduction against NetBSD and add myself to AUTHORS section of the
  manual page as I wrote the unpack functionality.  No actual executable
  code change verified with md5(1).

Modified:
  head/usr.bin/gzip/gzip.1
  head/usr.bin/gzip/gzip.c
  head/usr.bin/gzip/unbzip2.c

Modified: head/usr.bin/gzip/gzip.1
==============================================================================
--- head/usr.bin/gzip/gzip.1	Wed Apr  7 22:28:16 2010	(r206386)
+++ head/usr.bin/gzip/gzip.1	Wed Apr  7 22:54:53 2010	(r206387)
@@ -25,7 +25,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\" $FreeBSD$
-.Dd June 24, 2009
+.Dd April 7, 2010
 .Dt GZIP 1
 .Os
 .Sh NAME
@@ -205,14 +205,17 @@ This implementation of
 .Nm
 was ported based on the
 .Nx
-.Nm
-20090412, and first appeared in
+.Nm ,
+and first appeared in
 .Fx 7.0 .
 .Sh AUTHORS
+.An -nosplit
 This implementation of
 .Nm
 was written by
-.An Matthew R. Green Aq mrg@eterna.com.au .
+.An Matthew R. Green Aq mrg@eterna.com.au
+with unpack support written by
+.An Xin LI Aq delphij@FreeBSD.org .
 .Sh BUGS
 According to RFC 1952, the recorded file size is stored in a 32-bit
 integer and therefore it can not represent files that is bigger than

Modified: head/usr.bin/gzip/gzip.c
==============================================================================
--- head/usr.bin/gzip/gzip.c	Wed Apr  7 22:28:16 2010	(r206386)
+++ head/usr.bin/gzip/gzip.c	Wed Apr  7 22:54:53 2010	(r206387)
@@ -1,4 +1,4 @@
-/*	$NetBSD: gzip.c,v 1.94 2009/04/12 10:31:14 lukem Exp $	*/
+/*	$NetBSD: gzip.c,v 1.97 2009/10/11 09:17:21 mrg Exp $	*/
 
 /*-
  * Copyright (c) 1997, 1998, 2003, 2004, 2006 Matthew R. Green
@@ -149,10 +149,9 @@ static suffixes_t suffixes[] = {
 #undef SUFFIX
 };
 #define NUM_SUFFIXES (sizeof suffixes / sizeof suffixes[0])
-
 #define SUFFIX_MAXLEN	30
 
-static	const char	gzip_version[] = "FreeBSD gzip 20090621";
+static	const char	gzip_version[] = "FreeBSD gzip 20100407";
 
 #ifndef SMALL
 static	const char	gzip_copyright[] = \
@@ -206,7 +205,7 @@ static	char	*infile;		/* name of file co
 
 static	void	maybe_err(const char *fmt, ...) __dead2
     __attribute__((__format__(__printf__, 1, 2)));
-#ifndef NO_BZIP2_SUPPORT
+#if !defined(NO_BZIP2_SUPPORT) || !defined(NO_PACK_SUPPORT)
 static	void	maybe_errx(const char *fmt, ...) __dead2
     __attribute__((__format__(__printf__, 1, 2)));
 #endif
@@ -461,7 +460,7 @@ maybe_err(const char *fmt, ...)
 	exit(2);
 }
 
-#ifndef NO_BZIP2_SUPPORT
+#if !defined(NO_BZIP2_SUPPORT) || !defined(NO_PACK_SUPPORT)
 /* ... without an errno. */
 void
 maybe_errx(const char *fmt, ...)
@@ -1319,6 +1318,7 @@ file_uncompress(char *file, char *outfil
 	enum filetype method;
 	int fd, ofd, zfd = -1;
 #ifndef SMALL
+	ssize_t rv;
 	time_t timestamp = 0;
 	unsigned char name[PATH_MAX + 1];
 #endif
@@ -1364,7 +1364,6 @@ file_uncompress(char *file, char *outfil
 #ifndef SMALL
 	if (method == FT_GZIP && Nflag) {
 		unsigned char ts[4];	/* timestamp */
-		ssize_t rv;
 
 		rv = pread(fd, ts, sizeof ts, GZIP_TIMESTAMP);
 		if (rv >= 0 && rv < (ssize_t)(sizeof ts))
@@ -2054,7 +2053,7 @@ static void
 display_license(void)
 {
 
-	fprintf(stderr, "%s (based on NetBSD gzip 20060927)\n", gzip_version);
+	fprintf(stderr, "%s (based on NetBSD gzip 20091011)\n", gzip_version);
 	fprintf(stderr, "%s\n", gzip_copyright);
 	exit(0);
 }
@@ -2100,4 +2099,3 @@ read_retry(int fd, void *buf, size_t sz)
 
 	return sz - left;
 }
-

Modified: head/usr.bin/gzip/unbzip2.c
==============================================================================
--- head/usr.bin/gzip/unbzip2.c	Wed Apr  7 22:28:16 2010	(r206386)
+++ head/usr.bin/gzip/unbzip2.c	Wed Apr  7 22:54:53 2010	(r206387)
@@ -1,4 +1,4 @@
-/*	$NetBSD: unbzip2.c,v 1.12 2009/10/11 05:17:20 mrg Exp $	*/
+/*	$NetBSD: unbzip2.c,v 1.13 2009/12/05 03:23:37 mrg Exp $	*/
 
 /*-
  * Copyright (c) 2006 The NetBSD Foundation, Inc.

From owner-svn-src-head@FreeBSD.ORG  Thu Apr  8 00:50:43 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id C55481065670;
	Thu,  8 Apr 2010 00:50:43 +0000 (UTC) (envelope-from jfv@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id B409C8FC1F;
	Thu,  8 Apr 2010 00:50:43 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o380ohCm061518;
	Thu, 8 Apr 2010 00:50:43 GMT (envelope-from jfv@svn.freebsd.org)
Received: (from jfv@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o380ohmO061515;
	Thu, 8 Apr 2010 00:50:43 GMT (envelope-from jfv@svn.freebsd.org)
Message-Id: <201004080050.o380ohmO061515@svn.freebsd.org>
From: Jack F Vogel 
Date: Thu, 8 Apr 2010 00:50:43 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206388 - head/sys/dev/e1000
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Thu, 08 Apr 2010 00:50:43 -0000

Author: jfv
Date: Thu Apr  8 00:50:43 2010
New Revision: 206388
URL: http://svn.freebsd.org/changeset/base/206388

Log:
  Important fix got clobbered in the em driver, keeping
  VLAN HWFILTER from being used by default, this breaks
  stacked pseudo devices, and as it turns out, also breaks
  virtual machines that happen to use VLANS (didn't know that
  before :). Put the fix back into the em driver, and for good
  measure add the same code to the igb driver where it should
  have been anyway.

Modified:
  head/sys/dev/e1000/if_em.c
  head/sys/dev/e1000/if_igb.c

Modified: head/sys/dev/e1000/if_em.c
==============================================================================
--- head/sys/dev/e1000/if_em.c	Wed Apr  7 22:54:53 2010	(r206387)
+++ head/sys/dev/e1000/if_em.c	Thu Apr  8 00:50:43 2010	(r206388)
@@ -93,7 +93,7 @@ int	em_display_debug_stats = 0;
 /*********************************************************************
  *  Driver version:
  *********************************************************************/
-char em_driver_version[] = "7.0.0";
+char em_driver_version[] = "7.0.1";
 
 
 /*********************************************************************
@@ -1118,6 +1118,10 @@ em_ioctl(struct ifnet *ifp, u_long comma
 			ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING;
 			reinit = 1;
 		}
+		if (mask & IFCAP_VLAN_HWFILTER) {
+			ifp->if_capenable ^= IFCAP_VLAN_HWFILTER;
+			reinit = 1;
+		}
 		if ((mask & IFCAP_WOL) &&
 		    (ifp->if_capabilities & IFCAP_WOL) != 0) {
 			if (mask & IFCAP_WOL_MCAST)
@@ -1228,8 +1232,18 @@ em_init_locked(struct adapter *adapter)
 	/* Setup VLAN support, basic and offload if available */
 	E1000_WRITE_REG(&adapter->hw, E1000_VET, ETHERTYPE_VLAN);
 
-	/* Use real VLAN Filter support */
-	em_setup_vlan_hw_support(adapter);
+	/* Use real VLAN Filter support? */
+	if (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) {
+		if (ifp->if_capenable & IFCAP_VLAN_HWFILTER)
+			/* Use real VLAN Filter support */
+			em_setup_vlan_hw_support(adapter);
+		else {
+			u32 ctrl;
+			ctrl = E1000_READ_REG(&adapter->hw, E1000_CTRL);
+			ctrl |= E1000_CTRL_VME;
+			E1000_WRITE_REG(&adapter->hw, E1000_CTRL, ctrl);
+		}
+	}
 
 	/* Set hardware offload abilities */
 	ifp->if_hwassist = 0;
@@ -2656,12 +2670,23 @@ em_setup_interface(device_t dev, struct 
 	ifp->if_capenable |= IFCAP_TSO4;
 
 	/*
-	 * Tell the upper layer(s) we support long frames.
+	 * Tell the upper layer(s) we
+	 * support full VLAN capability
 	 */
 	ifp->if_data.ifi_hdrlen = sizeof(struct ether_vlan_header);
 	ifp->if_capabilities |= IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU;
 	ifp->if_capenable |= IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU;
 
+	/*
+	** Dont turn this on by default, if vlans are
+	** created on another pseudo device (eg. lagg)
+	** then vlan events are not passed thru, breaking
+	** operation, but with HW FILTER off it works. If
+	** using vlans directly on the em driver you can
+	** enable this and get full hardware tag filtering.
+	*/
+	ifp->if_capabilities |= IFCAP_VLAN_HWFILTER;
+
 #ifdef DEVICE_POLLING
 	ifp->if_capabilities |= IFCAP_POLLING;
 #endif

Modified: head/sys/dev/e1000/if_igb.c
==============================================================================
--- head/sys/dev/e1000/if_igb.c	Wed Apr  7 22:54:53 2010	(r206387)
+++ head/sys/dev/e1000/if_igb.c	Thu Apr  8 00:50:43 2010	(r206388)
@@ -99,7 +99,7 @@ int	igb_display_debug_stats = 0;
 /*********************************************************************
  *  Driver version:
  *********************************************************************/
-char igb_driver_version[] = "version - 1.9.3";
+char igb_driver_version[] = "version - 1.9.4";
 
 
 /*********************************************************************
@@ -1055,6 +1055,10 @@ igb_ioctl(struct ifnet *ifp, u_long comm
 			ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING;
 			reinit = 1;
 		}
+		if (mask & IFCAP_VLAN_HWFILTER) {
+			ifp->if_capenable ^= IFCAP_VLAN_HWFILTER;
+			reinit = 1;
+		}
 		if (mask & IFCAP_LRO) {
 			ifp->if_capenable ^= IFCAP_LRO;
 			reinit = 1;
@@ -1110,6 +1114,19 @@ igb_init_locked(struct adapter *adapter)
 
 	E1000_WRITE_REG(&adapter->hw, E1000_VET, ETHERTYPE_VLAN);
 
+        /* Use real VLAN Filter support? */
+	if (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) {
+		if (ifp->if_capenable & IFCAP_VLAN_HWFILTER)
+			/* Use real VLAN Filter support */
+			igb_setup_vlan_hw_support(adapter);
+		else {
+			u32 ctrl;
+			ctrl = E1000_READ_REG(&adapter->hw, E1000_CTRL);
+			ctrl |= E1000_CTRL_VME;
+			E1000_WRITE_REG(&adapter->hw, E1000_CTRL, ctrl);
+		}
+	}
+                                
 	/* Set hardware offload abilities */
 	ifp->if_hwassist = 0;
 	if (ifp->if_capenable & IFCAP_TXCSUM) {
@@ -2669,13 +2686,24 @@ igb_setup_interface(device_t dev, struct
 #endif
 
 	/*
-	 * Tell the upper layer(s) we support long frames.
+	 * Tell the upper layer(s) we
+	 * support full VLAN capability.
 	 */
 	ifp->if_data.ifi_hdrlen = sizeof(struct ether_vlan_header);
 	ifp->if_capabilities |= IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU;
 	ifp->if_capenable |= IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU;
 
 	/*
+	** Dont turn this on by default, if vlans are
+	** created on another pseudo device (eg. lagg)
+	** then vlan events are not passed thru, breaking
+	** operation, but with HW FILTER off it works. If
+	** using vlans directly on the em driver you can
+	** enable this and get full hardware tag filtering.
+	*/
+	ifp->if_capabilities |= IFCAP_VLAN_HWFILTER;
+
+	/*
 	 * Specify the media types supported by this adapter and register
 	 * callbacks to update media and link information
 	 */
@@ -3779,6 +3807,9 @@ igb_setup_receive_ring(struct rx_ring *r
 		/* Update descriptor */
 		rxr->rx_base[j].read.pkt_addr = htole64(pseg[0].ds_addr);
         }
+
+	/* Setup our descriptor indices */
+	rxr->next_to_check = 0;
 	rxr->next_to_refresh = 0;
 	rxr->lro_enabled = FALSE;
 
@@ -4672,10 +4703,12 @@ igb_update_stats_counters(struct adapter
 {
 	struct ifnet   *ifp;
 
-	if(adapter->hw.phy.media_type == e1000_media_type_copper ||
+	if (adapter->hw.phy.media_type == e1000_media_type_copper ||
 	   (E1000_READ_REG(&adapter->hw, E1000_STATUS) & E1000_STATUS_LU)) {
-		adapter->stats.symerrs += E1000_READ_REG(&adapter->hw, E1000_SYMERRS);
-		adapter->stats.sec += E1000_READ_REG(&adapter->hw, E1000_SEC);
+		adapter->stats.symerrs +=
+		    E1000_READ_REG(&adapter->hw, E1000_SYMERRS);
+		adapter->stats.sec +=
+		    E1000_READ_REG(&adapter->hw, E1000_SEC);
 	}
 	adapter->stats.crcerrs += E1000_READ_REG(&adapter->hw, E1000_CRCERRS);
 	adapter->stats.mpc += E1000_READ_REG(&adapter->hw, E1000_MPC);

From owner-svn-src-head@FreeBSD.ORG  Thu Apr  8 02:56:59 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: by hub.freebsd.org (Postfix, from userid 1033)
	id B3A371065674; Thu,  8 Apr 2010 02:56:59 +0000 (UTC)
Date: Thu, 8 Apr 2010 02:56:59 +0000
From: Alexey Dokuchaev 
To: Garrett Cooper 
Message-ID: <20100408025659.GA33361@FreeBSD.org>
References: <201004071707.o37H76OW057492@svn.freebsd.org>
	
Mime-Version: 1.0
Content-Type: text/plain; charset=koi8-r
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: 
User-Agent: Mutt/1.4.2.1i
Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org,
	src-committers@freebsd.org, Jung-uk Kim 
Subject: Re: svn commit: r206363 - head/sys/dev/syscons/logo
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Thu, 08 Apr 2010 02:56:59 -0000

On Wed, Apr 07, 2010 at 10:13:33AM -0700, Garrett Cooper wrote:
> On Wed, Apr 7, 2010 at 10:07 AM, Jung-uk Kim  wrote:
> > Author: jkim
> > Date: Wed Apr š7 17:07:06 2010
> > New Revision: 206363
> > URL: http://svn.freebsd.org/changeset/base/206363
> >
> > Log:
> > šAdd the official FreeBSD logo image file for logo_saver.
> >
> > Modified:
> > šhead/sys/dev/syscons/logo/logo.c
> 
> Please readd the beastie logo based saver as beastie saver, or
> something similar.

Seconded.  If your code changes classic logo saver in any way (other
than non-functional changes were made), please revive classic logo saver
for those who use it and don't want it to be anything else other than
cute beastie.

Thanks.

./danfe

From owner-svn-src-head@FreeBSD.ORG  Thu Apr  8 05:16:51 2010
Return-Path: 
Delivered-To: svn-src-head@FreeBSD.org
Received: from [127.0.0.1] (freefall.freebsd.org [IPv6:2001:4f8:fff6::28])
	by hub.freebsd.org (Postfix) with ESMTP id F29E8106566B;
	Thu,  8 Apr 2010 05:16:49 +0000 (UTC)
	(envelope-from jkim@FreeBSD.org)
From: Jung-uk Kim 
To: Alexey Dokuchaev 
Date: Thu, 8 Apr 2010 01:16:38 -0400
User-Agent: KMail/1.6.2
References: <201004071707.o37H76OW057492@svn.freebsd.org>
	
	<20100408025659.GA33361@FreeBSD.org>
In-Reply-To: <20100408025659.GA33361@FreeBSD.org>
MIME-Version: 1.0
Content-Disposition: inline
Content-Type: text/plain;
  charset="utf-8"
Content-Transfer-Encoding: 8bit
Message-Id: <201004080116.42801.jkim@FreeBSD.org>
Cc: svn-src-head@FreeBSD.org, Garrett Cooper ,
	svn-src-all@FreeBSD.org, src-committers@FreeBSD.org
Subject: Re: svn commit: r206363 - head/sys/dev/syscons/logo
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Thu, 08 Apr 2010 05:16:51 -0000

On Wednesday 07 April 2010 10:56 pm, Alexey Dokuchaev wrote:
> On Wed, Apr 07, 2010 at 10:13:33AM -0700, Garrett Cooper wrote:
> > On Wed, Apr 7, 2010 at 10:07 AM, Jung-uk Kim  
wrote:
> > > Author: jkim
> > > Date: Wed Apr �7 17:07:06 2010
> > > New Revision: 206363
> > > URL: http://svn.freebsd.org/changeset/base/206363
> > >
> > > Log:
> > > �Add the official FreeBSD logo image file for logo_saver.
> > >
> > > Modified:
> > > �head/sys/dev/syscons/logo/logo.c
> >
> > Please readd the beastie logo based saver as beastie saver, or
> > something similar.
>
> Seconded.  If your code changes classic logo saver in any way
> (other than non-functional changes were made), please revive
> classic logo saver for those who use it and don't want it to be
> anything else other than cute beastie.

JFYI, it was renamed to beastie_saver:

http://svn.freebsd.org/changeset/base/206362
http://svn.freebsd.org/changeset/base/206363
http://svn.freebsd.org/changeset/base/206365
http://svn.freebsd.org/changeset/base/206366
http://svn.freebsd.org/changeset/base/206368
http://svn.freebsd.org/changeset/base/206374
http://svn.freebsd.org/changeset/base/206380

Jung-uk Kim

From owner-svn-src-head@FreeBSD.ORG  Thu Apr  8 05:56:43 2010
Return-Path: 
Delivered-To: svn-src-head@FreeBSD.org
Received: by hub.freebsd.org (Postfix, from userid 1033)
	id 55EBA106566B; Thu,  8 Apr 2010 05:56:43 +0000 (UTC)
Date: Thu, 8 Apr 2010 05:56:43 +0000
From: Alexey Dokuchaev 
To: Jung-uk Kim 
Message-ID: <20100408055643.GA55229@FreeBSD.org>
References: <201004071707.o37H76OW057492@svn.freebsd.org>
	
	<20100408025659.GA33361@FreeBSD.org>
	<201004080116.42801.jkim@FreeBSD.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=koi8-r
Content-Disposition: inline
In-Reply-To: <201004080116.42801.jkim@FreeBSD.org>
User-Agent: Mutt/1.4.2.1i
Cc: svn-src-head@FreeBSD.org, Garrett Cooper ,
	svn-src-all@FreeBSD.org, src-committers@FreeBSD.org
Subject: Re: svn commit: r206363 - head/sys/dev/syscons/logo
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Thu, 08 Apr 2010 05:56:43 -0000

On Thu, Apr 08, 2010 at 01:16:38AM -0400, Jung-uk Kim wrote:
> On Wednesday 07 April 2010 10:56 pm, Alexey Dokuchaev wrote:
> > On Wed, Apr 07, 2010 at 10:13:33AM -0700, Garrett Cooper wrote:
> > > Please readd the beastie logo based saver as beastie saver, or
> > > something similar.
> >
> > Seconded.  If your code changes classic logo saver in any way
> > (other than non-functional changes were made), please revive
> > classic logo saver for those who use it and don't want it to be
> > anything else other than cute beastie.
> 
> JFYI, it was renamed to beastie_saver:
> 
> http://svn.freebsd.org/changeset/base/206362
> http://svn.freebsd.org/changeset/base/206363
> http://svn.freebsd.org/changeset/base/206365
> http://svn.freebsd.org/changeset/base/206366
> http://svn.freebsd.org/changeset/base/206368
> http://svn.freebsd.org/changeset/base/206374
> http://svn.freebsd.org/changeset/base/206380

Yup, I've seen those.  Thanks, and sorry for the noise.

./danfe

From owner-svn-src-head@FreeBSD.ORG  Thu Apr  8 08:58:18 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 8AB20106566B;
	Thu,  8 Apr 2010 08:58:18 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 792848FC15;
	Thu,  8 Apr 2010 08:58:18 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o388wI3n070674;
	Thu, 8 Apr 2010 08:58:18 GMT (envelope-from kib@svn.freebsd.org)
Received: (from kib@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o388wIHc070673;
	Thu, 8 Apr 2010 08:58:18 GMT (envelope-from kib@svn.freebsd.org)
Message-Id: <201004080858.o388wIHc070673@svn.freebsd.org>
From: Konstantin Belousov 
Date: Thu, 8 Apr 2010 08:58:18 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206395 - head/sys/kern
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Thu, 08 Apr 2010 08:58:18 -0000

Author: kib
Date: Thu Apr  8 08:58:18 2010
New Revision: 206395
URL: http://svn.freebsd.org/changeset/base/206395

Log:
  Do not leak master pty or ptmx vnode.
  
  Report and test case by:	Petr Salinger 
  Reviewed by:	ed
  MFC after:	1 week

Modified:
  head/sys/kern/tty_pts.c

Modified: head/sys/kern/tty_pts.c
==============================================================================
--- head/sys/kern/tty_pts.c	Thu Apr  8 07:45:42 2010	(r206394)
+++ head/sys/kern/tty_pts.c	Thu Apr  8 08:58:18 2010	(r206395)
@@ -575,6 +575,15 @@ ptsdev_close(struct file *fp, struct thr
 	tty_lock(tp);
 	tty_rel_gone(tp);
 
+	/*
+	 * Open of /dev/ptmx or /dev/ptyXX changes the type of file
+	 * from DTYPE_VNODE to DTYPE_PTS. vn_open() increases vnode
+	 * use count, we need to decrement it, and possibly do other
+	 * required cleanup.
+	 */
+	if (fp->f_vnode != NULL)
+		return (vnops.fo_close(fp, td));
+
 	return (0);
 }
 

From owner-svn-src-head@FreeBSD.ORG  Thu Apr  8 09:01:20 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 608AA106566B;
	Thu,  8 Apr 2010 09:01:20 +0000 (UTC)
	(envelope-from cperciva@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 4F2158FC12;
	Thu,  8 Apr 2010 09:01:20 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3891KEE071389;
	Thu, 8 Apr 2010 09:01:20 GMT (envelope-from cperciva@svn.freebsd.org)
Received: (from cperciva@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3891KTj071387;
	Thu, 8 Apr 2010 09:01:20 GMT (envelope-from cperciva@svn.freebsd.org)
Message-Id: <201004080901.o3891KTj071387@svn.freebsd.org>
From: Colin Percival 
Date: Thu, 8 Apr 2010 09:01:20 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206396 - head
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Thu, 08 Apr 2010 09:01:20 -0000

Author: cperciva
Date: Thu Apr  8 09:01:20 2010
New Revision: 206396
URL: http://svn.freebsd.org/changeset/base/206396

Log:
  People working on sysinstall are encouraged to contact randi to
  coordinate major changes.

Modified:
  head/MAINTAINERS

Modified: head/MAINTAINERS
==============================================================================
--- head/MAINTAINERS	Thu Apr  8 08:58:18 2010	(r206395)
+++ head/MAINTAINERS	Thu Apr  8 09:01:20 2010	(r206396)
@@ -123,6 +123,8 @@ usr.sbin/zic		edwin   Heads-up appreciat
 				maintained by a third party source.
 lib/libc/stdtime	edwin   Heads-up appreciated, since parts of this code
 				is maintained by a third party source.
+sysinstall	randi	Please contact about any major changes so that
+			they can be co-ordinated.
 
 Following are the entries from the Makefiles, and a few other sources.
 Please remove stale entries from both their origin, and this file.

From owner-svn-src-head@FreeBSD.ORG  Thu Apr  8 12:07:40 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id E65BF1065677;
	Thu,  8 Apr 2010 12:07:40 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id D41EE8FC20;
	Thu,  8 Apr 2010 12:07:40 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o38C7edc014301;
	Thu, 8 Apr 2010 12:07:40 GMT (envelope-from kib@svn.freebsd.org)
Received: (from kib@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o38C7eiK014299;
	Thu, 8 Apr 2010 12:07:40 GMT (envelope-from kib@svn.freebsd.org)
Message-Id: <201004081207.o38C7eiK014299@svn.freebsd.org>
From: Konstantin Belousov 
Date: Thu, 8 Apr 2010 12:07:40 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206397 - head/crypto/openssh
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Thu, 08 Apr 2010 12:07:41 -0000

Author: kib
Date: Thu Apr  8 12:07:40 2010
New Revision: 206397
URL: http://svn.freebsd.org/changeset/base/206397

Log:
  Enhance r199804 by marking the daemonised child as immune to OOM instead
  of short-living parent. Only mark the master process that accepts
  connections, do not protect connection handlers spawned from inetd.
  
  Submitted by:	Mykola Dzham 
  Reviewed by:	attilio
  MFC after:	1 week

Modified:
  head/crypto/openssh/sshd.c

Modified: head/crypto/openssh/sshd.c
==============================================================================
--- head/crypto/openssh/sshd.c	Thu Apr  8 09:01:20 2010	(r206396)
+++ head/crypto/openssh/sshd.c	Thu Apr  8 12:07:40 2010	(r206397)
@@ -1330,10 +1330,6 @@ main(int ac, char **av)
 	/* Initialize configuration options to their default values. */
 	initialize_server_options(&options);
 
-	/* Avoid killing the process in high-pressure swapping environments. */
-	if (madvise(NULL, 0, MADV_PROTECT) != 0)
-		debug("madvise(): %.200s", strerror(errno));
-
 	/* Parse command-line arguments. */
 	while ((opt = getopt(ac, av, "f:p:b:k:h:g:u:o:C:dDeiqrtQRT46")) != -1) {
 		switch (opt) {
@@ -1749,6 +1745,10 @@ main(int ac, char **av)
 	/* Reinitialize the log (because of the fork above). */
 	log_init(__progname, options.log_level, options.log_facility, log_stderr);
 
+	/* Avoid killing the process in high-pressure swapping environments. */
+	if (!inetd_flag && madvise(NULL, 0, MADV_PROTECT) != 0)
+		debug("madvise(): %.200s", strerror(errno));
+
 	/* Initialize the random number generator. */
 	arc4random_stir();
 

From owner-svn-src-head@FreeBSD.ORG  Thu Apr  8 13:34:08 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id A0AF3106566C;
	Thu,  8 Apr 2010 13:34:08 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 907768FC15;
	Thu,  8 Apr 2010 13:34:08 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o38DY8KP033320;
	Thu, 8 Apr 2010 13:34:08 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o38DY85Y033318;
	Thu, 8 Apr 2010 13:34:08 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004081334.o38DY85Y033318@svn.freebsd.org>
From: Rui Paulo 
Date: Thu, 8 Apr 2010 13:34:08 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206398 - head/sys/net80211
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Thu, 08 Apr 2010 13:34:08 -0000

Author: rpaulo
Date: Thu Apr  8 13:34:08 2010
New Revision: 206398
URL: http://svn.freebsd.org/changeset/base/206398

Log:
  Prevent foot-shooting in ieee80211_ratectl_node_deinit().
  
  MFC after:	1 month

Modified:
  head/sys/net80211/ieee80211_ratectl.h

Modified: head/sys/net80211/ieee80211_ratectl.h
==============================================================================
--- head/sys/net80211/ieee80211_ratectl.h	Thu Apr  8 12:07:40 2010	(r206397)
+++ head/sys/net80211/ieee80211_ratectl.h	Thu Apr  8 13:34:08 2010	(r206398)
@@ -85,6 +85,8 @@ ieee80211_ratectl_node_deinit(struct iee
 {
 	const struct ieee80211vap *vap = ni->ni_vap;
 
+	if (ni->ni_rctls == NULL)	/* ratectl not setup */
+		return;
 	vap->iv_rate->ir_node_deinit(ni);
 }
 

From owner-svn-src-head@FreeBSD.ORG  Thu Apr  8 15:19:57 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id D2D81106566B;
	Thu,  8 Apr 2010 15:19:57 +0000 (UTC) (envelope-from ume@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id C3F088FC13;
	Thu,  8 Apr 2010 15:19:57 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o38FJvsw057119;
	Thu, 8 Apr 2010 15:19:57 GMT (envelope-from ume@svn.freebsd.org)
Received: (from ume@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o38FJvAQ057118;
	Thu, 8 Apr 2010 15:19:57 GMT (envelope-from ume@svn.freebsd.org)
Message-Id: <201004081519.o38FJvAQ057118@svn.freebsd.org>
From: Hajimu UMEMOTO 
Date: Thu, 8 Apr 2010 15:19:57 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206399 - head/etc
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Thu, 08 Apr 2010 15:19:57 -0000

Author: ume
Date: Thu Apr  8 15:19:57 2010
New Revision: 206399
URL: http://svn.freebsd.org/changeset/base/206399

Log:
  Disambiguate `IPs' to a more specific term.
  
  Submitted by:	Garrett Cooper 
  MFC after:	3 days

Modified:
  head/etc/rc.firewall

Modified: head/etc/rc.firewall
==============================================================================
--- head/etc/rc.firewall	Thu Apr  8 13:34:08 2010	(r206398)
+++ head/etc/rc.firewall	Thu Apr  8 15:19:57 2010	(r206399)
@@ -424,13 +424,15 @@ case ${firewall_type} in
 	# Configuration:
 	#  firewall_myservices:		List of TCP ports on which this host
 	#			 	 offers services.
-	#  firewall_allowservices:	List of IPs which has access to
+	#  firewall_allowservices:	List of IPv4 and/or IPv6 addresses
+	#				 which has access to
 	#				 $firewall_myservices.
-	#  firewall_trusted:		List of IPs which has full access 
-	#				 to this host. Be very carefull 
-	#				 when setting this. This option can
-	#				 seriously degrade the level of 
-	#				 protection provided by the firewall.
+	#  firewall_trusted:		List of IPv4 and/or IPv6 addresses
+	#				 which has full access to this host.
+	#				 Be very carefull when setting this.
+	#				 This option can seriously degrade
+	#				 the level of protection provided by
+	#				 the firewall.
 	#  firewall_logdeny:		Boolean (YES/NO) specifying if the
 	#				 default denied packets should be
 	#				 logged (in /var/log/security).

From owner-svn-src-head@FreeBSD.ORG  Thu Apr  8 18:32:13 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 9A3C2106564A;
	Thu,  8 Apr 2010 18:32:13 +0000 (UTC)
	(envelope-from gonzo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 8952A8FC15;
	Thu,  8 Apr 2010 18:32:13 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o38IWDV7099291;
	Thu, 8 Apr 2010 18:32:13 GMT (envelope-from gonzo@svn.freebsd.org)
Received: (from gonzo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o38IWDLV099289;
	Thu, 8 Apr 2010 18:32:13 GMT (envelope-from gonzo@svn.freebsd.org)
Message-Id: <201004081832.o38IWDLV099289@svn.freebsd.org>
From: Oleksandr Tymoshenko 
Date: Thu, 8 Apr 2010 18:32:13 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206400 - head/sys/mips/atheros
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Thu, 08 Apr 2010 18:32:13 -0000

Author: gonzo
Date: Thu Apr  8 18:32:13 2010
New Revision: 206400
URL: http://svn.freebsd.org/changeset/base/206400

Log:
  - Fix mutex type for miibus_mtx: it's not spinlock, it's def lock

Modified:
  head/sys/mips/atheros/if_arge.c

Modified: head/sys/mips/atheros/if_arge.c
==============================================================================
--- head/sys/mips/atheros/if_arge.c	Thu Apr  8 15:19:57 2010	(r206399)
+++ head/sys/mips/atheros/if_arge.c	Thu Apr  8 18:32:13 2010	(r206400)
@@ -171,7 +171,7 @@ extern uint32_t ar711_base_mac[ETHER_ADD
 
 static struct mtx miibus_mtx;
 
-MTX_SYSINIT(miibus_mtx, &miibus_mtx, "arge mii lock", MTX_SPIN);
+MTX_SYSINIT(miibus_mtx, &miibus_mtx, "arge mii lock", MTX_DEF);
 
 
 /*

From owner-svn-src-head@FreeBSD.ORG  Thu Apr  8 19:13:42 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id A3D10106566B;
	Thu,  8 Apr 2010 19:13:42 +0000 (UTC) (envelope-from jfv@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 923E18FC08;
	Thu,  8 Apr 2010 19:13:42 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o38JDgs5008644;
	Thu, 8 Apr 2010 19:13:42 GMT (envelope-from jfv@svn.freebsd.org)
Received: (from jfv@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o38JDgb5008642;
	Thu, 8 Apr 2010 19:13:42 GMT (envelope-from jfv@svn.freebsd.org)
Message-Id: <201004081913.o38JDgb5008642@svn.freebsd.org>
From: Jack F Vogel 
Date: Thu, 8 Apr 2010 19:13:42 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206403 - head/sys/dev/e1000
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Thu, 08 Apr 2010 19:13:42 -0000

Author: jfv
Date: Thu Apr  8 19:13:42 2010
New Revision: 206403
URL: http://svn.freebsd.org/changeset/base/206403

Log:
  Three changes:
  	- add CRC stripping to the RX side, this was handled
  	  by some obscure code in rxeof previously, its easier
  	  to simply have the hardware strip it now.
  	- Add back an ALTQ change that slipped between the cracks
  	- Add an update to the watchdog_time in the xmit code, not
  	  doing this in ixgbe caused problems, think its needed here
  	  as well.

Modified:
  head/sys/dev/e1000/if_em.c

Modified: head/sys/dev/e1000/if_em.c
==============================================================================
--- head/sys/dev/e1000/if_em.c	Thu Apr  8 18:38:50 2010	(r206402)
+++ head/sys/dev/e1000/if_em.c	Thu Apr  8 19:13:42 2010	(r206403)
@@ -93,7 +93,7 @@ int	em_display_debug_stats = 0;
 /*********************************************************************
  *  Driver version:
  *********************************************************************/
-char em_driver_version[] = "7.0.1";
+char em_driver_version[] = "7.0.2";
 
 
 /*********************************************************************
@@ -813,9 +813,13 @@ em_mq_start_locked(struct ifnet *ifp, st
 	}
 
 	enq = 0;
-	if (m == NULL)
+	if (m == NULL) {
 		next = drbr_dequeue(ifp, txr->br);
-	else
+	} else if (drbr_needs_enqueue(ifp, txr->br)) {
+		if ((err = drbr_enqueue(ifp, txr->br, m)) != 0)
+			return (err);
+		next = drbr_dequeue(ifp, txr->br);
+	} else
 		next = m;
 
 	/* Process the queue */
@@ -1720,13 +1724,6 @@ em_xmit(struct tx_ring *txr, struct mbuf
 	txd_upper = txd_lower = txd_used = txd_saved = 0;
 	do_tso = ((m_head->m_pkthdr.csum_flags & CSUM_TSO) != 0);
 
-        /*
-         * Force a cleanup if number of TX descriptors
-         * available hits the threshold
-         */
-	if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
-		em_txeof(txr);
-
 	/*
 	 * TSO workaround: 
 	 *  If an mbuf is only header we need  
@@ -1915,6 +1912,11 @@ em_xmit(struct tx_ring *txr, struct mbuf
 	bus_dmamap_sync(txr->txdma.dma_tag, txr->txdma.dma_map,
 	    BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
 	E1000_WRITE_REG(&adapter->hw, E1000_TDT(txr->me), i);
+	txr->watchdog_time = ticks;
+
+        /* Call cleanup if number of TX descriptors low */
+	if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
+		em_txeof(txr);
 
 	return (0);
 }
@@ -3706,6 +3708,8 @@ em_refresh_mbufs(struct rx_ring *rxr, in
 		rxr->next_to_refresh = i;
 	}
 update:
+	bus_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map,
+	    BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
 	if (cleaned != -1) /* Update tail index */
 		E1000_WRITE_REG(&adapter->hw,
 		    E1000_RDT(rxr->me), cleaned);
@@ -4040,6 +4044,9 @@ em_initialize_receive_unit(struct adapte
 	    E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF |
 	    (hw->mac.mc_filter_type << E1000_RCTL_MO_SHIFT);
 
+        /* Strip the CRC */
+        rctl |= E1000_RCTL_SECRC;
+
         /* Make sure VLAN Filters are off */
         rctl &= ~E1000_RCTL_VFE;
 	rctl &= ~E1000_RCTL_SBP;

From owner-svn-src-head@FreeBSD.ORG  Thu Apr  8 19:34:55 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id EBF011065686;
	Thu,  8 Apr 2010 19:34:55 +0000 (UTC) (envelope-from imp@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id DAAAB8FC20;
	Thu,  8 Apr 2010 19:34:55 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o38JYt5j013441;
	Thu, 8 Apr 2010 19:34:55 GMT (envelope-from imp@svn.freebsd.org)
Received: (from imp@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o38JYtf7013438;
	Thu, 8 Apr 2010 19:34:55 GMT (envelope-from imp@svn.freebsd.org)
Message-Id: <201004081934.o38JYtf7013438@svn.freebsd.org>
From: Warner Losh 
Date: Thu, 8 Apr 2010 19:34:55 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206404 - in head/sys: arm/include mips/include
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Thu, 08 Apr 2010 19:34:56 -0000

Author: imp
Date: Thu Apr  8 19:34:55 2010
New Revision: 206404
URL: http://svn.freebsd.org/changeset/base/206404

Log:
  Add BUS_SPACE_UNRESTRICTED and define it to be ~0, just like all the
  other platforms.

Modified:
  head/sys/arm/include/bus.h
  head/sys/mips/include/bus.h

Modified: head/sys/arm/include/bus.h
==============================================================================
--- head/sys/arm/include/bus.h	Thu Apr  8 19:13:42 2010	(r206403)
+++ head/sys/arm/include/bus.h	Thu Apr  8 19:34:55 2010	(r206404)
@@ -721,6 +721,8 @@ bs_c_8_proto(f);
 #define BUS_SPACE_MAXSIZE_32BIT	0xFFFFFFFF
 #define BUS_SPACE_MAXSIZE 	0xFFFFFFFF
 
+#define BUS_SPACE_UNRESTRICTED	(~0)
+
 #include 
 
 #endif /* _MACHINE_BUS_H_ */

Modified: head/sys/mips/include/bus.h
==============================================================================
--- head/sys/mips/include/bus.h	Thu Apr  8 19:13:42 2010	(r206403)
+++ head/sys/mips/include/bus.h	Thu Apr  8 19:34:55 2010	(r206404)
@@ -713,6 +713,8 @@ void	__bs_c(f,_bs_c_8) (void *t, bus_spa
 #define BUS_SPACE_MAXSIZE_32BIT	0xFFFFFFFF
 #define BUS_SPACE_MAXSIZE 	0xFFFFFFFF
 
+#define BUS_SPACE_UNRESTRICTED	(~0)
+
 /* 
  * declare generic bus space, it suits all needs in 
  */

From owner-svn-src-head@FreeBSD.ORG  Thu Apr  8 21:18:47 2010
Return-Path: 
Delivered-To: svn-src-head@FreeBSD.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 0FCEF106564A;
	Thu,  8 Apr 2010 21:18:47 +0000 (UTC) (envelope-from imp@bsdimp.com)
Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85])
	by mx1.freebsd.org (Postfix) with ESMTP id B35A28FC1D;
	Thu,  8 Apr 2010 21:18:46 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
	by harmony.bsdimp.com (8.14.3/8.14.1) with ESMTP id o38LC9bk051979;
	Thu, 8 Apr 2010 15:12:09 -0600 (MDT) (envelope-from imp@bsdimp.com)
Date: Thu, 08 Apr 2010 15:12:13 -0600 (MDT)
Message-Id: <20100408.151213.718265677801106795.imp@bsdimp.com>
To: netchild@FreeBSD.org
From: "M. Warner Losh" 
In-Reply-To: <20100407100015.117169nw2iu6xp4w@webmail.leidinger.net>
References: <20100405181450.13494itjj2ehj5og@webmail.leidinger.net>
	<20100406.105417.934842008305588111.imp@bsdimp.com>
	<20100407100015.117169nw2iu6xp4w@webmail.leidinger.net>
X-Mailer: Mew version 6.3 on Emacs 22.3 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Cc: kostikbel@gmail.com, svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org,
	src-committers@FreeBSD.org
Subject: Re: svn commit: r206082 - in head: . share/man/man7 share/mk
 sys/conf
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Thu, 08 Apr 2010 21:18:47 -0000

In message: <20100407100015.117169nw2iu6xp4w@webmail.leidinger.net>
            Alexander Leidinger  writes:
: Quoting "M. Warner Losh"  (from Tue, 06 Apr 2010
: 10:54:17 -0600 (MDT)):
: 
: > In message: <20100405181450.13494itjj2ehj5og@webmail.leidinger.net>
: >             Alexander Leidinger  writes:
: > : Warner, do you mind if I back-out r206082 and change the place where
: > : NORMAL_CTFCONVERT is used instead (fist I have to search for it
: > : again... not today)? It would make it consistent with all other
: > places
: > : (SYSTEM_CTFCONVERT and the plain test and use of CTFxxx).
: >
: > Go ahead.  I just did the fast and dirty fix.  I though it was
: > consistent with how other things were done, but if not, feel free to
: > correct it.  Also, see bde's commentary :)
: 
: I can not find it, can you please forward it to me?

Will do.

: Here is what I have ATM (copy&paste, so tabs are probably mangled):
: ---snip---
: Index: usr.sbin/config/mkmakefile.c
: ===================================================================
: --- usr.sbin/config/mkmakefile.c        (revision 206031)
: +++ usr.sbin/config/mkmakefile.c        (working copy)
: @@ -741,7 +741,7 @@
:                                 printf("config: don't know rules for %s\n",
:                                 np); break;
:                         }
: -                       snprintf(cmd, sizeof(cmd), "${%s_%c%s}\n.if
: -                       defined(NORMAL_CTFCONVERT) &&
: -                       !empty(NORMAL_CTFCONVERT)\n\t${NORMAL_CTFCONVERT}\n.endif",
: -                       ftype,
: + snprintf(cmd, sizeof(cmd), "${%s_%c%s}\n\t@${NORMAL_CTFCONVERT}",
: ftype,
:                             toupper(och),
:                             ftp->f_flags & NOWERROR ? "_NOWERROR" : "");
:                         compilewith = cmd;

Uggg, this should have never been put into mkmakefile.c in the first
place.  I'm concerned that a change like this will have bad effects
for people that have cross-threaded config and kernels. :(

However, go ahead and fix it.  I worry about people with
cross-threaded kernels, but that won't be a huge deal, I don't think.
Please monitor the lists to make sure...

Warner

: Index: sys/conf/kern.pre.mk
: ===================================================================
: --- sys/conf/kern.pre.mk        (revision 206248)
: +++ sys/conf/kern.pre.mk        (working copy)
: @@ -128,7 +128,7 @@
:  NORMAL_M= ${AWK} -f $S/tools/makeobjops.awk ${.IMPSRC} -c ; \
:           ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.PREFIX}.c
: 
: -NORMAL_CTFCONVERT= @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] ||
: -${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
: +NORMAL_CTFCONVERT= [ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] ||
: ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
: 
:  NORMAL_LINT=   ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC}
: 
: ---snip---
: 
: Bye,
: Alexander.
: 
: -- 
: http://www.Leidinger.net  Alexander @ Leidinger.net: PGP ID = B0063FE7
: http://www.FreeBSD.org     netchild @ FreeBSD.org  : PGP ID = 72077137
: Look before you leap.
: 		-- Samuel Butler
: 

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 01:14:11 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 86ABE106564A;
	Fri,  9 Apr 2010 01:14:11 +0000 (UTC)
	(envelope-from nwhitehorn@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 767CE8FC13;
	Fri,  9 Apr 2010 01:14:11 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o391EB09087806;
	Fri, 9 Apr 2010 01:14:11 GMT
	(envelope-from nwhitehorn@svn.freebsd.org)
Received: (from nwhitehorn@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o391EBdc087804;
	Fri, 9 Apr 2010 01:14:11 GMT
	(envelope-from nwhitehorn@svn.freebsd.org)
Message-Id: <201004090114.o391EBdc087804@svn.freebsd.org>
From: Nathan Whitehorn 
Date: Fri, 9 Apr 2010 01:14:11 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206405 - head/sys/mips/mips
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 01:14:11 -0000

Author: nwhitehorn
Date: Fri Apr  9 01:14:11 2010
New Revision: 206405
URL: http://svn.freebsd.org/changeset/base/206405

Log:
  Fix a bug where bus_dma_load_xxx() would not bounce misaligned buffers
  due to rounding the buffer's physical address to the beginning of its
  page. This fixes a panic in arge(4) when using PPPoE.
  
  Reported by:	Jakob van Santen 
  Reviewed by:	gonzo
  Obtained from:	amd64

Modified:
  head/sys/mips/mips/busdma_machdep.c

Modified: head/sys/mips/mips/busdma_machdep.c
==============================================================================
--- head/sys/mips/mips/busdma_machdep.c	Thu Apr  8 19:34:55 2010	(r206404)
+++ head/sys/mips/mips/busdma_machdep.c	Fri Apr  9 01:14:11 2010	(r206405)
@@ -687,16 +687,21 @@ _bus_dmamap_count_pages(bus_dma_tag_t dm
 		 * Count the number of bounce pages
 		 * needed in order to complete this transfer
 		 */
-		vaddr = trunc_page((vm_offset_t)buf);
+		vaddr = (vm_offset_t)buf;
 		vendaddr = (vm_offset_t)buf + buflen;
 
 		while (vaddr < vendaddr) {
+			bus_size_t sg_len;
+
 			KASSERT(kernel_pmap == pmap, ("pmap is not kernel pmap"));
+			sg_len = PAGE_SIZE - ((vm_offset_t)vaddr & PAGE_MASK);
 			paddr = pmap_kextract(vaddr);
 			if (((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0) &&
-			    run_filter(dmat, paddr) != 0)
+			    run_filter(dmat, paddr) != 0) {
+				sg_len = roundup2(sg_len, dmat->alignment);
 				map->pagesneeded++;
-			vaddr += PAGE_SIZE;
+			}
+			vaddr += sg_len;
 		}
 		CTR1(KTR_BUSDMA, "pagesneeded= %d\n", map->pagesneeded);
 	}

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 01:28:46 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id E09E6106566B
	for ; Fri,  9 Apr 2010 01:28:46 +0000 (UTC)
	(envelope-from moonlightakkiy@yahoo.ca)
Received: from web51808.mail.re2.yahoo.com (web51808.mail.re2.yahoo.com
	[206.190.38.239])
	by mx1.freebsd.org (Postfix) with SMTP id 1A8A18FC0A
	for ; Fri,  9 Apr 2010 01:28:45 +0000 (UTC)
Received: (qmail 15377 invoked by uid 60001); 9 Apr 2010 01:02:05 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.ca; s=s1024;
	t=1270774925; bh=cTCs/Rzx13MsC2cuPnH8btnJsQFEMV514E1IYVu+tRQ=;
	h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type;
	b=vKQVkc+YKTmsRNVQIdznQK/UOKc8krwuHX6eRWqFJpJAcVih2Ajlb/l7JM8ihkz4p0piGRwN8XKCUtbnek4uqYXmEKOYdY8zhkjYAhugJk5YsX02fOLsrC3dsU5x2y8nOHD2HprDFLzaizh72vVQdA4UJ6GTs7AOeeHrkVSkIhk=
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.ca;
	h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type;
	b=XbIFZ+NyBKEKhYivuJ9xUURdlUE3rd5YimKrfRVrInXnWEoU2ZdfalMssnEnfnJ23tQpgfVpvphXUYmbTRgthHCjZyct3vKpItt5bIx413GPBPoHPljynt8sKGqQLCeK7WHpNpnFVbG52+Uhmgq+H0fkn/MiqUUo/sCCk3Nf+8Y=;
Message-ID: <545454.13807.qm@web51808.mail.re2.yahoo.com>
X-YMail-OSG: RZpgZt8VM1mXKBVGHig0M.kI396iJQEBa3XxADYnzgvWwgRpcGU7vxU.wKFjFT3xFkwe14slZP.mBhwyI0U4wX1mRazP15n53tbc5oZcEMhdjBhtcgeBgHljhQ.XQ6KD.ctiPZqoKxZmYKK8rteD1IY1xvVoWdS2CBFXZ8bOkReP6OPsxXkabiv2qzOO7hH0NItY1zof7tfVfPw64StTGjv8MoeCiYtrec22NVJD_NkYCbsSM3dqEm49Benv7678yRDZ9nxYf4g_9WNN4t0nJXQY86F94lYo.lQZ15HAtZ5QboMD2NJtv53nGTI74XcxW2dFkxlgjxvspbS1wfQumUbC9yZQ4AlNxIbjxIDt0GnO
Received: from [173.183.132.20] by web51808.mail.re2.yahoo.com via HTTP;
	Thu, 08 Apr 2010 18:02:05 PDT
X-Mailer: YahooMailRC/324.3 YahooMailWebService/0.8.100.260964
References: <20100407165048.8CF9E106566B@hub.freebsd.org>
Date: Thu, 8 Apr 2010 18:02:05 -0700 (PDT)
From: PseudoCylon 
To: Rui Paulo , svn-src-head@freebsd.org
In-Reply-To: <20100407165048.8CF9E106566B@hub.freebsd.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Cc: svn-src-all@freebsd.org, src-committers@freebsd.org
Subject: Re: svn commit: r206358 - in head/sys: conf dev/bwi dev/bwn dev/iwn
	dev/ral dev/usb/wlan dev/wpi modules/wlan net80211
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 01:28:47 -0000

>Author: rpaulo
>Date: Wed Apr  7 15:29:13 2010
>New Revision: 206358
>URL: http://svn.freebsd.org/changeset/base/206358
>
>Log:
>  net80211 rate control framework (net80211 ratectl).
>  
>  This framework allows drivers to abstract the rate control algorithm and
>  just feed the framework with the usable parameters. The rate control
>  framework will now deal with passing the parameters to the selected
>  algorithm. Right now we have AMRR (the default) and RSSADAPT but there's
>  no way to select one with ifconfig, yet.
>  The objective is to have more rate control algorithms in the net80211
>  stack so all drivers[0] can use it. Ideally, we'll have the well-known
>  sample rate control algorithm in the net80211 at some point so all
>  drivers can use it (not just ath).
>

Hello,

I've just tried the commit and run(4) works fine out of the box. It properly updates the rate.

Thank you for updating the driver.

AK


      __________________________________________________________________
Yahoo! Canada Toolbar: Search from anywhere on the web, and bookmark your favourite sites. Download it now
http://ca.toolbar.yahoo.com.

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 01:35:09 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id C0F89106566B;
	Fri,  9 Apr 2010 01:35:09 +0000 (UTC)
	(envelope-from dougb@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id AFD0A8FC0C;
	Fri,  9 Apr 2010 01:35:09 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o391Z9TG092657;
	Fri, 9 Apr 2010 01:35:09 GMT (envelope-from dougb@svn.freebsd.org)
Received: (from dougb@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o391Z9q2092650;
	Fri, 9 Apr 2010 01:35:09 GMT (envelope-from dougb@svn.freebsd.org)
Message-Id: <201004090135.o391Z9q2092650@svn.freebsd.org>
From: Doug Barton 
Date: Fri, 9 Apr 2010 01:35:09 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206408 - in head: etc etc/defaults etc/rc.d
	share/man/man5
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 01:35:09 -0000

Author: dougb
Date: Fri Apr  9 01:35:09 2010
New Revision: 206408
URL: http://svn.freebsd.org/changeset/base/206408

Log:
  Improve the handling of IPv6 configuration in rc.d. The ipv6_enable
  and ipv6_ifconfig_ options have already been deprecated,
  these changes do not alter that.
  
  With these changes any value set for ipv6_enable will emit a
  warning. In order to avoid a POLA violation for the deprecation
  of the option ipv6_enable=NO will still disable configuration
  for all interfaces other than lo0. ipv6_enable=YES will not have
  any effect, but will emit an additional warning. Support and
  warnings for this option will be removed in FreeBSD 10.x.
  
  Consistent with the current code, in order for IPv6 to be configured
  on an interface (other than lo0) an ifconfig__ipv6
  option will have to be added to /etc/rc.conf[.local].
  
  1. Clean up and minor optimizations for the following functions:
  ifconfig_up (the ipv6 elements)
  ipv6if
  ipv6_autoconfif
  get_if_var
  _ifconfig_getargs
  The cleanups generally were to move the "easy" tests earlier in the
  functions, and consolidate duplicate code.
  
  2. Stop overloading ipv6_prefer with the ability to disable IPv6
  configuration.
  
  3. Remove noafif() which was only ever called from ipv6_autoconfif.
  Instead, simplify and integrate the tests into that function, and
  convert the test to use is_wired_interface() instead of listing
  wireless interfaces explicitly.
  
  4. Integrate backwards compatibility for ipv6_ifconfig_
  into _ifconfig_getargs. This dramatically simplifies the code in
  all of the callers, and avoids a lot of other code duplication.
  
  5. In rc.d/netoptions, add code for an ipv6_privacy option to use
  RFC 4193 style pseudo-random addresses (this is what windows does
  by default, FYI).
  
  6. Add support for the [NO]RTADV options in ifconfig_getargs() and
  ipv6_autoconfif(). In the latter, include support for the explicit
  addition of [-]accept_rtadv in ifconfig__ipv6 as is done
  in the current code.
  
  7. In rc.d/netif add a warning if $ipv6_enable is set, and remove
  the set_rcvar_obsolete for it. Also remove the latter from
  rc.d/ip6addrctl.
  
  8. In /etc/defaults/rc.conf:
  
  Add an example for RTADV configuration.
  
  Set ipv6_network_interfaces to AUTO.
  
  Switch ipv6_prefer to YES. If ipv6_enable is not set this will have
  no effect.
  
  Add a default for ipv6_privacy (NO).
  
  9. Document all of this in rc.conf.5.

Modified:
  head/etc/defaults/rc.conf
  head/etc/network.subr
  head/etc/rc.d/ip6addrctl
  head/etc/rc.d/netif
  head/etc/rc.d/netoptions
  head/share/man/man5/rc.conf.5

Modified: head/etc/defaults/rc.conf
==============================================================================
--- head/etc/defaults/rc.conf	Fri Apr  9 01:33:12 2010	(r206407)
+++ head/etc/defaults/rc.conf	Fri Apr  9 01:35:09 2010	(r206408)
@@ -210,6 +210,7 @@ cloned_interfaces=""		# List of cloned n
 ifconfig_lo0="inet 127.0.0.1"	# default loopback device configuration.
 #ifconfig_lo0_alias0="inet 127.0.0.254 netmask 0xffffffff" # Sample alias entry.
 #ifconfig_ed0_ipx="ipx 0x00010010"	# Sample IPX address family entry.
+#ifconfig_ed0_ipv6="RTADV" 	# Sample IPv6 entry for RA/rtsol(8)
 #ifconfig_ed0_ipv6="inet6 2001:db8:1::1 prefixlen 64" # Sample IPv6 addr entry
 #ifconfig_ed0_alias0="inet6 2001:db8:2::1 prefixlen 64" # Sample IPv6 alias
 #ifconfig_fxp0_name="net0"	# Change interface name from fxp0 to net0.
@@ -439,8 +440,9 @@ rfcomm_pppd_server_two_channel="3"	# Ove
 icmp_bmcastecho="NO"	# respond to broadcast ping packets
 
 ### IPv6 options: ###
-ipv6_network_interfaces="none"	# List of IPv6 network interfaces
-				# (or "auto" or "none").
+ipv6_network_interfaces="AUTO"	# List of IPv6 network interfaces
+ipv6_prefer="YES" 		# Use IPv6 when both IPv4 and IPv6 can be used
+ipv6_privacy="NO" 		# Use privacy addresses with RTADV (RFC 4193)
 ipv6_defaultrouter="NO"		# Set to IPv6 default gateway (or NO).
 #ipv6_defaultrouter="2002:c058:6301::"	# Use this for 6to4 (RFC 3068)
 ipv6_static_routes=""		# Set to static route list (or leave empty).
@@ -499,7 +501,6 @@ ipv6_ipfilter_rules="/etc/ipf6.rules"	# 
 					# for examples
 ip6addrctl_enable="YES"	# Set to YES to enable default address selection
 ip6addrctl_verbose="NO"	# Set to YES to enable verbose configuration messages
-ipv6_prefer="NO"	# Use IPv6 when both IPv4 and IPv6 can be used
 
 ##############################################################
 ###  System console options  #################################

Modified: head/etc/network.subr
==============================================================================
--- head/etc/network.subr	Fri Apr  9 01:33:12 2010	(r206407)
+++ head/etc/network.subr	Fri Apr  9 01:35:09 2010	(r206408)
@@ -96,44 +96,32 @@ ifconfig_up()
 	# inet6 specific
 	if afexists inet6; then
 		if ipv6if $1; then
-			if checkyesno ipv6_gateway_enable; then
-				_ipv6_opts="-accept_rtadv"
-			fi
-		else
-			if checkyesno ipv6_prefer; then
-				_ipv6_opts="-ifdisabled"
-			else
-				_ipv6_opts="ifdisabled"
+			# Implicitly handles ipv6_gateway_enable
+			_ipv6_opts='-ifdisabled -accept_rtadv'
+
+			if ipv6_autoconfif $1; then
+				_ipv6_opts='-ifdisabled accept_rtadv'
 			fi
 
-			# backward compatibility: $ipv6_enable
-			case $ipv6_enable in
-			[Yy][Ee][Ss])
-				_ipv6_opts="${_ipv6_opts} accept_rtadv"
-				;;
-			esac
-		fi
+			ifconfig $1 inet6 $_ipv6_opts
 
-		if [ -n "${_ipv6_opts}" ]; then
-			ifconfig $1 inet6 ${_ipv6_opts}
-		fi
+			# ifconfig_IF_ipv6
+			ifconfig_args=`ifconfig_getargs $1 ipv6`
 
-		# ifconfig_IF_ipv6
-		ifconfig_args=`ifconfig_getargs $1 ipv6`
-		if [ -n "${ifconfig_args}" ]; then
-			ifconfig $1 inet6 -ifdisabled
-			ifconfig $1 ${ifconfig_args}
-			_cfg=0
-		fi
+			if [ -n "$ifconfig_args" ]; then
+				ifconfig $1 $ifconfig_args
+				_cfg=0
+			fi
+		else
+		# Remove in FreeBSD 10.x
+		# Explicit test is necessary here to avoid nonexistence error
+			case "$ipv6_enable" in
+			[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
+			warn "Interface $1 will NOT be configured for IPv6"
+				;;
+			esac
 
-		# backward compatiblity: $ipv6_ifconfig_IF
-		ifconfig_args=`get_if_var $1 ipv6_ifconfig_IF`
-		if [ -n "${ifconfig_args}" ]; then
-			warn "\$ipv6_ifconfig_$1 is obsolete." \
-			    "  Use ifconfig_$1_ipv6 instead."
-			ifconfig $1 inet6 -ifdisabled
-			ifconfig $1 inet6 ${ifconfig_args}
-			_cfg=0
+			ifconfig $1 inet6 ifdisabled
 		fi
 	fi
 
@@ -194,7 +182,7 @@ ifconfig_down()
 #	$default if given.
 get_if_var()
 {
-	local _if _punct _var _default prefix suffix
+	local _if _punct _punct_c _var _default prefix suffix
 
 	if [ $# -ne 2 -a $# -ne 3 ]; then
 		err 3 'USAGE: get_if_var name var [default]'
@@ -219,7 +207,7 @@ get_if_var()
 #	outside this file.
 _ifconfig_getargs()
 {
-	local _ifn _af
+	local _ifn _af value
 	_ifn=$1
 	_af=${2+_$2}
 
@@ -227,7 +215,18 @@ _ifconfig_getargs()
 		return 1
 	fi
 
-	get_if_var $_ifn ifconfig_IF$_af "$ifconfig_DEFAULT"
+	value=`get_if_var $_ifn ifconfig_IF$_af "$ifconfig_DEFAULT"`
+
+	# Remove in FreeBSD 10.x
+	if [ "$_af" = _ipv6 -a -z "$value" ]; then
+		value=`get_if_var $_ifn ipv6_ifconfig_IF "$ifconfig_DEFAULT"`
+		if [ -n "$value" ]; then
+			warn "\$ipv6_ifconfig_$1 is obsolete." \
+			"  Use ifconfig_$1_ipv6 instead."
+		fi
+	fi
+
+	echo $value
 }
 
 # ifconfig_getargs if [af]
@@ -249,6 +248,8 @@ ifconfig_getargs()
 		[Nn][Oo][Ss][Yy][Nn][Cc][Dd][Hh][Cc][Pp]) ;;
 		[Ss][Yy][Nn][Cc][Dd][Hh][Cc][Pp]) ;;
 		[Ww][Pp][Aa]) ;;
+		[Rr][Tt][Aa][Dd][Vv]) ;;
+		[Nn][Oo][Rr][Tt][Aa][Dd][Vv]) ;;
 		*)
 			_args="$_args $_arg"
 			;;
@@ -372,77 +373,45 @@ afexists()
 	esac
 }
 
-# noafif if
-#	Returns 0 if the interface has no af configuration and 1 otherwise.
-noafif()
-{
-	local _if
-	_if=$1
-
-	case $_if in
-	pflog[0-9]*|\
-	pfsync[0-9]*|\
-	an[0-9]*|\
-	ath[0-9]*|\
-	ipw[0-9]*|\
-	iwi[0-9]*|\
-	iwn[0-9]*|\
-	ral[0-9]*|\
-	wi[0-9]*|\
-	wl[0-9]*|\
-	wpi[0-9]*)
-		return 0
-		;;
-	esac
-
-	return 1
-}
-
 # ipv6if if
 #	Returns 0 if the interface should be configured for IPv6 and
 #	1 otherwise.
 ipv6if()
 {
-	local _if _tmpargs i
-	_if=$1
-
 	if ! afexists inet6; then
 		return 1
 	fi
 
 	# lo0 is always IPv6-enabled
-	case $_if in
+	case $1 in
 	lo0)
 		return 0
 		;;
 	esac
 
-	# True if $ifconfig_IF_ipv6 is defined.
-	_tmpargs=`_ifconfig_getargs $_if ipv6`
-	if [ -n "${_tmpargs}" ]; then
-		return 0
-	fi
-
-	# backward compatibility: True if $ipv6_ifconfig_IF is defined.
-	_tmpargs=`get_if_var $_if ipv6_ifconfig_IF`
-	if [ -n "${_tmpargs}" ]; then
-		return 0
-	fi
+	local _if _tmpargs i
+	_if=$1
 
-	case "${ipv6_network_interfaces}" in
-	[Aa][Uu][Tt][Oo])
-		return 0
-		;;
+	case "$ipv6_network_interfaces" in
 	''|[Nn][Oo][Nn][Ee])
 		return 1
 		;;
+	$_if|"$_if "*|*" $_if"|*" $_if "*|[Aa][Uu][Tt][Oo])
+		# True if $ifconfig_IF_ipv6 is defined.
+		_tmpargs=`_ifconfig_getargs $_if ipv6`
+		;;
 	esac
 
-	for i in ${ipv6_network_interfaces}; do
-		if [ "$i" = "$_if" ]; then
-			return 0
-		fi
-	done
+	if [ -n "$_tmpargs" ]; then
+		# Remove in FreeBSD 10.x
+		# Explicit test is necessary here to avoid nonexistence error
+		case "$ipv6_enable" in
+		[Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0)
+			;;
+		*)	return 0
+			;;
+		esac
+	fi
 
 	return 1
 }
@@ -452,15 +421,24 @@ ipv6if()
 #	Stateless Address Configuration, 1 otherwise.
 ipv6_autoconfif()
 {
+	case $1 in
+	lo0|\
+	stf[0-9]*|\
+	faith[0-9]*|\
+	lp[0-9]*|\
+	sl[0-9]*|\
+	pflog[0-9]*|\
+	pfsync[0-9]*)
+		return 1
+		;;
+	esac
+
 	local _if _tmpargs _arg
 	_if=$1
 
 	if ! ipv6if $_if; then
 		return 1
 	fi
-	if noafif $_if; then
-		return 1
-	fi
 	if checkyesno ipv6_gateway_enable; then
 		return 1
 	fi
@@ -468,45 +446,24 @@ ipv6_autoconfif()
 	if [ -n "${_tmpargs}" ]; then
 		return 1
 	fi
+	if ! is_wired_interface $_if; then
+		case $_if in
+		wlan[0-9]*)	;;	# Allow test to continue
+		*)	return 1
+			;;
+		esac
+	fi
 
-	case $_if in
-	lo0|\
-	stf[0-9]*|\
-	faith[0-9]*|\
-	lp[0-9]*|\
-	sl[0-9]*|\
-	pflog[0-9]*|\
-	pfsync[0-9]*)
+	_tmpargs=`_ifconfig_getargs $_if ipv6`
+	case "$_tmpargs" in
+	*inet6\ *|*[Nn][Oo][Rr][Tt][Aa][Dd][Vv]*|*-accept_rtadv*)
 		return 1
 		;;
-	esac
-
-	# backward compatibility: $ipv6_enable
-	case $ipv6_enable in
-	[Yy][Ee][Ss])
+	*[Rr][Tt][Aa][Dd][Vv]*|*accept_rtadv*)
 		return 0
 		;;
 	esac
 
-	_tmpargs=`_ifconfig_getargs $_if ipv6`
-	for _arg in $_tmpargs; do
-		case $_arg in
-		accept_rtadv)
-			return 0
-			;;
-		esac
-	done
-
-	# backward compatibility: $ipv6_ifconfig_IF
-	_tmpargs=`get_if_var $_if ipv6_ifconfig_IF`
-	for _arg in $_tmpargs; do
-		case $_arg in
-		accept_rtadv)
-			return 0
-			;;
-		esac
-	done
-
 	return 1
 }
 

Modified: head/etc/rc.d/ip6addrctl
==============================================================================
--- head/etc/rc.d/ip6addrctl	Fri Apr  9 01:33:12 2010	(r206407)
+++ head/etc/rc.d/ip6addrctl	Fri Apr  9 01:35:09 2010	(r206408)
@@ -20,8 +20,6 @@ status_cmd="ip6addrctl"
 prefer_ipv6_cmd="ip6addrctl_prefer_ipv6"
 prefer_ipv4_cmd="ip6addrctl_prefer_ipv4"
 
-set_rcvar_obsolete ipv6_enable ipv6_prefer
-
 ip6addrctl_prefer_ipv6()
 {
 	afexists inet6 || return 0

Modified: head/etc/rc.d/netif
==============================================================================
--- head/etc/rc.d/netif	Fri Apr  9 01:33:12 2010	(r206407)
+++ head/etc/rc.d/netif	Fri Apr  9 01:35:09 2010	(r206408)
@@ -34,6 +34,7 @@
 . /etc/network.subr
 
 name="network"
+start_precmd="network_prestart"
 start_cmd="network_start"
 stop_cmd="network_stop"
 cloneup_cmd="clone_up"
@@ -41,7 +42,13 @@ clonedown_cmd="clone_down"
 extra_commands="cloneup clonedown"
 cmdifn=
 
-set_rcvar_obsolete ipv6_enable ipv6_prefer
+network_prestart()
+{
+	if [ -n "$ipv6_enable" ]; then
+		warn 'The ipv6_enable option is deprecated.'
+		warn 'See rc.conf(5) for information on disabling IPv6.'
+	fi
+}
 
 network_start()
 {

Modified: head/etc/rc.d/netoptions
==============================================================================
--- head/etc/rc.d/netoptions	Fri Apr  9 01:33:12 2010	(r206407)
+++ head/etc/rc.d/netoptions	Fri Apr  9 01:35:09 2010	(r206408)
@@ -99,6 +99,13 @@ netoptions_inet6()
 	else
 		${SYSCTL_W} net.inet6.ip6.v6only=1 >/dev/null
 	fi
+
+	if checkyesno ipv6_privacy; then
+		netoptions_init
+		echo -n " IPv6 Privacy Addresses"
+		${SYSCTL_W} net.inet6.ip6.use_tempaddr=1 >/dev/null
+		${SYSCTL_W} net.inet6.ip6.prefer_tempaddr=1 >/dev/null
+	fi
 }
 
 load_rc_config $name

Modified: head/share/man/man5/rc.conf.5
==============================================================================
--- head/share/man/man5/rc.conf.5	Fri Apr  9 01:33:12 2010	(r206407)
+++ head/share/man/man5/rc.conf.5	Fri Apr  9 01:35:09 2010	(r206408)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd March 05, 2010
+.Dd April 8, 2010
 .Dt RC.CONF 5
 .Os
 .Sh NAME
@@ -1292,79 +1292,98 @@ It is also possible to rename an interfa
 ifconfig_ed0_name="net0"
 ifconfig_net0="inet 192.0.2.1 netmask 0xffffff00"
 .Ed
+.\" Remove in FreeBSD 10.x
 .It Va ipv6_enable
 .Pq Vt bool
-If the variable is
-.Dq Li YES ,
-.Dq Li inet6 accept_rtadv
-is added to all of
-.Va ifconfig_ Ns Ao Ar interface Ac Ns _ipv6
-and the
-.Va ipv6_prefer
-is defined as
-.Dq Li YES .
 .Pp
-This variable is deprecated.  Use
-.Va ipv6_prefer
-and
-.Va ifconfig_ Ns Ao Ar interface Ac Ns _ipv6 .
-.It Va ipv6_prefer
-.Pq Vt bool
-This variable does the following:
+This option is deprecated.
 .Pp
 If the variable is
-.Dq Li YES ,
-the default policy of the source address selection set by
-.Xr ip6addrctl 8
-will be IPv6-preferred.
+.Dq Li YES
+it has no effect.
+To configure IPv6 for an interface see
+.Va ipv6_network_interfaces
+below.
 .Pp
 If the variable is
-.Dq Li NO ,
-the default policy of the source address selection set by
-.Xr ip6addrctl 8
-will be IPv4-preferred, and all of interfaces which does not have the
-corrsponding
-.Va ifconfig_ Ns Ao Ar interface Ac Ns _ipv6
-variable will be marked as
-.Dq Li IFDISABLED .
-This means only IPv6 functionality on that interface is completely
-disabled.  For more details of
-.Dq Li IFDISABLED
-flag and keywords
-.Dq Li inet6 ifdisabled ,
-see
-.Xr ifconfig 8 .
-.Pp
+.Dq Li NO
+then other than
+.Dq Li lo0
+IPv6 will be disabled for each interface,
+however the same effect can be achieved by
+not configuring the interface.
 .It Va ipv6_network_interfaces
 .Pq Vt str
 This is the IPv6 equivalent of
 .Va network_interfaces .
-Normally manual configuration of this variable is not needed.
+Normally configuration of this variable is not needed,
+the value should be left as
+.Dq Li AUTO .
+.Pp
+If
+.Dq Li INET6
+is configured in the kernel configuration for the
+.Dq Li lo0
+interface will always be performed.
+It is not necessary to list it in
+.Va ipv6_network_interfaces .
+.Pp
+Example configuration to accept Router Advertisements (RA) for the
+.Dq Li ed0
+interface:
+.Bd -literal
+ifconfig_ed0_ipv6="RTADV"
+.Ed
+.Pp
+To disable RA the
+.Dq Li NORTADV
+option is available, although not required if manual
+configuration is performed as described below.
+.Pp
+An IPv6 interface can be configured manually with
+.Va ifconfig_ Ns Ao Ar interface Ac Ns _ipv6 .
+For example:
+.Bd -literal
+ifconfig_ed0_ipv6="inet6 2001:db8:1::1 prefixlen 64"
+.Ed
+.Pp
+Manual configuration of an IPv6 address will also
+require configuration of the
+.Va ipv6_defaultrouter
+option.
 .Pp
-IPv6 functionality on an interface should be configured by
-.Va ifconfig_ Ns Ao Ar interface Ac Ns _ipv6 ,
-instead of setting ifconfig parameters in
-.Va ifconfig_ Ns Aq Ar interface .
 Aliases should be set by
 .Va ifconfig_ Ns Ao Ar interface Ac Ns Va _alias Ns Aq Ar n
-with
+with the
 .Dq Li inet6
-keyword.  For example:
+keyword.
+For example:
+.Pp
 .Bd -literal
-ifconfig_ed0_ipv6="inet6 2001:db8:1::1 prefixlen 64"
 ifconfig_ed0_alias0="inet6 2001:db8:2::1 prefixlen 64"
 .Ed
 .Pp
-Interfaces that have an
-.Dq Li inet6 accept_rtadv
-keyword in
-.Va ifconfig_ Ns Ao Ar interface Ac Ns _ipv6
-setting will be automatically configured by
-.Xr rtsol 8 .
-Note that this automatic configuration is disabled if the
-.Va ipv6_gateway_enable
-is set to
-.Dq Li YES .
+.It Va ipv6_prefer
+.Pq Vt bool
+If the variable is
+.Dq Li YES ,
+the default policy of the source address selection set by
+.Xr ip6addrctl 8
+will be IPv6-preferred.
+.Pp
+If the variable is
+.Dq Li NO ,
+the default policy of the source address selection set by
+.Xr ip6addrctl 8
+will be IPv4-preferred.
+.Pp
+.It Va ipv6_privacy
+.Pq Vt bool
+If the variable is
+.Dq Li YES
+privacy addresses will be generated for each IPv6
+interface as described in RFC 4193.
+.Pp
 .It Va ipv6_prefix_ Ns Aq Ar interface
 .Pq Vt str
 If one or more prefixes are defined in

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 01:55:24 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id C218F1065672
	for ; Fri,  9 Apr 2010 01:55:24 +0000 (UTC)
	(envelope-from dougb@FreeBSD.org)
Received: from mail2.fluidhosting.com (mx21.fluidhosting.com [204.14.89.4])
	by mx1.freebsd.org (Postfix) with ESMTP id 510E48FC16
	for ; Fri,  9 Apr 2010 01:55:24 +0000 (UTC)
Received: (qmail 17891 invoked by uid 399); 9 Apr 2010 01:55:23 -0000
Received: from localhost (HELO foreign.dougb.net)
	(dougb@dougbarton.us@127.0.0.1)
	by localhost with ESMTPAM; 9 Apr 2010 01:55:23 -0000
X-Originating-IP: 127.0.0.1
X-Sender: dougb@dougbarton.us
Message-ID: <4BBE8909.1060102@FreeBSD.org>
Date: Thu, 08 Apr 2010 18:55:21 -0700
From: Doug Barton 
Organization: http://SupersetSolutions.com/
User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US;
	rv:1.9.1.9) Gecko/20100330 Thunderbird/3.0.4
MIME-Version: 1.0
To: src-committers@freebsd.org, svn-src-all@freebsd.org, 
	svn-src-head@freebsd.org
References: <201004090135.o391Z9q2092650@svn.freebsd.org>
In-Reply-To: <201004090135.o391Z9q2092650@svn.freebsd.org>
X-Enigmail-Version: 1.0.1
OpenPGP: id=D5B2F0FB
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Cc: 
Subject: Re: svn commit: r206408 - in head: etc etc/defaults etc/rc.d
	share/man/man5
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 01:55:24 -0000

On 04/08/10 18:35, Doug Barton wrote:
>   Switch ipv6_prefer to YES. If ipv6_enable is not set 

This should have read "If IPv6 is not configured ..."


Sorry for any confusion,

Doug

-- 

	... and that's just a little bit of history repeating.
			-- Propellerheads

	Improve the effectiveness of your Internet presence with
	a domain name makeover!    http://SupersetSolutions.com/


From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 02:15:48 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 06EB01065674
	for ; Fri,  9 Apr 2010 02:15:48 +0000 (UTC)
	(envelope-from moonlightakkiy@yahoo.ca)
Received: from web51803.mail.re2.yahoo.com (web51803.mail.re2.yahoo.com
	[206.190.38.234])
	by mx1.freebsd.org (Postfix) with SMTP id A38B68FC19
	for ; Fri,  9 Apr 2010 02:15:47 +0000 (UTC)
Received: (qmail 56473 invoked by uid 60001); 9 Apr 2010 02:15:46 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.ca; s=s1024;
	t=1270779346; bh=RwqKaNDoEvaAgbhnyVjH4avP69nT7xBGVCrDV3BBZ4I=;
	h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type;
	b=AGiuUOfqAC1HiyQ6UknR9JLRw4Fjdg7UrOcKpE/hLgt8oV9UMQahUlxpU/x95qh/qSshrVLuz+BWyl37zgkMWTk6srWzDg/qhx0WuAcA7ifx5SB/ggvVmK08NEvRHbYbqCkafz1CNMVcV1fxuHcluR4fL8mF8Ecgff4QrxD0i+o=
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.ca;
	h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type;
	b=aIRVyraygwGMnWAWkbXKCSLtH4Y00fMpRQZ1RiTbkYuv18yRyaAvTyEFhWKHJWes5u0Th6XBrJ5HDTAYzzA0X6PiB/J1YqUDMsBCU6Fa8EpxNQirOQZEo2ZpOkPeTlC/tU4H563x3pN8RbcSe9dId/eBlkbFALheugKZ31iIsBE=;
Message-ID: <488108.55494.qm@web51803.mail.re2.yahoo.com>
X-YMail-OSG: eyiRXL8VM1nW1onI1bGt2fx71BEk4GRfbYp3qvaD_apjMWkZJT5xf4hSixcD6TJVy25JqbVHy9_BVKo5w7dPbpI975q1ILuVVhLjwvMrczd0bPW5DY.sjRaSNd05UQqoRG0aXoNKV1oFyPJ9y7udX5m.Gr2Dz.sQeNa3H0KoCfAxdgJJjA16bY8vlKRQihJxOLDQfw.D7tyZ2hVe9hZatWd0gLboj3BbJwJoSAGawLSAbdQYK1KL9CRbQI1MdfwNjy2roGnVbAY3T1O0pqawGIn89_hmrPS9e9IfrK7VIdmz2yzHoSiLIQTG6GWl7HGp4z0VYp.JUWTdWQzJkYaNoHke92LvslIQY.KK7ePl6F81
Received: from [173.183.132.20] by web51803.mail.re2.yahoo.com via HTTP;
	Thu, 08 Apr 2010 19:15:46 PDT
X-Mailer: YahooMailRC/324.3 YahooMailWebService/0.8.100.260964
References: <20100407165048.8CF9E106566B@hub.freebsd.org>
Date: Thu, 8 Apr 2010 19:15:46 -0700 (PDT)
From: PseudoCylon 
To: Rui Paulo , svn-src-head@freebsd.org
In-Reply-To: <20100407165048.8CF9E106566B@hub.freebsd.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Cc: svn-src-all@freebsd.org, src-committers@freebsd.org
Subject: Re: svn commit: r206358 (patch for if_run)
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 02:15:48 -0000

>>Author: rpaulo
>>Date: Wed Apr  7 15:29:13 2010
>>New Revision: 206358
>>URL: http://svn.freebsd.org/changeset/base/206358
>>
>>Log:
>>  net80211 rate control framework (net80211 ratectl).
>>  
>>  This framework allows drivers to abstract the rate control algorithm and
>>  just feed the framework with the usable parameters. The rate control
>>  framework will now deal with passing the parameters to the selected
>>  algorithm. Right now we have AMRR (the default) and RSSADAPT but there's
>>  no way to select one with ifconfig, yet.
>>  The objective is to have more rate control algorithms in the net80211
>>  stack so all drivers[0] can use it. Ideally, we'll have the well-known
>>  sample rate control algorithm in the net80211 at some point so all
>>  drivers can use it (not just ath).
>>
>
>Hello,
>
>I've just tried the commit and run(4) works fine out of the box. It properly updates the rate.
>
>Thank you for updating the driver.
>
>AK
>

Sorry, correction.

I've got complain from witness

uma_zalloc_arg: zone "64" with the following non-sleepable locks held:
exclusive sleep mutex run0 (network driver) r = 0 (0xffffff80008de128) locked @ /usr/src/sys/dev/usb/usb_request.c:540
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
_witness_debugger() at _witness_debugger+0x2e
witness_warn() at witness_warn+0x2c2
uma_zalloc_arg() at uma_zalloc_arg+0x335
malloc() at malloc+0x9a
amrr_node_init() at amrr_node_init+0x38
run_newstate() at run_newstate+0x363
ieee80211_newstate_cb() at ieee80211_newstate_cb+0xac
taskqueue_run() at taskqueue_run+0x91
taskqueue_thread_loop() at taskqueue_thread_loop+0x3f
fork_exit() at fork_exit+0x12a
fork_trampoline() at fork_trampoline+0xe
--- trap 0, rip = 0, rsp = 0xffffff803e5d0d30, rbp = 0 ---

Just unlocking the mutex before calling ieee80211_ratectl_node_init() fix this. As long as ieee80211_ratectl_node_init() won't be called with the same ni at the same time, unlocking should be safe.

Here is patch

*** orig_if_run.c    2010-04-08 03:29:31.000000000 -0600
--- fix_if_run.c    2010-04-08 19:52:45.000000000 -0600
***************
*** 1965,1969 ****
      uint32_t sta[3];
- #if 0
-     uint8_t wcid;
- #endif
  
--- 1965,1966 ----
***************
*** 1975,1981 ****
  
! #if 0
!     wcid = RUN_AID2WCID(ni == NULL ? 0 : ni->ni_associd);
!     ieee80211_amrr_node_init(&rvp->amrr, &rvp->amn[wcid], ni);
! #endif
      ieee80211_ratectl_node_init(ni);
  
--- 1972,1976 ----
  
!     RUN_UNLOCK(sc);
      ieee80211_ratectl_node_init(ni);
+     RUN_LOCK(sc);
  
***************
*** 2096,2102 ****
  
- #if 0
-         wcid = RUN_AID2WCID(ni == NULL ? 0 : ni->ni_associd);
-         amn = &rvp->amn[wcid];
- #endif
- 
          /* count failed TX as errors */
--- 2091,2092 ----



P.S.
#if 0s (amn[]) are no longer needed because now each amrr node is attached to individual ieee80211_node.

AK



      __________________________________________________________________
Yahoo! Canada Toolbar: Search from anywhere on the web, and bookmark your favourite sites. Download it now
http://ca.toolbar.yahoo.com.

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 02:39:21 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 7F7C9106564A;
	Fri,  9 Apr 2010 02:39:21 +0000 (UTC) (envelope-from alc@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 6F0348FC18;
	Fri,  9 Apr 2010 02:39:21 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o392dLTA007455;
	Fri, 9 Apr 2010 02:39:21 GMT (envelope-from alc@svn.freebsd.org)
Received: (from alc@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o392dL1u007454;
	Fri, 9 Apr 2010 02:39:21 GMT (envelope-from alc@svn.freebsd.org)
Message-Id: <201004090239.o392dL1u007454@svn.freebsd.org>
From: Alan Cox 
Date: Fri, 9 Apr 2010 02:39:20 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206409 - head/sys/vm
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 02:39:21 -0000

Author: alc
Date: Fri Apr  9 02:39:20 2010
New Revision: 206409
URL: http://svn.freebsd.org/changeset/base/206409

Log:
  Introduce the function kmem_alloc_attr(), which allocates kernel virtual
  memory with the specified physical attributes.  In particular, like
  kmem_alloc_contig(), the caller can specify the physical address range
  from which the physical pages are allocated and the memory attributes
  (i.e., cache behavior) for these physical pages.  However, in contrast to
  kmem_alloc_contig() or contigmalloc(), the physical pages that are
  allocated by kmem_alloc_attr() are not necessarily physically contiguous.
  This function is needed by DRM and VirtualBox.
  
  Correct an error in the prototype for kmem_malloc().  The third argument
  had the wrong type.
  
  Tested by:	rnoland
  MFC after:	3 days

Modified:
  head/sys/vm/vm_contig.c
  head/sys/vm/vm_extern.h

Modified: head/sys/vm/vm_contig.c
==============================================================================
--- head/sys/vm/vm_contig.c	Fri Apr  9 01:35:09 2010	(r206408)
+++ head/sys/vm/vm_contig.c	Fri Apr  9 02:39:20 2010	(r206409)
@@ -87,6 +87,8 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 
+static void vm_contig_grow_cache(int tries);
+
 static int
 vm_contig_launder_page(vm_page_t m, vm_page_t *next)
 {
@@ -186,6 +188,99 @@ vm_page_release_contig(vm_page_t m, vm_p
 }
 
 /*
+ * Increase the number of cached pages.
+ */
+static void
+vm_contig_grow_cache(int tries)
+{
+	int actl, actmax, inactl, inactmax;
+
+	vm_page_lock_queues();
+	inactl = 0;
+	inactmax = tries < 1 ? 0 : cnt.v_inactive_count;
+	actl = 0;
+	actmax = tries < 2 ? 0 : cnt.v_active_count;
+again:
+	if (inactl < inactmax && vm_contig_launder(PQ_INACTIVE)) {
+		inactl++;
+		goto again;
+	}
+	if (actl < actmax && vm_contig_launder(PQ_ACTIVE)) {
+		actl++;
+		goto again;
+	}
+	vm_page_unlock_queues();
+}
+
+/*
+ * Allocates a region from the kernel address map and pages within the
+ * specified physical address range to the kernel object, creates a wired
+ * mapping from the region to these pages, and returns the region's starting
+ * virtual address.  The allocated pages are not necessarily physically
+ * contiguous.  If M_ZERO is specified through the given flags, then the pages
+ * are zeroed before they are mapped.
+ */
+vm_offset_t
+kmem_alloc_attr(vm_map_t map, vm_size_t size, int flags, vm_paddr_t low,
+    vm_paddr_t high, vm_memattr_t memattr)
+{
+	vm_object_t object = kernel_object;
+	vm_offset_t addr, i, offset;
+	vm_page_t m;
+	int tries;
+
+	size = round_page(size);
+	vm_map_lock(map);
+	if (vm_map_findspace(map, vm_map_min(map), size, &addr)) {
+		vm_map_unlock(map);
+		return (0);
+	}
+	offset = addr - VM_MIN_KERNEL_ADDRESS;
+	vm_object_reference(object);
+	vm_map_insert(map, object, offset, addr, addr + size, VM_PROT_ALL,
+	    VM_PROT_ALL, 0);
+	VM_OBJECT_LOCK(object);
+	for (i = 0; i < size; i += PAGE_SIZE) {
+		tries = 0;
+retry:
+		m = vm_phys_alloc_contig(1, low, high, PAGE_SIZE, 0);
+		if (m == NULL) {
+			if (tries < ((flags & M_NOWAIT) != 0 ? 1 : 3)) {
+				VM_OBJECT_UNLOCK(object);
+				vm_map_unlock(map);
+				vm_contig_grow_cache(tries);
+				vm_map_lock(map);
+				VM_OBJECT_LOCK(object);
+				goto retry;
+			}
+			while (i != 0) {
+				i -= PAGE_SIZE;
+				m = vm_page_lookup(object, OFF_TO_IDX(offset +
+				    i));
+				vm_page_lock_queues();
+				vm_page_free(m);
+				vm_page_unlock_queues();
+			}
+			VM_OBJECT_UNLOCK(object);
+			vm_map_delete(map, addr, addr + size);
+			vm_map_unlock(map);
+			return (0);
+		}
+		if (memattr != VM_MEMATTR_DEFAULT)
+			pmap_page_set_memattr(m, memattr);
+		vm_page_insert(m, object, OFF_TO_IDX(offset + i));
+		if ((flags & M_ZERO) && (m->flags & PG_ZERO) == 0)
+			pmap_zero_page(m);
+		m->valid = VM_PAGE_BITS_ALL;
+	}
+	VM_OBJECT_UNLOCK(object);
+	vm_map_unlock(map);
+	vm_map_wire(map, addr, addr + size, VM_MAP_WIRE_SYSTEM |
+	    VM_MAP_WIRE_NOHOLES);
+	return (addr);
+}
+
+/*
  *	Allocates a region from the kernel address map, inserts the
  *	given physically contiguous pages into the kernel object,
  *	creates a wired mapping from the region to the pages, and
@@ -253,7 +348,7 @@ kmem_alloc_contig(vm_map_t map, vm_size_
 	vm_offset_t ret;
 	vm_page_t pages;
 	unsigned long npgs;
-	int actl, actmax, inactl, inactmax, tries;
+	int tries;
 
 	size = round_page(size);
 	npgs = size >> PAGE_SHIFT;
@@ -262,23 +357,7 @@ retry:
 	pages = vm_phys_alloc_contig(npgs, low, high, alignment, boundary);
 	if (pages == NULL) {
 		if (tries < ((flags & M_NOWAIT) != 0 ? 1 : 3)) {
-			vm_page_lock_queues();
-			inactl = 0;
-			inactmax = tries < 1 ? 0 : cnt.v_inactive_count;
-			actl = 0;
-			actmax = tries < 2 ? 0 : cnt.v_active_count;
-again:
-			if (inactl < inactmax &&
-			    vm_contig_launder(PQ_INACTIVE)) {
-				inactl++;
-				goto again;
-			}
-			if (actl < actmax &&
-			    vm_contig_launder(PQ_ACTIVE)) {
-				actl++;
-				goto again;
-			}
-			vm_page_unlock_queues();
+			vm_contig_grow_cache(tries);
 			tries++;
 			goto retry;
 		}

Modified: head/sys/vm/vm_extern.h
==============================================================================
--- head/sys/vm/vm_extern.h	Fri Apr  9 01:35:09 2010	(r206408)
+++ head/sys/vm/vm_extern.h	Fri Apr  9 02:39:20 2010	(r206409)
@@ -41,6 +41,8 @@ struct vnode;
 
 int kernacc(void *, int, int);
 vm_offset_t kmem_alloc(vm_map_t, vm_size_t);
+vm_offset_t kmem_alloc_attr(vm_map_t map, vm_size_t size, int flags,
+    vm_paddr_t low, vm_paddr_t high, vm_memattr_t memattr);
 vm_offset_t kmem_alloc_contig(vm_map_t map, vm_size_t size, int flags,
     vm_paddr_t low, vm_paddr_t high, unsigned long alignment,
     unsigned long boundary, vm_memattr_t memattr);
@@ -49,7 +51,7 @@ vm_offset_t kmem_alloc_wait(vm_map_t, vm
 void kmem_free(vm_map_t, vm_offset_t, vm_size_t);
 void kmem_free_wakeup(vm_map_t, vm_offset_t, vm_size_t);
 void kmem_init(vm_offset_t, vm_offset_t);
-vm_offset_t kmem_malloc(vm_map_t, vm_size_t, boolean_t);
+vm_offset_t kmem_malloc(vm_map_t map, vm_size_t size, int flags);
 vm_map_t kmem_suballoc(vm_map_t, vm_offset_t *, vm_offset_t *, vm_size_t,
     boolean_t);
 void swapout_procs(int);

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 06:59:58 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id ED1A5106567E;
	Fri,  9 Apr 2010 06:59:58 +0000 (UTC)
	(envelope-from bschmidt@mx.techwires.net)
Received: from mx.techwires.net (mx.techwires.net [IPv6:2001:4d88:100f:1::3])
	by mx1.freebsd.org (Postfix) with ESMTP id 8E1E68FC23;
	Fri,  9 Apr 2010 06:59:58 +0000 (UTC)
Received: by mx.techwires.net (Postfix, from userid 1001)
	id 2F50A25384; Fri,  9 Apr 2010 08:59:57 +0200 (CEST)
Date: Fri, 9 Apr 2010 08:59:57 +0200
From: Bernhard Schmidt 
To: PseudoCylon 
Message-ID: <20100409065957.GA6076@mx.techwires.net>
References: <20100407165048.8CF9E106566B@hub.freebsd.org>
	<488108.55494.qm@web51803.mail.re2.yahoo.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <488108.55494.qm@web51803.mail.re2.yahoo.com>
User-Agent: Mutt/1.4.2.3i
Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org,
	src-committers@freebsd.org, Rui Paulo 
Subject: Re: svn commit: r206358 (patch for if_run)
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 06:59:59 -0000

On Thu, Apr 08, 2010 at 07:15:46PM -0700, PseudoCylon wrote:
> >>Author: rpaulo
> >>Date: Wed Apr  7 15:29:13 2010
> >>New Revision: 206358
> >>URL: http://svn.freebsd.org/changeset/base/206358
> >>
> >>Log:
> >>  net80211 rate control framework (net80211 ratectl).
> >>  
> >>  This framework allows drivers to abstract the rate control algorithm and
> >>  just feed the framework with the usable parameters. The rate control
> >>  framework will now deal with passing the parameters to the selected
> >>  algorithm. Right now we have AMRR (the default) and RSSADAPT but there's
> >>  no way to select one with ifconfig, yet.
> >>  The objective is to have more rate control algorithms in the net80211
> >>  stack so all drivers[0] can use it. Ideally, we'll have the well-known
> >>  sample rate control algorithm in the net80211 at some point so all
> >>  drivers can use it (not just ath).
> >>
> >
> >Hello,
> >
> >I've just tried the commit and run(4) works fine out of the box. It properly updates the rate.
> >
> >Thank you for updating the driver.
> >
> >AK
> >
> 
> Sorry, correction.
> 
> I've got complain from witness
> 
> uma_zalloc_arg: zone "64" with the following non-sleepable locks held:
> exclusive sleep mutex run0 (network driver) r = 0 (0xffffff80008de128) locked @ /usr/src/sys/dev/usb/usb_request.c:540
> KDB: stack backtrace:
> db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
> _witness_debugger() at _witness_debugger+0x2e
> witness_warn() at witness_warn+0x2c2
> uma_zalloc_arg() at uma_zalloc_arg+0x335
> malloc() at malloc+0x9a
> amrr_node_init() at amrr_node_init+0x38
> run_newstate() at run_newstate+0x363
> ieee80211_newstate_cb() at ieee80211_newstate_cb+0xac
> taskqueue_run() at taskqueue_run+0x91
> taskqueue_thread_loop() at taskqueue_thread_loop+0x3f
> fork_exit() at fork_exit+0x12a
> fork_trampoline() at fork_trampoline+0xe
> --- trap 0, rip = 0, rsp = 0xffffff803e5d0d30, rbp = 0 ---
> 
> Just unlocking the mutex before calling ieee80211_ratectl_node_init() fix this. As long as ieee80211_ratectl_node_init() won't be called with the same ni at the same time, unlocking should be safe.

I'd prefer M_NOWAIT instead of M_WAITOK in amrr_node_init(). Fiddling
with locking doesn't feel right.

-- 
Bernhard

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 07:27:31 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 80FB9106566B;
	Fri,  9 Apr 2010 07:27:31 +0000 (UTC)
	(envelope-from netchild@freebsd.org)
Received: from mail.ebusiness-leidinger.de (mail.ebusiness-leidinger.de
	[217.11.53.44])
	by mx1.freebsd.org (Postfix) with ESMTP id 0C82E8FC0C;
	Fri,  9 Apr 2010 07:27:30 +0000 (UTC)
Received: from outgoing.leidinger.net (pD9E2CF0E.dip.t-dialin.net
	[217.226.207.14])
	by mail.ebusiness-leidinger.de (Postfix) with ESMTPSA id 5895B8442D0;
	Fri,  9 Apr 2010 09:27:24 +0200 (CEST)
Received: from webmail.leidinger.net (webmail.leidinger.net [192.168.1.102])
	by outgoing.leidinger.net (Postfix) with ESMTP id 700A35073;
	Fri,  9 Apr 2010 09:27:21 +0200 (CEST)
Received: (from www@localhost)
	by webmail.leidinger.net (8.14.3/8.13.8/Submit) id o397RLRQ049614;
	Fri, 9 Apr 2010 09:27:21 +0200 (CEST)
	(envelope-from netchild@FreeBSD.org)
Received: from pslux.cec.eu.int (pslux.cec.eu.int [158.169.9.14]) by
	webmail.leidinger.net (Horde Framework) with HTTP; Fri, 09 Apr 2010
	09:27:21 +0200
Message-ID: <20100409092721.19743kgds231hckg@webmail.leidinger.net>
Date: Fri, 09 Apr 2010 09:27:21 +0200
From: Alexander Leidinger 
To: "M. Warner Losh" 
References: <20100405181450.13494itjj2ehj5og@webmail.leidinger.net>
	<20100406.105417.934842008305588111.imp@bsdimp.com>
	<20100407100015.117169nw2iu6xp4w@webmail.leidinger.net>
	<20100408.151213.718265677801106795.imp@bsdimp.com>
In-Reply-To: <20100408.151213.718265677801106795.imp@bsdimp.com>
MIME-Version: 1.0
Content-Type: text/plain;
 charset=UTF-8;
 DelSp="Yes";
 format="flowed"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit
User-Agent: Dynamic Internet Messaging Program (DIMP) H3 (1.1.4)
X-EBL-MailScanner-Information: Please contact the ISP for more information
X-EBL-MailScanner-ID: 5895B8442D0.557E1
X-EBL-MailScanner: Found to be clean
X-EBL-MailScanner-SpamCheck: not spam, spamhaus-ZEN,
	SpamAssassin (not cached, score=-0.763, required 6,
	autolearn=disabled, ALL_TRUSTED -1.44, J_CHICKENPOX_83 0.60,
	TW_SV 0.08)
X-EBL-MailScanner-From: netchild@freebsd.org
X-EBL-MailScanner-Watermark: 1271402847.16232@VQppPvuNkcdH+XrehJAGJg
X-EBL-Spam-Status: No
Cc: kostikbel@gmail.com, svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org,
	src-committers@FreeBSD.org
Subject: Re: svn commit: r206082 - in head: . share/man/man7 share/mk
 sys/conf
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 07:27:31 -0000

Quoting "M. Warner Losh"  (from Thu, 08 Apr 2010  
15:12:13 -0600 (MDT)):

> In message: <20100407100015.117169nw2iu6xp4w@webmail.leidinger.net>
>             Alexander Leidinger  writes:
> : Quoting "M. Warner Losh"  (from Tue, 06 Apr 2010
> : 10:54:17 -0600 (MDT)):
> :
> : > In message: <20100405181450.13494itjj2ehj5og@webmail.leidinger.net>
> : >             Alexander Leidinger  writes:
> : > : Warner, do you mind if I back-out r206082 and change the place where
> : > : NORMAL_CTFCONVERT is used instead (fist I have to search for it
> : > : again... not today)? It would make it consistent with all other
> : > places
> : > : (SYSTEM_CTFCONVERT and the plain test and use of CTFxxx).
> : >
> : > Go ahead.  I just did the fast and dirty fix.  I though it was
> : > consistent with how other things were done, but if not, feel free to
> : > correct it.  Also, see bde's commentary :)
> :
> : I can not find it, can you please forward it to me?
>
> Will do.
>
> : Here is what I have ATM (copy&paste, so tabs are probably mangled):
> : ---snip---
> : Index: usr.sbin/config/mkmakefile.c
> : ===================================================================
> : --- usr.sbin/config/mkmakefile.c        (revision 206031)
> : +++ usr.sbin/config/mkmakefile.c        (working copy)
> : @@ -741,7 +741,7 @@
> :                                 printf("config: don't know rules for %s\n",
> :                                 np); break;
> :                         }
> : -                       snprintf(cmd, sizeof(cmd), "${%s_%c%s}\n.if
> : -                       defined(NORMAL_CTFCONVERT) &&
> : -                        
> !empty(NORMAL_CTFCONVERT)\n\t${NORMAL_CTFCONVERT}\n.endif",
> : -                       ftype,
> : + snprintf(cmd, sizeof(cmd), "${%s_%c%s}\n\t@${NORMAL_CTFCONVERT}",
> : ftype,
> :                             toupper(och),
> :                             ftp->f_flags & NOWERROR ? "_NOWERROR" : "");
> :                         compilewith = cmd;
>
> Uggg, this should have never been put into mkmakefile.c in the first
> place.  I'm concerned that a change like this will have bad effects
> for people that have cross-threaded config and kernels. :(

You need to have a look at the complete code, there is more than only  
the use of NORMAL_CTFCONVERT. Regarding the cross-case, I think it can  
be done by overriding NORMAL_CTFCONVERT (if needed).

> However, go ahead and fix it.  I worry about people with
> cross-threaded kernels, but that won't be a huge deal, I don't think.
> Please monitor the lists to make sure...

Do I understand this right, that you think I shall do it before I get  
the forwarded mail?

Bye,
Alexander.

-- 
http://www.Leidinger.net  Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org     netchild @ FreeBSD.org  : PGP ID = 72077137
There is a 20% chance of tomorrow.


From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 10:24:55 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 52304106566B
	for ; Fri,  9 Apr 2010 10:24:55 +0000 (UTC)
	(envelope-from moonlightakkiy@yahoo.ca)
Received: from web51806.mail.re2.yahoo.com (web51806.mail.re2.yahoo.com
	[206.190.38.237])
	by mx1.freebsd.org (Postfix) with SMTP id E60868FC13
	for ; Fri,  9 Apr 2010 10:24:54 +0000 (UTC)
Received: (qmail 37206 invoked by uid 60001); 9 Apr 2010 10:24:54 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.ca; s=s1024;
	t=1270808694; bh=CiipFimfeFUmj0wALJ2/aQGe+Kiw73O0iVYEt23OHVw=;
	h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding;
	b=tR5/s9xC+tZXrFyzqlRo4C8gGW043Ld/1jIVMqWqo5WCT06gV4TpMB/iP/Ur9u2j10oPq9G+MmgYM+N9SlVvTEjbhbTnYQ6WGpXU0yFuibSY+d/WvnvB56+Oo9Cf4odSoH/xq4LQuyds/WPU99NlziHMUFqRfYw9qyJg+lcklww=
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.ca;
	h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding;
	b=Uz29fUPnHHQnLphf78NA0V5+wPvclKWfYVldub3GeFv7hWXygEQk8NY+fOHgzvSCK/ER1piV0QDM/GJhslt38qjefgTCDdzG+LjH6s0LjXpjl097zGtfYYmWYJnQtD+UPgeDaUKa8mtdFivEAaT/4EAMRjgbNHshWHitMrbvpmU=;
Message-ID: <238707.37181.qm@web51806.mail.re2.yahoo.com>
X-YMail-OSG: s9qadjIVM1mxrTDzECUAtN3lD7GOGKHPCFZpxvkYv2M9w4F4SjfJJcSTquWqQ8AtYLX4ZIyd6TCARdROwJcHjV0aDMcCPQPYWD3rhVZzBspd17rCt3OAuXBsvy9JEdgNzvPmDW0pLTk0CbsX7cxVSolO.O3QXtCqTghrXK_7EcNkPGuEaiJ66wh27Ky0PpPaD.8EVwBiFAd3e.mBmGP1uIRQABWXBlQF2qJwoq.YP5dMlgpH8C7orTb6NFcETeLjwaoEaV2SobQBh0ZBVA5PD.ig1VE9qQa2cRYqNSCdcoTzK799q6z9MXL7UE78NlyQtloHxDCKDhjWx6umlLh4gaJIJg.XEJ9BFeKJ
Received: from [173.183.132.20] by web51806.mail.re2.yahoo.com via HTTP;
	Fri, 09 Apr 2010 03:24:54 PDT
X-Mailer: YahooMailRC/348.3 YahooMailWebService/0.8.100.260964
References: <20100407165048.8CF9E106566B@hub.freebsd.org>
Date: Fri, 9 Apr 2010 03:24:54 -0700 (PDT)
From: PseudoCylon 
To: Rui Paulo , svn-src-head@freebsd.org
In-Reply-To: <20100407165048.8CF9E106566B@hub.freebsd.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Cc: svn-src-all@freebsd.org, src-committers@freebsd.org
Subject: Re: svn commit: r206358 - in head/sys: conf dev/bwi dev/bwn dev/iwn
	dev/ral dev/usb/wlan dev/wpi modules/wlan net80211
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 10:24:55 -0000

>Author: rpaulo=0A>Date: Wed Apr  7 15:29:13 2010=0A>New Revision: 206358=
=0A>URL: http://svn.freebsd.org/changeset/base/206358=0A>=0A>Log:=0A>  net8=
0211 rate control framework (net80211 ratectl).=0A>=0ASorry for frequent po=
st.=0A=0Ain amrr_tx_complete() ieee80211_amrr.c:257-258=0Aif (ok)=0A    amn=
->amn_success++;=0A=0Ain ieee80211_ratectl.h:36-37=0A#define=09IEEE80211_RA=
TECTL_TX_SUCCESS=090=0A#define=09IEEE80211_RATECTL_TX_FAILURE=091=0A=0AAren=
't these other way around? _________^=0A=0AAK=0A=0A=0A      _______________=
___________________________________________________=0AMake your browsing fa=
ster, safer, and easier with the new Internet Explorer=AE 8. Optimized for =
Yahoo! Get it Now for Free! at http://downloads.yahoo.com/ca/internetexplor=
er/

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 11:29:17 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id F3686106566C;
	Fri,  9 Apr 2010 11:29:16 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id E2DB98FC13;
	Fri,  9 Apr 2010 11:29:16 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39BTGAf010965;
	Fri, 9 Apr 2010 11:29:16 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39BTGi5010963;
	Fri, 9 Apr 2010 11:29:16 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004091129.o39BTGi5010963@svn.freebsd.org>
From: Rui Paulo 
Date: Fri, 9 Apr 2010 11:29:16 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206415 - head/sys/net80211
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 11:29:17 -0000

Author: rpaulo
Date: Fri Apr  9 11:29:16 2010
New Revision: 206415
URL: http://svn.freebsd.org/changeset/base/206415

Log:
  Swap IEEE80211_RATECTL_TX_SUCCESS/IEEE80211_RATECTL_TX_FAILURE.
  
  Submitted by:	PseudoCylon Furukoshi 
  MFC after:	1 month

Modified:
  head/sys/net80211/ieee80211_ratectl.h

Modified: head/sys/net80211/ieee80211_ratectl.h
==============================================================================
--- head/sys/net80211/ieee80211_ratectl.h	Fri Apr  9 08:45:30 2010	(r206414)
+++ head/sys/net80211/ieee80211_ratectl.h	Fri Apr  9 11:29:16 2010	(r206415)
@@ -33,8 +33,8 @@ enum ieee80211_ratealgs {
 	IEEE80211_RATECTL_MAX
 };
 
-#define	IEEE80211_RATECTL_TX_SUCCESS	0
-#define	IEEE80211_RATECTL_TX_FAILURE	1
+#define	IEEE80211_RATECTL_TX_SUCCESS	1
+#define	IEEE80211_RATECTL_TX_FAILURE	0
 
 struct ieee80211_ratectl {
 	const char *ir_name;

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 11:47:03 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 862C4106564A;
	Fri,  9 Apr 2010 11:47:03 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 75A4B8FC13;
	Fri,  9 Apr 2010 11:47:03 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39Bl3MO028037;
	Fri, 9 Apr 2010 11:47:03 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39Bl3m7028034;
	Fri, 9 Apr 2010 11:47:03 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004091147.o39Bl3m7028034@svn.freebsd.org>
From: Rui Paulo 
Date: Fri, 9 Apr 2010 11:47:03 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206416 - head/sys/dev/wpi
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 11:47:03 -0000

Author: rpaulo
Date: Fri Apr  9 11:47:03 2010
New Revision: 206416
URL: http://svn.freebsd.org/changeset/base/206416

Log:
  Fix recent breakage: wpi_newassoc() wasn't supposed to be removed and
  it needs to call ieee80211_ratectl_node_init().
  
  Submitted by:	bschmidt
  MFC after:	1 month

Modified:
  head/sys/dev/wpi/if_wpi.c

Modified: head/sys/dev/wpi/if_wpi.c
==============================================================================
--- head/sys/dev/wpi/if_wpi.c	Fri Apr  9 11:29:16 2010	(r206415)
+++ head/sys/dev/wpi/if_wpi.c	Fri Apr  9 11:47:03 2010	(r206416)
@@ -174,6 +174,7 @@ static int	wpi_alloc_tx_ring(struct wpi_
 		    int, int);
 static void	wpi_reset_tx_ring(struct wpi_softc *, struct wpi_tx_ring *);
 static void	wpi_free_tx_ring(struct wpi_softc *, struct wpi_tx_ring *);
+static void	wpi_newassoc(struct ieee80211_node *, int);
 static int	wpi_newstate(struct ieee80211vap *, enum ieee80211_state, int);
 static void	wpi_mem_lock(struct wpi_softc *);
 static void	wpi_mem_unlock(struct wpi_softc *);
@@ -667,6 +668,7 @@ wpi_attach(device_t dev)
 	ieee80211_ifattach(ic, macaddr);
 	/* override default methods */
 	ic->ic_raw_xmit = wpi_raw_xmit;
+	ic->ic_newassoc = wpi_newassoc;
 	ic->ic_wme.wme_update = wpi_wme_update;
 	ic->ic_scan_start = wpi_scan_start;
 	ic->ic_scan_end = wpi_scan_end;
@@ -3195,6 +3197,14 @@ wpi_stop(struct wpi_softc *sc)
 }
 
 static void
+wpi_newassoc(struct ieee80211_node *ni, int isnew)
+{
+
+	/* XXX move */
+	ieee80211_ratectl_node_init(ni);
+}
+
+static void
 wpi_calib_timeout(void *arg)
 {
 	struct wpi_softc *sc = arg;

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 11:56:38 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 7FDB3106564A;
	Fri,  9 Apr 2010 11:56:38 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 6F0688FC17;
	Fri,  9 Apr 2010 11:56:38 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39BucXg036935;
	Fri, 9 Apr 2010 11:56:38 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39BucKI036931;
	Fri, 9 Apr 2010 11:56:38 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004091156.o39BucKI036931@svn.freebsd.org>
From: Rui Paulo 
Date: Fri, 9 Apr 2010 11:56:38 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206417 - head/sys/dev/usb/wlan
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 11:56:38 -0000

Author: rpaulo
Date: Fri Apr  9 11:56:38 2010
New Revision: 206417
URL: http://svn.freebsd.org/changeset/base/206417

Log:
  Remove previously added if 0's.
  
  MFC after:	1 month

Modified:
  head/sys/dev/usb/wlan/if_run.c

Modified: head/sys/dev/usb/wlan/if_run.c
==============================================================================
--- head/sys/dev/usb/wlan/if_run.c	Fri Apr  9 11:47:03 2010	(r206416)
+++ head/sys/dev/usb/wlan/if_run.c	Fri Apr  9 11:56:38 2010	(r206417)
@@ -1963,9 +1963,6 @@ run_ratectl_start(struct run_softc *sc, 
 	struct ieee80211vap *vap = ni->ni_vap;
 	struct run_vap *rvp = RUN_VAP(vap);
 	uint32_t sta[3];
-#if 0
-	uint8_t wcid;
-#endif
 
 	RUN_LOCK_ASSERT(sc, MA_OWNED);
 
@@ -1973,10 +1970,6 @@ run_ratectl_start(struct run_softc *sc, 
 	run_read_region_1(sc, RT2860_TX_STA_CNT0,
 	    (uint8_t *)sta, sizeof sta);
 
-#if 0
-	wcid = RUN_AID2WCID(ni == NULL ? 0 : ni->ni_associd);
-	ieee80211_amrr_node_init(&rvp->amrr, &rvp->amn[wcid], ni);
-#endif
 	ieee80211_ratectl_node_init(ni);
 
 	/* start at lowest available bit-rate, AMRR will raise */
@@ -2094,11 +2087,6 @@ run_iter_func(void *arg, struct ieee8021
 		    le32toh(sta[1]) >> 16, le32toh(sta[1]) & 0xffff,
 		    le32toh(sta[0]) & 0xffff);
 
-#if 0
-		wcid = RUN_AID2WCID(ni == NULL ? 0 : ni->ni_associd);
-		amn = &rvp->amn[wcid];
-#endif
-
 		/* count failed TX as errors */
 		ifp->if_oerrors += le32toh(sta[0]) & 0xffff;
 

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 12:05:25 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 26A2B1065670;
	Fri,  9 Apr 2010 12:05:25 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 15D218FC08;
	Fri,  9 Apr 2010 12:05:25 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39C5OMd045359;
	Fri, 9 Apr 2010 12:05:24 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39C5OD5045357;
	Fri, 9 Apr 2010 12:05:24 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004091205.o39C5OD5045357@svn.freebsd.org>
From: Rui Paulo 
Date: Fri, 9 Apr 2010 12:05:24 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206418 - head/sys/modules/wlan
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 12:05:25 -0000

Author: rpaulo
Date: Fri Apr  9 12:05:24 2010
New Revision: 206418
URL: http://svn.freebsd.org/changeset/base/206418

Log:
  Add ieee80211_{amrr,rssadapt}.c.
  
  MFC after:	1 month

Modified:
  head/sys/modules/wlan/Makefile

Modified: head/sys/modules/wlan/Makefile
==============================================================================
--- head/sys/modules/wlan/Makefile	Fri Apr  9 11:56:38 2010	(r206417)
+++ head/sys/modules/wlan/Makefile	Fri Apr  9 12:05:24 2010	(r206418)
@@ -3,13 +3,13 @@
 .PATH: ${.CURDIR}/../../net80211
 
 KMOD=	wlan
-SRCS=	ieee80211.c ieee80211_action.c ieee80211_ageq.c \
+SRCS=	ieee80211.c ieee80211_action.c ieee80211_ageq.c ieee80211_amrr.c \
 	ieee80211_crypto.c ieee80211_crypto_none.c ieee80211_dfs.c \
 	ieee80211_freebsd.c ieee80211_input.c ieee80211_ioctl.c \
 	ieee80211_mesh.c ieee80211_node.c ieee80211_output.c ieee80211_phy.c \
 	ieee80211_power.c ieee80211_proto.c ieee80211_scan.c \
 	ieee80211_scan_sta.c ieee80211_radiotap.c ieee80211_ratectl.c \
-	ieee80211_regdomain.c \
+	ieee80211_regdomain.c ieee80211_rssadapt.c \
 	ieee80211_ht.c ieee80211_hwmp.c ieee80211_adhoc.c ieee80211_hostap.c \
 	ieee80211_monitor.c ieee80211_sta.c ieee80211_wds.c ieee80211_ddb.c
 SRCS+=	bus_if.h device_if.h opt_inet.h opt_inet6.h opt_ipx.h opt_wlan.h \

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 12:06:19 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 8E0271065674;
	Fri,  9 Apr 2010 12:06:19 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 719718FC1A;
	Fri,  9 Apr 2010 12:06:19 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39C6JaR046374;
	Fri, 9 Apr 2010 12:06:19 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39C6JBo046371;
	Fri, 9 Apr 2010 12:06:19 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004091206.o39C6JBo046371@svn.freebsd.org>
From: Rui Paulo 
Date: Fri, 9 Apr 2010 12:06:19 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206419 - head/sys/net80211
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 12:06:19 -0000

Author: rpaulo
Date: Fri Apr  9 12:06:19 2010
New Revision: 206419
URL: http://svn.freebsd.org/changeset/base/206419

Log:
  Use M_NOWAIT instead of M_WAITOK to avoid race conditions.
  
  MFC after:	1 month

Modified:
  head/sys/net80211/ieee80211_amrr.c
  head/sys/net80211/ieee80211_rssadapt.c

Modified: head/sys/net80211/ieee80211_amrr.c
==============================================================================
--- head/sys/net80211/ieee80211_amrr.c	Fri Apr  9 12:05:24 2010	(r206418)
+++ head/sys/net80211/ieee80211_amrr.c	Fri Apr  9 12:06:19 2010	(r206419)
@@ -110,9 +110,12 @@ amrr_init(struct ieee80211vap *vap)
 
 	KASSERT(vap->iv_rs == NULL, ("%s called multiple times", __func__));
 
-	vap->iv_rs = malloc(sizeof(struct ieee80211_amrr), M_80211_RATECTL,
-	    M_WAITOK|M_ZERO);
-	amrr = vap->iv_rs;
+	amrr = vap->iv_rs = malloc(sizeof(struct ieee80211_amrr),
+	    M_80211_RATECTL, M_NOWAIT|M_ZERO);
+	if (amrr == NULL) {
+		if_printf(vap->iv_ifp, "couldn't alloc ratectl structure\n");
+		return;
+	}
 	amrr->amrr_min_success_threshold = IEEE80211_AMRR_MIN_SUCCESS_THRESHOLD;
 	amrr->amrr_max_success_threshold = IEEE80211_AMRR_MAX_SUCCESS_THRESHOLD;
 	amrr_setinterval(vap, 500 /* ms */);
@@ -136,9 +139,13 @@ amrr_node_init(struct ieee80211_node *ni
 	KASSERT(ni->ni_rctls == NULL, ("%s: ni_rctls already initialized",
 	    __func__));
 
-	ni->ni_rctls = malloc(sizeof(struct ieee80211_amrr_node),
-	    M_80211_RATECTL, M_WAITOK|M_ZERO);
-	amn = ni->ni_rctls;
+	ni->ni_rctls = amn = malloc(sizeof(struct ieee80211_amrr_node),
+	    M_80211_RATECTL, M_NOWAIT|M_ZERO);
+	if (amn == NULL) {
+		if_printf(vap->iv_ifp, "couldn't alloc per-node ratectl "
+		    "structure\n");
+		return;
+	}
 	amn->amn_amrr = amrr;
 	amn->amn_success = 0;
 	amn->amn_recovery = 0;

Modified: head/sys/net80211/ieee80211_rssadapt.c
==============================================================================
--- head/sys/net80211/ieee80211_rssadapt.c	Fri Apr  9 12:05:24 2010	(r206418)
+++ head/sys/net80211/ieee80211_rssadapt.c	Fri Apr  9 12:06:19 2010	(r206419)
@@ -128,9 +128,12 @@ rssadapt_init(struct ieee80211vap *vap)
 	KASSERT(vap->iv_rs == NULL, ("%s: iv_rs already initialized",
 	    __func__));
 	
-	rs = malloc(sizeof(struct ieee80211_rssadapt), M_80211_RATECTL,
-	    M_WAITOK|M_ZERO);
-	vap->iv_rs = rs;
+	vap->iv_rs = rs = malloc(sizeof(struct ieee80211_rssadapt),
+	    M_80211_RATECTL, M_NOWAIT|M_ZERO);
+	if (rs == NULL) {
+		if_printf(vap->iv_ifp, "couldn't alloc ratectl structure\n");
+		return;
+	}
 	rs->vap = vap;
 	rssadapt_setinterval(vap, 500 /* msecs */);
 	rssadapt_sysctlattach(vap, vap->iv_sysctl, vap->iv_oid);
@@ -162,12 +165,17 @@ static void
 rssadapt_node_init(struct ieee80211_node *ni)
 {
 	struct ieee80211_rssadapt_node *ra;
-	struct ieee80211_rssadapt *rsa = ni->ni_vap->iv_rs;
+	struct ieee80211vap *vap = ni->ni_vap;
+	struct ieee80211_rssadapt *rsa = vap->iv_rs;
 	const struct ieee80211_rateset *rs = &ni->ni_rates;
 
-	ra = malloc(sizeof(struct ieee80211_rssadapt_node), M_80211_RATECTL,
-	    M_WAITOK|M_ZERO);
-	ni->ni_rctls = ra;
+	ni->ni_rctls = ra = malloc(sizeof(struct ieee80211_rssadapt_node),
+	    M_80211_RATECTL, M_NOWAIT|M_ZERO);
+	if (ra == NULL) {
+		if_printf(vap->iv_ifp, "couldn't alloc per-node ratectl "
+		    "structure\n");
+		return;
+	}
 	ra->ra_rs = rsa;
 	ra->ra_rates = *rs;
 	rssadapt_updatestats(ra);

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 12:06:47 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 746201065672;
	Fri,  9 Apr 2010 12:06:47 +0000 (UTC)
	(envelope-from rpaulo@gmail.com)
Received: from mail-fx0-f225.google.com (mail-fx0-f225.google.com
	[209.85.220.225])
	by mx1.freebsd.org (Postfix) with ESMTP id A247F8FC0C;
	Fri,  9 Apr 2010 12:06:46 +0000 (UTC)
Received: by fxm25 with SMTP id 25so688589fxm.3
	for ; Fri, 09 Apr 2010 05:06:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma;
	h=domainkey-signature:received:received:sender:subject:mime-version
	:content-type:from:in-reply-to:date:cc:content-transfer-encoding
	:message-id:references:to:x-mailer;
	bh=YV986cjxjarbmKKHzxb3/fQsZ1yseFAPhsVbF1rZfAE=;
	b=imrbOM4V5XOECXKedSXVL78S7QbO1WCJFFf+9g+bGj61V9wk+Wd3fvSETGi9n6xs8l
	vo8k0r0HkSJI54iETu00q+QbjL3e3QO4cRGA5oBVh61SI7v2qhapzsKcSafzrFWoAHJy
	e73PbI1ccAM3UqeuZQI+1DjsWhOg2w0mvCAZY=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma;
	h=sender:subject:mime-version:content-type:from:in-reply-to:date:cc
	:content-transfer-encoding:message-id:references:to:x-mailer;
	b=TkBlhvzOzejuBGpzzZkaRNNVOn8l5+Mz+JYMa4KKXjMa5qZ5+/Hua9qnAgtpgwpDX8
	owEQtdtES2hHk8mp6p8GmzhAtB/r8YYb7U08MVyF4HH4rVT57L6ctVD1oGM962fy56PE
	t5f8bhD0a6Nc8IvCxu9waLZ8QvtSuISo2KSds=
Received: by 10.223.5.207 with SMTP id 15mr1600700faw.6.1270814805682;
	Fri, 09 Apr 2010 05:06:45 -0700 (PDT)
Received: from [10.0.10.2] (54.81.54.77.rev.vodafone.pt [77.54.81.54])
	by mx.google.com with ESMTPS id 16sm706334fxm.0.2010.04.09.05.06.44
	(version=TLSv1/SSLv3 cipher=RC4-MD5);
	Fri, 09 Apr 2010 05:06:45 -0700 (PDT)
Sender: Rui Paulo 
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Rui Paulo 
In-Reply-To: <488108.55494.qm@web51803.mail.re2.yahoo.com>
Date: Fri, 9 Apr 2010 13:06:43 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <81BE57A1-3E1E-4BB9-9FCE-080B34B4452C@FreeBSD.org>
References: <20100407165048.8CF9E106566B@hub.freebsd.org>
	<488108.55494.qm@web51803.mail.re2.yahoo.com>
To: PseudoCylon 
X-Mailer: Apple Mail (2.1078)
Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org,
	src-committers@freebsd.org
Subject: Re: svn commit: r206358 (patch for if_run)
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 12:06:47 -0000

On 9 Apr 2010, at 03:15, PseudoCylon wrote:

>>> Author: rpaulo
>>> Date: Wed Apr  7 15:29:13 2010
>>> New Revision: 206358
>>> URL: http://svn.freebsd.org/changeset/base/206358
>>>=20
>>> Log:
>>> net80211 rate control framework (net80211 ratectl).
>>>=20
>>> This framework allows drivers to abstract the rate control algorithm =
and
>>> just feed the framework with the usable parameters. The rate control
>>> framework will now deal with passing the parameters to the selected
>>> algorithm. Right now we have AMRR (the default) and RSSADAPT but =
there's
>>> no way to select one with ifconfig, yet.
>>> The objective is to have more rate control algorithms in the =
net80211
>>> stack so all drivers[0] can use it. Ideally, we'll have the =
well-known
>>> sample rate control algorithm in the net80211 at some point so all
>>> drivers can use it (not just ath).
>>>=20
>>=20
>> Hello,
>>=20
>> I've just tried the commit and run(4) works fine out of the box. It =
properly updates the rate.
>>=20
>> Thank you for updating the driver.
>>=20
>> AK
>>=20
>=20
> Sorry, correction.
>=20
> I've got complain from witness
>=20
> uma_zalloc_arg: zone "64" with the following non-sleepable locks held:
> exclusive sleep mutex run0 (network driver) r =3D 0 =
(0xffffff80008de128) locked @ /usr/src/sys/dev/usb/usb_request.c:540
> KDB: stack backtrace:
> db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
> _witness_debugger() at _witness_debugger+0x2e
> witness_warn() at witness_warn+0x2c2
> uma_zalloc_arg() at uma_zalloc_arg+0x335
> malloc() at malloc+0x9a
> amrr_node_init() at amrr_node_init+0x38
> run_newstate() at run_newstate+0x363
> ieee80211_newstate_cb() at ieee80211_newstate_cb+0xac
> taskqueue_run() at taskqueue_run+0x91
> taskqueue_thread_loop() at taskqueue_thread_loop+0x3f
> fork_exit() at fork_exit+0x12a
> fork_trampoline() at fork_trampoline+0xe
> --- trap 0, rip =3D 0, rsp =3D 0xffffff803e5d0d30, rbp =3D 0 ---
>=20
> Just unlocking the mutex before calling ieee80211_ratectl_node_init() =
fix this. As long as ieee80211_ratectl_node_init() won't be called with =
the same ni at the same time, unlocking should be safe.
>=20
> Here is patch
>=20
> *** orig_if_run.c    2010-04-08 03:29:31.000000000 -0600
> --- fix_if_run.c    2010-04-08 19:52:45.000000000 -0600
> ***************
> *** 1965,1969 ****
>      uint32_t sta[3];
> - #if 0
> -     uint8_t wcid;
> - #endif
>=20
> --- 1965,1966 ----
> ***************
> *** 1975,1981 ****
>=20
> ! #if 0
> !     wcid =3D RUN_AID2WCID(ni =3D=3D NULL ? 0 : ni->ni_associd);
> !     ieee80211_amrr_node_init(&rvp->amrr, &rvp->amn[wcid], ni);
> ! #endif
>      ieee80211_ratectl_node_init(ni);
>=20
> --- 1972,1976 ----
>=20
> !     RUN_UNLOCK(sc);
>      ieee80211_ratectl_node_init(ni);
> +     RUN_LOCK(sc);
>=20
> ***************
> *** 2096,2102 ****
>=20
> - #if 0
> -         wcid =3D RUN_AID2WCID(ni =3D=3D NULL ? 0 : ni->ni_associd);
> -         amn =3D &rvp->amn[wcid];
> - #endif
> -=20
>          /* count failed TX as errors */
> --- 2091,2092 ----
>=20
>=20
>=20
> P.S.
> #if 0s (amn[]) are no longer needed because now each amrr node is =
attached to individual ieee80211_node.

Can you try updating and see if everything works for you? Thanks.

Regards,
--
Rui Paulo


From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 13:08:12 2010
Return-Path: 
Delivered-To: svn-src-head@FreeBSD.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 57EE9106564A;
	Fri,  9 Apr 2010 13:08:12 +0000 (UTC) (envelope-from imp@bsdimp.com)
Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85])
	by mx1.freebsd.org (Postfix) with ESMTP id 088058FC0A;
	Fri,  9 Apr 2010 13:08:11 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
	by harmony.bsdimp.com (8.14.3/8.14.1) with ESMTP id o39D2uBC062522;
	Fri, 9 Apr 2010 07:02:56 -0600 (MDT) (envelope-from imp@bsdimp.com)
Date: Fri, 09 Apr 2010 07:03:00 -0600 (MDT)
Message-Id: <20100409.070300.771721883854029283.imp@bsdimp.com>
To: netchild@FreeBSD.org
From: "M. Warner Losh" 
In-Reply-To: <20100409092721.19743kgds231hckg@webmail.leidinger.net>
References: <20100407100015.117169nw2iu6xp4w@webmail.leidinger.net>
	<20100408.151213.718265677801106795.imp@bsdimp.com>
	<20100409092721.19743kgds231hckg@webmail.leidinger.net>
X-Mailer: Mew version 6.3 on Emacs 22.3 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Cc: kostikbel@gmail.com, svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org,
	src-committers@FreeBSD.org
Subject: Re: svn commit: r206082 - in head: . share/man/man7 share/mk
 sys/conf
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 13:08:12 -0000

In message: <20100409092721.19743kgds231hckg@webmail.leidinger.net>
            Alexander Leidinger  writes:
: Quoting "M. Warner Losh"  (from Thu, 08 Apr 2010
: 15:12:13 -0600 (MDT)):
: 
: > In message: <20100407100015.117169nw2iu6xp4w@webmail.leidinger.net>
: >             Alexander Leidinger  writes:
: > : Quoting "M. Warner Losh"  (from Tue, 06 Apr 2010
: > : 10:54:17 -0600 (MDT)):
: > :
: > : > In message:
: > <20100405181450.13494itjj2ehj5og@webmail.leidinger.net>
: > : >             Alexander Leidinger  writes:
: > : > : Warner, do you mind if I back-out r206082 and change the place
: > where
: > : > : NORMAL_CTFCONVERT is used instead (fist I have to search for it
: > : > : again... not today)? It would make it consistent with all other
: > : > places
: > : > : (SYSTEM_CTFCONVERT and the plain test and use of CTFxxx).
: > : >
: > : > Go ahead.  I just did the fast and dirty fix.  I though it was
: > : > consistent with how other things were done, but if not, feel free
: > to
: > : > correct it.  Also, see bde's commentary :)
: > :
: > : I can not find it, can you please forward it to me?
: >
: > Will do.
: >
: > : Here is what I have ATM (copy&paste, so tabs are probably mangled):
: > : ---snip---
: > : Index: usr.sbin/config/mkmakefile.c
: > : ===================================================================
: > : --- usr.sbin/config/mkmakefile.c        (revision 206031)
: > : +++ usr.sbin/config/mkmakefile.c        (working copy)
: > : @@ -741,7 +741,7 @@
: > : printf("config: don't know rules for %s\n",
: > :                                 np); break;
: > :                         }
: > : -                       snprintf(cmd, sizeof(cmd), "${%s_%c%s}\n.if
: > : -                       defined(NORMAL_CTFCONVERT) &&
: > : - !empty(NORMAL_CTFCONVERT)\n\t${NORMAL_CTFCONVERT}\n.endif",
: > : -                       ftype,
: > : + snprintf(cmd, sizeof(cmd), "${%s_%c%s}\n\t@${NORMAL_CTFCONVERT}",
: > : ftype,
: > :                             toupper(och),
: > : ftp->f_flags & NOWERROR ? "_NOWERROR" : "");
: > :                         compilewith = cmd;
: >
: > Uggg, this should have never been put into mkmakefile.c in the first
: > place.  I'm concerned that a change like this will have bad effects
: > for people that have cross-threaded config and kernels. :(
: 
: You need to have a look at the complete code, there is more than only
: the use of NORMAL_CTFCONVERT. Regarding the cross-case, I think it can
: be done by overriding NORMAL_CTFCONVERT (if needed).

I have looked at the complete code.  config has no business knowing
about these things.  It is a layering violation.  It must be removed
from config.  However, since you didn't put it there, you should do
the next best thing and fix the bug in the current implementation.

: > However, go ahead and fix it.  I worry about people with
: > cross-threaded kernels, but that won't be a huge deal, I don't think.
: > Please monitor the lists to make sure...
: 
: Do I understand this right, that you think I shall do it before I get
: the forwarded mail?

I think you should commit this fix.  I'll forward you bde's mail and
you can work on another fix.  In the mean time (after you commit the
patch we're talking about right now), please monitor hackers@ and
current@ for any problems.

Warner

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 13:58:54 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id A3CCC106566B;
	Fri,  9 Apr 2010 13:58:54 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 925678FC12;
	Fri,  9 Apr 2010 13:58:54 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39DwsFL056108;
	Fri, 9 Apr 2010 13:58:54 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39Dwshi056106;
	Fri, 9 Apr 2010 13:58:54 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004091358.o39Dwshi056106@svn.freebsd.org>
From: Rui Paulo 
Date: Fri, 9 Apr 2010 13:58:54 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206420 - head/sys/dev/ath/ath_hal/ar5416
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 13:58:54 -0000

Author: rpaulo
Date: Fri Apr  9 13:58:54 2010
New Revision: 206420
URL: http://svn.freebsd.org/changeset/base/206420

Log:
  Setup the correct RX/TX chainmask when we play with the antenna
  settings.
  
  MFC after:	1 week
  Sponsored by:	iXsystems, inc

Modified:
  head/sys/dev/ath/ath_hal/ar5416/ar9285_attach.c

Modified: head/sys/dev/ath/ath_hal/ar5416/ar9285_attach.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5416/ar9285_attach.c	Fri Apr  9 12:06:19 2010	(r206419)
+++ head/sys/dev/ath/ath_hal/ar5416/ar9285_attach.c	Fri Apr  9 13:58:54 2010	(r206420)
@@ -378,8 +378,8 @@ ar9285SetAntennaSwitch(struct ath_hal *a
 	case HAL_ANT_VARIABLE:
 		/* Restore original chainmask settings */
 		/* XXX */
-		ahp->ah_tx_chainmask = AR5416_DEFAULT_TXCHAINMASK;
-		ahp->ah_rx_chainmask = AR5416_DEFAULT_RXCHAINMASK;
+		ahp->ah_tx_chainmask = AR9285_DEFAULT_TXCHAINMASK;
+		ahp->ah_rx_chainmask = AR9285_DEFAULT_RXCHAINMASK;
 		break;
 	}
 	return AH_TRUE;

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 14:22:10 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 02B261065689;
	Fri,  9 Apr 2010 14:22:10 +0000 (UTC)
	(envelope-from attilio@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id E559E8FC1D;
	Fri,  9 Apr 2010 14:22:09 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39EM9jx078069;
	Fri, 9 Apr 2010 14:22:09 GMT (envelope-from attilio@svn.freebsd.org)
Received: (from attilio@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39EM9rW078067;
	Fri, 9 Apr 2010 14:22:09 GMT (envelope-from attilio@svn.freebsd.org)
Message-Id: <201004091422.o39EM9rW078067@svn.freebsd.org>
From: Attilio Rao 
Date: Fri, 9 Apr 2010 14:22:09 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206421 - in head/sys: pc98/cbus x86/isa
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 14:22:10 -0000

Author: attilio
Date: Fri Apr  9 14:22:09 2010
New Revision: 206421
URL: http://svn.freebsd.org/changeset/base/206421

Log:
  Default the machdep.lapic_allclocks to be enabled in order to cope with
  broken atrtc.
  Now if you want more correct stats on profhz and stathz it may be
  disabled by setting to 0.
  
  Reported by:	A. Akephalos ,
  		Jakub Lach 
  MFC:		1 week

Modified:
  head/sys/pc98/cbus/clock.c
  head/sys/x86/isa/clock.c

Modified: head/sys/pc98/cbus/clock.c
==============================================================================
--- head/sys/pc98/cbus/clock.c	Fri Apr  9 13:58:54 2010	(r206420)
+++ head/sys/pc98/cbus/clock.c	Fri Apr  9 14:22:09 2010	(r206421)
@@ -93,7 +93,7 @@ TUNABLE_INT("hw.i8254.freq", &i8254_freq
 int	i8254_max_count;
 static int i8254_real_max_count;
 
-static int lapic_allclocks;
+static int lapic_allclocks = 1;
 TUNABLE_INT("machdep.lapic_allclocks", &lapic_allclocks);
 
 static	struct mtx clock_lock;

Modified: head/sys/x86/isa/clock.c
==============================================================================
--- head/sys/x86/isa/clock.c	Fri Apr  9 13:58:54 2010	(r206420)
+++ head/sys/x86/isa/clock.c	Fri Apr  9 14:22:09 2010	(r206421)
@@ -97,7 +97,7 @@ TUNABLE_INT("hw.i8254.freq", &i8254_freq
 int	i8254_max_count;
 static int i8254_real_max_count;
 
-static int lapic_allclocks;
+static int lapic_allclocks = 1;
 TUNABLE_INT("machdep.lapic_allclocks", &lapic_allclocks);
 
 struct mtx clock_lock;

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 14:24:01 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 3FCA61065672;
	Fri,  9 Apr 2010 14:24:01 +0000 (UTC)
	(envelope-from kensmith@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 2EAEE8FC0A;
	Fri,  9 Apr 2010 14:24:01 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39EO1eH079842;
	Fri, 9 Apr 2010 14:24:01 GMT (envelope-from kensmith@svn.freebsd.org)
Received: (from kensmith@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39EO1Ow079840;
	Fri, 9 Apr 2010 14:24:01 GMT (envelope-from kensmith@svn.freebsd.org)
Message-Id: <201004091424.o39EO1Ow079840@svn.freebsd.org>
From: Ken Smith 
Date: Fri, 9 Apr 2010 14:24:01 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206422 - head/release
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 14:24:01 -0000

Author: kensmith
Date: Fri Apr  9 14:24:00 2010
New Revision: 206422
URL: http://svn.freebsd.org/changeset/base/206422

Log:
  Pass the HTTP_PROXY and FTP_PROXY environment variables through in addition
  to FTP_PASSIVE_MODE so release building works for a machine that needs
  to use a proxy.
  
  PR:		misc/137688
  Submitted by:	Michael Leun
  MFC after:	2 weeks

Modified:
  head/release/Makefile

Modified: head/release/Makefile
==============================================================================
--- head/release/Makefile	Fri Apr  9 14:22:09 2010	(r206421)
+++ head/release/Makefile	Fri Apr  9 14:24:00 2010	(r206422)
@@ -575,7 +575,7 @@ release rerelease:
 	echo "	for i in ${MAKEINDEXPORTS}"	>> ${_MK}
 	echo "	do"			>> ${_MK}
 	echo "		cd /usr/ports/\$${i}"	>> ${_MK}
-	echo "		env -i FTP_PASSIVE_MODE=$${FTP_PASSIVE_MODE:-no} PATH=$${PATH} \\" >> ${_MK}
+	echo "		env -i HTTP_PROXY=$${HTTP_PROXY} FTP_PROXY=$${FTP_PROXY} FTP_PASSIVE_MODE=$${FTP_PASSIVE_MODE:-no} PATH=$${PATH} \\" >> ${_MK}
 	echo "		make all install clean BATCH=yes FORCE_PKG_REGISTER=yes" >> ${_MK}
 	echo "	done"				>> ${_MK}
 	echo "	cd /usr/ports"			>> ${_MK}

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 14:27:18 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 4F1A71065673;
	Fri,  9 Apr 2010 14:27:18 +0000 (UTC)
	(envelope-from kensmith@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 3AE388FC1C;
	Fri,  9 Apr 2010 14:27:18 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39ERITa082910;
	Fri, 9 Apr 2010 14:27:18 GMT (envelope-from kensmith@svn.freebsd.org)
Received: (from kensmith@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39ERIxP082906;
	Fri, 9 Apr 2010 14:27:18 GMT (envelope-from kensmith@svn.freebsd.org)
Message-Id: <201004091427.o39ERIxP082906@svn.freebsd.org>
From: Ken Smith 
Date: Fri, 9 Apr 2010 14:27:18 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206423 - head/release
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 14:27:18 -0000

Author: kensmith
Date: Fri Apr  9 14:27:17 2010
New Revision: 206423
URL: http://svn.freebsd.org/changeset/base/206423

Log:
  Shift the version of perl used by the release build process over to
  perl-5.10.  This aligns the release build process with the current
  default version of perl in the ports tree.
  
  I'll MFC this to all active branches.
  
  MFC after:	3 days

Modified:
  head/release/Makefile
  head/release/Makefile.inc.docports

Modified: head/release/Makefile
==============================================================================
--- head/release/Makefile	Fri Apr  9 14:24:00 2010	(r206422)
+++ head/release/Makefile	Fri Apr  9 14:27:17 2010	(r206423)
@@ -171,7 +171,7 @@ NOPORTSATALL=	YES
 
 #
 # Doing 'make index' in /usr/ports requires Perl.
-MAKEINDEXPORTS=	lang/perl5.8
+MAKEINDEXPORTS=	lang/perl5.10
 DOCPORTS=	textproc/docproj
 # Set this to wherever the distfiles required by release procedures.
 .if defined(DOCDISTFILES)

Modified: head/release/Makefile.inc.docports
==============================================================================
--- head/release/Makefile.inc.docports	Fri Apr  9 14:24:00 2010	(r206422)
+++ head/release/Makefile.inc.docports	Fri Apr  9 14:27:17 2010	(r206423)
@@ -81,5 +81,5 @@ MINIMALDOCPORTS+= \
 	ports/textproc/p5-PodParser
 .else
 MINIMALDOCPORTS+= \
-	ports/lang/perl5.8
+	ports/lang/perl5.10
 .endif

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 15:21:11 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id D6C34106564A;
	Fri,  9 Apr 2010 15:21:11 +0000 (UTC)
	(envelope-from rdivacky@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id AAC768FC14;
	Fri,  9 Apr 2010 15:21:11 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39FLBIG035861;
	Fri, 9 Apr 2010 15:21:11 GMT (envelope-from rdivacky@svn.freebsd.org)
Received: (from rdivacky@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39FLBqx035856;
	Fri, 9 Apr 2010 15:21:11 GMT (envelope-from rdivacky@svn.freebsd.org)
Message-Id: <201004091521.o39FLBqx035856@svn.freebsd.org>
From: Roman Divacky 
Date: Fri, 9 Apr 2010 15:21:11 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206424 - head/usr.bin/xlint/lint1
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 15:21:11 -0000

Author: rdivacky
Date: Fri Apr  9 15:21:11 2010
New Revision: 206424
URL: http://svn.freebsd.org/changeset/base/206424

Log:
  Rename the ALIGN macro to LINT_ALIGN so it does not clash with machine/param.h
  
  Bump the alignment to 16bytes because lint1 memory allocator is used for
  objects that require 16bytes alignment on amd64 (ie. val_t). This makes
  lint1 work when compiled with compiler(s) that use SSE for memcpy on amd64.
  (e.g. clang).
  
  Approved by:	ed (mentor)

Modified:
  head/usr.bin/xlint/lint1/decl.c
  head/usr.bin/xlint/lint1/lint1.h
  head/usr.bin/xlint/lint1/mem1.c

Modified: head/usr.bin/xlint/lint1/decl.c
==============================================================================
--- head/usr.bin/xlint/lint1/decl.c	Fri Apr  9 14:27:17 2010	(r206423)
+++ head/usr.bin/xlint/lint1/decl.c	Fri Apr  9 15:21:11 2010	(r206424)
@@ -825,15 +825,15 @@ getbound(type_t *tp)
 	} else if (t == FUNC) {
 		/* compiler takes alignment of function */
 		error(14);
-		a = ALIGN(1) * CHAR_BIT;
+		a = LINT_ALIGN(1) * CHAR_BIT;
 	} else {
 		if ((a = size(t)) == 0) {
 			a = CHAR_BIT;
-		} else if (a > ALIGN(1) * CHAR_BIT) {
-			a = ALIGN(1) * CHAR_BIT;
+		} else if (a > LINT_ALIGN(1) * CHAR_BIT) {
+			a = LINT_ALIGN(1) * CHAR_BIT;
 		}
 	}
-	if (a < CHAR_BIT || a > ALIGN(1) * CHAR_BIT)
+	if (a < CHAR_BIT || a > LINT_ALIGN(1) * CHAR_BIT)
 		lerror("getbound() 1");
 	return (a);
 }

Modified: head/usr.bin/xlint/lint1/lint1.h
==============================================================================
--- head/usr.bin/xlint/lint1/lint1.h	Fri Apr  9 14:27:17 2010	(r206423)
+++ head/usr.bin/xlint/lint1/lint1.h	Fri Apr  9 15:21:11 2010	(r206424)
@@ -38,8 +38,8 @@ __FBSDID("$FreeBSD$");
 #include "op.h"
 
 /* XXX - works for most systems, but the whole ALIGN thing needs to go away */
-#ifndef ALIGN
-#define ALIGN(x) (((x) + 7) & ~7)
+#ifndef LINT_ALIGN
+#define LINT_ALIGN(x) (((x) + 15) & ~15)
 #endif
 
 /*

Modified: head/usr.bin/xlint/lint1/mem1.c
==============================================================================
--- head/usr.bin/xlint/lint1/mem1.c	Fri Apr  9 14:27:17 2010	(r206423)
+++ head/usr.bin/xlint/lint1/mem1.c	Fri Apr  9 15:21:11 2010	(r206424)
@@ -203,7 +203,7 @@ xgetblk(mbl_t **mbp, size_t s)
 	void	*p;
 	size_t	t = 0;
 
-	s = ALIGN(s);
+	s = LINT_ALIGN(s);
 	if ((mb = *mbp) == NULL || mb->nfree < s) {
 		if ((mb = frmblks) == NULL) {
 			if (s > mblklen) {

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 16:06:54 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 5F91A1065670;
	Fri,  9 Apr 2010 16:06:54 +0000 (UTC)
	(envelope-from luigi@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 4EC9B8FC16;
	Fri,  9 Apr 2010 16:06:54 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39G6s5l079437;
	Fri, 9 Apr 2010 16:06:54 GMT (envelope-from luigi@svn.freebsd.org)
Received: (from luigi@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39G6s00079427;
	Fri, 9 Apr 2010 16:06:54 GMT (envelope-from luigi@svn.freebsd.org)
Message-Id: <201004091606.o39G6s00079427@svn.freebsd.org>
From: Luigi Rizzo 
Date: Fri, 9 Apr 2010 16:06:54 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206425 - head/sys/netinet/ipfw
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 16:06:54 -0000

Author: luigi
Date: Fri Apr  9 16:06:53 2010
New Revision: 206425
URL: http://svn.freebsd.org/changeset/base/206425

Log:
  no need to pass an argument to dn_compat_calc_size()
  
  MFC after:	3 days

Modified:
  head/sys/netinet/ipfw/ip_dn_glue.c
  head/sys/netinet/ipfw/ip_dn_private.h
  head/sys/netinet/ipfw/ip_dummynet.c

Modified: head/sys/netinet/ipfw/ip_dn_glue.c
==============================================================================
--- head/sys/netinet/ipfw/ip_dn_glue.c	Fri Apr  9 15:21:11 2010	(r206424)
+++ head/sys/netinet/ipfw/ip_dn_glue.c	Fri Apr  9 16:06:53 2010	(r206425)
@@ -553,7 +553,7 @@ dn_compat_configure(void *v)
 }
 
 int
-dn_compat_calc_size(struct dn_parms dn_cfg)
+dn_compat_calc_size(void)
 {
 	int need = 0;
 	/* XXX use FreeBSD 8 struct size */

Modified: head/sys/netinet/ipfw/ip_dn_private.h
==============================================================================
--- head/sys/netinet/ipfw/ip_dn_private.h	Fri Apr  9 15:21:11 2010	(r206424)
+++ head/sys/netinet/ipfw/ip_dn_private.h	Fri Apr  9 16:06:53 2010	(r206425)
@@ -392,7 +392,7 @@ int dn_c_copy_fs(struct dn_fsk *f, struc
 int dn_compat_copy_queue(struct copy_args *a, void *_o);
 int dn_compat_copy_pipe(struct copy_args *a, void *_o);
 int copy_data_helper_compat(void *_o, void *_arg);
-int dn_compat_calc_size(struct dn_parms dn_cfg);
+int dn_compat_calc_size(void);
 int do_config(void *p, int l);
 
 /* function to drain idle object */

Modified: head/sys/netinet/ipfw/ip_dummynet.c
==============================================================================
--- head/sys/netinet/ipfw/ip_dummynet.c	Fri Apr  9 15:21:11 2010	(r206424)
+++ head/sys/netinet/ipfw/ip_dummynet.c	Fri Apr  9 16:06:53 2010	(r206425)
@@ -1769,7 +1769,7 @@ compute_space(struct dn_id *cmd, struct 
 		x = DN_C_FS | DN_C_QUEUE;
 		break;
 	case DN_GET_COMPAT:	/* compatibility mode */
-		need =  dn_compat_calc_size(dn_cfg); 
+		need =  dn_compat_calc_size(); 
 		break;
 	}
 	a->flags = x;

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 16:19:32 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 4279F106566C;
	Fri,  9 Apr 2010 16:19:32 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 31BD48FC12;
	Fri,  9 Apr 2010 16:19:32 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39GJWZr091624;
	Fri, 9 Apr 2010 16:19:32 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39GJWGE091612;
	Fri, 9 Apr 2010 16:19:32 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004091619.o39GJWGE091612@svn.freebsd.org>
From: Rui Paulo 
Date: Fri, 9 Apr 2010 16:19:31 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206426 - head/sys/conf
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 16:19:32 -0000

Author: rpaulo
Date: Fri Apr  9 16:19:30 2010
New Revision: 206426
URL: http://svn.freebsd.org/changeset/base/206426

Log:
  Building wlan_amrr is now mandatory. This is an interim fix.

Modified:
  head/sys/conf/files

Modified: head/sys/conf/files
==============================================================================
--- head/sys/conf/files	Fri Apr  9 16:06:53 2010	(r206425)
+++ head/sys/conf/files	Fri Apr  9 16:19:30 2010	(r206426)
@@ -2358,7 +2358,7 @@ net80211/ieee80211_action.c	optional wla
 net80211/ieee80211_ageq.c	optional wlan
 net80211/ieee80211_adhoc.c	optional wlan
 net80211/ieee80211_ageq.c	optional wlan
-net80211/ieee80211_amrr.c	optional wlan wlan_amrr
+net80211/ieee80211_amrr.c	optional wlan | wlan_amrr
 net80211/ieee80211_crypto.c	optional wlan
 net80211/ieee80211_crypto_ccmp.c optional wlan wlan_ccmp
 net80211/ieee80211_crypto_none.c optional wlan

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 17:32:38 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 8F903106564A;
	Fri,  9 Apr 2010 17:32:38 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 7E67C8FC19;
	Fri,  9 Apr 2010 17:32:38 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39HWcDE062863;
	Fri, 9 Apr 2010 17:32:38 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39HWcvZ062859;
	Fri, 9 Apr 2010 17:32:38 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004091732.o39HWcvZ062859@svn.freebsd.org>
From: Rui Paulo 
Date: Fri, 9 Apr 2010 17:32:38 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206427 - in head: etc/defaults etc/rc.d share/man/man5
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 17:32:38 -0000

Author: rpaulo
Date: Fri Apr  9 17:32:38 2010
New Revision: 206427
URL: http://svn.freebsd.org/changeset/base/206427

Log:
  Add rc.d/ubthidhci. This small script calls usbconfig(1) to change a USB
  Bluetooth controller from HID mode to HCI mode.
  
  MFC after:	1 week

Added:
  head/etc/rc.d/ubthidhci   (contents, props changed)
Modified:
  head/etc/defaults/rc.conf
  head/share/man/man5/rc.conf.5

Modified: head/etc/defaults/rc.conf
==============================================================================
--- head/etc/defaults/rc.conf	Fri Apr  9 16:19:30 2010	(r206426)
+++ head/etc/defaults/rc.conf	Fri Apr  9 17:32:38 2010	(r206427)
@@ -436,6 +436,11 @@ rfcomm_pppd_server_two_channel="3"	# Ove
 #rfcomm_pppd_server_two_register_sp="NO"	# Override SP and DUN register
 #rfcomm_pppd_server_two_register_dun="NO"	# for 'two'
 
+#ubthidhci_enable="YES"		# Switch an USB BT controller present on
+#ubthidhci_busnum="3"		# bus 3 and addr 2 from HID mode to HCI mode.
+#ubthidhci_addr="2"		# Check usbconfig list to find the correct
+				# numbers for your system.
+
 ### Miscellaneous network options: ###
 icmp_bmcastecho="NO"	# respond to broadcast ping packets
 

Added: head/etc/rc.d/ubthidhci
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/etc/rc.d/ubthidhci	Fri Apr  9 17:32:38 2010	(r206427)
@@ -0,0 +1,40 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: ubthidhci
+# REQUIRE: DAEMON 
+# BEFORE: bluetooth 
+# KEYWORD: nojail shutdown
+
+. /etc/rc.subr
+
+name="ubthidhci"
+command="/usr/sbin/usbconfig"
+rcvar=`set_rcvar`
+start_precmd="ubthidhci_prestart"
+
+ubthidhci_prestart()
+{
+
+	if [ -z ${ubthidhci_busnum} ]; then
+		warn ubthidhci_busnum is not set
+		return 1
+	fi
+	if [ -z ${ubthidhci_addr} ]; then
+		warn ubthidhci_addr is not set
+		return 1
+	fi
+}
+
+load_rc_config $name
+#
+# We discard the output because:
+# 1) we don't want it to show up during boot; and
+# 2) the request usually returns an error, but that doesn't mean it failed
+#
+# NB: 0x40 is UT_VENDOR
+command_args="-u ${ubthidhci_busnum} -a ${ubthidhci_addr} do_request 0x40 0 0 0 0 > /dev/null 2>&1"
+
+run_rc_command "$1"

Modified: head/share/man/man5/rc.conf.5
==============================================================================
--- head/share/man/man5/rc.conf.5	Fri Apr  9 16:19:30 2010	(r206426)
+++ head/share/man/man5/rc.conf.5	Fri Apr  9 17:32:38 2010	(r206427)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd April 8, 2010
+.Dd April 09, 2010
 .Dt RC.CONF 5
 .Os
 .Sh NAME
@@ -4268,6 +4268,26 @@ if it should register Dial-Up Networking
 RFCOMM channel.
 Default
 .Dq Li NO .
+.It Va ubthidhci_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+change the USB Bluetooth controller from HID mode to HCI mode.
+You also need to specify the location of USB Bluetooth controller with the
+.Va ubthidhci_busnum
+and
+.Va ubthidhci_addr
+variables.
+.It Va ubthidhci_busnum
+Bus number where the USB Bluetooth controller is located.
+Check the output of
+.Xr usbconfig 1
+on your system to find this information.
+.It Va ubthidhci_addr
+Bus address of the USB Bluetooth controller.
+Check the output of
+.Xr usbconfig 1
+on your system to find this information.
 .El
 .Sh FILES
 .Bl -tag -width ".Pa /etc/defaults/rc.conf" -compact
@@ -4283,6 +4303,7 @@ Default
 .Xr kbdcontrol 1 ,
 .Xr makewhatis 1 ,
 .Xr sh 1 ,
+.Xr usbconfig 1 ,
 .Xr vi 1 ,
 .Xr vidcontrol 1 ,
 .Xr bridge 4 ,

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 18:02:19 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 804361065670;
	Fri,  9 Apr 2010 18:02:19 +0000 (UTC)
	(envelope-from luigi@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 6E5E58FC0A;
	Fri,  9 Apr 2010 18:02:19 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39I2JMk092039;
	Fri, 9 Apr 2010 18:02:19 GMT (envelope-from luigi@svn.freebsd.org)
Received: (from luigi@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39I2J0K092034;
	Fri, 9 Apr 2010 18:02:19 GMT (envelope-from luigi@svn.freebsd.org)
Message-Id: <201004091802.o39I2J0K092034@svn.freebsd.org>
From: Luigi Rizzo 
Date: Fri, 9 Apr 2010 18:02:19 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206428 - head/sys/netinet/ipfw
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 18:02:19 -0000

Author: luigi
Date: Fri Apr  9 18:02:19 2010
New Revision: 206428
URL: http://svn.freebsd.org/changeset/base/206428

Log:
  This commit enables partial operation of dummynet with kernels
  compiled with "options VIMAGE".
  As it is now, there is still a single instance of the pipes,
  and it is only usable from vnet0 (the main instance).
  Trying to use a pipe from a different vimage does not crash
  the system as it did before, but the traffic coming out from
  the pipe goes to the wrong place, and i still need to
  figure out where.
  
  Support for per-vimage pipes is almost there (just a matter of
  uncommenting the VNET_* definitions for dn_cfg, plus putting into
  the structure the remaining static variables), however i need
  first to figure out how init/uninit work, and also to understand
  where packets are ending up on exit from a pipe.
  
  In summary: vimage support for dummynet is not complete yet,
  but we are getting there.

Modified:
  head/sys/netinet/ipfw/ip_dn_io.c
  head/sys/netinet/ipfw/ip_dn_private.h
  head/sys/netinet/ipfw/ip_dummynet.c

Modified: head/sys/netinet/ipfw/ip_dn_io.c
==============================================================================
--- head/sys/netinet/ipfw/ip_dn_io.c	Fri Apr  9 17:32:38 2010	(r206427)
+++ head/sys/netinet/ipfw/ip_dn_io.c	Fri Apr  9 18:02:19 2010	(r206428)
@@ -69,6 +69,7 @@ __FBSDID("$FreeBSD$");
  */
 
 struct dn_parms dn_cfg;
+//VNET_DEFINE(struct dn_parms, _base_dn_cfg);
 
 static long tick_last;		/* Last tick duration (usec). */
 static long tick_delta;		/* Last vs standard tick diff (usec). */
@@ -100,31 +101,34 @@ SYSCTL_DECL(_net_inet);
 SYSCTL_DECL(_net_inet_ip);
 SYSCTL_NODE(_net_inet_ip, OID_AUTO, dummynet, CTLFLAG_RW, 0, "Dummynet");
 
+/* wrapper to pass dn_cfg fields to SYSCTL_* */
+//#define DC(x)	(&(VNET_NAME(_base_dn_cfg).x))
+#define DC(x)	(&(dn_cfg.x))
 /* parameters */
 SYSCTL_INT(_net_inet_ip_dummynet, OID_AUTO, hash_size,
-    CTLFLAG_RW, &dn_cfg.hash_size, 0, "Default hash table size");
+    CTLFLAG_RW, DC(hash_size), 0, "Default hash table size");
 SYSCTL_LONG(_net_inet_ip_dummynet, OID_AUTO, pipe_slot_limit,
-    CTLFLAG_RW, &dn_cfg.slot_limit, 0,
+    CTLFLAG_RW, DC(slot_limit), 0,
     "Upper limit in slots for pipe queue.");
 SYSCTL_LONG(_net_inet_ip_dummynet, OID_AUTO, pipe_byte_limit,
-    CTLFLAG_RW, &dn_cfg.byte_limit, 0,
+    CTLFLAG_RW, DC(byte_limit), 0,
     "Upper limit in bytes for pipe queue.");
 SYSCTL_INT(_net_inet_ip_dummynet, OID_AUTO, io_fast,
-    CTLFLAG_RW, &dn_cfg.io_fast, 0, "Enable fast dummynet io.");
+    CTLFLAG_RW, DC(io_fast), 0, "Enable fast dummynet io.");
 SYSCTL_INT(_net_inet_ip_dummynet, OID_AUTO, debug,
-    CTLFLAG_RW, &dn_cfg.debug, 0, "Dummynet debug level");
+    CTLFLAG_RW, DC(debug), 0, "Dummynet debug level");
 SYSCTL_INT(_net_inet_ip_dummynet, OID_AUTO, expire,
-    CTLFLAG_RW, &dn_cfg.expire, 0, "Expire empty queues/pipes");
+    CTLFLAG_RW, DC(expire), 0, "Expire empty queues/pipes");
 SYSCTL_INT(_net_inet_ip_dummynet, OID_AUTO, expire_cycle,
-    CTLFLAG_RD, &dn_cfg.expire_cycle, 0, "Expire cycle for queues/pipes");
+    CTLFLAG_RD, DC(expire_cycle), 0, "Expire cycle for queues/pipes");
 
 /* RED parameters */
 SYSCTL_INT(_net_inet_ip_dummynet, OID_AUTO, red_lookup_depth,
-    CTLFLAG_RD, &dn_cfg.red_lookup_depth, 0, "Depth of RED lookup table");
+    CTLFLAG_RD, DC(red_lookup_depth), 0, "Depth of RED lookup table");
 SYSCTL_INT(_net_inet_ip_dummynet, OID_AUTO, red_avg_pkt_size,
-    CTLFLAG_RD, &dn_cfg.red_avg_pkt_size, 0, "RED Medium packet size");
+    CTLFLAG_RD, DC(red_avg_pkt_size), 0, "RED Medium packet size");
 SYSCTL_INT(_net_inet_ip_dummynet, OID_AUTO, red_max_pkt_size,
-    CTLFLAG_RD, &dn_cfg.red_max_pkt_size, 0, "RED Max packet size");
+    CTLFLAG_RD, DC(red_max_pkt_size), 0, "RED Max packet size");
 
 /* time adjustment */
 SYSCTL_LONG(_net_inet_ip_dummynet, OID_AUTO, tick_delta,
@@ -142,13 +146,13 @@ SYSCTL_LONG(_net_inet_ip_dummynet, OID_A
 
 /* statistics */
 SYSCTL_INT(_net_inet_ip_dummynet, OID_AUTO, schk_count,
-    CTLFLAG_RD, &dn_cfg.schk_count, 0, "Number of schedulers");
+    CTLFLAG_RD, DC(schk_count), 0, "Number of schedulers");
 SYSCTL_INT(_net_inet_ip_dummynet, OID_AUTO, si_count,
-    CTLFLAG_RD, &dn_cfg.si_count, 0, "Number of scheduler instances");
+    CTLFLAG_RD, DC(si_count), 0, "Number of scheduler instances");
 SYSCTL_INT(_net_inet_ip_dummynet, OID_AUTO, fsk_count,
-    CTLFLAG_RD, &dn_cfg.fsk_count, 0, "Number of flowsets");
+    CTLFLAG_RD, DC(fsk_count), 0, "Number of flowsets");
 SYSCTL_INT(_net_inet_ip_dummynet, OID_AUTO, queue_count,
-    CTLFLAG_RD, &dn_cfg.queue_count, 0, "Number of queues");
+    CTLFLAG_RD, DC(queue_count), 0, "Number of queues");
 SYSCTL_ULONG(_net_inet_ip_dummynet, OID_AUTO, io_pkt,
     CTLFLAG_RD, &io_pkt, 0,
     "Number of packets passed to dummynet.");
@@ -158,7 +162,7 @@ SYSCTL_ULONG(_net_inet_ip_dummynet, OID_
 SYSCTL_ULONG(_net_inet_ip_dummynet, OID_AUTO, io_pkt_drop,
     CTLFLAG_RD, &io_pkt_drop, 0,
     "Number of packets dropped by dummynet.");
-
+#undef DC
 SYSEND
 
 #endif
@@ -496,6 +500,8 @@ dummynet_task(void *context, int pending
 	struct timeval t;
 	struct mq q = { NULL, NULL }; /* queue to accumulate results */
 
+	CURVNET_SET(context);
+
 	DN_BH_WLOCK();
 
 	/* Update number of lost(coalesced) ticks. */
@@ -560,6 +566,7 @@ dummynet_task(void *context, int pending
 	dn_reschedule();
 	if (q.head != NULL)
 		dummynet_send(q.head);
+	CURVNET_RESTORE();
 }
 
 /*

Modified: head/sys/netinet/ipfw/ip_dn_private.h
==============================================================================
--- head/sys/netinet/ipfw/ip_dn_private.h	Fri Apr  9 17:32:38 2010	(r206427)
+++ head/sys/netinet/ipfw/ip_dn_private.h	Fri Apr  9 18:02:19 2010	(r206428)
@@ -150,6 +150,8 @@ struct dn_parms {
 	uint32_t expire;
 	uint32_t expire_cycle;	/* tick count */
 	
+	int init_done;
+
 	/* if the upper half is busy doing something long,
 	 * can set the busy flag and we will enqueue packets in
 	 * a queue for later processing.
@@ -354,6 +356,8 @@ enum {
 };
 
 extern struct dn_parms dn_cfg;
+//VNET_DECLARE(struct dn_parms, _base_dn_cfg);
+//#define dn_cfg              VNET(_base_dn_cfg)
 
 int dummynet_io(struct mbuf **, int , struct ip_fw_args *);
 void dummynet_task(void *context, int pending);

Modified: head/sys/netinet/ipfw/ip_dummynet.c
==============================================================================
--- head/sys/netinet/ipfw/ip_dummynet.c	Fri Apr  9 17:32:38 2010	(r206427)
+++ head/sys/netinet/ipfw/ip_dummynet.c	Fri Apr  9 18:02:19 2010	(r206428)
@@ -2112,14 +2112,10 @@ ip_dn_ctl(struct sockopt *sopt)
 static void
 ip_dn_init(void)
 {
-	static int init_done = 0;
-
-	if (init_done)
+	if (dn_cfg.init_done)
 		return;
-	init_done = 1;
-	if (bootverbose)
-		printf("DUMMYNET with IPv6 initialized (100131)\n");
-
+	printf("DUMMYNET %p with IPv6 initialized (100409)\n", curvnet);
+	dn_cfg.init_done = 1;
 	/* Set defaults here. MSVC does not accept initializers,
 	 * and this is also useful for vimages
 	 */
@@ -2156,10 +2152,8 @@ ip_dn_init(void)
 	SLIST_INIT(&dn_cfg.schedlist);
 
 	DN_LOCK_INIT();
-	ip_dn_ctl_ptr = ip_dn_ctl;
-	ip_dn_io_ptr = dummynet_io;
 
-	TASK_INIT(&dn_task, 0, dummynet_task, NULL);
+	TASK_INIT(&dn_task, 0, dummynet_task, curvnet);
 	dn_tq = taskqueue_create_fast("dummynet", M_NOWAIT,
 	    taskqueue_thread_enqueue, &dn_tq);
 	taskqueue_start_threads(&dn_tq, 1, PI_NET, "dummynet");
@@ -2173,13 +2167,16 @@ ip_dn_init(void)
 
 #ifdef KLD_MODULE
 static void
-ip_dn_destroy(void)
+ip_dn_destroy(int last)
 {
 	callout_drain(&dn_timeout);
 
 	DN_BH_WLOCK();
-	ip_dn_ctl_ptr = NULL;
-	ip_dn_io_ptr = NULL;
+	if (last) {
+		printf("%s removing last instance\n", __FUNCTION__);
+		ip_dn_ctl_ptr = NULL;
+		ip_dn_io_ptr = NULL;
+	}
 
 	dummynet_flush();
 	DN_BH_WUNLOCK();
@@ -2204,13 +2201,15 @@ dummynet_modevent(module_t mod, int type
 			return EEXIST ;
 		}
 		ip_dn_init();
+		ip_dn_ctl_ptr = ip_dn_ctl;
+		ip_dn_io_ptr = dummynet_io;
 		return 0;
 	} else if (type == MOD_UNLOAD) {
 #if !defined(KLD_MODULE)
 		printf("dummynet statically compiled, cannot unload\n");
 		return EINVAL ;
 #else
-		ip_dn_destroy();
+		ip_dn_destroy(1 /* last */);
 		return 0;
 #endif
 	} else
@@ -2288,8 +2287,24 @@ static moduledata_t dummynet_mod = {
 	"dummynet", dummynet_modevent, NULL
 };
 
-DECLARE_MODULE(dummynet, dummynet_mod,
-	SI_SUB_PROTO_IFATTACHDOMAIN, SI_ORDER_ANY-1);
+#define	DN_SI_SUB	SI_SUB_PROTO_IFATTACHDOMAIN
+#define	DN_MODEV_ORD	(SI_ORDER_ANY - 128) /* after ipfw */
+DECLARE_MODULE(dummynet, dummynet_mod, DN_SI_SUB, DN_MODEV_ORD);
 MODULE_DEPEND(dummynet, ipfw, 2, 2, 2);
 MODULE_VERSION(dummynet, 1);
+
+/*
+ * Starting up. Done in order after dummynet_modevent() has been called.
+ * VNET_SYSINIT is also called for each existing vnet and each new vnet.
+ */
+//VNET_SYSINIT(vnet_dn_init, DN_SI_SUB, DN_MODEV_ORD+2, ip_dn_init, NULL);
+ 
+/*
+ * Shutdown handlers up shop. These are done in REVERSE ORDER, but still
+ * after dummynet_modevent() has been called. Not called on reboot.
+ * VNET_SYSUNINIT is also called for each exiting vnet as it exits.
+ * or when the module is unloaded.
+ */
+//VNET_SYSUNINIT(vnet_dn_uninit, DN_SI_SUB, DN_MODEV_ORD+2, ip_dn_destroy, NULL);
+
 /* end of file */

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 18:42:15 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id ECBEC1065674;
	Fri,  9 Apr 2010 18:42:15 +0000 (UTC) (envelope-from jfv@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id DC0B28FC12;
	Fri,  9 Apr 2010 18:42:15 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39IgFcj031017;
	Fri, 9 Apr 2010 18:42:15 GMT (envelope-from jfv@svn.freebsd.org)
Received: (from jfv@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39IgFbb031014;
	Fri, 9 Apr 2010 18:42:15 GMT (envelope-from jfv@svn.freebsd.org)
Message-Id: <201004091842.o39IgFbb031014@svn.freebsd.org>
From: Jack F Vogel 
Date: Fri, 9 Apr 2010 18:42:15 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206429 - head/sys/dev/e1000
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 18:42:16 -0000

Author: jfv
Date: Fri Apr  9 18:42:15 2010
New Revision: 206429
URL: http://svn.freebsd.org/changeset/base/206429

Log:
  Incorporate suggested improvements from yongari.
  
  Also, from feedback, make the multiqueue code an
  option (EM_MULTIQUEUE) that is off by default.
  Problems have been seen with UDP when its on.

Modified:
  head/sys/dev/e1000/if_em.c
  head/sys/dev/e1000/if_em.h

Modified: head/sys/dev/e1000/if_em.c
==============================================================================
--- head/sys/dev/e1000/if_em.c	Fri Apr  9 18:02:19 2010	(r206428)
+++ head/sys/dev/e1000/if_em.c	Fri Apr  9 18:42:15 2010	(r206429)
@@ -93,7 +93,7 @@ int	em_display_debug_stats = 0;
 /*********************************************************************
  *  Driver version:
  *********************************************************************/
-char em_driver_version[] = "7.0.2";
+char em_driver_version[] = "7.0.3";
 
 
 /*********************************************************************
@@ -192,7 +192,7 @@ static int	em_suspend(device_t);
 static int	em_resume(device_t);
 static void	em_start(struct ifnet *);
 static void	em_start_locked(struct ifnet *, struct tx_ring *);
-#if __FreeBSD_version >= 800000
+#ifdef EM_MULTIQUEUE
 static int	em_mq_start(struct ifnet *, struct mbuf *);
 static int	em_mq_start_locked(struct ifnet *,
 		    struct tx_ring *, struct mbuf *);
@@ -797,7 +797,7 @@ em_resume(device_t dev)
  *  the packet is requeued.
  **********************************************************************/
 
-#if __FreeBSD_version >= 800000
+#ifdef EM_MULTIQUEUE
 static int
 em_mq_start_locked(struct ifnet *ifp, struct tx_ring *txr, struct mbuf *m)
 {
@@ -812,6 +812,10 @@ em_mq_start_locked(struct ifnet *ifp, st
 		return (err);
 	}
 
+        /* Call cleanup if number of TX descriptors low */
+	if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
+		em_txeof(txr);
+
 	enq = 0;
 	if (m == NULL) {
 		next = drbr_dequeue(ifp, txr->br);
@@ -834,12 +838,17 @@ em_mq_start_locked(struct ifnet *ifp, st
 		ETHER_BPF_MTAP(ifp, next);
 		if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
                         break;
+		if (txr->tx_avail < EM_MAX_SCATTER) {
+			ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+			break;
+		}
 		next = drbr_dequeue(ifp, txr->br);
 	}
 
 	if (enq > 0) {
                 /* Set the watchdog */
                 txr->watchdog_check = TRUE;
+		txr->watchdog_time = ticks;
 	}
 	return (err);
 }
@@ -864,8 +873,7 @@ em_mq_start(struct ifnet *ifp, struct mb
 	txr = &adapter->tx_rings[i];
 
 	if (EM_TX_TRYLOCK(txr)) {
-		if (ifp->if_drv_flags & IFF_DRV_RUNNING)
-			error = em_mq_start_locked(ifp, txr, m);
+		error = em_mq_start_locked(ifp, txr, m);
 		EM_TX_UNLOCK(txr);
 	} else 
 		error = drbr_enqueue(ifp, txr->br, m);
@@ -892,7 +900,7 @@ em_qflush(struct ifnet *ifp)
 	if_qflush(ifp);
 }
 
-#endif /* FreeBSD_version */
+#endif /* EM_MULTIQUEUE */
 
 static void
 em_start_locked(struct ifnet *ifp, struct tx_ring *txr)
@@ -909,8 +917,15 @@ em_start_locked(struct ifnet *ifp, struc
 	if (!adapter->link_active)
 		return;
 
-	while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
+        /* Call cleanup if number of TX descriptors low */
+	if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
+		em_txeof(txr);
 
+	while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
+		if (txr->tx_avail < EM_MAX_SCATTER) {
+			ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+			break;
+		}
                 IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head);
 		if (m_head == NULL)
 			break;
@@ -930,6 +945,7 @@ em_start_locked(struct ifnet *ifp, struc
 		ETHER_BPF_MTAP(ifp, m_head);
 
 		/* Set timeout in case hardware has problems transmitting. */
+		txr->watchdog_time = ticks;
 		txr->watchdog_check = TRUE;
 	}
 
@@ -1359,7 +1375,7 @@ em_poll(struct ifnet *ifp, enum poll_cmd
 
 	EM_TX_LOCK(txr);
 	em_txeof(txr);
-#if __FreeBSD_version >= 800000
+#ifdef EM_MULTIQUEUE
 	if (!drbr_empty(ifp, txr->br))
 		em_mq_start_locked(ifp, txr, NULL);
 #else
@@ -1427,28 +1443,23 @@ em_handle_que(void *context, int pending
 	struct ifnet	*ifp = adapter->ifp;
 	struct tx_ring	*txr = adapter->tx_rings;
 	struct rx_ring	*rxr = adapter->rx_rings;
-	u32		loop = EM_MAX_LOOP;
-	bool		more_rx, more_tx;
+	bool		more_rx;
 
 
 	if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
+		more_rx = em_rxeof(rxr, adapter->rx_process_limit);
 		EM_TX_LOCK(txr);
-		do {
-			more_rx = em_rxeof(rxr, adapter->rx_process_limit);
-			more_tx = em_txeof(txr);
-		} while (loop-- && (more_rx || more_tx));
-
-#if __FreeBSD_version >= 800000
+		em_txeof(txr);
+#ifdef EM_MULTIQUEUE
 		if (!drbr_empty(ifp, txr->br))
 			em_mq_start_locked(ifp, txr, NULL);
 #else
 		if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
 			em_start_locked(ifp, txr);
 #endif
-		if (more_rx || more_tx)
-			taskqueue_enqueue(adapter->tq, &adapter->que_task);
-
 		EM_TX_UNLOCK(txr);
+		if (more_rx)
+			taskqueue_enqueue(adapter->tq, &adapter->que_task);
 	}
 
 	em_enable_intr(adapter);
@@ -1466,17 +1477,12 @@ em_msix_tx(void *arg)
 {
 	struct tx_ring *txr = arg;
 	struct adapter *adapter = txr->adapter;
-	bool		more;
 
 	++txr->tx_irq;
 	EM_TX_LOCK(txr);
-	more = em_txeof(txr);
+	em_txeof(txr);
 	EM_TX_UNLOCK(txr);
-	if (more)
-		taskqueue_enqueue(txr->tq, &txr->tx_task);
-	else
-		/* Reenable this interrupt */
-		E1000_WRITE_REG(&adapter->hw, E1000_IMS, txr->ims);
+	E1000_WRITE_REG(&adapter->hw, E1000_IMS, txr->ims);
 	return;
 }
 
@@ -1531,14 +1537,14 @@ em_handle_rx(void *context, int pending)
 {
 	struct rx_ring	*rxr = context;
 	struct adapter	*adapter = rxr->adapter;
-	u32		loop = EM_MAX_LOOP;
         bool            more;
 
-        do {
-		more = em_rxeof(rxr, adapter->rx_process_limit);
-        } while (loop-- && more);
-        /* Reenable this interrupt */
-	E1000_WRITE_REG(&adapter->hw, E1000_IMS, rxr->ims);
+	more = em_rxeof(rxr, adapter->rx_process_limit);
+	if (more)
+		taskqueue_enqueue(rxr->tq, &rxr->rx_task);
+	else
+		/* Reenable this interrupt */
+		E1000_WRITE_REG(&adapter->hw, E1000_IMS, rxr->ims);
 }
 
 static void
@@ -1547,16 +1553,13 @@ em_handle_tx(void *context, int pending)
 	struct tx_ring	*txr = context;
 	struct adapter	*adapter = txr->adapter;
 	struct ifnet	*ifp = adapter->ifp;
-	u32		loop = EM_MAX_LOOP;
-        bool            more;
 
 	if (!EM_TX_TRYLOCK(txr))
 		return;
-	do {
-		more = em_txeof(txr);
-	} while (loop-- && more);
 
-#if __FreeBSD_version >= 800000
+	em_txeof(txr);
+
+#ifdef EM_MULTIQUEUE
 	if (!drbr_empty(ifp, txr->br))
 		em_mq_start_locked(ifp, txr, NULL);
 #else
@@ -1912,11 +1915,6 @@ em_xmit(struct tx_ring *txr, struct mbuf
 	bus_dmamap_sync(txr->txdma.dma_tag, txr->txdma.dma_map,
 	    BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
 	E1000_WRITE_REG(&adapter->hw, E1000_TDT(txr->me), i);
-	txr->watchdog_time = ticks;
-
-        /* Call cleanup if number of TX descriptors low */
-	if (txr->tx_avail <= EM_TX_CLEANUP_THRESHOLD)
-		em_txeof(txr);
 
 	return (0);
 }
@@ -2658,7 +2656,7 @@ em_setup_interface(device_t dev, struct 
 
 	ifp->if_capabilities = ifp->if_capenable = 0;
 
-#if __FreeBSD_version >= 800000
+#ifdef EM_MULTIQUEUE
 	/* Multiqueue tx functions */
 	ifp->if_transmit = em_mq_start;
 	ifp->if_qflush = em_qflush;
@@ -4078,9 +4076,9 @@ static int
 em_rxeof(struct rx_ring *rxr, int count)
 {
 	struct adapter		*adapter = rxr->adapter;
-	struct ifnet		*ifp = adapter->ifp;;
+	struct ifnet		*ifp = adapter->ifp;
 	struct mbuf		*mp, *sendmp;
-	u8			status;
+	u8			status = 0;
 	u16 			len;
 	int			i, processed, rxdone = 0;
 	bool			eop;
@@ -4141,6 +4139,10 @@ em_rxeof(struct rx_ring *rxr, int count)
 					    E1000_RXD_SPC_VLAN_MASK);
 					rxr->fmp->m_flags |= M_VLANTAG;
 				}
+#ifdef EM_MULTIQUEUE
+				rxr->fmp->m_pkthdr.flowid = curcpu;
+				rxr->fmp->m_flags |= M_FLOWID;
+#endif
 #ifndef __NO_STRICT_ALIGNMENT
 skip:
 #endif
@@ -4193,9 +4195,13 @@ skip:
 	}
 
 	rxr->next_to_check = i;
-
 	EM_RX_UNLOCK(rxr);
+
+#ifdef DEVICE_POLLING
 	return (rxdone);
+#else
+	return ((status & E1000_RXD_STAT_DD) ? TRUE : FALSE);
+#endif
 }
 
 #ifndef __NO_STRICT_ALIGNMENT

Modified: head/sys/dev/e1000/if_em.h
==============================================================================
--- head/sys/dev/e1000/if_em.h	Fri Apr  9 18:02:19 2010	(r206428)
+++ head/sys/dev/e1000/if_em.h	Fri Apr  9 18:42:15 2010	(r206429)
@@ -223,7 +223,7 @@
 #define HW_DEBUGOUT1(S, A)          if (DEBUG_HW) printf(S "\n", A)
 #define HW_DEBUGOUT2(S, A, B)       if (DEBUG_HW) printf(S "\n", A, B)
 
-#define EM_MAX_SCATTER		64
+#define EM_MAX_SCATTER		32
 #define EM_VFTA_SIZE		128
 #define EM_TSO_SIZE		(65535 + sizeof(struct ether_vlan_header))
 #define EM_TSO_SEG_SIZE		4096	/* Max dma segment size */

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 21:16:46 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 30775106564A;
	Fri,  9 Apr 2010 21:16:46 +0000 (UTC) (envelope-from jfv@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 1F7898FC08;
	Fri,  9 Apr 2010 21:16:46 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39LGklq069342;
	Fri, 9 Apr 2010 21:16:46 GMT (envelope-from jfv@svn.freebsd.org)
Received: (from jfv@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39LGkix069340;
	Fri, 9 Apr 2010 21:16:46 GMT (envelope-from jfv@svn.freebsd.org)
Message-Id: <201004092116.o39LGkix069340@svn.freebsd.org>
From: Jack F Vogel 
Date: Fri, 9 Apr 2010 21:16:45 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206430 - head/sys/dev/e1000
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 21:16:46 -0000

Author: jfv
Date: Fri Apr  9 21:16:45 2010
New Revision: 206430
URL: http://svn.freebsd.org/changeset/base/206430

Log:
  Thanks to Michael Tuexen for catching this, bit set that
  keeps the clock from being reset when writing to EITR was
  incorrect, also there is a shared code #define for it anyway.

Modified:
  head/sys/dev/e1000/if_igb.c

Modified: head/sys/dev/e1000/if_igb.c
==============================================================================
--- head/sys/dev/e1000/if_igb.c	Fri Apr  9 18:42:15 2010	(r206429)
+++ head/sys/dev/e1000/if_igb.c	Fri Apr  9 21:16:45 2010	(r206430)
@@ -1453,7 +1453,7 @@ igb_msix_que(void *arg)
         if (adapter->hw.mac.type == e1000_82575)
                 newitr |= newitr << 16;
         else
-                newitr |= 0x8000000;
+                newitr |= E1000_EITR_CNT_IGNR;
                  
         /* save for next interrupt */
         que->eitr_setting = newitr;

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 21:18:47 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 0618D106564A;
	Fri,  9 Apr 2010 21:18:47 +0000 (UTC) (envelope-from jfv@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id E92948FC1E;
	Fri,  9 Apr 2010 21:18:46 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39LIkGq069801;
	Fri, 9 Apr 2010 21:18:46 GMT (envelope-from jfv@svn.freebsd.org)
Received: (from jfv@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39LIkGT069799;
	Fri, 9 Apr 2010 21:18:46 GMT (envelope-from jfv@svn.freebsd.org)
Message-Id: <201004092118.o39LIkGT069799@svn.freebsd.org>
From: Jack F Vogel 
Date: Fri, 9 Apr 2010 21:18:46 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206431 - head/sys/dev/e1000
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 21:18:47 -0000

Author: jfv
Date: Fri Apr  9 21:18:46 2010
New Revision: 206431
URL: http://svn.freebsd.org/changeset/base/206431

Log:
  DUH, must be tired, I missed the second instance...
  time for the weekend :)

Modified:
  head/sys/dev/e1000/if_igb.c

Modified: head/sys/dev/e1000/if_igb.c
==============================================================================
--- head/sys/dev/e1000/if_igb.c	Fri Apr  9 21:16:45 2010	(r206430)
+++ head/sys/dev/e1000/if_igb.c	Fri Apr  9 21:18:46 2010	(r206431)
@@ -2357,7 +2357,7 @@ igb_configure_queues(struct adapter *ada
         if (hw->mac.type == e1000_82575)
                 newitr |= newitr << 16;
         else
-                newitr |= 0x8000000;
+                newitr |= E1000_EITR_CNT_IGNR;
 
 	for (int i = 0; i < adapter->num_queues; i++) {
 		que = &adapter->queues[i];

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 22:50:28 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id BEFA6106564A;
	Fri,  9 Apr 2010 22:50:28 +0000 (UTC)
	(envelope-from yongari@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id ACDBB8FC1A;
	Fri,  9 Apr 2010 22:50:28 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39MoSm1091398;
	Fri, 9 Apr 2010 22:50:28 GMT (envelope-from yongari@svn.freebsd.org)
Received: (from yongari@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39MoSsK091395;
	Fri, 9 Apr 2010 22:50:28 GMT (envelope-from yongari@svn.freebsd.org)
Message-Id: <201004092250.o39MoSsK091395@svn.freebsd.org>
From: Pyun YongHyeon 
Date: Fri, 9 Apr 2010 22:50:28 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206433 - in head/sys: dev/re pci
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 22:50:29 -0000

Author: yongari
Date: Fri Apr  9 22:50:28 2010
New Revision: 206433
URL: http://svn.freebsd.org/changeset/base/206433

Log:
  Add preliminary support for 8168E/8111E PCIe controller.
  While I'm here simplify device description string.
  
  Tested by:	Michael Beckmann < michael <> apfel dot de >
  MFC after:	5 days

Modified:
  head/sys/dev/re/if_re.c
  head/sys/pci/if_rlreg.h

Modified: head/sys/dev/re/if_re.c
==============================================================================
--- head/sys/dev/re/if_re.c	Fri Apr  9 22:48:27 2010	(r206432)
+++ head/sys/dev/re/if_re.c	Fri Apr  9 22:50:28 2010	(r206433)
@@ -174,8 +174,7 @@ static struct rl_type re_devs[] = {
 	{ RT_VENDORID, RT_DEVICEID_8101E, 0,
 	    "RealTek 8101E/8102E/8102EL/8103E PCIe 10/100baseTX" },
 	{ RT_VENDORID, RT_DEVICEID_8168, 0,
-	    "RealTek 8168/8168B/8168C/8168CP/8168D/8168DP/"
-	    "8111B/8111C/8111CP/8111DP PCIe Gigabit Ethernet" },
+	    "RealTek 8168/8111 B/C/CP/D/DP/E PCIe Gigabit Ethernet" },
 	{ RT_VENDORID, RT_DEVICEID_8169, 0,
 	    "RealTek 8169/8169S/8169SB(L)/8110S/8110SB(L) Gigabit Ethernet" },
 	{ RT_VENDORID, RT_DEVICEID_8169SC, 0,
@@ -220,6 +219,7 @@ static struct rl_hwrev re_hwrevs[] = {
 	{ RL_HWREV_8168CP, RL_8169, "8168CP/8111CP"},
 	{ RL_HWREV_8168D, RL_8169, "8168D/8111D"},
 	{ RL_HWREV_8168DP, RL_8169, "8168DP/8111DP"},
+	{ RL_HWREV_8168E, RL_8169, "8168E/8111E"},
 	{ 0, 0, NULL }
 };
 
@@ -1310,6 +1310,11 @@ re_attach(device_t dev)
 		 */
 		sc->rl_flags |= RL_FLAG_NOJUMBO;
 		break;
+	case RL_HWREV_8168E:
+		sc->rl_flags |= RL_FLAG_PHYWAKE | RL_FLAG_PHYWAKE_PM |
+		    RL_FLAG_PAR | RL_FLAG_DESCV2 | RL_FLAG_MACSTAT |
+		    RL_FLAG_CMDSTOP | RL_FLAG_AUTOPAD | RL_FLAG_NOJUMBO;
+		break;
 	case RL_HWREV_8169_8110SB:
 	case RL_HWREV_8169_8110SBL:
 	case RL_HWREV_8169_8110SC:
@@ -1393,6 +1398,8 @@ re_attach(device_t dev)
 	}
 
 	/* Take PHY out of power down mode. */
+	if ((sc->rl_flags & RL_FLAG_PHYWAKE_PM) != 0)
+		CSR_WRITE_1(sc, RL_PMCH, CSR_READ_1(sc, RL_PMCH) | 0x80);
 	if ((sc->rl_flags & RL_FLAG_PHYWAKE) != 0) {
 		re_gmii_writereg(dev, 1, 0x1f, 0);
 		re_gmii_writereg(dev, 1, 0x0e, 0);
@@ -3135,6 +3142,9 @@ re_setwol(struct rl_softc *sc)
 		v |= RL_CFG5_WOL_LANWAKE;
 	CSR_WRITE_1(sc, RL_CFG5, v);
 
+	if ((ifp->if_capenable & IFCAP_WOL) != 0 &&
+	    (sc->rl_flags & RL_FLAG_PHYWAKE_PM) != 0)
+		CSR_WRITE_1(sc, RL_PMCH, CSR_READ_1(sc, RL_PMCH) & ~0x80);
 	/*
 	 * It seems that hardware resets its link speed to 100Mbps in
 	 * power down mode so switching to 100Mbps in driver is not

Modified: head/sys/pci/if_rlreg.h
==============================================================================
--- head/sys/pci/if_rlreg.h	Fri Apr  9 22:48:27 2010	(r206432)
+++ head/sys/pci/if_rlreg.h	Fri Apr  9 22:50:28 2010	(r206433)
@@ -133,6 +133,7 @@
 #define RL_GMEDIASTAT		0x006C	/* 8 bits */
 #define RL_MACDBG		0x006D	/* 8 bits, 8168C SPIN2 only */
 #define RL_GPIO			0x006E	/* 8 bits, 8168C SPIN2 only */
+#define RL_PMCH			0x006F	/* 8 bits */
 #define RL_MAXRXPKTLEN		0x00DA	/* 16 bits, chip multiplies by 8 */
 #define RL_GTXSTART		0x0038	/* 8 bits */
 
@@ -162,6 +163,7 @@
 #define RL_HWREV_8102EL_SPIN1	0x24c00000
 #define RL_HWREV_8168D		0x28000000
 #define RL_HWREV_8168DP		0x28800000
+#define RL_HWREV_8168E		0x2C000000
 #define RL_HWREV_8168_SPIN1	0x30000000
 #define RL_HWREV_8100E		0x30800000
 #define RL_HWREV_8101E		0x34000000
@@ -884,6 +886,7 @@ struct rl_softc {
 	uint32_t		rl_flags;
 #define	RL_FLAG_MSI		0x0001
 #define	RL_FLAG_AUTOPAD		0x0002
+#define	RL_FLAG_PHYWAKE_PM	0x0004
 #define	RL_FLAG_PHYWAKE		0x0008
 #define	RL_FLAG_NOJUMBO		0x0010
 #define	RL_FLAG_PAR		0x0020

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 23:00:25 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 53BFD106566B;
	Fri,  9 Apr 2010 23:00:25 +0000 (UTC)
	(envelope-from yongari@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 4230D8FC15;
	Fri,  9 Apr 2010 23:00:25 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39N0P3A094045;
	Fri, 9 Apr 2010 23:00:25 GMT (envelope-from yongari@svn.freebsd.org)
Received: (from yongari@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39N0Pxr094043;
	Fri, 9 Apr 2010 23:00:25 GMT (envelope-from yongari@svn.freebsd.org)
Message-Id: <201004092300.o39N0Pxr094043@svn.freebsd.org>
From: Pyun YongHyeon 
Date: Fri, 9 Apr 2010 23:00:25 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206436 - head/sys/pci
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 23:00:25 -0000

Author: yongari
Date: Fri Apr  9 23:00:24 2010
New Revision: 206436
URL: http://svn.freebsd.org/changeset/base/206436

Log:
  Consistently use capital letters.

Modified:
  head/sys/pci/if_rlreg.h

Modified: head/sys/pci/if_rlreg.h
==============================================================================
--- head/sys/pci/if_rlreg.h	Fri Apr  9 22:51:19 2010	(r206435)
+++ head/sys/pci/if_rlreg.h	Fri Apr  9 23:00:24 2010	(r206436)
@@ -160,7 +160,7 @@
 #define RL_HWREV_8169_8110SB	0x10000000
 #define RL_HWREV_8169_8110SC	0x18000000
 #define RL_HWREV_8102EL		0x24800000
-#define RL_HWREV_8102EL_SPIN1	0x24c00000
+#define RL_HWREV_8102EL_SPIN1	0x24C00000
 #define RL_HWREV_8168D		0x28000000
 #define RL_HWREV_8168DP		0x28800000
 #define RL_HWREV_8168E		0x2C000000
@@ -182,7 +182,7 @@
 #define RL_HWREV_8139C		0x74000000
 #define RL_HWREV_8139D		0x74400000
 #define RL_HWREV_8139CPLUS	0x74800000
-#define RL_HWREV_8101		0x74c00000
+#define RL_HWREV_8101		0x74C00000
 #define RL_HWREV_8100		0x78800000
 #define RL_HWREV_8169_8110SBL	0x7CC00000
 #define RL_HWREV_8169_8110SCE	0x98000000

From owner-svn-src-head@FreeBSD.ORG  Fri Apr  9 23:15:37 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 9E3A51065670;
	Fri,  9 Apr 2010 23:15:37 +0000 (UTC) (envelope-from jfv@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 8C9288FC13;
	Fri,  9 Apr 2010 23:15:37 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o39NFbBf097598;
	Fri, 9 Apr 2010 23:15:37 GMT (envelope-from jfv@svn.freebsd.org)
Received: (from jfv@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o39NFb3p097595;
	Fri, 9 Apr 2010 23:15:37 GMT (envelope-from jfv@svn.freebsd.org)
Message-Id: <201004092315.o39NFb3p097595@svn.freebsd.org>
From: Jack F Vogel 
Date: Fri, 9 Apr 2010 23:15:37 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206437 - head/sys/dev/e1000
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Fri, 09 Apr 2010 23:15:37 -0000

Author: jfv
Date: Fri Apr  9 23:15:37 2010
New Revision: 206437
URL: http://svn.freebsd.org/changeset/base/206437

Log:
  A few more changes from yongari:
  	- code flow in handler could let interrupt be
  	  reenabled when not wanted.
  	- change where the RX lock is taken to improve
  	  performance.
  	- adapter->msix is true for MSI systems also,
  	  it needs to explicitly test for 82574, good one :)

Modified:
  head/sys/dev/e1000/if_em.c
  head/sys/dev/e1000/if_em.h

Modified: head/sys/dev/e1000/if_em.c
==============================================================================
--- head/sys/dev/e1000/if_em.c	Fri Apr  9 23:00:24 2010	(r206436)
+++ head/sys/dev/e1000/if_em.c	Fri Apr  9 23:15:37 2010	(r206437)
@@ -93,7 +93,7 @@ int	em_display_debug_stats = 0;
 /*********************************************************************
  *  Driver version:
  *********************************************************************/
-char em_driver_version[] = "7.0.3";
+char em_driver_version[] = "7.0.4";
 
 
 /*********************************************************************
@@ -1458,8 +1458,10 @@ em_handle_que(void *context, int pending
 			em_start_locked(ifp, txr);
 #endif
 		EM_TX_UNLOCK(txr);
-		if (more_rx)
+		if (more_rx) {
 			taskqueue_enqueue(adapter->tq, &adapter->que_task);
+			return;
+		}
 	}
 
 	em_enable_intr(adapter);
@@ -1499,8 +1501,10 @@ em_msix_rx(void *arg)
 	struct adapter	*adapter = rxr->adapter;
 	bool		more;
 
+	EM_RX_LOCK(rxr);
 	++rxr->rx_irq;
 	more = em_rxeof(rxr, adapter->rx_process_limit);
+	EM_RX_UNLOCK(rxr);
 	if (more)
 		taskqueue_enqueue(rxr->tq, &rxr->rx_task);
 	else
@@ -1539,7 +1543,9 @@ em_handle_rx(void *context, int pending)
 	struct adapter	*adapter = rxr->adapter;
         bool            more;
 
+	EM_RX_LOCK(rxr);
 	more = em_rxeof(rxr, adapter->rx_process_limit);
+	EM_RX_UNLOCK(rxr);
 	if (more)
 		taskqueue_enqueue(rxr->tq, &rxr->rx_task);
 	else
@@ -3999,7 +4005,7 @@ em_initialize_receive_unit(struct adapte
 	** When using MSIX interrupts we need to throttle
 	** using the EITR register (82574 only)
 	*/
-	if (adapter->msix)
+	if (hw->mac.type == e1000_82574)
 		for (int i = 0; i < 4; i++)
 			E1000_WRITE_REG(hw, E1000_EITR_82574(i),
 			    DEFAULT_ITR);
@@ -4084,7 +4090,7 @@ em_rxeof(struct rx_ring *rxr, int count)
 	bool			eop;
 	struct e1000_rx_desc	*cur;
 
-	EM_RX_LOCK(rxr);
+	EM_RX_LOCK_ASSERT(rxr);
 
 	for (i = rxr->next_to_check, processed = 0; count != 0;) {
 
@@ -4195,7 +4201,6 @@ skip:
 	}
 
 	rxr->next_to_check = i;
-	EM_RX_UNLOCK(rxr);
 
 #ifdef DEVICE_POLLING
 	return (rxdone);
@@ -4384,7 +4389,7 @@ em_enable_intr(struct adapter *adapter)
 	struct e1000_hw *hw = &adapter->hw;
 	u32 ims_mask = IMS_ENABLE_MASK;
 
-	if (adapter->msix) {
+	if (hw->mac.type == e1000_82574)
 		E1000_WRITE_REG(hw, EM_EIAC, EM_MSIX_MASK);
 		ims_mask |= EM_MSIX_MASK;
 	} 
@@ -4396,7 +4401,7 @@ em_disable_intr(struct adapter *adapter)
 {
 	struct e1000_hw *hw = &adapter->hw;
 
-	if (adapter->msix)
+	if (hw->mac.type == e1000_82574)
 		E1000_WRITE_REG(hw, EM_EIAC, 0);
 	E1000_WRITE_REG(&adapter->hw, E1000_IMC, 0xffffffff);
 }

Modified: head/sys/dev/e1000/if_em.h
==============================================================================
--- head/sys/dev/e1000/if_em.h	Fri Apr  9 23:00:24 2010	(r206436)
+++ head/sys/dev/e1000/if_em.h	Fri Apr  9 23:15:37 2010	(r206437)
@@ -453,5 +453,6 @@ struct em_buffer {
 #define	EM_RX_UNLOCK(_sc)		mtx_unlock(&(_sc)->rx_mtx)
 #define	EM_CORE_LOCK_ASSERT(_sc)	mtx_assert(&(_sc)->core_mtx, MA_OWNED)
 #define	EM_TX_LOCK_ASSERT(_sc)		mtx_assert(&(_sc)->tx_mtx, MA_OWNED)
+#define	EM_RX_LOCK_ASSERT(_sc)		mtx_assert(&(_sc)->rx_mtx, MA_OWNED)
 
 #endif /* _EM_H_DEFINED_ */

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 06:26:37 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 22D0D1065748
	for ; Sat, 10 Apr 2010 06:26:37 +0000 (UTC)
	(envelope-from moonlightakkiy@yahoo.ca)
Received: from web51806.mail.re2.yahoo.com (web51806.mail.re2.yahoo.com
	[206.190.38.237])
	by mx1.freebsd.org (Postfix) with SMTP id B62178FC13
	for ; Sat, 10 Apr 2010 06:26:36 +0000 (UTC)
Received: (qmail 44884 invoked by uid 60001); 10 Apr 2010 06:26:36 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.ca; s=s1024;
	t=1270880796; bh=RfIFvTAQYnfCE+QVKLRSSxwYHbvsd5WRreN53aSGU5k=;
	h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type;
	b=XbVm7CjQ09mofd7RIzWe6rgH1aB/t/mhuKh+b81SEwPo+oNbqEdKIBD2mhvlDmKrXC7SbE/vKjS69ifoMSqwWsmSZPrl+eKzzrno2FYoDba8B5FN3npg7IvEGTNrR8dbx+i30PajL19fhV8Ai5GwKKGnoABCmKNnI21MPBrRnSg=
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.ca;
	h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type;
	b=u+GUMafKpJrE/D311xCPVt4fzmLDXrJ96zJDC/pjaAHytYQGhKzo+FMbcodVzGPUkRFv+6MTOWi/dWwzPYS7wSU0wjuLcdqgopifFFWCbIhid73f9a3I+Ij1pBMr/ow7gEaKG3uPu4gv5dFSztdBjaPJfPh2JPI0pAz1rYwRy+M=;
Message-ID: <193853.44645.qm@web51806.mail.re2.yahoo.com>
X-YMail-OSG: aKC4__sVM1l639zK9QdrWOhoS31GdDANEgxFK9Z_7pFCthP23s263b8GCCntg3C8pf8pkNMqMu7yTCatHxzqT_bJ8gLwvIckGd0qVlWHTMZtkyMRjq_27Z3ucBEMohzlAOLQYRV00dhntinP785ZvO52gJrBaZactGsRBUjzn9B1ThWduvGIoIVBlN.TeFJ_nq23CUfVH454LyD8V2w2zuyW0p1M0ypoTwvU2JjoIawI0sZJKjlzQhq9WLAlh_Yfbku_IvSZnxRGjCcvg2K20BvNjuOSu1o0tzQDFx.1uzaQ9UVqjVEL4Z_gJ0NiopyVYPv0Kq5DgSjnz3nNZeU45g--
Received: from [173.183.132.20] by web51806.mail.re2.yahoo.com via HTTP;
	Fri, 09 Apr 2010 23:26:35 PDT
X-Mailer: YahooMailRC/348.3 YahooMailWebService/0.8.100.260964
References: <20100407165048.8CF9E106566B@hub.freebsd.org>
	<488108.55494.qm@web51803.mail.re2.yahoo.com>
	<81BE57A1-3E1E-4BB9-9FCE-080B34B4452C@FreeBSD.org>
Date: Fri, 9 Apr 2010 23:26:35 -0700 (PDT)
From: PseudoCylon 
To: Rui Paulo 
In-Reply-To: <81BE57A1-3E1E-4BB9-9FCE-080B34B4452C@FreeBSD.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org,
	src-committers@freebsd.org
Subject: Re: svn commit: r206358 (patch for if_run)
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 06:26:37 -0000

>>>> Author: rpaulo
>>>> Date: Wed Apr  7 15:29:13 2010
>>>> New Revision: 206358
>>>> URL: http://svn.freebsd.org/changeset/base/206358
>>>> 
>>>> Log:
>>>> net80211 rate control framework (net80211 ratectl).
>>>> 
>>>> This framework allows drivers to abstract the rate control algorithm and
>>>> just feed the framework with the usable parameters. The rate control
>>>> framework will now deal with passing the parameters to the selected
>>>> algorithm. Right now we have AMRR (the default) and RSSADAPT but there's
>>>> no way to select one with ifconfig, yet.
>>>> The objective is to have more rate control algorithms in the net80211
>>>> stack so all drivers[0] can use it. Ideally, we'll have the well-known
>>>> sample rate control algorithm in the net80211 at some point so all
>>>> drivers can use it (not just ath).
>>>> 
>>> 
>>> Hello,
>>> 
>>> I've just tried the commit and run(4) works fine out of the box. It properly updates the rate.
>>> 
>>> Thank you for updating the driver.
>>> 
>>> AK
>>> 
>> 
>> Sorry, correction.
>> 
>> I've got complain from witness
>> 
>> uma_zalloc_arg: zone "64" with the following non-sleepable locks held:
>> exclusive sleep mutex run0 (network driver) r = 0 (0xffffff80008de128) locked @ /usr/src>/sys/dev/usb/usb_request.c:540
>> KDB: stack backtrace:
>> db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
>> _witness_debugger() at _witness_debugger+0x2e
>> witness_warn() at witness_warn+0x2c2
>> uma_zalloc_arg() at uma_zalloc_arg+0x335
>> malloc() at malloc+0x9a
>> amrr_node_init() at amrr_node_init+0x38
>> run_newstate() at run_newstate+0x363
>> ieee80211_newstate_cb() at ieee80211_newstate_cb+0xac
>> taskqueue_run() at taskqueue_run+0x91
>> taskqueue_thread_loop() at taskqueue_thread_loop+0x3f
>> fork_exit() at fork_exit+0x12a
>> fork_trampoline() at fork_trampoline+0xe
>> --- trap 0, rip = 0, rsp = 0xffffff803e5d0d30, rbp = 0 ---
>> 
>>
Just unlocking the mutex before calling ieee80211_ratectl_node_init()
fix this. As long as >ieee80211_ratectl_node_init() won't be called with
the same ni at the same time, unlocking should be safe.
>> 
>> Here is patch
>
>
>Can you try updating and see if everything works for you? Thanks.
>
>Regards,
>--
>Rui Paulo

Yes, everything is working. No debug/warning message.

Thank you very much.

AK


      __________________________________________________________________
Looking for the perfect gift? Give the gift of Flickr! 

http://www.flickr.com/gift/

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 06:55:30 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 4971D106564A;
	Sat, 10 Apr 2010 06:55:30 +0000 (UTC)
	(envelope-from bschmidt@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 2C0568FC08;
	Sat, 10 Apr 2010 06:55:30 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3A6tU8l004291;
	Sat, 10 Apr 2010 06:55:30 GMT
	(envelope-from bschmidt@svn.freebsd.org)
Received: (from bschmidt@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3A6tUEW004289;
	Sat, 10 Apr 2010 06:55:30 GMT
	(envelope-from bschmidt@svn.freebsd.org)
Message-Id: <201004100655.o3A6tUEW004289@svn.freebsd.org>
From: Bernhard Schmidt 
Date: Sat, 10 Apr 2010 06:55:30 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206443 - head/sys/dev/iwn
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 06:55:30 -0000

Author: bschmidt
Date: Sat Apr 10 06:55:29 2010
New Revision: 206443
URL: http://svn.freebsd.org/changeset/base/206443

Log:
  Small whitespace cleanup.
  
  Approved by:	rpaulo (mentor)
  MFC after:	2 weeks

Modified:
  head/sys/dev/iwn/if_iwn.c

Modified: head/sys/dev/iwn/if_iwn.c
==============================================================================
--- head/sys/dev/iwn/if_iwn.c	Sat Apr 10 04:47:11 2010	(r206442)
+++ head/sys/dev/iwn/if_iwn.c	Sat Apr 10 06:55:29 2010	(r206443)
@@ -839,7 +839,7 @@ iwn_nic_lock(struct iwn_softc *sc)
 	/* Spin until we actually get the lock. */
 	for (ntries = 0; ntries < 1000; ntries++) {
 		if ((IWN_READ(sc, IWN_GP_CNTRL) &
-		     (IWN_GP_CNTRL_MAC_ACCESS_ENA | IWN_GP_CNTRL_SLEEP)) ==
+		    (IWN_GP_CNTRL_MAC_ACCESS_ENA | IWN_GP_CNTRL_SLEEP)) ==
 		    IWN_GP_CNTRL_MAC_ACCESS_ENA)
 			return 0;
 		DELAY(10);
@@ -1092,8 +1092,7 @@ iwn_dma_contig_alloc(struct iwn_softc *s
 	    flags | BUS_DMA_ZERO, &dma->map);
 	if (error != 0) {
 		device_printf(sc->sc_dev,
-		   "%s: bus_dmamem_alloc failed, error %d\n",
-		   __func__, error);
+		    "%s: bus_dmamem_alloc failed, error %d\n", __func__, error);
 		goto fail;
 	}
 	error = bus_dmamap_load(dma->tag, dma->map, dma->vaddr,
@@ -1243,7 +1242,7 @@ iwn_alloc_rx_ring(struct iwn_softc *sc, 
 		data->m = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, MJUMPAGESIZE);
 		if (data->m == NULL) {
 			device_printf(sc->sc_dev,
-			   "%s: could not allocate rx mbuf\n", __func__);
+			    "%s: could not allocate rx mbuf\n", __func__);
 			error = ENOMEM;
 			goto fail;
 		}
@@ -2788,7 +2787,7 @@ iwn5000_reset_sched(struct iwn_softc *sc
 	if (idx < IWN_SCHED_WINSZ) {
 		*(w + IWN_TX_RING_COUNT) = *w;
 		bus_dmamap_sync(sc->sched_dma.tag, sc->sched_dma.map,
-		     BUS_DMASYNC_PREWRITE);
+		    BUS_DMASYNC_PREWRITE);
 	}
 }
 
@@ -2996,7 +2995,7 @@ iwn_tx_data(struct iwn_softc *sc, struct
 		if (error != 0) {
 			device_printf(sc->sc_dev,
 			    "%s: bus_dmamap_load_mbuf_sg failed, error %d\n",
-			     __func__, error);
+			    __func__, error);
 			m_freem(m);
 			return error;
 		}
@@ -3191,7 +3190,7 @@ iwn_tx_data_raw(struct iwn_softc *sc, st
 		if (error != 0) {
 			device_printf(sc->sc_dev,
 			    "%s: bus_dmamap_load_mbuf_sg failed, error %d\n",
-			     __func__, error);
+			    __func__, error);
 			m_freem(m);
 			return error;
 		}
@@ -4326,7 +4325,7 @@ iwn_tune_sensitivity(struct iwn_softc *s
 
 		if (calib->cck_state != IWN_CCK_STATE_INIT &&
 		    (((int32_t)calib->noise_ref - (int32_t)noise_ref) > 2 ||
-		     calib->low_fa > 100)) {
+		    calib->low_fa > 100)) {
 			inc(calib->energy_cck, 2, limits->min_energy_cck);
 			dec(calib->cck_x4,     3, limits->min_cck_x4);
 			dec(calib->cck_mrc_x4, 3, limits->min_cck_mrc_x4);
@@ -4886,7 +4885,6 @@ iwn_run(struct iwn_softc *sc, struct iee
 		    __func__, error);
 		return error;
 	}
-	
 
 	/* Configuration has changed, set TX power accordingly. */
 	error = hal->set_txpower(sc, ni->ni_chan, 1);
@@ -5599,7 +5597,7 @@ iwn_read_firmware(struct iwn_softc *sc)
 	if (sc->fw_fp == NULL) {
 		device_printf(sc->sc_dev,
 		    "%s: could not load firmare image \"%s\"\n", __func__,
-		     sc->fwname);
+		    sc->fwname);
 		IWN_LOCK(sc);
 		return EINVAL;
 	}

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 06:58:25 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 527D6106566B;
	Sat, 10 Apr 2010 06:58:25 +0000 (UTC)
	(envelope-from bschmidt@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 3E9918FC12;
	Sat, 10 Apr 2010 06:58:25 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3A6wPIf004993;
	Sat, 10 Apr 2010 06:58:25 GMT
	(envelope-from bschmidt@svn.freebsd.org)
Received: (from bschmidt@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3A6wPHH004989;
	Sat, 10 Apr 2010 06:58:25 GMT
	(envelope-from bschmidt@svn.freebsd.org)
Message-Id: <201004100658.o3A6wPHH004989@svn.freebsd.org>
From: Bernhard Schmidt 
Date: Sat, 10 Apr 2010 06:58:25 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206444 - head/sys/dev/iwn
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 06:58:25 -0000

Author: bschmidt
Date: Sat Apr 10 06:58:24 2010
New Revision: 206444
URL: http://svn.freebsd.org/changeset/base/206444

Log:
  * Rename bluetooth coexistence flags, no binary change.
  * Enable DC calibration and crystal calibration on Centrino Advanced-N
    6250 parts.
  * Workaround for a HW bug (does not affect 4965AGN) that may sporadically
    affect latency under some rare circumstances. From a similar commit to
    iwlwifi.
  * Update sensitivity settings for 5000 series to workaround a performance
    bug in the DSP (1000 is not affected so we keep the old values for 5000).
  * Update sensitivity settings for 6000 series.
  * Set differential gains on 6250 too (but use a 1.0 factor, not 1.5).
  * Init OFDM sensitivity with min value (which depends on the chip)
    instead of hardcoding it to 90.
  * Read calibration version from ROM and set IWN_GP_DRIVER_CALIB_VER6
    bit on 6x50 if version >= 6.
  
  Approved by:	rpaulo (mentor)
  Obtained from:	OpenBSD
  MFC after:	2 weeks

Modified:
  head/sys/dev/iwn/if_iwn.c
  head/sys/dev/iwn/if_iwnreg.h
  head/sys/dev/iwn/if_iwnvar.h

Modified: head/sys/dev/iwn/if_iwn.c
==============================================================================
--- head/sys/dev/iwn/if_iwn.c	Sat Apr 10 06:55:29 2010	(r206443)
+++ head/sys/dev/iwn/if_iwn.c	Sat Apr 10 06:58:24 2010	(r206444)
@@ -562,12 +562,15 @@ iwn_attach(device_t dev)
 #if IWN_RBUF_SIZE == 8192
 	    IEEE80211_HTCAP_AMSDU7935 |
 #endif
-	    IEEE80211_HTCAP_SMPS_DIS |
 	    IEEE80211_HTCAP_CBW20_40 |
 	    IEEE80211_HTCAP_SGI20 |
 	    IEEE80211_HTCAP_SGI40;
 	if (sc->hw_type != IWN_HW_REV_TYPE_4965)
 		ic->ic_htcaps |= IEEE80211_HTCAP_GF;
+	if (sc->hw_type == IWN_HW_REV_TYPE_6050)
+		ic->ic_htcaps |= IEEE80211_HTCAP_SMPS_DYN;
+	else
+		ic->ic_htcaps |= IEEE80211_HTCAP_SMPS_DIS;
 #endif
 
 	/* Read MAC address, channels, etc from EEPROM. */
@@ -680,7 +683,7 @@ iwn_hal_attach(struct iwn_softc *sc)
 		break;
 	case IWN_HW_REV_TYPE_1000:
 		sc->sc_hal = &iwn5000_hal;
-		sc->limits = &iwn5000_sensitivity_limits;
+		sc->limits = &iwn1000_sensitivity_limits;
 		sc->fwname = "iwn1000fw";
 		sc->txchainmask = IWN_ANT_A;
 		sc->rxchainmask = IWN_ANT_AB;
@@ -1609,6 +1612,7 @@ iwn4965_print_power_group(struct iwn_sof
 void
 iwn5000_read_eeprom(struct iwn_softc *sc)
 {
+	struct iwn5000_eeprom_calib_hdr hdr;
 	int32_t temp, volt;
 	uint32_t addr, base;
 	int i;
@@ -1632,6 +1636,12 @@ iwn5000_read_eeprom(struct iwn_softc *sc
 
 	iwn_read_prom_data(sc, IWN5000_EEPROM_CAL, &val, 2);
 	base = le16toh(val);
+	iwn_read_prom_data(sc, base, &hdr, sizeof hdr);
+	DPRINTF(sc, IWN_DEBUG_CALIBRATE,
+	    "%s: calib version=%u pa type=%u voltage=%u\n",
+	    __func__, hdr.version, hdr.pa_type, le16toh(hdr.volt));
+	    sc->calib_ver = hdr.version;
+
 	if (sc->hw_type == IWN_HW_REV_TYPE_5150) {
 		/* Compute temperature offset. */
 		iwn_read_prom_data(sc, base + IWN5000_EEPROM_TEMP, &val, 2);
@@ -2138,7 +2148,8 @@ iwn5000_rx_calib_results(struct iwn_soft
 
 	switch (calib->code) {
 	case IWN5000_PHY_CALIB_DC:
-		if (sc->hw_type == IWN_HW_REV_TYPE_5150)
+		if (sc->hw_type == IWN_HW_REV_TYPE_5150 ||
+		    sc->hw_type == IWN_HW_REV_TYPE_6050)
 			idx = 0;
 		break;
 	case IWN5000_PHY_CALIB_LO:
@@ -2668,8 +2679,10 @@ iwn_intr(void *arg)
 			sc->ict_cur = (sc->ict_cur + 1) % IWN_ICT_COUNT;
 		}
 		tmp = le32toh(tmp);
-		if (tmp == 0xffffffff)
-			tmp = 0;	/* Shouldn't happen. */
+		if (tmp == 0xffffffff)	/* Shouldn't happen. */
+			tmp = 0;
+		else if (tmp & 0xc0000)	/* Workaround a HW bug. */
+			tmp |= 0x8000;
 		r1 = (tmp & 0xff00) << 16 | (tmp & 0xff);
 		r2 = 0;	/* Unused. */
 	} else {
@@ -4022,7 +4035,7 @@ iwn_init_sensitivity(struct iwn_softc *s
 	/* Set initial correlation values. */
 	calib->ofdm_x1     = sc->limits->min_ofdm_x1;
 	calib->ofdm_mrc_x1 = sc->limits->min_ofdm_mrc_x1;
-	calib->ofdm_x4     = 90;
+	calib->ofdm_x4     = sc->limits->min_ofdm_x4;
 	calib->ofdm_mrc_x4 = sc->limits->min_ofdm_mrc_x4;
 	calib->cck_x4      = 125;
 	calib->cck_mrc_x4  = sc->limits->min_cck_mrc_x4;
@@ -4115,9 +4128,6 @@ iwn5000_init_gains(struct iwn_softc *sc)
 {
 	struct iwn_phy_calib cmd;
 
-	if (sc->hw_type == IWN_HW_REV_TYPE_6050)
-		return 0;
-
 	memset(&cmd, 0, sizeof cmd);
 	cmd.code = IWN5000_PHY_CALIB_RESET_NOISE_GAIN;
 	cmd.ngroups = 1;
@@ -4165,10 +4175,10 @@ iwn5000_set_gains(struct iwn_softc *sc)
 {
 	struct iwn_calib_state *calib = &sc->calib;
 	struct iwn_phy_calib_gain cmd;
-	int i, ant, delta;
+	int i, ant, delta, div;
 
-	if (sc->hw_type == IWN_HW_REV_TYPE_6050)
-		return 0;
+	/* We collected 20 beacons and !=6050 need a 1.5 factor. */
+	div = (sc->hw_type == IWN_HW_REV_TYPE_6050) ? 20 : 30;
 
 	memset(&cmd, 0, sizeof cmd);
 	cmd.code = IWN5000_PHY_CALIB_NOISE_GAIN;
@@ -4181,7 +4191,7 @@ iwn5000_set_gains(struct iwn_softc *sc)
 		if (sc->chainmask & (1 << i)) {
 			/* The delta is relative to antenna "ant". */
 			delta = ((int32_t)calib->noise[ant] -
-			    (int32_t)calib->noise[i]) / 30;
+			    (int32_t)calib->noise[i]) / div;
 			/* Limit to [-4.5dB,+4.5dB]. */
 			cmd.gain[i - 1] = MIN(abs(delta), 3);
 			if (delta < 0)
@@ -4464,7 +4474,7 @@ iwn_config(struct iwn_softc *sc)
 
 	/* Configure bluetooth coexistence. */
 	memset(&bluetooth, 0, sizeof bluetooth);
-	bluetooth.flags = IWN_BT_COEX_MODE_4WIRE;
+	bluetooth.flags = IWN_BT_COEX_CHAN_ANN | IWN_BT_COEX_BT_PRIO;
 	bluetooth.lead_time = IWN_BT_LEAD_TIME_DEF;
 	bluetooth.max_kill = IWN_BT_MAX_KILL_DEF;
 	DPRINTF(sc, IWN_DEBUG_RESET, "%s: config bluetooth coexistence\n",
@@ -5824,6 +5834,10 @@ iwn5000_nic_config(struct iwn_softc *sc)
 		/* Use internal power amplifier only. */
 		IWN_WRITE(sc, IWN_GP_DRIVER, IWN_GP_DRIVER_RADIO_2X2_IPA);
 	}
+	 if (sc->hw_type == IWN_HW_REV_TYPE_6050 && sc->calib_ver >= 6) {
+		 /* Indicate that ROM calibration version is >=6. */
+		 IWN_SETBITS(sc, IWN_GP_DRIVER, IWN_GP_DRIVER_CALIB_VER6);
+	}
 	return 0;
 }
 

Modified: head/sys/dev/iwn/if_iwnreg.h
==============================================================================
--- head/sys/dev/iwn/if_iwnreg.h	Sat Apr 10 06:55:29 2010	(r206443)
+++ head/sys/dev/iwn/if_iwnreg.h	Sat Apr 10 06:58:24 2010	(r206444)
@@ -1,5 +1,5 @@
 /*	$FreeBSD$	*/
-/*	$OpenBSD: if_iwnreg.h,v 1.34 2009/11/08 11:54:48 damien Exp $	*/
+/*	$OpenBSD: if_iwnreg.h,v 1.37 2010/02/17 18:23:00 damien Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008
@@ -216,6 +216,7 @@
 #define IWN_GP_DRIVER_RADIO_3X3_HYB	(0 << 0)
 #define IWN_GP_DRIVER_RADIO_2X2_HYB	(1 << 0)
 #define IWN_GP_DRIVER_RADIO_2X2_IPA	(2 << 0)
+#define IWN_GP_DRIVER_CALIB_VER6	(1 << 2)
 
 /* Possible flags for register IWN_UCODE_GP1_CLR. */
 #define IWN_UCODE_GP1_RFKILL		(1 << 1)
@@ -832,10 +833,9 @@ struct iwn5000_cmd_txpower {
 /* Structure for command IWN_CMD_BLUETOOTH. */
 struct iwn_bluetooth {
 	uint8_t		flags;
-#define IWN_BT_COEX_DISABLE	0
-#define IWN_BT_COEX_MODE_2WIRE	1
-#define IWN_BT_COEX_MODE_3WIRE	2
-#define IWN_BT_COEX_MODE_4WIRE	3
+#define IWN_BT_COEX_CHAN_ANN	(1 << 0)
+#define IWN_BT_COEX_BT_PRIO	(1 << 1)
+#define IWN_BT_COEX_2_WIRE	(1 << 2)
 
 	uint8_t		lead_time;
 #define IWN_BT_LEAD_TIME_DEF	30
@@ -1326,6 +1326,12 @@ struct iwn_eeprom_enhinfo {
 	int8_t		mimo3;		/* max power in half-dBm */
 } __packed;
 
+struct iwn5000_eeprom_calib_hdr {
+	uint8_t		version;
+	uint8_t		pa_type;
+	uint16_t	volt;
+} __packed;
+
 #define IWN_NSAMPLES	3
 struct iwn4965_eeprom_chan_samples {
 	uint8_t	num;
@@ -1552,8 +1558,8 @@ static const struct iwn_sensitivity_limi
 };
 
 static const struct iwn_sensitivity_limits iwn5000_sensitivity_limits = {
-	120, 155,
-	240, 290,
+	120, 120,	/* min = max for performance bug in DSP. */
+	240, 240,	/* min = max for performance bug in DSP. */
 	 90, 120,
 	170, 210,
 	125, 200,
@@ -1575,8 +1581,20 @@ static const struct iwn_sensitivity_limi
 	 95
 };
 
+static const struct iwn_sensitivity_limits iwn1000_sensitivity_limits = {
+	120, 155,
+	240, 290,
+	90, 120,
+	170, 210,
+	125, 200,
+	170, 400,
+	95,
+	95,
+	95
+};
+
 static const struct iwn_sensitivity_limits iwn6000_sensitivity_limits = {
-	105, 145,
+	105, 110,
 	192, 232,
 	 80, 145,
 	128, 232,
@@ -1642,7 +1660,7 @@ static const char * const iwn_fw_errmsg[
 	"DEBUG_1",
 	"DEBUG_2",
 	"DEBUG_3",
-	"UNKNOWN"
+	"ADVANCED_SYSASSERT"
 };
 
 /* Find least significant bit that is set. */

Modified: head/sys/dev/iwn/if_iwnvar.h
==============================================================================
--- head/sys/dev/iwn/if_iwnvar.h	Sat Apr 10 06:55:29 2010	(r206443)
+++ head/sys/dev/iwn/if_iwnvar.h	Sat Apr 10 06:58:24 2010	(r206444)
@@ -1,5 +1,5 @@
 /*	$FreeBSD$	*/
-/*	$OpenBSD: if_iwnvar.h,v 1.16 2009/11/04 17:46:52 damien Exp $	*/
+/*	$OpenBSD: if_iwnvar.h,v 1.17 2010/02/17 18:23:00 damien Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008
@@ -281,6 +281,7 @@ struct iwn_softc {
 				bands[IWN_NBANDS];
 	struct iwn_eeprom_chan	eeprom_channels[IWN_NBANDS][IWN_MAX_CHAN_PER_BAND];
 	uint16_t		rfcfg;
+	uint8_t			calib_ver;
 	char			eeprom_domain[4];
 	uint32_t		eeprom_crystal;
 	int16_t			eeprom_voltage;

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 07:00:26 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id CEF04106564A;
	Sat, 10 Apr 2010 07:00:26 +0000 (UTC)
	(envelope-from bschmidt@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id BBF088FC18;
	Sat, 10 Apr 2010 07:00:26 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3A70QcE005483;
	Sat, 10 Apr 2010 07:00:26 GMT
	(envelope-from bschmidt@svn.freebsd.org)
Received: (from bschmidt@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3A70QG1005481;
	Sat, 10 Apr 2010 07:00:26 GMT
	(envelope-from bschmidt@svn.freebsd.org)
Message-Id: <201004100700.o3A70QG1005481@svn.freebsd.org>
From: Bernhard Schmidt 
Date: Sat, 10 Apr 2010 07:00:26 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206445 - head/sys/dev/iwn
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 07:00:26 -0000

Author: bschmidt
Date: Sat Apr 10 07:00:26 2010
New Revision: 206445
URL: http://svn.freebsd.org/changeset/base/206445

Log:
  iwn4965_set_txpower() uses maxpwr from EEPROM to calculate the power to
  set, it make sense to actually initialize that array.  This fixes some
  issues with 4965 adapters where the TX power is crucial.
  
  This got lost somewhere while merging with the OpenBSD code.
  
  Approved by:	rpaulo (mentor)
  Obtained from:	OpenBSD
  MFC after:	2 weeks

Modified:
  head/sys/dev/iwn/if_iwn.c

Modified: head/sys/dev/iwn/if_iwn.c
==============================================================================
--- head/sys/dev/iwn/if_iwn.c	Sat Apr 10 06:58:24 2010	(r206444)
+++ head/sys/dev/iwn/if_iwn.c	Sat Apr 10 07:00:26 2010	(r206445)
@@ -1711,6 +1711,10 @@ iwn_read_eeprom_band(struct iwn_softc *s
 		c->ic_ieee = chan;
 		c->ic_maxregpower = channels[i].maxpwr;
 		c->ic_maxpower = 2*c->ic_maxregpower;
+
+		/* Save maximum allowed TX power for this channel. */
+		sc->maxpwr[chan] = channels[i].maxpwr;
+
 		if (n == 0) {	/* 2GHz band */
 			c->ic_freq = ieee80211_ieee2mhz(chan,
 			    IEEE80211_CHAN_G);

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 07:07:09 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 01E421065672;
	Sat, 10 Apr 2010 07:07:09 +0000 (UTC)
	(envelope-from bschmidt@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id E04798FC13;
	Sat, 10 Apr 2010 07:07:08 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3A778HJ007000;
	Sat, 10 Apr 2010 07:07:08 GMT
	(envelope-from bschmidt@svn.freebsd.org)
Received: (from bschmidt@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3A778OQ006995;
	Sat, 10 Apr 2010 07:07:08 GMT
	(envelope-from bschmidt@svn.freebsd.org)
Message-Id: <201004100707.o3A778OQ006995@svn.freebsd.org>
From: Bernhard Schmidt 
Date: Sat, 10 Apr 2010 07:07:08 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206446 - in head/sys: conf contrib/dev/iwn
	modules/iwnfw/iwn6000
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 07:07:09 -0000

Author: bschmidt
Date: Sat Apr 10 07:07:08 2010
New Revision: 206446
URL: http://svn.freebsd.org/changeset/base/206446

Log:
  Update firmware for the 6000 series Intel cards to version 9.193.4.1.
  
  Approved by:	rpaulo (mentor)
  MFC after:	2 weeks

Added:
  head/sys/contrib/dev/iwn/iwlwifi-6000-9.193.4.1.fw.uu
Deleted:
  head/sys/contrib/dev/iwn/iwlwifi-6000-9.176.4.1.fw.uu
Modified:
  head/sys/conf/files
  head/sys/contrib/dev/iwn/LICENSE
  head/sys/modules/iwnfw/iwn6000/Makefile

Modified: head/sys/conf/files
==============================================================================
--- head/sys/conf/files	Sat Apr 10 07:00:26 2010	(r206445)
+++ head/sys/conf/files	Sat Apr 10 07:07:08 2010	(r206446)
@@ -1190,7 +1190,7 @@ iwn6000fw.fwo			optional iwn6000fw | iwn
 	clean		"iwn6000fw.fwo"
 iwn6000.fw			optional iwn6000fw | iwnfw		\
 	dependency	".PHONY"					\
-	compile-with	"uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-6000-9.176.4.1.fw.uu" \
+	compile-with	"uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-6000-9.193.4.1.fw.uu" \
 	no-obj no-implicit-rule						\
 	clean		"iwn6000.fw"
 dev/ixgb/if_ixgb.c		optional ixgb

Modified: head/sys/contrib/dev/iwn/LICENSE
==============================================================================
--- head/sys/contrib/dev/iwn/LICENSE	Sat Apr 10 07:00:26 2010	(r206445)
+++ head/sys/contrib/dev/iwn/LICENSE	Sat Apr 10 07:07:08 2010	(r206446)
@@ -1,39 +1,39 @@
-Copyright (c) 2006-2009, Intel Corporation.
+Copyright (c) 2006-2010, Intel Corporation.
 All rights reserved.
 
-Redistribution.  Redistribution and use in binary form, without 
-modification, are permitted provided that the following conditions are 
+Redistribution.  Redistribution and use in binary form, without
+modification, are permitted provided that the following conditions are
 met:
 
-* Redistributions must reproduce the above copyright notice and the 
-  following disclaimer in the documentation and/or other materials 
-  provided with the distribution. 
-* Neither the name of Intel Corporation nor the names of its suppliers 
-  may be used to endorse or promote products derived from this software 
-  without specific prior written permission. 
-* No reverse engineering, decompilation, or disassembly of this software 
+* Redistributions must reproduce the above copyright notice and the
+  following disclaimer in the documentation and/or other materials
+  provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its suppliers
+  may be used to endorse or promote products derived from this software
+  without specific prior written permission.
+* No reverse engineering, decompilation, or disassembly of this software
   is permitted.
 
-Limited patent license.  Intel Corporation grants a world-wide, 
-royalty-free, non-exclusive license under patents it now or hereafter 
-owns or controls to make, have made, use, import, offer to sell and 
-sell ("Utilize") this software, but solely to the extent that any 
-such patent is necessary to Utilize the software alone, or in 
-combination with an operating system licensed under an approved Open 
-Source license as listed by the Open Source Initiative at 
-http://opensource.org/licenses.  The patent license shall not apply to 
-any other combinations which include this software.  No hardware per 
+Limited patent license.  Intel Corporation grants a world-wide,
+royalty-free, non-exclusive license under patents it now or hereafter
+owns or controls to make, have made, use, import, offer to sell and
+sell ("Utilize") this software, but solely to the extent that any
+such patent is necessary to Utilize the software alone, or in
+combination with an operating system licensed under an approved Open
+Source license as listed by the Open Source Initiative at
+http://opensource.org/licenses.  The patent license shall not apply to
+any other combinations which include this software.  No hardware per
 se is licensed hereunder.
 
-DISCLAIMER.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
-CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, 
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 
-OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 
-TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 
-USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 
+DISCLAIMER.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 DAMAGE.

Added: head/sys/contrib/dev/iwn/iwlwifi-6000-9.193.4.1.fw.uu
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/contrib/dev/iwn/iwlwifi-6000-9.193.4.1.fw.uu	Sat Apr 10 07:07:08 2010	(r206446)
@@ -0,0 +1,8152 @@
+Copyright (c) 2006-2010, Intel Corporation.
+All rights reserved.
+
+Redistribution.  Redistribution and use in binary form, without 
+modification, are permitted provided that the following conditions are 
+met:
+
+* Redistributions must reproduce the above copyright notice and the 
+  following disclaimer in the documentation and/or other materials 
+  provided with the distribution. 
+* Neither the name of Intel Corporation nor the names of its suppliers 
+  may be used to endorse or promote products derived from this software 
+  without specific prior written permission. 
+* No reverse engineering, decompilation, or disassembly of this software 
+  is permitted.
+
+Limited patent license.  Intel Corporation grants a world-wide, 
+royalty-free, non-exclusive license under patents it now or hereafter 
+owns or controls to make, have made, use, import, offer to sell and 
+sell ("Utilize") this software, but solely to the extent that any 
+such patent is necessary to Utilize the software alone, or in 
+combination with an operating system licensed under an approved Open 
+Source license as listed by the Open Source Initiative at 
+http://opensource.org/licenses.  The patent license shall not apply to 
+any other combinations which include this software.  No hardware per 
+se is licensed hereunder.
+
+DISCLAIMER.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, 
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 
+DAMAGE.
+begin-base64 644 iwlwifi-6000-9.193.4.1.fw.uu
+AQTBCf5MAAAUSAIAAEABAJhFAgAAQAEAAAAAACAggA8AAEAAaSAAAGkgQABpIAAAaSBAACAggA8A
+AOgAaSAAAGkgQABpIAAAaSBAACAggA8AAHgGaSAAAGkgQABpIAAASiAAAEohAABKIgAASiMAAEok
+AABKJQAASiYAAEonAABKIAAQSiEAEEoiABBKIwAQSiQAEEolABBKJgAQSicAEEogACBKIQAgSiIA
+IEojACBKJAAgSiUAIEomACBKJwAgSiAAMEohADAKJIA/gQAAQEEsnDBALJwwQiQcNAoigD+AADCD
+CiMANz4IQABKJgBwaSBAAEomAHBKJgBwSiYAcEomAHAAFgBwgABkBEB4ICBAhwAAAAAAAAAAAADh
+wOHB4cLPcKAAyB8WEAGGz3KAAJiXIKISEAGGIaITEAGGIqIUEAGGI6IVEAGGJKIkEAGGJqLPcZ8A
+uP9WoYoh/w8SGFiAExhYgBQYWIAVGFiAJBhYgMHCwcHBwCAgQIcMyM9yoADIHw4aGIANyA8aGIAO
+yBAaGIAPEgE2AcgkeBEaGIAQyC0aGIDgfuHE/BzIvvwcSL7hwOHB4cLhw/wcCLH8HEix/ByIsfwc
+yLH8HAiy/BxIsvwciLL8HMiy/BwIv2okgBDhxGokwBDhxPHAz3CgANAbFIDPcYAAYAQEIICPz1EE
+4QChCvIvKQEAz3CAANwN8CBAAEB42v/RwMHEayTAEMHEaySAEMHEn3QEFAs0BBQKNAQUCTQEFAg0
+BBQHNAQUBjQEFAU0BBQENMHDwcLBwcHAwcRFLH4QCiZAfsHEaySAFMHEICBAhwzIh7gMGhgwDcib
+uA0aGDAOyA4aGDAPyIe4DxoYMBDIEBoYMOB+4HjxwAzIlbgMGhgwDcibuA0aGDAPyIq4jbiQuA8a
+GDDPcIAAHA8YiIHgC/QPyM9xAAD0DKy4DxoYMJYOIAAP2GfYdgsgAYohRwbRwOB+8cDPcIAAsMcA
+gIYg/oEJ9A/IBSCADwAAANQPGhgwof+KIFUFRgsgAYohhwro8eB4z3EDAEANz3CgAKggLaDPcYAA
+jARAgQFqAKHPcKAAOC4FgAQggA/AAAAA13DAAAAACvJI2M9xnwC4/xqhW6Fp2Bi4GaHPcIAAaAgl
+gCOBIIHHcQAAiBNFBsAJ4HjPcIAAaAjVBcAJ4HjxwLIMAAGA4M93gABgBIh1BfKB4AX0AdgC8ADY
+C6+A4QXygeEF9AHYAvAA2AqvgOIF8oHiBfQB2ALwANgMrwDYz3agAMgfGB4YkAuPgOCKIRAAD/II
+j4DgC/LPcAMAQA1FHhgQMKYC2BgeGJAC8DGmCo+A4BnyCY+A4Bfyz3ACABJIIB4YkM9wgAAoACEe
+GJDPcIAAXAQiHhiQGBYAlkUgAAMYHhiQDI+A4AjyGBYAloUgAQQYHhiQgeMH9BgWAJaIuBgeGJDP
+cIAAMIwAkI7gzCCiggb0GBYAloC4GB4YkIDlGfIA2JS4z3WAAIAEAKVx2Aa4+g0gAfzZIIXPcAAA
+TBzuDSABn7kYFgCWhbgYHhiQCQQAAeB4z3Gqqru7z3CfALj/NqA2oDagNqDPcaAAyDsOgYi4DqFp
+IEAA/vHgePHApcFBwELBDBwAMRAcQDHPcYAAfIQ0GcAPMBkADywZwA4oGYAOJBlADs9wgAB8hCAY
+QAvPcIAAfIQcGAALz3CAAHyEGBjACs9wgAB8hBQYgArPcIAAfIQQGMAIz3CAAHyEDBiACM9wgAB8
+hAgYQAjPcYAAAISAGQAIfBnAB3gZgAd0GUAHcBkAB2wZAAdoGYAGZBlABmAZAAZcGcAFWBmABVQZ
+QAVQGQAFTBnABEgZgAREGUAEQBkABO+hzqGtoYyhLBnAAigZgAIkGUACIBkAAhwZwAEYGYABFBlA
+ARAZAAFjoWogAAPYGQAAaiDAAtQZAABqIIAC0BkAAGogQAHIGQAAaiAAAcQZAABqIMAAwBkAAGog
+gAC8GQAAaiBAALgZAABqIAAAtBkAAGoggAHMGQAA0NifuM9xnwC4/x2hz3CAAAAAxIBTJcQ1UybF
+Nde6AebTvsSgUyPABAUmjh/Q/gAA1qEFIIAPsP4AABahGIFTJ841AN2UuBihQMMBwALByXMMFAYw
+WgggARAUBzDPcKAAtA+8oM9xoADIOy6B8g/gAH3YcgiAAU4MIAGpcAjYANn6CyABmbnPcIAAMIwA
+kI7gzCCigsoggQ/gAMQxyiEhACQJYQHPIaEF/QXP//HAagkgAXvYqg/gAPDZz3GAAHyENBnADzAZ
+AA8sGcAOKBmADiQZQA7PcIAAfIQgGEALz3CAAHyEHBgAC89wgAB8hBgYwArPcIAAfIQUGIAKz3CA
+AHyEEBjACM9wgAB8hAwYgAjPcIAAfIQIGEAIz3GAAACEgBkACHwZwAd4GYAHdBlAB3AZAAdsGQAH
+aBmABmQZQAZgGQAGXBnABVgZgAVUGUAFUBkABUwZwARIGYAERBlABEAZAATvoc6hraGMoSwZwAIo
+GYACJBlAAiAZAAIcGcABGBmAARQZQAEQGQABY6FqIAAD2BkAAGogwALUGQAAaiCAAtAZAABqIEAB
+yBkAAGogAAHEGQAAaiDAAMAZAABqIIAAvBkAAGogQAC4GQAAaiAAALQZAABqIIABzBkAAAogwCfP
+daAAyB8ZFRKWz3AAAEQcvghgAQohwC96cM9wgAAcQSOAz3afALj/z3CAAAAARICA4QHiUyLDBCTy
+GRUCllEiwIAe8l2GQN+fv/2mZKAFI4MP0P4AAHamWB6AFyEVAJYiFQCWBCGBD/8A/P8AgRamCNgZ
+HRiQVqZdpvkHwADQ2Z+5PaZkoAUjgw/Q/gAAdqYH2DoIYAEKuFMgQQcH2PoJIAEKuM9woADUCxiA
+QiAACEggAADPd4AAgAzPcYAAgAQggdQfABALIcCEyiUiE8ogYgAy9EwigKAP9FEjgKUJ8oDgB/RB
+K00lwL0c5QHYJPAE3SHwjCIEoBzyTCIAohTyCvZMIkCgDvJMIgChFPQT3RPwTCIApAryjCIBoAz0
+Ft0L8A3dCfAU3QfwFd0F8BfdA/AP3QDYgeAG9FgewBSyCkACcYepcCpxCnIKJIAEnQPv/wolwATt
+Ac//8cBeDcAAddgaDeAAiiFKD8IMAAAaCMACS/6iCAAACiHAD+tyBtiKI4sDSiQAAGUD7/8KJQAB
+4HiA4fHAA/Kg4Iv2CiHAD+tyBdj020okQABBA+//uHPPcoAA3A0VeiCi0cDgfgDZnrkZec9ygADU
+DQGCJXjgfwGiANmeuRl5z3KAANQNAYImeOB/AaIA2Z65GXnPcIAA1A0BgCR4QiAAgOB/yiBiAOB4
+z3CAANQNAYDgfy8oAQDgePHAog+P/+B44HjgeOB4aSCAAW8hPwBpIAAA9/HxwGrYSgzgAIohBAYA
+2I24NglgBQoaGDAUzIYg/4oJ8s9wgAAYBQCIgOCcDkIFsPHxwMIOQAXPcYAAgAjwIQAAQHjPcKAA
+0BuA2lCgz3CAAAAAAIBRIACCANkG8s9wnwC4/z2glPHgePHAxg3AAM9xgAAAAACBUSDAgBvyAYFR
+IMCAQNjPIOIHyiCBDwAA0ADPIOEHz3KfALj/HaIEgQHg07gEoQUggA/Q/gAAFqLPcIAAYASggM9w
+gAAcDwiABCWNHw8AAODruAHeBvT+CwAMgOAO9M9xoAC0RwDYSxkYgHcZmIMA2J64VBkYgM9ygACY
+BCCC4YIEJYQfAQAAAEAsgACkeAQlgx8AAABAB3kDuyCipHsEeWd/BiVAEOGiBCWBHwAAAIAvIgIB
+RXkCueR7BCWNHwIAAABmeKR5JngvKAEATiBBBM9wgAB0g/AgQgDPcIAATM2EKgsMMCBADlMgQIAb
+GlgwLfTPcJ8AuP84oIbhGfTPcoAAiJYJkoDgDPIbGpgzyXHPcoAAgAwcggHgHKIX8AySgOAT8gTZ
+GxpYMPPxhOHMIWKAC/TPcIAAiJYOkIDgBfIG2RsaWDDl8c9yoAAUBCqiz3CAAOQHAIiB4AX0CYK4
+4ADYgvcB2IDgCPTPcKAAiCA1eMCgOfDPcYAAIAUA2AChANmRuc9woADIHxMYWIDPcIAA0AIQeM91
+oAC0R0kdGJDPcYAAZKbPcIAAJAUgoG8nQxBUHdiTGg8gBQoamDOWCgAMgOAR9ADYkbjPcaAAyB8T
+GRiAz3CAAAAEEHhJHRiQVB3Ykz0EwADgePHAzgvAAM9xgABYDYARAADPdaAAyB8vLgEQz3ADAEAN
+n+ZFHRgQAN8f8s9ygAAAAACC8rgZ8gGC8rhA288j4gfKI4EPAADQAM8j4QfPcJ8AuP99oGSCAePT
+u2SiBSODD9D+AAB2oPAhgANAeJ/mDPLPcIAAAAAAgPK4BvLPcJ8AuP/9oIDYFR0YkK0DwADgePHA
+z3GAAGAEfNhWCeAAIIEKIcAP63IF2IojhANKJAAArQev/wolAAHxwOHFz3CAAGAEoIBr2AQljR8P
+AADgIgngAIohCAgvKEEDGgjgD04gQAQKJQCAyiHCD8oiwgfKIGIByiOCDwAAJgJkB6L/yiRiAH/Y
+CrjPcaAA0BsToX/YEKE1A8AA4HjxwOHFz3WAAAAAAIXvuBryAYXvuEDYzyDiB8oggQ8AANAAzyDh
+B89xnwC4/x2hBIUB4NO4BKUFIIAP0P4AABaha9iWCOAAiiHIDJIPoA8E2AolAIDKIcIPyiLCB8og
+YgHKI4IPAAA1AtwGov/KJGIAAIXvuAbyANnPcJ8AuP89oK0CwABKJAB2ANmoIMADz3CAAFwONnhh
+gECAz3CAAFgNAeFVeGCg4H7gfuB4USFAxwXyDci9uA0aGDAA2Z25z3CgANAbMaDgfuB+4HjxwIHg
+zCCigAX0z3KAABwPBPDPcoAAYMrPcYAAtJeB4Mwg4oAp9GiCYKFpgmGhfIpoqX2KaakqEoMAaqkr
+EoMAa6ksEoMAbKl0knapbZJnsXeSaLFogsC7dKloggQjgw8ABgAAgOMB28B7cqmEEgIAVBmYABzw
+YIFoomGBaaJoiXyqaYl9qmqJKhrCAGuJKxrCAGyJLBrCAHaJdLJnkW2yaJF3slQRAwaEGsAAguAG
+9O4MIAFAIQAG0cDgfs9wgABgyiCAz3KgAIAlJqIikCeiIoAqoiaQK6LPcYAAsMcggVEhQIAggBX0
+KKIikCmiIoAxoiaQMqIigDeiJpA4oiKAO6ImkDyiIIA5oiKQOqIggDWiIpA2olkEABDgePHAzgjA
+AM9wgAB4rgDe1KjPcIAAsMcAgFEgQIAT8gjfyXWA5cwlopDMJSKRzCVikdgI4gXKIEIDYb+A5wHl
+M/cc8IokAXHPcYAAiJaoIEABBBmQA+B4ANlKJAByz3KAAOCYqCAAAxYiQAB2kM9wgAAAlzR4AeFg
+sM91gABgys93gADwqkAlABIkb9IN4AAG2qlwQCeBEsYN4AAG2kAlABJAJwEUtg3gAAbaGI2E4A/0
+iiAPCjoOoACKIdoMKBWAEK4LIBEohTIKwA8JhVEgQIEJ8ooghw4aDqAAiiGbAn4PwAnPcIAAsMcA
+gFEgQIBgDoEDz3EAAP//z3CAAKSnLKAroAUamDOn/y0AwADxwMIPoAAA2oQoCwwAIYN/gABgyrUb
+mADPdoAAAGy0aLpmUoIChgAhgX+AAFzMz3eAAASZuhuYAGGG3BnAAGWG4BkAAAaG5BnAAOgZAAAW
+J4AQFiaBEAjgBOGyDeAFCNrdZRSFFn4Wf0AnABIkbp4N4AUI2rUHgADxwADY4f82D+AFANjPcIAA
+rEVKCYAJz3CAAOxFPgmACcIJAAb2C0AEAdgA2YIOIA+A2uoPQAzyD4APSg7ACY4IAAuWDUAKANha
+DCAQCHHPcIAAXGMAiFEggIAI8s9xoADAHQCBoLgAoXoIAA0KDwAKqQXP//HA4cUA3c9wgABMBaCg
+z3CAAFyurLBqCSAKqXCiCY//SgqgDKlwMgxABvoLwAWqD0ALzgrgDKlwmgrADBEHgADxwJoOgACC
+4KPBBvTPdYAAHA8I8IQoCwwAIY1/gABgyoLgBvTPdoAArLQJ8M9xgAAozYQoCwwAIU4OLZU8eihw
+hiHxD0e5wrqGIP4DJHpEuFBxyiHCD8oiwgfKIGIByiOCDwAAUATKJCIAvAKi/8olAgFIhTu6UyIC
+gECuTZXAukGuDPJ3lYYj/wlDu2eud5WGI/4HRbtoroDiEvLPcoAA9E4VIgMAAIs1egKuAYsDrgKL
+BK4DiwWuA4oL8AHZKa4C2AKuI64A2ASuA9gFrgaui3DJcQoM4AUM2gDAAcGiCyANAsKLcMlx9gvg
+BQzaAMABwQ4MIA0Cws9xgADABgChDZVEuOC4ANkvpQXyiiEIAC+l4bgD8ou5L6VRIICABPKNuS+l
+4QWgAKPA4HjxwGoNoACYcIQoCwwAIYB/gABgylUgRgoogFUgxQtRIcCAiiEIAMohIQDYGEQASiQA
+cgDZqCCAD891gABYcPyILmXkfi8qgQNOIoMHz3KAAHxwb2IAJkMA4KtUEI8A5H4vLoETTiaPF+5i
+yKvIgFEmwJAP8l2IhuHTIqYALyqBAE4ijQfPcoAAhHCqYhDwz3aAAGxwLmbOZbyIxH1sEI4AxH0v
+LUETTiWOF8piUKsB4UokAHIA2qgggQDciM9zgABkcE9jz3WAAHxw5H4vKYEDTiGPB+9lACaBAPyp
+VBCPAOR+Ly6BE04mjxfuZSQZggPIgFEmwJAP8n2IgOLTI6EALyvBAE4jjQfPc4AAhHCrYxHwgOID
+8slqAvBIds5jfIjEe2wQjgDEey8rwQBOI44Hy2UsGcIAAeJKJABxANqoIEAFz3GAAGBwfYhJYQAl
+jAAB4mR5LylBAE4hgwfPcYAAhHBpYSCsJgjgCIhwZQSAAPHA+guAAILgBfTPcYAAHA8H8IQoCwwA
+IYF/gABgyumBWIlBL8MQwLsXu8dzAACAHOS/zyMiBuC/Tt3PI6IAyiWCHwAATgGG4s8lYRLlvyz0
+z3KAALSXFhKFAM9ygABszUaSsHLPdoAAYMrFFgQWDPTEFgIWUyIFAM9ygAC0l1SKsHIL8kEsQgFR
+IgCABfJJhlEiQIEJ9FEkQIEG9EmGUSJAgQPygbvPcoAAVM1UiofizyPhAFEnAJLPI6IFguCIGcAA
+jBlAAwb0z3GAABwPCPCEKAsMACGBf4AAYMppEYMAThEOAQ4jgg8AADoBCbpifkV+WpFiehK6RX5b
+kWJ6QCrNBcV9BCW+nwDwAADKIcIPyiLCB8ogYgHKI4IPAADqAM8j4gLKJMIAYAdi/8olQgOC4JAZ
+QAMG9M91gAAcDwjwhCgLDAAhjX+AAGDKz3CAADCMAJCO4MwgooIq8gfYDgvgAAq4BCCADwcAAAAw
+uIfgZAANADMmAHCAAGRsQCcBchR5AHmKIAQAlB0AEB7wiiAQAJQdABAa8ADYi7iUHQAQFPAA2Iy4
+lB0AEBDwANiNuJQdABAK8APYDLiUHQAQBvAA2I64lB0AEIIgAQGVAqAAlB0AEAohwA/rcgXYz3MA
+AB8JSiQAAKUGb/8KJQAB4HjxwAoKgACC4Ah1BvTPdoAAHA8I8IQtCxwAIY5/gABgygHZaB5CEADf
+gB7AE0zYTh4EEAXYEKYK2Bu2ENgathTYTB4EEC3YUB4EECbYUh4EEEokAHLpcKgggA3PcoAAuHD0
+IgMAz3KAALyoFHpgss9ygADIcPQiAwDPcoAAzKgUemCyz3KAANhw9CIDAM9ygADcqBR6YLLPcoAA
+6HD0IgMAz3KAAOyoFHpgss9ygAD4cPQiAwDPcoAA/KgUegHgYLIIhuW4BfIE2mIeghAD8GIewhPk
+uAryCdlqHkQQLtpdtgLaaR6CEArwFNpqHoQQMtpdtmkeQhAU2VmOUSAAgFlhMHlqHkQQGuE8tgry
+CthkHgQQBthmHgQQB9gI8BDYZB4EEGYexBMF2BCmqXCS/jyOKHBUHkIQhiADAOa5bB4CEMoiQQAL
+8lAhwwFvelQewhBQIMMBb3hsHsIQ5bkH8khzhiMDAG96VB7CEOS5BPKluGweAhBRIcCABPKkulQe
+ghCC5RjyqXDH/s9wgAA0zYQtCxwwIEAOUSBAgPHYwCgiAcoggQ8AAJMAwCghAaAeABAY2I24F6YI
+hlEgwIDPcIAAYMoG8r4QgACJuATwpRCAABamz3CgAKwvGYAwuMC4Ng8gEFUeAhAIhgQgvo8ABgAA
+C/I2uMC4G3gB4G4eBBAC2IAeABAD8G4exBMA2BymHaapcAD/KIYB2khzQSkABTW5UiAAAFIhAQDA
+uMC5Lgtv/5hyQQCAAOB4z3CAABwPCIDPcaQAHEDAuBN4wbgSoeB+8cDhxc91gAAcD1eVz3GAAMQG
+4LpX2AChA/Jf2ACh4roD8oW4AKFRIkCABPKHuAChz3GAAKy0QIkA2YDiyiBBAM9xpQDoDwahz3Gg
+AKQwAYGA4s8g4gDQIOEAAaGmDEANMIXPcKAAyBwooBIOoA0PhcEHQADhxc9wgAAcDymARCGDgADa
+JPSQ4ooABgAAIo0PgACYQwCNoLgArYAVgBCguIAdAhBAFYAQoLhAHQIQEI2guBCtkBWAEKC4kB0C
+EFAVgBCguFAdAhAB4t/xkOJGAAYAACKND4AAmEMAjYC4AK2AFYAQgLiAHQIQQBWAEIC4QB0CEBCN
+gLgQrZAVgBCAuJAdAhBQFYAQgLhQHQIQAeLe8ea5EPLPcoAAmEMIioC4CKqIEoAAgLiIGgIASBKA
+AIC4EvCA4xL0z3KAAJhDCIqguAiqiBKAAKC4iBoCAEgSgACguEgaAgBRIQCAANge8kokAHTgeKgg
+QAbiuBTyACCDD4AAmEMgE4EAgLkgG0IAoBOBAIC5oBtCAGATgQCAuWAbQgAB4B3wSiQAdOB4qCBA
+BuK4FPIAIIMPgACYQyATggCguiAbggCgE4IAoLqgG4IAYBOCAKC6YBuCAAHg4H/BxeB48cDmDWAA
+B9rPdqAAyB9IHpiQz3WAABwPgBUAEM9xqwCg/0weGJAA2BmhWqEYoYogBAAPpmoVABHPd4AAMIyw
+HgAQtB4AEB/YCLgOpgiFUSAAgADYi7gV8hCmVgzAD89xoACkMAGBhLgBoQSXheAa9ADZlLnPcKAA
+BEQloBLwEaZ+DMAPz3GgAKQwAYGkuAGhBJeF4Ab0z3GgAAREANgFoc9wgADMBACA4LgK8oYg/w4i
+uBS4z3GgAAREBaFW/8oJAA1b/3f/z3AAAFVVWh4YkAHYWR4YkAiFz3GmACgA87gG8gDYD6GaDAAQ
+BPAB2A+hbhUBEc9wpgDoByag/g/ABM4PoAwNlQePgOAL8oog2An2CmAAAdm+CSADAtgE8JIO4AQB
+2IgVABDPcaAAxCcPGRiAjBUCEM9woAAwEESgz3CAALShEHiPGRiAz3KAAGSiUHiWIgIAELpFeJAZ
+GICKIAQAkhkYgJAVABBAl0AZAIDPcIAAmENTGRiADxEAho7in7gPGRiAzCKiggj0CBEAgIUghAAI
+GQCAiuIH9AgRAICKuAgZAIAP2BAZAICUFQAQHBkYgAiF/bgN8rYPoA8A2LoPoA8B2M9xpgD0zwHY
+EqED8KIPgA95BEAA4HjxwAYMQAAKJQCQz3CAAGDKGnEF9MUQAQYC8CmAJblRIQCAKPLPcoAAtJfP
+cYAAbM0mkXaKMHMI9MQQAQZUisC5UHEL8sUQAQZRIUCBBfIpgFEhQIEO9AohwA/rcgXYz3MAADYJ
+SiQAADEAb/8KJQABhC0LHC93z3aAABwP+GDJccoIoAAp2s9xgACstAAngB+AACjNAgmgAAzaz3Cg
+ALQPAN/8oEiGUyIAADIJYAw0lkIIAANc/4DlVArhDMogYQAEyFEggIAF8roPAAML8ADZnrnPcKAA
+/EQhoM9woAC0D/ygTCAAoGQJ4g/KIGIAz3WAAKAEDI2A4AX0AguADQHYDK1pA0AA4HjxwPYKQAAK
+JQCQAdgR8gTIUSCAgAz0CiHAD+tyBdiKIwgDSiQAAG0HL/+4cwDYhC0LHM92gABgygAmTx6EKAsM
+QCYBGTAhQA5JhyW4JbpTIBEAUyISAOlwPg9gAA3Zyg+gEKlwCYeA5SW4UyAQAAb0A9gq/HD8BPBa
+D4APTCAAoB7yTCIAoMohwg/KIsIHyiOCDwAALwLKIGIBxfXuD0AIHgngAAHYTCEAoM93gACwxwX0
+LgnACjIJwAoX8AIJ4AAA2IDlz3eAALDHBPS7/Anw/g6ADwCHUSBAgAQPgg9MIQCgTAuB/6lwBP6+
+C6ABqXBMIQCgBNgEGhgwMfTPcYAAtJfPcIAAbM0GkFaJEHII9MQWABY0icC4MHAP8sUWABZRIECB
+CfIJhlEgQIEF8gCHUSBAgBP0qXAKcXD/f9kRuc9woACwHzSgkglACA/IBSCADwEAAPwPGhgwAIdR
+IECAIPLPcYAAtJfPcIAAbM0GkFaJEHIH9MQWABY0icC4MHAJ8sUWABZRIECBCYbRIGKBCPQYjs9x
+gAAcDxipCYYJoQHe9gwgDMlwz3CAAKEGDgsgDMCogeUM9M9wgABUzRSIh+AG9EwgAKB0DoIPSg6A
+D0IPQAh+DUAAugugAgDYdQFAAOB48cAA2Ib/hgsP/89xgAC0lxaJNgigEDSJ1QdP//HA/ghAAIHg
+z3aAAGDKGnAD9KmGA/DFFg0WJb2EKAssACZPHgmHwL1RIECByiHBD8oiwQfKIGEByiOBDwAAwQLK
+JCEATAUh/8olAQTPcIAAcA9MIACgAYjMcTT0QIHPcYAAtJdAoQAWA0CA4GGhABaDQGipABaDQGmp
+ABYAQQPyD7YAFoBABCKCDwAGAAAKqQAWgECA4gupABaAQAHaDKkAFoBAABYAQcB6B7EAFgBBCLEA
+FgBAUqliDm//BNg58CCBz3KAAFjOxB5YEAAWAUCA4MUeWBAAFoFAFBpCgAAWgUAVGkKAzHAH8iCQ
+z3CAAGzNIbAC8ACQABaAQM9xgABcziIaAoAAFoBAIxoCgAAWgEAkGgKAABaAQAAWAEEOGQSAABYA
+QSIZBIAAFgBALyAHBHL9cgmgAQpwz3GAALSXFomA5c9ygABszUaSHvRQcAf0xBYAFjSJwLgwcBHy
+xRYAFlEgQIEN8gmGUSBAgQnyz3CAALDHAIBRIECABvQphwpwJbnAud3+jgyAD8YLQADRBwAA8cAA
+2Jr/z3GAALSXFomKDmAQNIkpBk//8cAA2c9woAC0DzygkgwADeoJQA2WDgAM/g1gDQDY/9nPcKsA
+oP85oALYfgtgAAQaGDD1BU//4HiEKAsMACGAf4AAXMzgEAIAz3GAALCZ3BADAGAZgIDkEAIA6BAA
+AFwZwIBsGYCA4H9wGQCA8cDiDiAAEtmpwQh2Vg1gAItwSiQAcQDaqCCAAhYkgDAoiIHhw/ZhuSio
+AeIBwgLBhC4LHAAhgH+AAFzM3BiAAAXC4BhAAAbBtG7kGIAAx3WAAABsSBUREOgYQADPcIAABJkK
+IEAuFiBABAjgg8HGDGAFCNr0hc9wgAAEmYfB9ngI4LIMYAUI2gDAACCNL4AAYMpRIACAtR0YEAjy
+uh3YE7sVABaAuAfwuh1YFLsVABaguLsdGBDPcIAANMpUiDaIRCo+CwAhgH+AAJDINXgGiBB2/A7h
+/8oggQO1FQAWUSBAgPHYwCgiAcoggQ8AAJMAwCghAUYKYACgHQAQRQYgAKnA4HgA2H7x8cClwYtw
+cgpgAAXZAMLguhPyz3CAABwPGIiB4A30ANiauM9xoADIHw+hAcCkGQAAw9gauA6hUSKAgBbyBhIC
+NgDZSiQAcuB4qCCAA7hxg3EoiREiQIAAIkAxZBhCAAnyQCVBAM4JQAClwNHA4H4KIcAP63IF2Ioj
+jwj5AS//SiRAAOB48cDPcIAAHA8JgFEgQIHKIcIPyiLCB8ogYgHKI4IPAAApB8okYgDIASL/yiXC
+AMoOQAzWD2AJAdjPcIAAVM0UiIfgI/TPcIAASM0LgFEgQIEb8s9wgADcyAqQz3GAAKiuJYEKuDBw
+yiHCD8oiwgfKIGIByiOCDwAAMwfKJCIAcAEi/8olwgDCD8/+agggDADYQg7ACxoJQACVA0//8cAC
+2K38tv2JA0//8cC2DAAAAN7PdaAAtA/cpXYKIAxod/j/ogugDOlwBMhRIICABPIKCQADCfAA2Z65
+z3CgAPxEIaDcpeUEAADgeIQoCwzPcYAASM0wIUIOz3CAAOCYVnh2kM9xgAC0l8QZ3AAXkM9zgACw
+mcUZHADPcIAABJlWeAyIkBsCgADY4H/HGRwA8cDqDE//+giAD1YNT//1Ak//4HjxwCIMIABE2s91
+gAAAbMRtz3GAAAiZlglgAKlwSiSAcADZqCCACBRp2GBxgIQpCwwAIYJ/gABgygAhgH+AAFzMuhrY
+AADbtRrYAGGFQoUB4dwYwABlheAYgABGheQYwADoGIAAKQQAAM9wgAC0l/kEIACKIQUF4HjxwKIL
+IAAA2qHBQMIAFo5AABaNQAAWg0AAFpBAgOUd8ql3z3GAANS0I4mGJ/wXRb/DveZ54LnKIkIDYMLh
+ucoiQgPKIiEAARyCMFEhgIDKJSEQAhxCM4DgJPTPcIAAtJe2iPSIsXPMJsGTEfIKIcAP63JAKwQE
+EL4F2Ioj3gIFJEQDtQfv/gUmxRMAxUAgDgbPd4AAYMpUGFgDhB9AEyHwz3CAAGzNBpAQcwr0z3eA
+AGDKxBcAFsC4EHYN8gohwA/rcgXYiiMeBZhzbQfv/kolAAAAxc92gAD8yN0fWBNAIEEgSSEBBjR5
+Ug8gAMlwQiDAJUggAACA4ADby/cA2gAWAUAB4oPivfcB4xBzuPdWJgAZKg8gAAbZz3CAALDHAIBR
+IECAGvLPcYAAtJfPcIAAbM0GkFaJEHIH9MQXABY0icC4EHEK8sUXABZRIECBBvIJh1EgQIEO9AIO
+YADJcM9wgACYD6KgiiASDV4IIACpcYYOAACRAiAAocDgeADYQvHxwKHBi3C2DiAAAdkAFAUwTCUA
+gMohwQ/KIsEHyiBhAcojgQ8AAMwHjAbh/sokYQDPcIAA1LRCDiAAAxhCAaHA0cDgfvHA4gkAAM9z
+gABUEEODAN/PdaAALCCwhdJq1H5+ZqWmBKYB4owiEIAmpkOjhfcCg+OjAeACoxUCAADgeADYz3Gg
+AMgfGKEZoQHYDqHgfuB48cBqCQAACHe6cdpy+nMKIgAhCiNAIQohgCHPcAAAyBviCWAACiDAIRtw
+z3AAAMwb0glAADtwz3AAAAQcxglAAM92oADIH5pwAdgTpgXYz3WAAMAPAKXhpQ7AIB0AFAmlFYYc
+HUAUCqUYhhgdwBQLpRmGFB2AFAyloBYAEBAdwBUNpaQWABAMHYAVDqWoFgAQCB1AFQ+lz3ABAMEJ
+EKVmCWAAKNgRpV4JYAAA2BKlUyfAdROlAshUHQAXFqUSFgCWUB0AFxelExYAls9ygADADxilFBYA
+llMkASMZpRUWAJYQuRqlJBYAlkokQHkbpRYWAJYcpc9wgACADBGAHaXPcIAAwA94GIAKz3CAAMAP
+fBjACs9wgAA8EAQYAAuEGkALz3CgAMgcCICIGgAAz3CAAHAFAICMGgAALyAHBgi4BXkvIEcGJXiQ
+GgAAANioIEAC8CIDAM9xnwC4/wHgdqFNAAAA4Hj8HIi2/BxItvwcCLb8HMi1/ByItfwcSLX8HAi1
+/BzItPwciLT8HEi0/BwItPwcyLP8HIiz/BxIs+B+4HgE3DjdNfDgeATcNN0z8OB4BNww3THw4HgE
+3CzdL/DgeATcKN0t8OB4BNwk3Svw4HgE3CDdKfDgeATcHN0n8OB4BNwY3SXw4HgE3BTdI/DgeATc
+EN0h8OB4BNwM3R/w4HgE3AjdHPDgeATcBN0Z8DQUGjAwFBkwLBQYMCgUFzAkFBYwIBQVMBwUFDAY
+FBMwFBQSMBAUETAMFBAwAscBxrAkTTOwJB8z4H7xwM9xgACADBGh4HjgeOB44HjgeOB44HjgeOB4
+4HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB40cDgfuB44cXhxkApDQIlfUAtAxSI4qV7CHWQ
+91MlfpAG8gEdUhBhuvvxQSqOAMG6QiZOkAQd0BD99YDiCvIvJIlw4HioIIABAR1SEOB4wcbgf8HF
+4HgocgDZ1vHgePHArg7P/6HBCHfPdqAArC8ZhgQggA9wAAAA13AgAAAAAdjAeC8mB/AodRpyE/SK
+IEkGogzv/4ohTQg5hpYM7/+KIAkGiiAJBooM7/+pcQDYJPARzAAcRDNPIMEDAeAQeAQggA8AAP+/
+j7gCHEQwERocMJ4NoA9AJwASB+cEJ48fAAD8/wUnABSduJ+47HEAoQDB7HAgoAHYeQbv/6HA4Hgi
+uQbw7HJgogTgYbmB4WCAOvcA2c9woADUC22gz3CgAEQdNaDgfuB48cDuDc//CHYodShwSHFocsr/
+geDKIIEDwA/h/8ohQQM5Bs//4cXPcoAAsASkioDlz3KfALj/BvLPc9C6/sp+ohqiO6KA5Q7yz3Cg
+ADguBYAEIIAPwAAAANdwwAAAAPbzadgYuBmi4H/BxeB48cB+Dc//CHfPcYAAsAQFiQDegOCpwUDG
+Q/QB3aWpz3GAAICOz3CgAMwrLaAA2I+4ERocMCEagjMSDCANi3CeCwAIz3ABAMEJQcCKIFAAQsDP
+cIAA/HoAiGTFAt0RHAIwAMASHEIzExwCMM9wgABUEEXAz3CAAMAPRsDPcIAAcAUAgEPGINkB2kfA
+SMeBwD3bF7vB/wjYAdnI/wQaWDNJBe//qcAD2s9xoAAUBEWhz3GgANQLDaHgfvHA4cXPcqAA1AsD
+3bGiANtwogUSAjfXcgAAAEAB2sIiigAXusdyAA4AAEUiAgadup+67HVApQLaIBqCMAgSDTbscqCi
+ERICNwHiERqcMOxyAKICEgI27HBAoOxwIKAB2M91oADIHxOlOIXscCCgGYXf/3Qd2JDPcaAAyDsO
+gYi4DqG9BM//4HjxwADYCBKBMNz/CBKFMAohwA/rcgfYiiPRCLUA7/5KJAAA4HgA2gPwAeJBKIEA
+MHK89+B+z3GAAIAMRBnAB89xoADIH1yBnbieuE0ZGIDgeOB44HjgeOB44HjgeOB4HIHgfuB4A9rP
+caAAFARFoc9xoAD8Cwyp4H4D2s9xoAAUBEWhz3GgAAgMALHgfgXMANrXcAAAAEAB2MIgCgAXuMdw
+AA4AAE8ggQCduZ+57HAgoM9woAAUBAPZJaACEgE2z3CgANQLLaDPcKAARB1VoOB+gOFU8kAhwgPD
+uY/hnAAtACS6MyZBcIAAcGxAJ4NyNHsAewAWAUAEGFAAABYBQAQYUAAAFgFABBhQAAAWAUAEGFAA
+ABYBQAQYUAAAFgFABBhQAAAWAUAEGFAAABYBQAQYUAAAFgFABBhQAAAWAUAEGFAAABYBQAQYUAAA
+FgFABBhQAAAWAUAEGFAAABYBQAQYUAAAFgFABBhQAAAWAUBCIkKABBhQAL/14H7geIDi4cUi8mNq
+wbqD4jwALQAiuzMmgnCAAIBsQCeNclR9AH0EEAIEBBmQAAQQAgQEGZAABBACBAQZkABCI0OABBAC
+BAQZkADv9fcEz/+A4uHFU/JAIsMDw7qP4p4ALQAkuzMmgnCAAIRsQCcNclR9AH0BEIIEARmSAAEQ
+ggQBGZIAARCCBAEZkgABEIIEARmSAAEQggQBGZIAARCCBAEZkgABEIIEARmSAAEQggQBGZIAARCC
+BAEZkgABEIIEARmSAAEQggQBGZIAARCCBAEZkgABEIIEARmSAAEQggQBGZIAARCCBAEZkgBCI0OA
+ARCCBAEZkgC+9UsEz//gePHAygnP/yh2RiHNAB1lIrmS/8G+geYO8oLmCPKD5g30ABaAQAEdEhAA
+FoBAAR0SEAAWgEAArQECz//geIDhyiRNcOB46CCtAQAWAUECGFQA4H7geIDhyiRNcOB46CCtAQAW
+gUABGFIA4H7gePHAXgnv/1MhQgBOIg0Bz3KgABQEyYIA2w4mgh8AAAAGUHHKIcYPyiLGB8ogZgHK
+I4YPAAAMAsokZgCwBab+yiXGAIDhyiRNcMoizQDoIC0CTmDPcaAAOAQB4sipgeUO8oLlCPKD5Q70
+z3CgADgEaKjPcKAAOARoqM9woAA4BGioSQHP/+HFANoP8KCADXOgo6GADXOgo6KADXOgo6OADXOg
+oxDgAeJBKQMBcHKv9wDbBvAEEA0EDXKgogHjUyHCACK6UHO39wDbBvABEI0EDXKgqgHjUyFCAFBz
+uff7As//ANvPcp8AuP8aonuiPqLPcABsBAAZouB+8cBeCO//ANqhwRpwz3DUuv7KQMDPcZ8AuP9o
+GQAEBNgboYtwHqGdus9woADQG1Ggz3AAbQAQGaEF8OII7/+KIEkFUSFAx/vzABQFMAwlgI/Uuv7K
+OvQg3c9zoADIH7CjAdhDGxgAANiNuPz+saPPcZ8AuP9oGQAEBNgboYtwHqEA2J24ExsYgM9wAG0A
+EBmhBfCKCO//iiAJClEhQMf78wAUBTAMJYCP1Lr+ysohwQ/KIsEHyiBhAcojgQ8AAGwCMASh/sok
+AQSBAe//qHDgeM9xgACwBGSJgOPPcp8AuP8F8s9x0Lr+yj6iGqKA4w7yz3CgADguBYAEIIAPwAAA
+ANdwwAAAAPbzatgYuBmiHILgfuB48cBSD6//mHAodkh17P8GIIEDiHCleV3+pQeP/89xoAA0HwSh
+AdgHoQiBgOD+9QWB4H7gePHAGg+v/0okAAIA3c93AAAEHal2FSKAMxwQAQYA2M9yoAAUBMqiqKIn
+ogSiPWWI4Wi5yiEOAOlwR/5CJEQATCQAgCDnAeYo9zkHj/9BKYGACvIvJElw4HioIIABBBACBOxx
+QKHgfuB48cC2Do//CHUodgYOYA9AIQACBczXcAAAAEAB2MIgCgAXuAAggQ8ADgAAB24EIIAPAAD8
+/yV4nbifuOxxAKECEgE27HAgoCK+BfDscQChBOVhvoHmAIU792D+yQaP/+B4B9nPcqAA1AcaGliA
+gOAO8hkSAYYJIEMADxIBhgIgwIB5YQ8aWID29eB+4HihwfHABRICN9dyAAAAQAHawiKKABe6x3IA
+DgAAg7rsc0Cj7HIAoihwSf7RwOB/ocDxwOHFz3CAADCMJoiA4TDyJ4iA4SzyoJBPbYfiCfczJoJw
+gACUbEAngXJUeQB5ANkR8CSQB92A4QHZwHkL8CSQCN2F4QHZwHkF8CSQhOEB2cB5geEM8ggQBQEK
+IcAP63IQ2IojzwkhAq/+mHUBBo//ocHxwIINj//PcoAA/QdAioDiRMCO8oDhDPQKIcAP63IF2Ioj
+Tw1KJEAA7QGv/rhzYIGA4wTyQYGA4gn0z3KAAKyYcIJgoVGCQaEkxoDmyiHBD8oiwQfKI4EPAAD/
+A8ogYQHj84DiyiHBD8oiwQfKI4EPAAAABMogYQHX8+m4F/IEIIAPAQAAwC64z3KAAFBwCGJJIIAA
+YbgCuBR4x3CAAASqaqAhgSugRPDouBvyoObKJYITyiUhEAQggg8BAADAz3eAAABwzmcEIIAPBgAA
+ADG4LroeZs9wgABQcEhgwngS8FMgwgBdes91gAAwc01lBCCADwEAAMAuuM9ygABQcAhiYbgWfRJt
+FHjHcIAADKlgoJjlIYEhoIz3CiHAD+tyBdiKI5AHiiSDD+0Ar/64dQjcvwSP/+B44cXhxs9xgAD9
+ByCJgOEm8gDbSiQAds9ygAAMqagggAMyazR5JWA+YqCmPWChhRlhoaYigQHjIqZIEAEGSBpYAEkQ
+AQZJGlgASxABBksaWABMEAAGTBoYADUFj//xwPYLr/+4cc9ygAAohQS5MCJEAFEkQIOiwQbyz3OA
+APTNBfDPc4AABMtAIwIGQCMBB1EkQILKIcIPyiLCB8ojgg8AAEUEPACi/sogYgHPdoAAMIhALY0B
+pmbovkDGIMUE8sK9qmEP8FEmQJIH8kQlARxEuSpiiboF8FMlwRA8eSpjz3GAADCHFiFBASKJDrlF
+eSCgzQOv/6LA4HjlAeAHCNjgePHATguv/4ogVw7PdYAAdEBeCa//IIWKIBcHz3GAACxBTgmv/yGB
+AN7ApRDfSiSAc8lxqCAAAhYlQBDhoMKgAeHPcIAA6EBSDK//ENnPcIAA+EBGDK//JNnPcIAALEE6
+DK//INnPcYAAZEDAoeGhAdgIqQmpxbHDoYoglwfyCK//iiFOBs9xgAAQRcChwaEI2AWhxqEC2AKh
+A9gDocShz3ARADCMB6HPcAIAIL8JA6//CKHgePHAngqv/wHZz3CAAGRAIKAA3c92gAC4BBYmQBMD
+gIDg4iACAEAlTZD48+oLr/4G2NkCj//xwGoKj/8Idc9wgABkQKCgz3aAABBFiiBXC24Ir/8ghoog
+VwtiCK//JYaiC6/+BtiC5Q/yAN3PdoAAuAQWJkATBICA4OIgAgBAJU2Q+POJAo//4HjxwBYKj/8I
+doog1wwmCK//yXHPdYAAZEA+DmACw6UDhYDgLPKB4BfyguA39CYOQALPcAAAJDrPcYAAuAQAoc9w
+AAAAPAGhANjZ/1oI4AcF2CPwz3AAABQ6z3GAALgEAKHPcAAAxDwBocT/5g1AAtINQAIA2AmtEfDG
+DUACz3AAABQ6z3GAALgEAKHPcAAAxDwBoQDYxv/tAY//4HjxwIogVweSD2//gNmH/wDY1f/RwOB+
+4HjxwM9wgABkQAOAguDgD6EHyiChAvPx4HjxwOHFCHWKIBcKXg9v/6lxz3GAAGRAA4GC4CD0gOXP
+cIAALEEAgA70IrjAuAmpAtjPcYAAEEUCoQPYA6EA2A3wI7jAuAmpBNjPcYAAEEUCoQXYA6EG2ASh
+ZQGP//HA7giP/891gABkQAOFguAN8hASBDYKIcAP63IF2IojRQlZBW/+SiUAAM4MQALODGACCHaB
+5gHYCK0W9M9wgACMQ8oMQAKSDcAHCHWKINcKug5v/6lxieXMJaKQHA+iB8ogQgP1AI//8cC6DEAC
+z3CAAEyZIIjPcIAAgEPPcoAAZEAhqCiKwLkiqADZI6iCDGACIaKSDEACANmbuc9woADQGzGgcfHg
+ePHAz3CAAGRAA4CC4A30iiBXB1IOb/+KIUYJANi4/wDYb//o/zT/XfHxwM9xgABkQCOBguHMICGA
+mA6hB8ogoQFP8eB48cDPcYAAZEAjgYLhzCAhgHwOoQfKIOEBQfHgePHACiQAgMohwg/KIsIHyiBi
+Acojgg8AANkDWARi/solwgDPcIAAuAQWIAABI6BEoCfx4HjxwK4PT/8IdoogmADCDW//yXHPdYAA
+ZECKIBcOsg1v/yGFIYUA35DhBPQB38GlyXGB5xPyz3CAAEyZFSCCAzV4IIhgijBzCfYBiCGKEHEF
+9gCFgOAN9IogVwd2DW//iiHJDsGl2g2gBwPYAdgC8ADYpQdP//HA4cUIcRDYANtKJIBzz3WAAEyZ
+mHOoIAAHESEAgRTyz3KAAHRAFiICAQQSBQBMJQCEUPcVJUIRQIpQc8ogSwHKI4sAQCREAC8kBwFl
+B0//CiHAD+tyBdhxA2/+iiPHDfHA2g5v/whxz3aAAGRABBYFEEwlAISM9wohwA/rcgXYiiOKBkUD
+b/6KJIMPzgxv/4ogWACKIBcOwgxv/yGGAYbPdYAA6EAJZbIMb/+KIBcHIYYoZYDgigAJAM9wgABM
+mTV44YgQ2AGmz3WAAHRAiiBXDooMb/8ghYogFwd+DG//6XEAhYDgyiAhASnyxf8IcQGmkODKIcEP
+yiLBB8ogYQHKI4EPAAC7AsokwQC8AmH+yiUhAEYMb/+KIBcOIYbPcIAATJk1eAGIEHfL9oogVwcq
+DG//iiGLAAPYkgyAB2UGT//geM9wgABkQAOAgODgf8ogYgDxwNoNT/9acCh3OnJAKAEEiiAYAPIL
+b/9FeUwigKPKIcoPyiLKB8ogagHKI4oPAAD8AsokigRAAmr+yiXKAEwhAKTKIcoPyiLKB8ogagHK
+I4oPAAD9AsokSgQcAmr+yiXKAM92gAB0QBYmjRQEFZAQiiDXDpILb/8KcQwhAKQH9M9wgABkQACA
+XvBMIACkyiBhAELyTCAApMohyg/KIsoHyiBqAcojig8AABEDyiQKBMQBav7KJYoEz3CAAEyZFSAB
+BBUgQARgiECJcHKH9gGIIYkQcUAAKgAA2IogVwcqC2//iiGMBQAggi+AAOhAAIqA4AHZDfQAFgUQ
+CiHAD+tyBdiKI8wGcQFv/gokAARhuACqKHCB4Az0ACGBL4AA6EAAiQQdQBTipQHgAKkAhg8ggAQA
+pipwQf/PcYAAZEAggQO4JXjxBE//8cCeDE//CHUod0h2QCgBBIog2ACqCm//RXnPcYAA+EAgEQQA
+TCQAgcohxg/KIsYHyiBmAcojhg8AAEID8ABm/solJgAWIQABpKjgoMWoQCRAAAihsQRv/wLY4Hjx
+wOHFz3KAAPhACIKA4BPyz3WAALgEYbgIohZ6YIUEiiCCYHtFis9ygAD4QAiCgODz9YkET//gePHA
+AgxP/zpwjuDKIcoPyiLKB8ogagHKI4oPAACyA8okSgR4AGr+yiXKAM92gAB0QBYmTRQEFZAQiiDX
+D+4Jb/8qcYog1w7mCW//CnEA2AKlENgBpQDYDyBABKCGTCAApAZ9oKYt8kwgAKTKIcoPyiLKB8og
+agHKI4oPAADDA8okCgQYAGr+yiVKBAAggS+AAOhAAImA4MohwQ/KIsEHyiBhAcojgQ8AAMQDyiQB
+BOwHIf7KJUEDYbgAqQpwHf+lA0//4HjgfuB44cXhxhDZAN7PdYAATJmfcclzqCAABBEggIMK8hUl
+ghNAilBzyiGLA8ojiwAB5s9+KHDBxuB/wcXxwAYLb/+KIJcPSiAAIM93gAB0QBYJb/8ghw7eCnUA
+hxEgQIML8hYnQBMCgIDgB/JAeAUgAAQvIAcgYb6A5gHlr30v9wDYAKdMIACgAdgdA2//wiAMAOB4
+8cCuCk//CHbPcKAAZC7wII8DGxIQNhsamDP12AW40gxv/8lxG8jPdaAAFAQKpQmFgOCECkIHz3Cg
+AMAvURAAhgsgwIP19c9wAABkHtYKj/8RIICD7fMJhYDg6/UbGhg09dgFuIoMb/8KcRvICqWlAk//
+4HjxwI4OT/+hBg/+4HgAFgFBILAAFoJAUyJBACGgQSrBAFIhAQDAuSioQSqBAMC5KahBKgEBwLkw
+qAAWgUDPcaAAyBwogeB/I6DxwAGAgOAS8oHgGfKC4BnyCiHAD+tyBdiKI8QDSiQAAGUGL/4KJQAB
+AdnPcKAAyBwpoK4Nb/8U2AjwAtn38QHZz3CgAMgcKaDRwOB+gODxwBHygeAS8oLgE/IKIcAP63IF
+2IojBQtKJAAAHQYv/golAAEp2BK4CPAV2BO4BPBPeivYErg1eECg4PHgePHA4cUIdU4Nb/8U2COF
+z3CgAMgcKKDNAU//4HjxwE4JT/+lwYt36XDE/+lw0v8iwIDgGPIAFg5BJMCA4APyABYAQQDdCfAB
+wAAWAkDJcd3/AebQfgHlABQBMTB1tfcU8ADdDfAAFgFBgOIE8gAWAEEBwAAWAkAB5dL/ABQBMTB1
+JMKy9yTAgOAG9FEhAIAE8gAWAEEFzNdwAAAAQAHYwiAKABe4x3AADgAAg7iduJ+47HEAoQISATbs
+cCCg6XDR/9ILb/8B2ADZz3CgAEQdNaABAW//pcDgePHAAYCA4BTygeAQ8oLgEPIKIcAP63IF2Ioj
+BA1KJAAAAQUv/golAAEC2APwAdjPcaAAyBwJoUYMb/8U2FTx4HiA4PHAEfKB4BXyguAW8gohwA/r
+cgXYiiOGB0okAADFBC/+CiUAASnYErjwIEAAAKI68RXYE7j78SvYErj38eB48cASCE//pcGLd+lw
+df/pcNz/ABQBMQXMArnXcAAAAEAB2MIgCgAXuMdwAA4AAAvhBCGBDwAA/P8leJ24n7jscQChAhIB
+NuxwIKAAFAEx7HAgsAkUgDCA4Afyz3CmAJw/GYCB4Pv1IsCA4BfyABYNQSTAgOAD8gAWAEEA3gjw
+7HIBwKlxz/8B5bB9AeYAFAExMHa39xLwAN0L8AAWAUGA4gPyABYAQexyAcDG/wHlABQBMTB1JMKz
+9yTAgOAG9FEhAIAE8gAWAEHpcHj/ggtv/wHYANnPcKAARB01oE7x4HjxwDIPL/8B2AAWgkAAFopA
+ABaJQAAWhkBEJr6DRCKDE8B4CiFAgsohYgAB4YDjyiOBAMojIgCA4MogQgLKICEAQNwEIguTG2Nv
+eyT0BcwB3ddwAAAAQBJrwiVKEwzgF70EIIAPAAD8/8d1AA4AAKV4nbifuOx1AKUCEg027HCgoOx1
+AB2CEuxwYKgA2+xwYLCA4fIALgAA2PhwGXGB4MojgQHKIkECyiOCAkQjgQOC4UolQADCJUIBUiMO
+AMC+RCMADJDgAdvAe6DgAdjAeAUgxAAAFg1AgOFhuk96GPSA4gDf0PcghYDmBOUE9AAWDUBMIwCQ
+A/TscCCgAedQd7T3IIVMIwCQBPTscCCgBiU+gRLygOIA2M33ABYBQIDmIKUE5QT0ABYNQAHgUHC2
+9wAWAEAApQskQIEe8oDiANjT9wAWAUDghYDjA/LneQLw5XkgpYDmBOUE9AAWDUAB4FBwsPcAFgBA
+IIWA4wTyJ3gD8CV4AKVCIEEQgOEgB+3/QCdAAEwjAJAG9NIJb/8B2AfwA9nPcKAAFAQloADZz3Cg
+AEQdNaD1BQ//2QFP//HAhg0v/wDZz3CgANAPNaAAFgNBABYCQem7BcwW8tdwAAAAQAHYwiAKABe4
+ACCNDwAOAABAIgEDz3AAAPz/JHileJ24n7gT8NdwAAAAQAHdwiVKExe9x3UADgAAQCIBA89wAAD8
+/yR4pXjscQChAsjscQCh7HBAsOxxANgAsei7QPIjauO7BCGBDwAA/P8J8s91oAA4BAitAdhhuTB5
+5LsM8qFoCL0Ffc92oAAQBLi2AuAPeGK5MHkA3RTww2gYvuJo738Qv+V+4Wjvfwi/5X4Ffs93oAAU
+BMunBOAPeAHl2mnRdaz3AN4I8M91oAA4BAitAeAPeAHmUyFNALF2t/fluwjyAdnPcKAA0A8RGFiA
+5rsJ8gPYz3GgABQEEKEB2ASh47sG8gAWgUDscCCoYbrkuwnygeLH9wAWAUHscCCwYrpEI4GBQSqA
+ABX0AN4L8M91oAAABOyNABaNQOx14K0B5rJosXZH9+e79PUAFo9A9vGC4RT0ANkK8M91oADUA9yV
+ABYNQex1wLUB4Rt9sXFG9+e78/UAFg5B9/HiuxXygODKJA1w4HjoIO0D57sJ8s9woACYAz2AABYA
+QAPwABYBQOxwIKAA2QbwABaDQOxwYKgB4VMiQAAQcbn30g8v/wHYANjPcaAA0A8RGRiAz3GgABQE
+BKEEyM9xoADQDyK4wLgVoekDD//xwIILL/8A2UokAHLgeKgggAIAFgJAFSJAMBwYmAAB4QAWDUAA
+Fg5APgxP/89woAAUBKygz3CgANQL3KCSDw//rQMP/+HF4cYkiM9ygACcbKaIwrkuYgDZDyGBA4Dl
+z3OAAIyZdhMCBgX0Jnp2G5gAHPBFeXYbWAAliBUjjQN5HVgQJohFiFlhfB1YECCAjCEQgEX3iiEQ
+ACCgI7l3G1gAAIAquHgbGAAA2c9woADwNiygeRMBBiWgfBMBBiagehMBBiegfRMBBiigexMBBimg
+fhMBBiqgdxMBBiugeBMBBi2gdhMBBiSgwcbgf8HF4HjxwOHFosGLdalwGg8v/wLZqXDR/8oOD//t
+Ai//osDgeIDg8cAH9M9wgABkm6oLL/8k2bEAz//gePHAVgov/5hwkODKIcYPyiLGB8ogZgHKI4YP
+AABrA8gG5v3KJSYEANpKJAB0z3aAAMwEqCCAD0AsgwFVe8dzgAAwiCCDz3WAACiFQCwAAd25AGUg
+o/G40SEiggnyoIvPd4AAAHCtZ4HlCvbPdYAAMIcWJQ0RoI1RJQCQBPKeuRbwLbjAuBUmDxDjh1Ih
+TQILJ0CTDfLPdYAAgMqEKAsMMCVAHv647POfuSCjAeIRAg//8cCaCQ//osEAFhFBABYAQUApDiHH
+doAAKIUAhkwhAKQtuFMgEgCO9wohwA/rcgXYiiNUA0okQAD9Be/9CiVABM9wgAAwhxYgQAQacO4N
+L/8C2c9wgACwhxYgQATeDS//AtlAKY0hACWAH4AAMIjODS//ENmLcMYNL/8B2QCGUSBAggfycg0P
+/20BL/+iwAAlgB+AADCIRg2gCxDZARCAIJDgyiHKD8oiygfKI4oPAAA6BYQH6v/KIGoBSiQAdADZ
+qCABChUlQhDPcIAAMIgwIIUABCWDjwAAAAEEHEAxRvIhxs9wgAAAcAQlhA8GAAAAQSxCBM9goOb4
+YtEl4YIx8oDjBPKB5wv2BCWEDwAAACQMJICPAAAAJCPyguJCAA0AguIG9IDjHfKC5xv0gOME8szm
+F/bPcoAAMIxGklB3EfZRJcCCD/LPc4AAgMqEKgssMCNCDgQivo8ABgAAA/QA2wLwAdtvewTwAdgI
+cwQlgg8BAADALrrPdoAAOHNKZlBwAdjCIA0AgOPMICKAEfIB4QIQgCDPcYAAUHAIYYHgHvIKIcAP
+63IF2IojVQQQ8M9zgACAyoQqCywwI0QOCiHAD+tyBdhxBO/9iiOVA0okQABlBO/9SiUAAAMQgCAI
+YYLgyiHCD8oiwgfKI4IPAABTBQXY7vUqcFf/z3CAALCHFiBABECQz3EAABgVCSJBACCwOvHgePHA
+kg/v/gLZz3CAAMwE/g0P/89wgADMBECAz3agAOwnz3egAAREz3WAADCM4Lo+8iuGRCKAAIYi/w4i
+uqG5FLq0uQV6BSGDAAQhgQ8QAAIABCKCDxAAAgBrpiV6RacolYfhzCGigRD0gODPcaAAyBwG8gHY
+HqFaD8ALBvAA2B6hvg/ACwSVheAv9M9wgADMBACAUSDAgCnyBNnPcKAARB0loCOgJKAh8M9woADI
+HAHZPqALhoG4C6YWD8ALBJWF4A70z3CAABwPCIBRIACACPIA2JS4BacLhpS4BvAA2AWnC4a0uAum
+/goP/xEHz/7geOHFNGjPcoAAKIUhYi25wLmEKQsMACGBf4AAYMpIgVEiAIDPcoAA1LRBggnyPImA
+4cUigQ8AAAoCA/JFIkIDSiQAdADbqCCAAjZodXkAIY0PgAAwiEClAeMA3c9zgAAwhxYjAgCgqqGq
+AdkiqgPZI6pKJABxqXGoIMABemEWeqSqAeHgf8HF4HjdA4//2QOP//HAABYAQIHgz3GAABxBAKEN
+9AAWAEAMuAQggA8BAADwAaEAFgBAAqER8ILgABYAQAv0RiDCAEOhABYAQM9woADQG16gA/AAFgBA
+BczXcAAAAEAB2MIgCgAXuMdwAA4AAIO4nbifuOxxAKECEgE27HAgoMoIL/8B2ADZz3CgAEQdNaDl
+A4//4HjxwAAWAkChwUDCARSAMFEgAIAG8s9xgABQqAXwz3GAAGioQKFgiQHaB/AAFgBAFSGMAACk
+AeJ9eBBy+fdRIwCACfIAFgBBA/AA2BUhjAAApAHiheL69wXM13AAAABAAdjCIAoAF7jHcAAOAACD
+uJ24n7jscgCiAhICNuxwQKA2CS//AokA2c9woABEHTWgocDRwOB+8cDhxQAWA0DPcYAAAABgoQAW
+AkAA3UGhABYAQP+7AqEAFgBAA6GkoRDy/7pA2M8g4gfKIIEPAADQAM8g4QfPcZ8AuP8doQbwz3Cf
+ALj/vaAFzNdwAAAAQAHYwiAKABe4x3AADgAAg7iduJ+47HEAoQISATbscCCgpg/v/gHYz3CgAEQd
+taDpBM/+4HjxwOHFz3WAAMwEBG2aCi//CNkBhc9xoAC4HgKhAoUDoZoID/+9BM/+8cDhxaHBAN1A
+xQAWAUAAFgBAgeEa8gXM13AAAABAAdjCIAoAF7jHcAAOAABFIAADnbifuOxxAKECEgE27HAgoOxw
+oKCpcCDwxgogDItwBcwB2ddwAAAAQAHYwiAKABe4x3AADgAAhLiduJ+47HIAogISAjbscECg7HAg
+oADB7HAgoAHY5g7P/s9woABEHbWgKQTv/qHA4HjxwKILz/4KJgCQOnFQ8i8ogQNOII0H2tiyCe/+
+qXEbGlgzQCUAFEogACAPIBAg9dgFuLYN7/6pcRvIz3egABQECqfPcaAAZC7wIQEACYeA4BH0z3Cg
+AMAvURAAhgsgQIAJ9M9wAACwHrILD/8LIACEFfTa2FYJ7/6KIdoHKYdOCe/+2tjPcaAAwC9REQGG
+Pgnv/trYrgzgBipwTgvgA6lwANgPIEADBiYOkLP1z3GAAFAFAIEH2ofgGxqYMB3yz3CgADguBYAE
+IIAPwAAAANdwwAAAAA3y9dgFuM9znwC4/xqjW6Np2Bi4GaMB2ALwANiB4AP0QKHPcKAAFARKoAUD
+z/7gePHA4cUCEg02ABYAQQAWAUHFuIK5uv/iDu/+AhpYMwEDz/7gePHAdgrv/oDYz3egAMAvpRcS
+lhQXEZYA3qUfmJPPcqAAZC4UH5iTLysBAE4jgQfwIkMAZX4A2w8jQwAGIMCA9fVPJsAWpB8YkKQX
+AJb/uP7zoxcAlgQggA8AAAAPjCAQgPjz89gFuIDZVgzv/p+5GxIQNvXYBbgH3UYM7/6pcc9woAAU
+BKqgGxpYMwfwA9nPcKAAFAQloM9woAAUBKmAgOUe8oDl9PNBLYCQCvIvJAlw4HioIIABABYAQOB4
+UyVNkAnyLyRJc+B4qCBAAQAWgEDgeM9woAAUBKmA5fHz2BYKL/8FuP+43/X12AW40gvv/gpxz3Gg
+ABQEKBkABIDmGxoYNCTyLyiBA04ggQeU4coiRQCF9yhygCLCAc9woAAYLPAggwCU4coiRQCF9yhy
+gCLCBM9woABoLFV4YKAA2A8gQAAGJg6Q4PWA2c9woADQGzCgpR+YlBQfWJR5Ac/+4HjxwBYJ7/4X
+2bfBi3eqDe/+6XAjwEohQCBTINIAhiD+A0wiAKRCKBABDByCNI32CiHAD+tyBdiKI88BCiRABHUF
+r/0KJYAEEsYtviDAwL5AKg0hx3WAACiFUSAAgACFhiD3Dzf0gODKIcEPyiLBB8ojgQ8AAM4DBdjh
+8wHAAsFKclYJIARmbYDgH/LJcE4K4ABKcQ0UgDCFIMEADRwCMIog/w9TwACFqbgApUpwDgrgAOlx
+z3CAAIQE1XgggA8hgQQgoCp2AvAC3kpwbv4G8IDgyiZBFMomIhKB5ln0E8EAhRLCJnhEeSV4AKUM
+HQIUz3CAAEiGANkWIIAEQIUgoPW6IaAF9ADZi7khoPa6BfIhgIUhAQ4hoCoI4ADpcA0UgTDluQXy
+WBQAMQW14bkE8lAUADECtVEhAIEG8kpwygogBFUUgTANFIAwUSDAgB3yNcFWFAIxSnAmCyAEEsO4
+cIwgAoDKIcEPyiLBB8ogYQHKI4EPAAA7BDwEof3KJGEAUSXAgcomIhFKcFH9BczXcAAAAEAB2MIg
+CgAXuMdwAA4AAIO4nbifuOxxAKECEgE27HAgoJoK7/7JcADZz3CgAEQdNaCxB6/+t8DxwFIPj/6k
+wQHdgcDiC+/+qXEA3k3wgsDWC+/+AtkCwItymg7gAwPBpHgvJQeQQPIAwQDYz3eAACiFDyBAAAS5
+IWcvIQogLblTIRAAz3GAAEwFQIEEIYCgAKEH9IDi5AoiCcogIgggwNYJIAQQ2QDBANiKIwgAVGn6
+YgKyYKKA22iqaarPcoAAhAQVIgIEYIIEI0MEYKLPcoAASIY2egCiAaLPcoAAKIY0egCyAeYhwBB2
+ZgfF/wXM13AAAABAAdjCIAoAF7jHcAAOAACDuJ24n7jscQChAhIBNuxwIKCmCu/+qXDNBq/+pMDg
+ePHAZg3AA7oKz/65BE//4HjxwF4Oj/6EKAsMz3KAAIQE8CINAAAhgX+AAGDKaIEEI4IPgAAAAEQj
+DwIvuga/RX8EI4IPAAEAAEEqTgMsuuV+RX7PcoAAzAQVegOCEHY18gQjvo+AAQAAI/LPcIAAVM0U
+iIfgHfTPcIAAsMcAgFEgQIAX8r67aKFEIwACBrgEI4EPgAAAAC+5JXgEI4MPAAEAAEErQQMleCy7
+BSMOAIDlw6IL8i8pQQNOIYAHECUNENb8gOX49REGj/7gePHAosGLcNoL7/4I2QDAgODPcYAAeAQA
+oQfyBhQAMQOxBBQAMQKxzgnP/qLA0cDgfvHApMGLcKoL7/4Q2QXM13AAAABAAdjCIAoAF7jHcAAO
+AACDuJ24n7jscQChAhIBNuxwIKAAwFEgAIADwAb0AsF2DWAEANoF8NoIIAUBwU4Iz/4A2c9woABE
+HTWgpMDRwOB+4HjB2c9woAAEJSCg4H7xwAYNj/7PcAAARBxmDe/+AN5x2F4N7/4GuM9wAABMHFIN
+7/4I3c9wAADIG0YNz/7PcAAAzBs+Dc/+z3AAAAgcMg3P/s9wAAAEHCoNz/7PcKAA1As4gByAz3Cf
+ALj/WBgACAAmgB8AAMAbCg3v/gTmYb2A5Tf3AN4F3QAmgB8AAAAc8gzv/gTmYb2A5Tf35QSP/uB4
+z3GgANAPGREAhhwRAIbPcKAAyB8VEAKGHoDPcKAAxCcZEAKGnBECABUQAoYtEAKGLhAChi8QAoYw
+EAKGgBECAIQRAgChEAKGkBECAKIQAIaUEQAAmBEAAIwRAACIEQAAGIHPcZ8AuP9YGQAIz3GfALj/
+WBlACM9woADQDzuAOYDPcaYA1AQXEACGLBEAgDARAIA4EQCAz3GgAIgkAIEBgQKBA4EEgQWBBoEH
+gWDx4HjxwOHFz3WAAIibqXBGCO/+A9kBhc9xoACAJQyhAoUNoQCNUSAAgADYjrgE8g+hA/AQod4P
+j/4BBI/+4HjxwH4Lj/7PdYAA4AQAhc92gAC0oeSQ6XHiCqAChiH8A1EgwIAacAXyH4aAuB+mIIUA
+kThgAKVUFoAQgOAV9Olw1gggB4Yg/AOA4AzyUSAAoAvyz3CAABwPCYBRIECABfQfhoK4H6Z9A4/+
+4HjxwBYLj/6iwc9wgAC0oT6ABCGBD///D9AEJYBfAADwLyV4z3WAALSh6gggBx6lgOCEAyEAmB0A
+EM9xgAAAAACB67ga8gGB67hA2M8g4gfKIIEPAADQAM8g4QfPcp8AuP8dogSBAeDTuAShBSCAD9D+
+AAAWolElwNEG8s9wgABwDwKIBvADhfIL4AMkhV6FRCIBDKDhlB0CEAT0gNiUHQIQUSDAgUAoAQZp
+9FEigNOCuRHyRCI+0wz0z3CAALShAYBRIACABPLeCQAHFfDaCgAHEfBFIQAGz3GAAECiKImGIf0P
+UiHBAUW5JXjPcaAAiCQQoc9wgAAIogCIgOAE9FEigNIJ9M9woAAMJBOAUyDAgE3yRCIAU0EogQBN
+cIYg/ANBKAIBUSWA0c9wgAC0oQjyBLlZYcdxgACYQxXwUSVA0wjydGlbYwAjgQ+AANhDC/BRJUDS
+CfIEuTpiACKBD4AAGESsGEAArBACAIDiH/IgipcYQgA82ACqGfCzul6lUSKA08Uhgg8AAAAHRSEA
+Bs9xgABAoiiJhiH9D1IhwQFFuSV4z3GgAIgkEKGKIdYAz3CgAIAlL6DPcaAAxCdBEQCGUSLA088g
+4gLQIOECQRkYgM91gAC0oQCVBCCADwAAzIDXcAAAyIAJ9AuFUSAAgAXytg6AAk/wHoXzuFQVghBp
+8hoRAIaA4gUggA8AAACaGhkYgAfyAdrPcKAA1AtSoATYEBkYgE1xEg9v/oogRA4G8J4Jr/6KIAYC
+USCAxAT0USEAxvjzz3WAALShz3agAMQnLhYBlhaFInhkuBB4hh0EEM9xgAAcD9oIoAcvkRoWAJYE
+IIAP////ABoeGJARFgCW67gJ8gDYi7gTHhiQGtgZHhiQHoVRIICBANmZ8hSVUSBAgZX0z3CgACwg
+D4CA4I/0ENhBwM9wgACwxwCAUSBAgBLyUSVA0xDyAdhAwA3wgOIG8gHaz3CgANQLUqAE2BAZGIDZ
+8UDBK4XPcIAA7MaLcwQhgQ/AAAAAwoA2uREmQJCBwkAgBAsw8uGVx4Bwv/QkQQAIJs4TMHZMAAwA
+lBWBEFEhwIEg9M92oAAsIC+GgOEa9MaGPJUwdsj3z3GAAGSqwoElgDB2EPSA4wTyAtkgoyOAgOKD
+uSOgBPIggqa5IKIBwg7wI4DjuQHCCvIA3p6+z3OgAPxEwaOjuSOgK4UkoCOFJaBUFYAQgOAH8gDA
+guDPImIBAvSHugDBQcJVJUAakgpgAwDbH4WUuB+lHoWQuB6lDfDPcYAAyIwNgQHgDaEQ2c9woACQ
+Iz2gtQdv/qLAz3CkAJBBTYDPcYAAiKBCsRqAUSBAxgOxBCCAD/8AAAAwuASxz3CAAIigANoI8s9x
+gAC0oTGBUSGAggXyQrBDsESw4H9ZsOB48cD+Dm/+mHDPcYAAtKEOkc92gACIoAC2z3CmAOj/C4DP
+daQAtEUDpgwVA5YNFQKWRBGJAC8nxwD/2BC4KXSEJAOcBCMIAAX0USEAkCz0MhUAllMgjwD/ZwG2
+/9j0fwi4739keEAvBRIAJQYAACfHAwUmxgFALwAWBCODDwD/AABALwcUG2MAIMgR/9gFJgYCCLgF
+I4MBBCIGAPpiACZAAQV65bZveAQjgw//AAAAKLtleE96A7ZEtgQVAJYCthGBUSAAgg3yz3CAAABw
+MiBAAoHgx/bPcKYA6P8NgAPwANgGpgWmANhKJIBwBtqNuqggQAMp2xK78COPAEAmAx8VewHi4KMB
+4ACROB4AEVUmQRQats9wgAAAqCYLr/4I2hsVAJbPcaUA2MsZphwVAJYaph0VAJYbpg6BHKYPgR2m
+JhUAlh6mz3CkAJB/HIAZBm/+H6bgePHAmg1v/gDbz3GgAMgfQBEABs93oADQDxkXAJbPcqAAxCdP
+Eg6GuIHPcIAA7MaooBHMEHbPdYAAtKEG8h+FUSCAgATyAd4F8BEanDNodlISEIYVEhOGG9gWGhiA
+USPAoAb0USBAoEoiACAH9B2FAd5adoS4HaVRIwChBvJUFYAQgOAE8gDYBvAdhYW4HaUB2DpwTCIA
+oMwhIaBc8s9ynwC4/1gaAAgQh89wgABwDw+IFqIA2s9woAD8RJ66QaBloB6FsLgepagVABBk4B6h
+ENgOoQHYFRkYgMoIr/4J2FEgQMcK9M9xgACADAuBAeCGD2ABC6HSCkABTCEAoAvyz3GAAESNBYEB
+4JILYAEFoVECAABMIgCgz3WAALShZPIdhVEjwKCEuB2lz3CAAESNCPIigAHhIqCKIIUJB/AhgAHh
+IaCKIMUIhgpP/gYPQAFM8EISAIYEIL6PAMAAAETyAbUehfO4PPKKIIQOYgpv/oohkAfKCYAHAJWG
+IPwAjCACgDL0HgiAB4DgLvQD2BIfGJDgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB4
+4HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB4Eh8YkBPMERocMAbwAJUqDqAINJWsFQEQgOEI
+8pcVgBAAqQDYrB0AEFQVgBCA4CTyz3agAPwlNIYB2s9zgABEjQaDgOE4YAajBfLPcYAAOQhAqVOG
+J4NZYSejgOA+hQHeUPJRIcCBTvIB2c9wgAB0BSCgSPBRIACgDvIB2c9wgAA5CCCoz3GAAESNA4EB
+4AOhPoXp8QPZz3CgANQLMaDgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB4
+4HjgeOB44HjgeOB44HjgeOB44HjgeOB4MaBMIgCgE8wRGhwwC/Qdhc9xgABEjYK4HaUEgQHgBKEB
+3h6F8LgK8pUVgBCkFQEQqXLWD+ABAdsE8MYLQAIfhVEgAIAH8s9wgACAqAoMgATPd4AACK0Zh4Dg
+BfKSD8ADANgZp4oJQAHPcIAAHA8IgOu4EfKA5g/0BCCAL/8AX//g/s9wgACIoKDZxNo924YMb/4X
+ux6F8LhoCAIEz3CAAOzGAICA4OgNog3KIGIAlQJP/vHAOgpP/s9xgABkos9wgADgBCCgANnPcoAA
+MKIpos9wgADsxiSgJaAsos9wAAD/f89xoAAMJAGhG9gEoVEgAMTPdoAAtKEV8h2GhLgdps9wgACQ
+BCCABYEB4AWhiiCFCQoIb/4kgQIIQAFpAgAARBaAEPGGwrgEJ48fAAAACFQWghD7f4Diz3WgAMQn
+ANkV8uDavx2YkJTalR6CEATbz3KAAEgFYKIC2jwdgJDPcoAAZKohogfwQNm/HViQ1NmVHkIQACCR
+D4AAYMrAEYEgACCSD4AAWM64EoCgBSHTA7oIoAEFINADgODoAQEAAdgQHRiQyBGAIM9xgAC8qOV4
+G6ZsFoAQw7gcePQhAABkHsAUXh4EEMASgKDleBymcBaAEMO4HHj0IQAAz3KAANyoYB4EEGQWgBDD
+uBx49CIBAGgeABSKHkQQz3GAAOyo9CEAAI4eBBBoFoAQw7gcePQiAgD0IQAAjB6EEJAeBBAUzIYg
+/4VMC4EBz3CAABwPCIDruIQJwv8c8M9xgABwqgCBY4FDoWZ4AKEEgQwVAZASeCV4DB0AkADYj7gT
+HRiQCBUAkKC4CB0AkBrYGR0YkAYMQAHPdoAAtKEdhlEgwIGC9M91oADEJxEVEJZRIMCjANrV9VEg
+QKId9FEggKMy9FEgAKPm9VEgAKBc9FEgwKBs8gjYEx0YkG4OQAGA4GL0Atg8HQCQI4bPcIAAZKoh
+oNDxK/2gFgAQkRUBlgHgw7kwcKAeABDG9YoiCAATHZiQkRUAlsO4EHG88xIdmJC68ToVAJZRIICA
+H/LPcYAAcKoAgeC4GfSAuAChAdgDoYog/wAEoToVAJaGIP8BA7gBoQwVAJBGIAAPDB0AkAgVAJCA
+uAgdAJAA2I64Ex0YkFElANCQ8wTZz3CgAJAjPaCK8SL9Atg8HQCQI4bPcIAAZKohoB6G87h+8xMd
+GJR2/gTwEx0YlMEHD/5UFoAQgOAJ9EIVAJYEIL6PAMAAAAT0USAAohHyvxUAlqW4vx0YkIogBAAT
+HRiQ+gqADVQWgBCA4Fj1USCAoA70CiHAD+tyBdiKI40GiiSDD7UDL/0KJQAEz3CAAOzGKoDPcKAA
+BEQmoMTx4Hjhxc91gACIoAmlKqV4tUulAdgZteB/wcVKJAB6ANmoIIACANrPcIAAiKA1eECgAeHg
+fuB48cDWDg/+AN7PcYAAAADAoc9yoADIOx2CwqGA4MGhw6ED9ADYCvAEgddwZYchQ/v1iiCEAACh
+AaGA4MShDfLQ2Z+5z3CfALj/PaCC2BSiz3AAgBEUDqKKIMUPz3WgAMgfGR0YkAHYCHEIcghzugkv
+/Zhwz3CAABQA13CAABQADPIKIcAP63IF2GrbiiSDD9kCL/24c893oADQD9WnhdgJuM92oADAL3oe
+GJAGDcAHKg/ACPoMQAtA2c9wnwC4/zKg/g5P/oDZz3CgABQELKAdH1iQkgmAB9YNwAamCKAHANhO
+CwALB9hIHRiQOgoP/soPAArPcIAAMIwAkIfg+A4CCvYJwAoeD4AOKg7ADRWGUiAAAFEgAIAG9FYO
+oAoB3xDwA98Thpq4E6Yg3gXY0KVDHRgQANiaCW/+jbjRpc9wgAAwjACQh+CwDgEKcgkP/oIMQAMC
+CcAD+gsAABYIgAP6CsADJg7ACfIOQAgaDsAM6giADToKgA2WDE/9iiDGDc9xgAAcDw2xA9htGQIA
+G9nPcIAAOE4SCuABMKgyCI//ygiADcILj/6OC8AOJg3ADa4PL/7pcIkFD/7xwAoNL/4B2aXBGnAK
+IoAvgADsBJ4Jb/6LcEwgQKAAFIUwARSRMAb0CiKAL4AA8ARMJQCAxPZMJQCBy/YKIcAP63IF2Kzb
+aQEv/UokQABMJQCAJgEOAKhwABaOQAAWlEBMJACkenCF9owkw68o9AAWAEEAFo9AABaAQAAWAEFM
+JACkfgAKAIDnJfLPcIAA5AQAgEAszSC1fRDguGAWCW/+BNnPcIAA5AQAgEwhQKAdZcwnYZMV9ADY
+jLgU8AohwA/rcgXYt9tKJEAA5QAv/QolAAUKIcAP63IF2MDb9fEA2AC1z3CAAOQEIIBALMAgFXgS
+YRlhBSJABACxBN0G8IHABN2yCG/+qXEAIowjABwCFc9wgACEBPAgAgQe34DiLymBAAInQBAk8s9z
+gAAvhTRoK2MRI4CDCfIAJoEfgACUmxZ5ABkCBQAtgRMLIcCACfIAJoEfgACUmxZ5BBkCBRAiAoAv
+KYEAAidAEOD1QiNAIIDg6AbN//oPD/7lAy/+pcAA2EDx8cDhxa3Bi3WpcCYIb/4N2QDAHXhTIAEA
+RCk+DalwACGBf4AAyIa2CG/+Ddq+Dw/+4QMv/q3A4HjxwAohwA/rcgXYiiOMCIokgw/hB+/8SiUA
+AOB48cDhxSDbz3GgAMgcaaEAFgBAz3KgABAUDKIAFgVAAd1MJQCAyiHBD8oiwQfKIGEByiOBDwAA
+CQGcB+H8yiRBAxgaQAFoGUABA9gPormhaqFGDw/+aQMP/vHA7goP/qQQAQD5uaLBcPQg2c9zoADI
+HCmjpBABAFEhwIEu8jGIz3WgABAUI7nAuQO5BeED2k+lRoVBwo3hEN7KJuIRBhQPMYwnw58I9AQU
+DzHxdswn6pAB3kP2AN6A5ur1xYBFfselsYiGJfwfGL2les91oADMF1qgF/BFgM9xoAAQFEehpBAB
+AFEhgIIJ8jGI17qGIfwPGLlFeTqgz3WgAMwXDdkB2gPhDR2YkA4dWJAmgBkdWJAngBodWJAogBsd
+WJAD2RQdWJBwEAEBEB1YkHAQAQHPdaAA9AcE4SelR6OkEAEAmbmkGEAAaQIv/qLA4HjxwAPIpBAB
+APm5BA/B/wPZz3CgABAUJaDRwOB+ANqA4cokTXDgeOgg7QH/2VxgIKwB4uB+8cDPc4AA7ARocATZ
+9/8EawTZ9v/o8eB48cASCSAKENhv2Qe5z3KgAPAXMaLPcQAA8P84onYKAArW8eB48cDx//b/0vGB
+4M9xgADsBAP0BGkC8ChwBNnK8Q97SLgPeM9ygAAAbvQiAABAKAECSLgFefQiwAAweeB/J3jgePHA
+SgkP/qXBCHYCiyh1mHBkwACLABIGAREcAjB5cAISBwEEEggBEBQAMeSSBhIFAQAgyQMAkS8hSBIH
+IEACEHjn/wAgigEBlS8iiBIHIIACEHjj/wAgxgEClS8miAEHIIABEHje/wAgBwIDlS8nyAEHIMAB
+EHja/wAlBQAElS8lSAEHIEABEHjV/x9nBZXwf+d4EHjS/yaVIXAQeAd5PHoPuSV6UHoAIoECMHkA
+HEQwR5Unelx5D7pFeTB5ACGCAVB6XHkCHIQwD7pFeTB5ACHCAVB6XHkEHIQwD7pFeTB5ACFCAVB6
+XHkGHIQwD7pFeTB5P2fwf/x5CBzEMw+/5XkweThgaXHGuYW5CLkFIcECILYQeCCVChwEMCd4HHgI
+uAUgAAEBtgDAAaYBwAKmAsADpoEAL/6lwOB+4HjxwOHFCHU+iM9wgADkBECAQCUAFAO5NXlZYTYN
+L/4K2qlw9/9hAA/+8cDeD8/9CHbsiAiQz3KAAOwEtG8Ic4Yj8w9CKxECx3WAACiFYIXtu0hxA/Ik
+auu4iiDDLwP0HhaQEE2OUSIAgJzy47g79Ou7FPL/2AetSiQAcQDYqCBAAwphACCDD4AAlJv2e0Sr
+CmEB4A94QKta8EwhAKGN9gohwA/rcgXYiiMLBUokQADxA+/8CiVABO64R40yIUAEACGBL4AAlJv2
+eQjyBKkE2AAoQARFeAetPPAAqQ8iQgRHrV7wTCAApJT2jCDDr8ohwg/KIsIHyiBiAcojgg8AAOgC
+yiRiAJgD4vzKJQIEyXC9/wiW7rgE8gKOCa0E8AGOCK0Aheu4F/IA2UokAHEnragggAMAIYAPgACU
+m/Z4BBgCBAAYAgQB4S95AY4IrQKOCa0o8EwhAKHKIcoPyiLKB8ojig8AAAUDRgfq/wXYCJYAIYEv
+gACUm+64B432eQnyBBkCBATZAClBBCZ4B63g8QAZAgQA2Q8hQQQmeAetAY4IrcUGz/1BiQS4x3CA
+ACiFSKgiieB/KajgeBGI4H/CuOB44H7geOHFz3KAAOwEgODAIiIB/90UaQAggw+AAC+FoKtKJABx
+ANuoIIADbWIAI4APgACUmzZ4pKhtYgHjb3ugqOB/wcXxwAoO7/2YcKXBKHe4cwDeBCOAD/8AAAAY
+ugV6b3kIuf/YCLhkeCi4BXlFeQjd9CSAAyd4RMAQFAAxGf8SFAIxYb1AKAEEBXlHeUTBEBQCMRQk
+gDOA5UCwAeYr91MlwgVApwAUDQEH2QbwEH0UJ0wQALRhuRQkQDC7e0+9AJCle4HhcHt4YDP3BCCA
+DwAAAP8QuAV6XwXv/0Cn4HjxwG4N7/0g2QDaz3WgAMgcKaXPcaAAlBNboc9zgADkBGCD82jPdoAA
+tKEMhvV/UyDEBfBj+2NTII8Ag+ekwYtxGvQehpu4HqY0FoAQ4ovxcAr0KHBAIwEERGtAJgMc8v4N
+2irwHYaRuJK4HabPcKAAzBcr8IXnDvRBKgJSQCMABMG6iHO4/x6GnLgepg3aFPAsuFMgAgAehgO6
+mbgepuSDBeIFJwARAKEFgwGhBoMCoQeDA6ED4s9woADMF89xoACUE1yhAdqA4gf0HoaXuB6mINgK
+pRjwAMED2hgYWIABwRkYWIACwRoYWIADwRsYWIAUGJiAhhYBERAYWIAE2SelFhiYgNEE7/2kwOB4
+4H7gePHAXgzv/QHZocHqCC/+i3AgwM91gAAsQQCliiBXCmIK7/0CEgE2iiBXClYK7/0ghQCFQNlR
+IACAQMEG9NINL/4ocCzwz3CAAEyZUgoP/gDbxIVKJAB05oWoIIAHANjPcYAATJl1eUOJDyDAAOG6
+yiECAMohIQAlfuC6yiECAMohIQAlf1EigIDKICEAJ4UB4yV4B6XmpcSlFggP/gCFJ7jAuEAgRADP
+cIAAZEAMEAUATCUAgAX0mglv/ohwFvBMJICAzCWhgBLyTCRAgMwlYYDKIcIPyiLCB8ojgg8AAHcA
+DADi/MogYgHdA+/9ocDgePHA4cWiwYHgAdjAeEDAiiCXCn4J7/0REgE3iiCXCnIJ7/0AwQDBz3KA
+ACxBZYKA4aGCA4IK9CaCZH2keSZ7QcFloiV4A6IK8CSCBH2keSZ4JXtBwQOiZaKA4Q3yMgnv/Yog
+lwqLcAjZW9oe2xoN7/0Yu3UD7/2iwPHA4cWhwc91gADABKlwfg/v/QHZiiBXCv4I7/0CEgE2QI2K
+IFcKIY0Quu4I7/1Fec9wgABkQACAgeAB2MB4QMCLcAYML/4E2QCNUSAAgAGNBPT+DUAGBPCaDkAG
+EQPv/aHA4HjhxeHGmHDPcoAATEEFgiCCZoLIuBC4yLkFIQGAAYLIuxC7yLgFIwUAZ4ICgsi7ELvI
+uAUjBwBoggOCyLvIuBC7BSMGACTyABQOAC8oQQBOIIMHANgPIMAAEn0EIEMBpH5lfgAcgAPagqR+
+xXt6onmCBCCOAQQgwAGke8V7eaJ4gqR7BCFBg2V4GKLf9cHG4H/BxeB48cD2Cc/9OnAFgaCByLgQ
+uMi9BSUNkAGBJoHIuMi5ELkFIRAAAd4b8gQlgJMU8i8oAQBOIIIH8CGBIIDhAN8PJ48QCfIEJwAU
+QiAAgGB5yiBiAOZ9gOXbfuj1/QHP/eB48cChwQHYUglgDUDAz3CAAExBCoBRIACAyiACB8ohIgHK
+IoIPAABnAMojYg+IC+L9wCviBaHA0cDgfuB4ocHxwFoJz/2jwQh1SMDPdoAATEEahvuGPIYEfyR/
+p39Bx2IPr/2KINgEiiDYBFYPr/2pcYDnFfSA5Wn0sgrv/AfYgOBj8gohwA/rcgXYiiNGD0okAACd
+Ba/8CiUAAQQUATGA4RnyIBQAMQsgQIAN8s9wgAC4BGCAz3EAAJRxDNhgewPaCfCA4Af0z3CAALwE
+IIBgeQzYBhQBMYDhGfIiFAAxCyBAgA3yz3CAALgEYIDPcQAAlHEN2GB7BNoJ8IDgB/TPcIAAvAQg
+gGB5DdgEJ1CTC/LyCe/8B9iKIBgIpg6v/QpxEvCA5RD0iiDYBJYOr/2KIUcK5gnv/AfYiiAYBIIO
+r/3pcbD/vKYI3LcA7/2jwOB48cDhxaPBAdhAwM91gABMQalweg7v/VzZOoUbhSR4PIUEeYHAQcFm
+/wHAO4UEeUHBPg6v/YogWARVJUAfqXGF/89wgADEQkAlARuC/4twUgkv/gTZAcCm/6oPAA0AhYDg
+BfQFhYDgTA7B/10A7/2jwPHA1g+P/aLBAd3PdoAATEE6hhuGJHg8hgQhEADiDa/9iiCYA0wgAKBV
+Jk8XKvID8Lt9BCBAo/7zLygBAE4gkQfwJ0AUXB5AFIDgyiHBD8oiwQfKIGEByiOBDwAAGALKJAEE
+DASh/MolQQRAeIogmAOODa/9KnEA2A8gQAQGIBAgCnB//4ogmAN2Da/9PIapB6/9osDxwEIPj/2m
+wTpxGnJgwADYARwCMAHYAhwCMAMcAjCLcFYOIAuBwQTBCnAjIEAEBcIDwIDgC/QKIcAP63IF2Ozb
+iiTDD5UDr/y4c0B4VQev/abA4HjxwPIOj/0acCh1SHdodjhjZtk92jII7/0XuoHgCfQKcAoIL/6p
+celwvgjv/clxKQeP/eB48cDCDo/9CHYA3Yog2APWDK/9yXHPcIAATEFagDuARHkA2g8iggMEIkMA
+QiMDgMojYgAvJsfwAd/KIEEDBvIcgCR4RXhH/+lw4QaP/eB/ANjxwGoOj/0acCh3OnLPdoAAHA8U
+ls91gABMjBC4IgvgCAClgODKJyIQhSEHKU8hQCefuOxxAKHscQAZAAQIhlEgAIAF8gCFgbgApc9w
+gAC8BgCIgOAE9ACFg7gApc9woAAsIBCAAN5tHRgQSiTAcMlxqCAABs9wgAD+BwCIgOAM2MogIQBE
+Kb4Dz3KAAEzQJ3AzIgAAACGCD4AAzI0B4QCqgOce8gCFYhUPFqlxYxUEFoC4AKUA2Afw7HNAowQZ
+kAMB4PfgQIG6989woADUC02gwKFiHdgTYx0YERDwANmpcgXw7HMAowTiAeH34QCCu/fPcaAA1AsN
+odEFr/3UHYAT8cDhxaHBCHXiDq/8F9jPcIAA9AQAgIDgFfSd2AAcBDARzKlxHtoCHAQwAeAQeAQg
+gA8AAP+/j7gRGhwwAMAYurD/ugrABaUFr/2hwADY2vHxwOHFABYNQAXMAdrXcAAAAEACyMIiigAX
+usdyAA4AAFMlARCj/1ElQJDPcYAA9AQB2MogIQBlBa/9AKHxwOIMr/0A2M9xpwAUSAihR4HPdoAA
+lJ5fplCBz3OnADREgB6AEAehz3LzD//8UKEWoaDZmrn1G1gAz3GlAAgMCBEFAEwlAIDKIcIPyiLC
+B8ogYgHKI4IPAAAbAxgBovzKJCIAz3KkALg9mxIDBs91oADIH3umphIDBiDffKaSEgMGfaajEgMG
+fqZQ22KhmxoYAP/ZphpYAJIaWACjGlgAz3GkAOz/B6HPcAAA//8GoVEVEJYB2FEdGJDwpUMdGBAA
+2B4I7/2NuPGliiDEAM9xoADsJwahCoFoHgQQiiDNAAahCoFqHgQQz3AoAAIBBqGKII0ABqFRHRiU
+TQSP/eB48cDhxQhyAd2A4cohwQ/KIsEHyiBhAcojgQ8AAKIAyiQhAFQAofzKJQEBgOJE9lN6iiX/
+H4DhRPYzebN9FCGAABoIYAY7eax4FQSv/S9w4HjxwH4Lj/16cJpxSHcacwolACEA2s9xqwCg/1mh
+B9gaoVihIN7PdaAAyB/QpQHYQx0YEADYWg+v/Y240aUZ2c9wpwCYRzqgggsgCh7Yz3KnABRIHYK+
+gmwSEQBwEhIAAKcAGEAj97jFIIIPAP8AANMg4QX3vcUlgh8A/wAA0yXhFYohEADL/wh2qXCKIRAA
+yf8IdUApACKKIQgAxv8Id0AqACKKIQgAw//ReRnhLHkvcbF6GeJMei9yMHcAG4AjABxAI4T2ANgF
+8FBwfvYB2AEDr/0AHQIg4HjxwL4Kr/0A2c9zoAC0D7yDPKPPcIAAlJ5oEAIBELpPIk4AiL7PcqAA
+7CfGomoQDgEQvoUmjRDGot+Az3enABRIx6eAEA4A0KfPdqUACAwipvuAz3akALg9mx7YE/yAph7Y
+E/2Akh7YEx6Aox4YEM9wpADs/yagiiCKAAaivKMKDCACAdihAo/98cAOCo/9z3CAADCMB4iA4PQE
+IQCswc9wqwCg/2QQGQBoEBcAYBAYAAfdSv8A2c9wqwCg/zmguqA4oAIMoAkB2M93oADIH1EXAJbP
+dqAA7CdAwAHYUR8YkCDYEKcB2EMfGBAA2MoNr/2NuCDYEafPcacAFEisoQDYDaEOoQ+hz3AAAAEq
+BqbPcKUA6A+noCDYEKcF2EMfGBAA2JYNr/2NuCDYEacB2M9xoAC0Dxyhz3AAAAIvBqbPcAAAwjAG
+ps9wAABCSAamz3AAAAJKBqbPcAAAAmIGps9wAADCYwamSiAAIM9wgAAwjCSQC4hEKb4HGGAVeGq4
+ACBBDhUgACQ4YMdwgABEQwMQlAAEEJUAARCSAAIQlgAgiBC5BSGBDwAAQi0mpiCIELkFIYEPAACC
+RiamAIgQuAUggA8AAEJgBqYg2BCnBdhDHxgQANjiDK/9jbgg2BGnSiEAIBDwz3CAAAiaFiBABEQY
+gAFBhUgYQAFAIVEgV6A4oM9wgAAwjAaQMnDoAg4Az3GnABRIXBlABEAqACRPIEEAh7mJuSamCHGF
+IYsAJqaFIIwABqZMIQCgE/JMIUCgHfJMIYCgJfRALAAkBSCBDwAAgmAmpgUggA8AAEJiGPBALAAk
+BSCBDwAAgi0mpgUggA8AAEIvDPBALAAkBSCBDwAAwkYmpgUggA8AAIJIBqYg2BCnBdhDHxgQANge
+DK/9jbgg2BGngcCCwUAkEzuJworDCiTABB3/K8CA4EbyCcBAKU0hx3WAAIyZAKUKwAGlAcAYpQLA
+GaVALgAkhSCKAAamINgQpwXYQx8YEADYyguv/Y24INgRp4PAhMGJworDCiTABAr/K8CA4CXyCcBM
+IQCgAqUKwAOlA8AapQTAG6Ui8kwhQKAq8kwhgKA09EAtACQFIIEPAACCYCamBSCADwAAQmIn8Aoh
+wA/rcgXYiiNEBabwCiHAD+tyBdiKIwQIoPBALQAkBSCBDwAAgi0mpgUggA8AAEIvDfBALQAkBSCB
+DwAAwkYmpgUggA8AAIJIBqYg2BCnBdhDHxgQANgaC6/9jbgg2BGnhcCGwYnCisMKJMAE3v4rwIDg
+bPIJwAalCsAHpQXAHqUGwB+lINgQpwXYQx8YEADY4gqv/Y24INgRp0AqACSFIIoABqaHwIjBicKK
+wwokwATN/ivAgOBW8gnACMEEpQrAAcMFpQfAHKU9pQPBAiHCAAXDWGACIMWATfJieUx5L3Cocaz+
+A8FAKI0gtH0VJU0UAnnHdYAAlJ4CwATCIaUIwwIiAQAGwDtjAiMFgD3yAnosei9wqHGf/gTCBcMC
+IgEAA8AnpQIjBoA0HYARNPIGwAIghYBsBeL/TB1AEQohwA/rcgXYiiPFBRvwCiHAD+tyBdiKI0QO
+SiQAAK0Cb/wKJQABCiHAD+tyBdiKIwUB9PEKIcAP63IF2IojBQONAm/8iiSDDwohwA/rcgXYiiMF
+BPfxCiHAD+tyBdiKIwUFiiSDD2UCb/wKJYABQCBQIEwggKByBMX/ANjPcaAAtA8cob/+z3GrAKD/
+ZBlABmgZwAVgGQAGSiQAcQDZqCDADChwgCCCDRB4BriBuJe4BqYocIAgQg8QeAa4gbiXuAamKHCA
+IMQGEHgGuIG4l7gGpihwgCCECBB4BriBuJe4BqYocIAghgAQeAa4gbiXuAamKHCAIEYCEHgGuIG4
+l7gGpgHhAMBRHxiQSQVv/azA4HjxwBoNb/2YcKHBz3KAAPgEIIrPc4AAlJ4BgoQTAwCQccwgwYDq
+8nBwBvLPcIAArJ8hiCCqSiTAcEogABCoIMACz3CAAKyfMiAAApBwA/JAIEgQTCDAkKQBBgDPcIAA
+rJ8BiJBwBvQEIQEBLyVHAAbwByAAAS8lBwBhogDbz3CgALQPcBASAHygABoCARTwQCCAIRB4BriB
+uEApASQleAamQCOBETB5BrmBuUAqABQleAamAePPcIAAMIwGkBBzMgEGAADZDyHBAAshQIEB2Mon
+AgAN9AshAIHt889wgACsnwGIkHDn8wonAAKA4xHygeNn8oLjBvSKIIYgiiFGAgzwCiHAD+tyBdiK
+Iw8CZPC22r3ZGnJ5cc92oADsJ0ohACBKJABxCiJAFCp1qCCBAgAgQSNUa0AvAAEUeBpitXrHcoAA
+DJ8IkjB5QCmJAU8hQRAcfxC/5XkmpsC4uHgFIEAELyEIIAAjTxMJkvB/Br9PJ0YQHHlAKRMEBSOB
+ISamwLi4eAUggQIvIkgQRSHAEAamCoaLcQCxCJIvJgEAABQAMdBwFPRFJ88Q5qYKhgCxCZIAFAEx
+HHgwcBT0AeVp8YoixAaKIYQIp/EKIcAP63IF2IojDwdKJAAA4Qcv/AolAAEKIcAP63IF2Iojjwf0
+8c9xoAC0D3AZgAR5A2/9ocDgeADZz3CAAKyfIKghqOB/IqjgfuB48cDuCk/9r8HPcIAAHA8IgM91
+gABEQ8C4QMDPcIAAMIwkkAuIRCm+BxhgFXhquAAgQQ4AwBV4OGAZZSOJQcEZZSSJuGACiELBQ8DP
+cIAAlJ4AgCK4wLhEwM9wgACUnmQQAQHPcIAAuAYAkBBxSiEAICf0z3KAADhOLYrPdoAArJ+GIf8B
+YI5Due6KT4oCIcGAYY6GJ/8RyiFiAEO/DiPDg4Yi/wHKI2IAe3tleXtqQo4OIsKAyiJiAAK6RXkC
+8AfZgOEGBCEARcHPcaAAtEdHEQGGgOHyAwEAz3KAADhOLYrPc4AArJ+GIf8BQ7kgqy6KhiH/AUO5
+IasvioYh/wFDuSKrz3GAAJSeZBkEAADZnrnPcKAAtEdTGFiARv3PdqAAyB9RFg+WAdhRHhiQINgQ
+pgHYQx4YEADY1g1v/Y24INgRps9xgAAwjASRK4nPcqAA7CdEKL4HOWE1eWq5ACFADgDBNXk4YAll
+ELkFIYEPAABCLSaiCWUQuQUhgQ8AAIJGJqIIZRC4BSCADwAAQmAGolEe2JPPcKcAFEgMgM9yDwAA
+/M93gACUnkbAAMACuBR4G2cdZxlnACcEEAAnBRAfZwmHYYOnhQbHIBQEAIDnIoEMFQUAG/QKu0R7
+yb2le891pwAUSG2lCrkkeohxyblFec9ypwAUSC6iQC2BAgQhgQ8PAAD8ybgleBrwCr1Efcm7pXvP
+dacAFEhtpUAsgwJkesm5RXnPcqcAFEguogq4BCCADw8AAPyoccm5JXjPcacAFEgPoUoiACAD2EfA
+CiNAJAXAESCAhDoCAQDPcYAArJ8yIYAEQnFIwc9xoAC0R2AZGIAQuJu4z3GAAKy0IImfuIDhAdnA
+eQ+5JXjPcaAAtEdfGRiABfA6CW/9iiCIA89woAC0R3EQAIYEIIAPDgAAAEEofoTx9QDfAvAB589w
+gAAwjAaQEHfKAQYACMAAiBEgwIP18wDAArgUeEnAAcECwIDnAiBZAM9wpwAUSPegC/KB53vygucL
+9IohhiCKI0YiBfC22L3ZOnB6cUokACGKdUAvWBFhvVEWEJYB2FEeGJAg2BCmAdhDHhgQANjiC2/9
+jbgg2BGmA8A1bSV4EHgQuIUgigDPcaAA7CcGoQAlQBQQeAa4gbiXuAahACXAFBB4BriBuJe4BqFA
+IYAhEHgGuIG4BqFAI4AhEHgGuIG4BqFRHhiUQCQEPorAi8GMwo3D/PwuwIDgDfTPcIAAlJ58EAAG
+z3GAAJSeAeB8GRgACcAGwfV4gOHHcIAAlJ4a9IvCYIKKwSCBisJgoovCIKKNwmCCjMEggYzCYKKN
+wiCiM4A0EBAACfCKIMQGiiGECI3xLYBMEBAAFiBAMwrCACCVD4AAjJkLwPAdgCD0HQAgCCKAD///
+Af8vJkAmBC4+IC9wxPwOIJcPAAAAAQvAiCB8AAQovgUvcApxvvwOIIEPAAAAAQkngC8AAP8BiSHH
+D0ggAABIIQEALsJUHRgggeJVHVggBfIEwoDiDPRUb0AqAyF0e3pitXrHcoAADJ8IsimyQiRUIEwk
+AKCMBs3/F/EHwGG4gOBAIlIguAXt/0fApgxABe78BfAqDy/9iiCIA89woAC0R3EQAIYEIIAPDgAA
+AEEofoTx9WkGL/2vwPHAocGLcIIMb/0E2QDAUSAAgAQMgv8AwFEgQIAYC+L/yiCiAADAUSCAgBAO
+QgoAwFEgwIC4CIIKAMBRIACBUAxCBdIPoAEB2M9xgK7gAexwIKACyOxxAKHPcoAAjJmKJIF9ANmo
+IMAB8CJDAOxwYKAB4QIJb/0A2KHA0cDgfuB48cDKDQ/9z3CAAIQFAICF4LwABQDPdqAArC8ahlIg
+AABRIACAVPTPcYAAjJ8JgQHgCaHPcIAAuLRAgIDiA4AVeQXyCoEB4AqhBPAYgQHgGKEYhs91oADI
+HyDfmrgYpgXY8KVDHRgQANhaCW/9jbjxpYz+GIazuLq4GKZk2PClQx0YEADYPglv/Y248aWyDoAJ
+jgwACUoIwAEF8OoNL/2KIIgDz3CgAHhFAIAEIIAPDgAAAEEofoTz9c9xgAAcD0iBNJFTIgAAUggv
+/QHbdg4v/BHYYQUP/eB48cDyDA/9z3ClAOgPB4DPcqQADEJTIASARCCNAEQgAwECgs92DwAA/Ahx
+ybnEeOOCKrjYd8R/QS+FEuSCUyZGAulyybrkfiq+BvKe4YT3jCFPiMT3ANkD8AHZTCQAgATynuBE
+9wDYBvCMIE+IPPcB2IDlG3gleAXyTCaAh0P3ANkF8IwmT4g99wHZgOUCuQV5BPJMJYCHRPcA2Abw
+jCVPiDz3AdiA4wO4BXkE8p7iRPcA2AbwjCJPiDz3AdiA4wS4BXkE8p7mRPcA2AbwjCZPmDz3AdgF
+uCV4QiAAgH0EL/3KIGIA4H8A2OB+4HjPcKAALCAQgOB/CeDgfuB44H8B2ADZlrnPcKAArC88oOB+
+4HjgfuB44H7geOB+4HjgfuB44H8A2OB+4HjgfuB44H7geOB+4HjgfuB4z3KAAHAPVIpZYTB5QWlQ
+cMT2IngQeAPwAtjPcaAAyB8eoRDYDqEB2BUZGIDgfuB48cCKCw/9AN/PdaAA0A/1pQPeEvDgeOB4
+4HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeGG+jCb/n+71A9gapc9wgABwD++oAdgVpaUDD/3x
+wDoLL/0F2ADdC7ipcd3/z3GAALShHoHuuGDyHYFRIACAXPL+Dc/7ANmcuc9woADQGzCgAdnPcKQA
+mEA8oAQgvs8wAAAAAeXKJSIQUSMAwCf0USBAxQXyUSGAwyjyUSDAxQ7yUSGAwwryz3CqAAAEAYCG
+ID8Lg+Aa8s7/IN/PdqAAyB/wpgHYQx4YEADYpg4v/Y248aaE5aYHxf8I8MX/z3GAAMCNCYEB4Amh
+USAAxwDZD/IA2s9woADQG5y6UKDPcIAAkARAgBCCAeAQos9wpACYQDygPfBKDc/7USBAxTf0USAA
+xQHlyiUiEFEjAMDPdqAAyB8g3w708KYB2EMeGBAA2C4OL/2NuPGmhOVCAAYA5vHPdaAA0A8A2BWl
+8KYB2EMeGBAA2AoOL/2NuAPY8aYapQDYz3GAAHAPD6nPcYAAwI0JgQHgCaEB2BWlVQIP/eB48cDm
+CQ/9AN/PdqAA0A/1pgPdEvDgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeGG9jCX/n+71
+A9gaps9wgABwD++oAdgVps9xgAC0oR2BgLgdoZX/Hg+AAvEBD/3gePHA4cXPcqAA0A+wgs9wgABw
+Dy+IMHUA2wX0A9k6om+oAvDf/9UBD/0A289yoADEJ4ogGAg8GsCAz3GgAMgfDqGAEQAAUSBAgM9w
+gABkqg3yQhIChgQivo8AwAAABfJBgIDiA/JCoIAZwADgf2Gg4HgUzAQgvo8AAChARfLjuCHyFRIC
+N4DYz3GAAESN67oUGhwwBvIYgQHgGKEF8BCBAeAQoVEiwIAH9ADZz3CgACwgL6AVzEYggALgfxUa
+HDBRIECBF/KKIAQAFBocMM9xgABEjQ+BAeAPoRXMANlGIIACFRocMM9woAAsIC+g4H4E2BQaHDDP
+cYAAgAwfgQHg4H8foeB+8cB+CA/9AN0g2M92gADsp0AmDxXOCWAGAKbPc6AAyB8B2BOjWIM5g1QT
+BAD4EwAAz3OgADAQYYPPc6AADCQCIgKAZ4MDIUEDQaYipgIkAwDPcoAAHA/PcYAAtKFjpkwZRAMU
+klAZRANoggm2z3KlAAgMUyMAAAi2ABIEAE4ZRANTJEUBUyRCAEgZQgGD4sohwQ/KIsEHyiOBDwAA
+Vg1wBOH7yiBhAQQkhQ8AAADgQS1CA5YZggA+ge65FB4AEQzyBLqBukV4CLYH2AfwFScMEKCkA/AE
+2AHgiOC69+u7sAjC/ql3USCAxbrygOe49M9wgAC0oT6ABCGBDwAAAEAEIYBPAAAAQBBxAd/KJyIQ
+yiViEM9xgABwDw+JAeAPeA+pz3GgALQPN4EwcADeCPTPcKAAqCAGgIwgg47M9wDfV//PcIAAkAQg
+gAHdCIEB4AihgOeG8s9xgADspwWBBCCADwAAAOBBKEQDz3CkAJBBdYBWgFEkAIC4ckihz3KAALSh
+Z6EF8kwaxAAI8EwahAMEI4MP//8AAGehUSRAgAXyMLtOGsQABfBOGoQDcHtnoVEkgIAF8lAaRAEI
+8FAahAMEJYMP//8AAGihDYAGoQQggA8AAAD+KbhSGgQAHoLuuCPyz3CqAAAEBIAJoc9wgABQqECI
+gOJAIAQBMvKA4loALgACEIUA9CSDAxXYE7jwIMMAz3CAACio1XgB5lB2YKC09xvwz3CAAGioQIiA
+4kAgBAEW8oDiAhCFAM/39CSDAynYErjwIMMAz3CAACio1XgB5lB2YKCz90GpAhlCAYDnGPQEIL7P
+YAAAABL0z3CAAJAEIIAB3QGBYbgBoQeBAeAHoYoghQcaDO/8FBIBN1EjAMAT8gDfAf+KIMUHBgzv
+/Olxz3CAAJAEIIAB3QGBYbgBoQeBAeAHoYIO7/yKIEQCBCC+z4ABAADMJyKQzCUhkAzzz3CgADAQ
+A4CA4ADZCvLPcIAAkARAgAHdKHcMggHgDKKA5RXyAtnPcKAAyBwqoBz/z3CAALShQNk9oBTMhiD5
+jwX0ANiPuBQaHDDNBe/86XDhxTDbAN3PcKAAyBxpoAPaz3GgAMwXIRmYgE6hp6BqoOB/wcXxwOHF
+z3GAAIAMDoEB4A6hz3GgAMQnGREAhoDgANoF8gLYEBkYgM91oADUC1el//7PcYAAtKEdgYe4HaHo
+/xCFgOAr8gPYEaXgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB4
+4HjgeOB44HjgeOB44HjgeOB4EaUTzBEaHDCx/iEFz/wKIcAP63IF2M9zAAC8CUokAAAhAe/7CiUA
+AVEhAMbxwE30z3CgAAwkB4CA4Efyz3CAADCiC4DPcaAAyB9k4B6hENgOoQHYFRkYgFIIL/0L2FEh
+AMYz9FEgQMcA2iTyz3GgANQLFoE4gSTgMHBP91EhAMYE9FEjAMD881EjAMAS9FEggMQQ9BnwANnP
+cKAA/ESeuSGgRaDPcYAAgAwPgQHgD6HPcJ8AuP9cGMAIz3CfALj/XBgACK3/0cDgfuB48cDmC8/8
+CHXPdoAAtKEdhi8mCPA89OC9EPSCuM9xgACQBECBHaYDggHgA6IggYogRQnWCe/8I4FRJUCQHYYR
+9IS4z3KAAJAEIIIdpgSBAeAEoSCCiiCFCa4J7/wkgc9woAAMJAOAUSDAgB2GEPKEuM9ygACQBCCC
+HaYFgQHgBaEggooghQmCCe/8JYE9hi8mSPAA3w70CiHAD+tyBdjPcwAAEQmKJIMPzQev+0olAADP
+daAA0A8RFQCWgOCF8kQhfoIT8lEhAIAX8s9ygACQBCCCAoEB4AKhIIKKIEUIKgnv/CKBCfBRIQCB
+FfKc/x2GUSDAgWf0z3CgAMQnGRAAhoDgB/IC2c9woACQIz2gPf4b8JP/HYZRIMCBVfQ5helyBfAA
+EQBQAeJPekEpgAAQcrn3ANoF8AARgFAB4k96UyFAABByufcD2BIdGJDgeOB44HjgeOB44HjgeOB4
+4HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB4Eh0YkBPMERoc
+MFD+HobzuAnyz3CAAJyu66jPcIAAXK7ssM9wAAD/f89xoAAMJAGhG9gEoTL/jQLP/AohwA/rcs9z
+AABYCQXYaPHgePHA4cVQ3QDaz3OgAMgfr6NeowIgQgBeowHaFRuYgEDaTqMEIL7PAAIAECwOgf9Z
+As/84HjxwNoJz/zPcIAAtKExgFEhQIIR8s9xgABwDy6JRBCCAER5USGAgEjayiKBDwAAkAAC8A7a
+ANvPcaAAqCAngagQDQBZYbFxwiVFEMol5hKweArZdP0d/s9wgADcRgCQz3agAMQnUSAAgQTyjCUD
+kgT3AN8V8M9woAC0D3ygz3CrAKD/eqAWCCAKANgZFgCWgOAE8gLYEB4YkAHfGRYAloDgPvRRIQDG
+PPQD2c9woADUCzGg4HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44Hjg
+eOB44HjgeOB44HjgeOB44HjgeDGgE8zPcYAAgAxqvREaHDAUgQHgFKEVgbhgFaHGDO/8AdiOCmAB
+Adi3/SUB7/zpcOB48cC2CO/8wNjPdYAA7KdBjSAaAjASakTgz3GgANQL2IEA20ImDhiA5somzBDR
+cEYADgDPcZ8AuP8Ygc9ygACQBJC4GKEYgbC4GKEgggWBAeAFoc9xgAC0oR2Bg7gdoSCCiiDFCHIO
+r/wlgQDYGf8A2D3wz3aAABwPyYYD4AQggA8AAPz/Kr7Avhe+x3YADgAAxXjsdgCmCMjsdgCmEczP
+dqAAiCRKJMBzAeAQeAQggA8AAP+/j7gRGhwwHqYA3qggAALwJY8T7HDgoAHmgOIA3cv3z3CAACio
+8CBOA+xwwKAB5VB1t/dtoQHYNQDP/OB4wdggGgIwz3KAABwPGIoB289xgAC0oYbgFoHCI8EADOAY
+IMAAYhkEAGIRAAED4AQggA8AAPz/nbifuOxzAKMIyOxzAKMYijaBhuAB2MIgAQAYIQEA7HAgoOB/
+AdjxwG4Pr/wb2M92oADEJxUWDZYWHhiQA9nPcKAA1AsxoOB44HjgeOB44HjgeOB44HjgeOB44Hjg
+eOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HgxoBPMERocMIogBAweDa/8
+ANl6/eS9E/LPcIAAkAQggBGBAeARoUD9GRYAloDgBfIC2BAeGJBe/iLwUhYAllMgQQCD4dEl4ZAD
+8rf+GPDPcIAAOQgB2SCoz3CAAJAEQIAGggHgBqLPcIAAtKEegFEgwIEG8s9wgAB0BSCg/QaP/PHA
+jg6v/ADZz3AAAP9/z3WgAMQnEx0YkBvYFh0YkAHYEB0YkM92gAC0oR6G8bgF8qgeQBAI8BGGNoaW
+DmACANqoHgAQb/4dhue4BPIA2CXwLRUBllaGMHIG8oC4HaYA2JH+9vEEJYFfAADwLx6GJXgephEV
+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

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 07:26:52 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 02658106564A;
	Sat, 10 Apr 2010 07:26:52 +0000 (UTC) (envelope-from jfv@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id E37BA8FC16;
	Sat, 10 Apr 2010 07:26:51 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3A7Qpt8011353;
	Sat, 10 Apr 2010 07:26:51 GMT (envelope-from jfv@svn.freebsd.org)
Received: (from jfv@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3A7QpII011351;
	Sat, 10 Apr 2010 07:26:51 GMT (envelope-from jfv@svn.freebsd.org)
Message-Id: <201004100726.o3A7QpII011351@svn.freebsd.org>
From: Jack F Vogel 
Date: Sat, 10 Apr 2010 07:26:51 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206447 - head/sys/dev/e1000
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 07:26:52 -0000

Author: jfv
Date: Sat Apr 10 07:26:51 2010
New Revision: 206447
URL: http://svn.freebsd.org/changeset/base/206447

Log:
  Correct broken build.

Modified:
  head/sys/dev/e1000/if_em.c

Modified: head/sys/dev/e1000/if_em.c
==============================================================================
--- head/sys/dev/e1000/if_em.c	Sat Apr 10 07:07:08 2010	(r206446)
+++ head/sys/dev/e1000/if_em.c	Sat Apr 10 07:26:51 2010	(r206447)
@@ -4389,7 +4389,7 @@ em_enable_intr(struct adapter *adapter)
 	struct e1000_hw *hw = &adapter->hw;
 	u32 ims_mask = IMS_ENABLE_MASK;
 
-	if (hw->mac.type == e1000_82574)
+	if (hw->mac.type == e1000_82574) {
 		E1000_WRITE_REG(hw, EM_EIAC, EM_MSIX_MASK);
 		ims_mask |= EM_MSIX_MASK;
 	} 

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 10:44:41 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id D131F106564A;
	Sat, 10 Apr 2010 10:44:41 +0000 (UTC)
	(envelope-from marius@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id C02378FC19;
	Sat, 10 Apr 2010 10:44:41 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3AAifrZ054588;
	Sat, 10 Apr 2010 10:44:41 GMT (envelope-from marius@svn.freebsd.org)
Received: (from marius@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3AAif4K054586;
	Sat, 10 Apr 2010 10:44:41 GMT (envelope-from marius@svn.freebsd.org)
Message-Id: <201004101044.o3AAif4K054586@svn.freebsd.org>
From: Marius Strobl 
Date: Sat, 10 Apr 2010 10:44:41 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206448 - head/sys/sparc64/sparc64
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 10:44:41 -0000

Author: marius
Date: Sat Apr 10 10:44:41 2010
New Revision: 206448
URL: http://svn.freebsd.org/changeset/base/206448

Log:
  Do as the comment suggests and determine the bus space based on the last
  bus we actually mapped at rather than always based on the last bus we
  encountered while moving upward in the tree. Otherwise we might use the
  wrong bus space in case the bridge directly underneath the nexus doesn't
  require mapping, i.e. was skipped as it's the case for ssm(4) nodes.

Modified:
  head/sys/sparc64/sparc64/ofw_machdep.c

Modified: head/sys/sparc64/sparc64/ofw_machdep.c
==============================================================================
--- head/sys/sparc64/sparc64/ofw_machdep.c	Sat Apr 10 07:26:51 2010	(r206447)
+++ head/sys/sparc64/sparc64/ofw_machdep.c	Sat Apr 10 10:44:41 2010	(r206448)
@@ -186,13 +186,10 @@ OF_decode_addr(phandle_t node, int bank,
 			name[sizeof(name) - 1] = '\0';
 			goto skip;
 		}
-		if (lbus != bus) {
-			if (OF_getprop(bus, "#size-cells", &szc,
-			    sizeof(szc)) == -1)
-				szc = 1;
-			if (szc < 1 || szc > 2)
-				return (ENXIO);
-		}
+		if (OF_getprop(bus, "#size-cells", &szc, sizeof(szc)) == -1)
+			szc = 1;
+		if (szc < 1 || szc > 2)
+			return (ENXIO);
 		nbank /= sizeof(banks[0]) * (addrc + paddrc + szc);
 		bank = 0;
 		for (i = 0; i < nbank; i++) {
@@ -232,9 +229,9 @@ OF_decode_addr(phandle_t node, int bank,
 		}
 		if (i == nbank)
 			return (ENXIO);
+		lbus = bus;
  skip:
 		addrc = paddrc;
-		lbus = bus;
 		bus = pbus;
 	}
 

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 10:56:59 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id AFDBA106566B;
	Sat, 10 Apr 2010 10:56:59 +0000 (UTC)
	(envelope-from marius@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 9EF2F8FC20;
	Sat, 10 Apr 2010 10:56:59 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3AAuxLH058948;
	Sat, 10 Apr 2010 10:56:59 GMT (envelope-from marius@svn.freebsd.org)
Received: (from marius@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3AAux0j058946;
	Sat, 10 Apr 2010 10:56:59 GMT (envelope-from marius@svn.freebsd.org)
Message-Id: <201004101056.o3AAux0j058946@svn.freebsd.org>
From: Marius Strobl 
Date: Sat, 10 Apr 2010 10:56:59 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206449 - head/sys/sparc64/sparc64
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 10:56:59 -0000

Author: marius
Date: Sat Apr 10 10:56:59 2010
New Revision: 206449
URL: http://svn.freebsd.org/changeset/base/206449

Log:
  Unlike the sun4v variant, the sun4u version of SUNW,set-trap-table
  actually only takes one argument.

Modified:
  head/sys/sparc64/sparc64/trap.c

Modified: head/sys/sparc64/sparc64/trap.c
==============================================================================
--- head/sys/sparc64/sparc64/trap.c	Sat Apr 10 10:44:41 2010	(r206448)
+++ head/sys/sparc64/sparc64/trap.c	Sat Apr 10 10:56:59 2010	(r206449)
@@ -260,7 +260,8 @@ sun4u_set_traptable(void *tba_addr)
 		cell_t tba_addr;
 	} args = {
 		(cell_t)"SUNW,set-trap-table",
-		2,
+		1,
+		0,
 	};
 
 	args.tba_addr = (cell_t)tba_addr;

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 11:13:51 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 7FB8C106566C;
	Sat, 10 Apr 2010 11:13:51 +0000 (UTC)
	(envelope-from marius@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 6EEB98FC08;
	Sat, 10 Apr 2010 11:13:51 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3ABDp93062703;
	Sat, 10 Apr 2010 11:13:51 GMT (envelope-from marius@svn.freebsd.org)
Received: (from marius@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3ABDpeo062701;
	Sat, 10 Apr 2010 11:13:51 GMT (envelope-from marius@svn.freebsd.org)
Message-Id: <201004101113.o3ABDpeo062701@svn.freebsd.org>
From: Marius Strobl 
Date: Sat, 10 Apr 2010 11:13:51 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206450 - head/sys/sparc64/include
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 11:13:51 -0000

Author: marius
Date: Sat Apr 10 11:13:51 2010
New Revision: 206450
URL: http://svn.freebsd.org/changeset/base/206450

Log:
  Correct the DCR_IPE macro to refer to the right bit. Also improve the
  associated comment as besides US-IV+ these bits are only available with
  US-III++, i.e. the 1.2GHz version of the US-III+.

Modified:
  head/sys/sparc64/include/dcr.h

Modified: head/sys/sparc64/include/dcr.h
==============================================================================
--- head/sys/sparc64/include/dcr.h	Sat Apr 10 10:56:59 2010	(r206449)
+++ head/sys/sparc64/include/dcr.h	Sat Apr 10 11:13:51 2010	(r206450)
@@ -43,8 +43,8 @@
 #define	DCR_OBSDATA_CT_MASK						\
 	(((1UL << DCR_OBSDATA_CT_BITS) - 1) << DCR_OBSDATA_SHIFT)
 
-/* The following bits are valid for the UltraSPARC-III+/IV+ only. */
-#define	DCR_IPE			(1UL << 5)
+/* The following bits are valid for the UltraSPARC-III++/IV+ only. */
+#define	DCR_IPE			(1UL << 2)
 
 #define	DCR_OBSDATA_CTP_BITS	6
 #define	DCR_OBSDATA_CTP_MASK						\

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 11:52:13 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 381D1106564A;
	Sat, 10 Apr 2010 11:52:13 +0000 (UTC)
	(envelope-from marius@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 257178FC13;
	Sat, 10 Apr 2010 11:52:13 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3ABqD7Q071333;
	Sat, 10 Apr 2010 11:52:13 GMT (envelope-from marius@svn.freebsd.org)
Received: (from marius@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3ABqDfi071326;
	Sat, 10 Apr 2010 11:52:13 GMT (envelope-from marius@svn.freebsd.org)
Message-Id: <201004101152.o3ABqDfi071326@svn.freebsd.org>
From: Marius Strobl 
Date: Sat, 10 Apr 2010 11:52:13 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206451 - in head/sys: conf dev/uart sparc64/conf
	sparc64/pci
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 11:52:13 -0000

Author: marius
Date: Sat Apr 10 11:52:12 2010
New Revision: 206451
URL: http://svn.freebsd.org/changeset/base/206451

Log:
  Add sbbc(4), a driver for the BootBus controller found in Serengeti and
  StarCat systems which provides time-of-day services for both as well as
  console service for Serengeti, i.e. Sun Fire V1280. While the latter is
  described with a device type of serial in the OFW device tree, it isn't
  actually an UART. Nevertheless the console service is handled by uart(4)
  as this allowed to re-use quite a bit of MD and MI code. Actually, this
  idea is stolen from Linux which interfaces the sun4v hypervisor console
  with the Linux counterpart of uart(4).

Added:
  head/sys/sparc64/pci/sbbc.c   (contents, props changed)
Modified:
  head/sys/conf/files.sparc64
  head/sys/dev/uart/uart.h
  head/sys/dev/uart/uart_cpu_sparc64.c
  head/sys/sparc64/conf/GENERIC
  head/sys/sparc64/conf/NOTES

Modified: head/sys/conf/files.sparc64
==============================================================================
--- head/sys/conf/files.sparc64	Sat Apr 10 11:13:51 2010	(r206450)
+++ head/sys/conf/files.sparc64	Sat Apr 10 11:52:12 2010	(r206451)
@@ -79,6 +79,7 @@ sparc64/pci/ofw_pcib.c		optional	pci
 sparc64/pci/ofw_pcib_subr.c	optional	pci
 sparc64/pci/ofw_pcibus.c	optional	pci
 sparc64/pci/psycho.c		optional	pci
+sparc64/pci/sbbc.c		optional	uart sbbc
 sparc64/pci/schizo.c		optional	pci
 sparc64/sbus/dma_sbus.c		optional	sbus
 sparc64/sbus/sbus.c		optional	sbus

Modified: head/sys/dev/uart/uart.h
==============================================================================
--- head/sys/dev/uart/uart.h	Sat Apr 10 11:13:51 2010	(r206450)
+++ head/sys/dev/uart/uart.h	Sat Apr 10 11:52:12 2010	(r206451)
@@ -67,6 +67,7 @@ struct uart_class;
 extern struct uart_class uart_ns8250_class __attribute__((weak));
 extern struct uart_class uart_quicc_class __attribute__((weak));
 extern struct uart_class uart_sab82532_class __attribute__((weak));
+extern struct uart_class uart_sbbc_class __attribute__((weak));
 extern struct uart_class uart_z8530_class __attribute__((weak));
 
 #ifdef PC98

Modified: head/sys/dev/uart/uart_cpu_sparc64.c
==============================================================================
--- head/sys/dev/uart/uart_cpu_sparc64.c	Sat Apr 10 11:13:51 2010	(r206450)
+++ head/sys/dev/uart/uart_cpu_sparc64.c	Sat Apr 10 11:52:12 2010	(r206451)
@@ -133,6 +133,14 @@ uart_cpu_getdev_console(phandle_t option
 		return (-1);
 	if (strcmp(buf, "serial") != 0)
 		return (-1);
+	/* For a Serengeti console device point to the bootbus controller. */
+	if (OF_getprop(input, "name", buf, sizeof(buf)) > 0 &&
+	    !strcmp(buf, "sgcn")) {
+		if ((chosen = OF_finddevice("/chosen")) == -1)
+			return (-1);
+		if (OF_getprop(chosen, "iosram", &input, sizeof(input)) == -1)
+			return (-1);
+	}
 	return (input);
 }
 
@@ -258,6 +266,9 @@ uart_cpu_getdev(int devtype, struct uart
 	    !strcmp(compat, "su16552")) {
 		class = &uart_ns8250_class;
 		di->bas.chan = 0;
+	} else if (!strcmp(compat, "sgsbbc")) {
+		class = &uart_sbbc_class;
+		di->bas.chan = 0;
 	}
 	if (class == NULL)
 		return (ENXIO);

Modified: head/sys/sparc64/conf/GENERIC
==============================================================================
--- head/sys/sparc64/conf/GENERIC	Sat Apr 10 11:13:51 2010	(r206450)
+++ head/sys/sparc64/conf/GENERIC	Sat Apr 10 11:52:12 2010	(r206451)
@@ -143,6 +143,9 @@ device		mk48txx		# Mostek MK48Txx clocks
 device		rtc		# rtc (really a front-end for the MC146818)
 device		mc146818	# Motorola MC146818 and compatible clocks
 device		epic		# Sun Fire V215/V245 LEDs
+device		sbbc		# Sun BootBus controller (time-of-day clock for
+				# Serengeti and StarCat, console for Serengeti,
+				# requires device uart)
 
 # Serial (COM) ports
 device		puc		# Multi-channel uarts

Modified: head/sys/sparc64/conf/NOTES
==============================================================================
--- head/sys/sparc64/conf/NOTES	Sat Apr 10 11:13:51 2010	(r206450)
+++ head/sys/sparc64/conf/NOTES	Sat Apr 10 11:52:12 2010	(r206451)
@@ -37,6 +37,7 @@ device		eeprom		# eeprom (really a front
 device		mk48txx		# Mostek MK48Txx clocks
 device		rtc		# rtc (really a front-end for the MC146818)
 device		mc146818	# Motorola MC146818 and compatible clocks
+device		sbbc		# Sun BootBus controller
 
 #
 # Optional devices:

Added: head/sys/sparc64/pci/sbbc.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/sparc64/pci/sbbc.c	Sat Apr 10 11:52:12 2010	(r206451)
@@ -0,0 +1,1074 @@
+/*	$OpenBSD: sbbc.c,v 1.7 2009/11/09 17:53:39 nicm Exp $	*/
+/*
+ * Copyright (c) 2008 Mark Kettenis
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+/*-
+ * Copyright (c) 2010 Marius Strobl 
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include 
+__FBSDID("$FreeBSD$");
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+
+#include 
+#include 
+#include 
+
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include "clock_if.h"
+#include "uart_if.h"
+
+#define	SBBC_PCI_BAR		PCIR_BAR(0)
+#define	SBBC_PCI_VENDOR		0x108e
+#define	SBBC_PCI_PRODUCT	0xc416
+
+#define	SBBC_REGS_OFFSET	0x800000
+#define	SBBC_REGS_SIZE		0x6230
+#define	SBBC_EPLD_OFFSET	0x8e0000
+#define	SBBC_EPLD_SIZE		0x20
+#define	SBBC_SRAM_OFFSET	0x900000
+#define	SBBC_SRAM_SIZE		0x20000	/* 128KB SRAM */
+
+#define	SBBC_PCI_INT_STATUS	0x2320
+#define	SBBC_PCI_INT_ENABLE	0x2330
+#define	SBBC_PCI_ENABLE_INT_A	0x11
+
+#define	SBBC_EPLD_INTERRUPT	0x13
+#define	SBBC_EPLD_INTERRUPT_ON	0x01
+
+#define	SBBC_SRAM_CONS_IN		0x00000001
+#define	SBBC_SRAM_CONS_OUT		0x00000002
+#define	SBBC_SRAM_CONS_BRK		0x00000004
+#define	SBBC_SRAM_CONS_SPACE_IN		0x00000008
+#define	SBBC_SRAM_CONS_SPACE_OUT	0x00000010
+
+#define	SBBC_TAG_KEY_SIZE	8
+#define	SBBC_TAG_KEY_SCSOLIE	"SCSOLIE"	/* SC -> OS int. enable */
+#define	SBBC_TAG_KEY_SCSOLIR	"SCSOLIR"	/* SC -> OS int. reason */
+#define	SBBC_TAG_KEY_SOLCONS	"SOLCONS"	/* OS console buffer */
+#define	SBBC_TAG_KEY_SOLSCIE	"SOLSCIE"	/* OS -> SC int. enable */
+#define	SBBC_TAG_KEY_SOLSCIR	"SOLSCIR"	/* OS -> SC int. reason */
+#define	SBBC_TAG_KEY_TODDATA	"TODDATA"	/* OS TOD struct */
+#define	SBBC_TAG_OFF(x)		offsetof(struct sbbc_sram_tag, x)
+
+struct sbbc_sram_tag {
+	char		tag_key[SBBC_TAG_KEY_SIZE];
+	uint32_t	tag_size;
+	uint32_t	tag_offset;
+} __packed;
+
+#define	SBBC_TOC_MAGIC		"TOCSRAM"
+#define	SBBC_TOC_MAGIC_SIZE	8
+#define	SBBC_TOC_TAGS_MAX	32
+#define	SBBC_TOC_OFF(x)		offsetof(struct sbbc_sram_toc, x)
+
+struct sbbc_sram_toc {
+	char			toc_magic[SBBC_TOC_MAGIC_SIZE];
+	uint8_t			toc_reserved;
+	uint8_t			toc_type;
+	uint16_t		toc_version;
+	uint32_t		toc_ntags;
+	struct sbbc_sram_tag	toc_tag[SBBC_TOC_TAGS_MAX];
+} __packed;
+
+#define	SBBC_TOD_MAGIC		0x54443100	/* "TD1" */
+#define	SBBC_TOD_VERSION	1
+#define	SBBC_TOD_OFF(x)		offsetof(struct sbbc_sram_tod, x)
+
+struct sbbc_sram_tod {
+	uint32_t	tod_magic;
+	uint32_t	tod_version;
+	uint64_t	tod_time;
+	uint64_t	tod_skew;
+	uint32_t	tod_reserved;
+	uint32_t	tod_heartbeat;
+	uint32_t	tod_timeout;
+} __packed;
+
+#define	SBBC_CONS_MAGIC		0x434f4e00	/* "CON" */
+#define	SBBC_CONS_VERSION	1
+#define	SBBC_CONS_OFF(x)	offsetof(struct sbbc_sram_cons, x)
+
+struct sbbc_sram_cons {
+	uint32_t cons_magic;
+	uint32_t cons_version;
+	uint32_t cons_size;
+
+	uint32_t cons_in_begin;
+	uint32_t cons_in_end;
+	uint32_t cons_in_rdptr;
+	uint32_t cons_in_wrptr;
+
+	uint32_t cons_out_begin;
+	uint32_t cons_out_end;
+	uint32_t cons_out_rdptr;
+	uint32_t cons_out_wrptr;
+} __packed;
+
+struct sbbc_softc {
+	struct resource *sc_res;
+};
+
+#define	SBBC_READ_N(wdth, offs)						\
+	bus_space_read_ ## wdth((bst), (bsh), (offs))
+#define	SBBC_WRITE_N(wdth, offs, val)					\
+	bus_space_write_ ## wdth((bst), (bsh), (offs), (val))
+
+#define	SBBC_READ_1(offs)						\
+	SBBC_READ_N(1, (offs))
+#define	SBBC_READ_2(offs)						\
+	bswap16(SBBC_READ_N(2, (offs)))
+#define	SBBC_READ_4(offs)						\
+	bswap32(SBBC_READ_N(4, (offs)))
+#define	SBBC_READ_8(offs)						\
+	bswap64(SBBC_READ_N(8, (offs)))
+#define	SBBC_WRITE_1(offs, val)						\
+	SBBC_WRITE_N(1, (offs), (val))
+#define	SBBC_WRITE_2(offs, val)						\
+	SBBC_WRITE_N(2, (offs), bswap16(val))
+#define	SBBC_WRITE_4(offs, val)						\
+	SBBC_WRITE_N(4, (offs), bswap32(val))
+#define	SBBC_WRITE_8(offs, val)						\
+	SBBC_WRITE_N(8, (offs), bswap64(val))
+
+#define	SBBC_REGS_READ_1(offs)						\
+	SBBC_READ_1((offs) + SBBC_REGS_OFFSET)
+#define	SBBC_REGS_READ_2(offs)						\
+	SBBC_READ_2((offs) + SBBC_REGS_OFFSET)
+#define	SBBC_REGS_READ_4(offs)						\
+	SBBC_READ_4((offs) + SBBC_REGS_OFFSET)
+#define	SBBC_REGS_READ_8(offs)						\
+	SBBC_READ_8((offs) + SBBC_REGS_OFFSET)
+#define	SBBC_REGS_WRITE_1(offs, val)					\
+	SBBC_WRITE_1((offs) + SBBC_REGS_OFFSET, (val))
+#define	SBBC_REGS_WRITE_2(offs, val)					\
+	SBBC_WRITE_2((offs) + SBBC_REGS_OFFSET, (val))
+#define	SBBC_REGS_WRITE_4(offs, val)					\
+	SBBC_WRITE_4((offs) + SBBC_REGS_OFFSET, (val))
+#define	SBBC_REGS_WRITE_8(offs, val)					\
+	SBBC_WRITE_8((offs) + SBBC_REGS_OFFSET, (val))
+
+#define	SBBC_EPLD_READ_1(offs)						\
+	SBBC_READ_1((offs) + SBBC_EPLD_OFFSET)
+#define	SBBC_EPLD_READ_2(offs)						\
+	SBBC_READ_2((offs) + SBBC_EPLD_OFFSET)
+#define	SBBC_EPLD_READ_4(offs)						\
+	SBBC_READ_4((offs) + SBBC_EPLD_OFFSET)
+#define	SBBC_EPLD_READ_8(offs)						\
+	SBBC_READ_8((offs) + SBBC_EPLD_OFFSET)
+#define	SBBC_EPLD_WRITE_1(offs, val)					\
+	SBBC_WRITE_1((offs) + SBBC_EPLD_OFFSET, (val))
+#define	SBBC_EPLD_WRITE_2(offs, val)					\
+	SBBC_WRITE_2((offs) + SBBC_EPLD_OFFSET, (val))
+#define	SBBC_EPLD_WRITE_4(offs, val)					\
+	SBBC_WRITE_4((offs) + SBBC_EPLD_OFFSET, (val))
+#define	SBBC_EPLD_WRITE_8(offs, val)					\
+	SBBC_WRITE_8((offs) + SBBC_EPLD_OFFSET, (val))
+
+#define	SBBC_SRAM_READ_1(offs)						\
+	SBBC_READ_1((offs) + SBBC_SRAM_OFFSET)
+#define	SBBC_SRAM_READ_2(offs)						\
+	SBBC_READ_2((offs) + SBBC_SRAM_OFFSET)
+#define	SBBC_SRAM_READ_4(offs)						\
+	SBBC_READ_4((offs) + SBBC_SRAM_OFFSET)
+#define	SBBC_SRAM_READ_8(offs)						\
+	SBBC_READ_8((offs) + SBBC_SRAM_OFFSET)
+#define	SBBC_SRAM_WRITE_1(offs, val)					\
+	SBBC_WRITE_1((offs) + SBBC_SRAM_OFFSET, (val))
+#define	SBBC_SRAM_WRITE_2(offs, val)					\
+	SBBC_WRITE_2((offs) + SBBC_SRAM_OFFSET, (val))
+#define	SBBC_SRAM_WRITE_4(offs, val)					\
+	SBBC_WRITE_4((offs) + SBBC_SRAM_OFFSET, (val))
+#define	SBBC_SRAM_WRITE_8(offs, val)					\
+	SBBC_WRITE_8((offs) + SBBC_SRAM_OFFSET, (val))
+
+#define	SUNW_SETCONSINPUT	"SUNW,set-console-input"
+#define	SUNW_SETCONSINPUT_CLNT	"CON_CLNT"
+#define	SUNW_SETCONSINPUT_OBP	"CON_OBP"
+
+static u_int sbbc_console;
+
+static uint32_t	sbbc_scsolie;
+static uint32_t	sbbc_scsolir;
+static uint32_t	sbbc_solcons;
+static uint32_t	sbbc_solscie;
+static uint32_t	sbbc_solscir;
+static uint32_t	sbbc_toddata;
+
+/*
+ * internal helpers
+ */
+static int sbbc_parse_toc(bus_space_tag_t bst, bus_space_handle_t bsh);
+static inline void sbbc_send_intr(bus_space_tag_t bst,
+    bus_space_handle_t bsh);
+static const char *sbbc_serengeti_set_console_input(char *new);
+
+/*
+ * SBBC PCI interface
+ */
+static bus_alloc_resource_t sbbc_bus_alloc_resource;
+static bus_release_resource_t sbbc_bus_release_resource;
+static bus_get_resource_list_t sbbc_bus_get_resource_list;
+static bus_setup_intr_t sbbc_bus_setup_intr;
+static bus_teardown_intr_t sbbc_bus_teardown_intr;
+
+static device_attach_t sbbc_pci_attach;
+static device_probe_t sbbc_pci_probe;
+
+static clock_gettime_t sbbc_tod_gettime;
+static clock_settime_t sbbc_tod_settime;
+
+static device_method_t sbbc_pci_methods[] = {
+	/* Device interface */
+	DEVMETHOD(device_probe,		sbbc_pci_probe),
+	DEVMETHOD(device_attach,	sbbc_pci_attach),
+
+	DEVMETHOD(bus_print_child,	bus_generic_print_child),
+	DEVMETHOD(bus_alloc_resource,	sbbc_bus_alloc_resource),
+	DEVMETHOD(bus_release_resource,	sbbc_bus_release_resource),
+	DEVMETHOD(bus_setup_intr,	sbbc_bus_setup_intr),
+	DEVMETHOD(bus_teardown_intr,	sbbc_bus_teardown_intr),
+	DEVMETHOD(bus_get_resource_list, sbbc_bus_get_resource_list),
+
+	/* clock interface */
+	DEVMETHOD(clock_gettime,	sbbc_tod_gettime),
+	DEVMETHOD(clock_settime,	sbbc_tod_settime),
+
+	KOBJMETHOD_END
+};
+
+static devclass_t sbbc_devclass;
+
+DEFINE_CLASS_0(sbbc, sbbc_driver, sbbc_pci_methods, sizeof(struct sbbc_softc));
+DRIVER_MODULE(sbbc, pci, sbbc_driver, sbbc_devclass, 0, 0);
+
+static int
+sbbc_pci_probe(device_t dev)
+{
+
+	if (pci_get_vendor(dev) == SBBC_PCI_VENDOR &&
+	    pci_get_device(dev) == SBBC_PCI_PRODUCT) {
+		device_set_desc(dev, "Sun BootBus controller");
+		return (BUS_PROBE_DEFAULT);
+	}
+	return (ENXIO);
+}
+
+static int
+sbbc_pci_attach(device_t dev)
+{
+	struct sbbc_softc *sc;
+	struct timespec ts;
+	device_t child;
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+	phandle_t node;
+	int error, rid;
+	uint32_t val;
+
+	/* Nothing to to if we're not the chosen one. */
+	if ((node = OF_finddevice("/chosen")) == -1) {
+		device_printf(dev, "failed to find /chosen\n");
+		return (ENXIO);
+	}
+	if (OF_getprop(node, "iosram", &node, sizeof(node)) == -1) {
+		device_printf(dev, "failed to get iosram\n");
+		return (ENXIO);
+	}
+	if (node != ofw_bus_get_node(dev))
+		return (0);
+
+	sc = device_get_softc(dev);
+	rid = SBBC_PCI_BAR;
+	/*
+	 * Note that we don't activate the resource so it's not mapped twice
+	 * but only once by the the firmware.
+	 */
+	sc->sc_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, 0);
+	if (sc->sc_res == NULL) {
+		device_printf(dev, "failed to allocate resources\n");
+		return (ENXIO);
+	}
+	bst = rman_get_bustag(sc->sc_res);
+	bsh = rman_get_bushandle(sc->sc_res);
+	if (sbbc_console != 0) {
+		/* Once again the interrupt pin isn't set. */
+		if (pci_get_intpin(dev) == 0)
+			pci_set_intpin(dev, 1);
+		child = device_add_child(dev, NULL, -1);
+		if (child == NULL)
+			device_printf(dev, "failed to add UART device\n");
+		error = bus_generic_attach(dev);
+		if (error != 0)
+			device_printf(dev, "failed to attach UART device\n");
+	} else {
+		error = sbbc_parse_toc(rman_get_bustag(sc->sc_res),
+		    rman_get_bushandle(sc->sc_res));
+		if (error != 0) {
+			device_printf(dev, "failed to parse TOC\n");
+			if (sbbc_console != 0) {
+				bus_release_resource(dev, SYS_RES_MEMORY, rid,
+				    sc->sc_res);
+				return (error);
+			}
+		}
+	}
+	if (sbbc_toddata != 0) {
+		if ((val = SBBC_SRAM_READ_4(sbbc_toddata +
+		    SBBC_TOD_OFF(tod_magic))) != SBBC_TOD_MAGIC)
+			device_printf(dev, "invalid TOD magic %#x\n", val);
+		else if ((val = SBBC_SRAM_READ_4(sbbc_toddata +
+		    SBBC_TOD_OFF(tod_version))) < SBBC_TOD_VERSION)
+			device_printf(dev, "invalid TOD version %#x\n", val);
+		else {
+			clock_register(dev, 1000000); /* 1 sec. resolution */
+			if (bootverbose) {
+				sbbc_tod_gettime(dev, &ts);
+				device_printf(dev,
+				    "current time: %ld.%09ld\n",
+				    (long)ts.tv_sec, ts.tv_nsec);
+			}
+		}
+	}
+	return (0);
+}
+
+/*
+ * Note that the bus methods don't pass-through the uart(4) requests but act
+ * as if they would come from sbbc(4) in order to avoid complications with
+ * pci(4) (actually, uart(4) isn't a real child but rather a function of
+ * sbbc(4) anyway).
+ */
+
+static struct resource *
+sbbc_bus_alloc_resource(device_t dev, device_t child __unused, int type,
+    int *rid, u_long start, u_long end, u_long count, u_int flags)
+{
+	struct sbbc_softc *sc;
+
+	sc = device_get_softc(dev);
+	switch (type) {
+	case SYS_RES_IRQ:
+		return (BUS_ALLOC_RESOURCE(device_get_parent(dev), dev, type,
+		    rid, start, end, count, flags));
+	case SYS_RES_MEMORY:
+		return (sc->sc_res);
+	default:
+		return (NULL);
+		/* NOTREACHED */
+	}
+}
+
+static int
+sbbc_bus_release_resource(device_t dev, device_t child __unused, int type,
+    int rid, struct resource *res)
+{
+
+	if (type == SYS_RES_IRQ)
+		return (BUS_RELEASE_RESOURCE(device_get_parent(dev), dev,
+		    type, rid, res));
+	return (0);
+}
+
+static struct resource_list *
+sbbc_bus_get_resource_list(device_t dev, device_t child __unused)
+{
+
+	return (BUS_GET_RESOURCE_LIST(device_get_parent(dev), dev));
+}
+
+static int
+sbbc_bus_setup_intr(device_t dev, device_t child __unused,
+    struct resource *res, int flags, driver_filter_t *filt,
+    driver_intr_t *intr, void *arg, void **cookiep)
+{
+
+	return (BUS_SETUP_INTR(device_get_parent(dev), dev, res, flags, filt,
+	    intr, arg, cookiep));
+}
+
+static int
+sbbc_bus_teardown_intr(device_t dev, device_t child __unused,
+    struct resource *res, void *cookie)
+{
+
+	return (BUS_TEARDOWN_INTR(device_get_parent(dev), dev, res, cookie));
+}
+
+/*
+ * internal helpers
+ */
+static int
+sbbc_parse_toc(bus_space_tag_t bst, bus_space_handle_t bsh)
+{
+	char buf[MAX(SBBC_TAG_KEY_SIZE, SBBC_TOC_MAGIC_SIZE)];
+	bus_size_t tag;
+	phandle_t node;
+	uint32_t off, sram_toc;
+	u_int i, tags;
+
+	if ((node = OF_finddevice("/chosen")) == -1)
+		return (ENXIO);
+	/* SRAM TOC offset defaults to 0. */
+	if (OF_getprop(node, "iosram-toc", &sram_toc, sizeof(sram_toc)) <= 0)
+		sram_toc = 0;
+
+	bus_space_read_region_1(bst, bsh, SBBC_SRAM_OFFSET + sram_toc +
+	    SBBC_TOC_OFF(toc_magic), buf, SBBC_TOC_MAGIC_SIZE);
+	buf[SBBC_TOC_MAGIC_SIZE - 1] = '\0';
+	if (strcmp(buf, SBBC_TOC_MAGIC) != 0)
+		return (ENXIO);
+
+	tags = SBBC_SRAM_READ_4(sram_toc + SBBC_TOC_OFF(toc_ntags));
+	for (i = 0; i < tags; i++) {
+		tag = sram_toc + SBBC_TOC_OFF(toc_tag) +
+		    i * sizeof(struct sbbc_sram_tag);
+		bus_space_read_region_1(bst, bsh, SBBC_SRAM_OFFSET + tag +
+		    SBBC_TAG_OFF(tag_key), buf, SBBC_TAG_KEY_SIZE);
+		buf[SBBC_TAG_KEY_SIZE - 1] = '\0';
+		off = SBBC_SRAM_READ_4(tag + SBBC_TAG_OFF(tag_offset));
+		if (strcmp(buf, SBBC_TAG_KEY_SCSOLIE) == 0)
+			sbbc_scsolie = off;
+		else if (strcmp(buf, SBBC_TAG_KEY_SCSOLIR) == 0)
+			sbbc_scsolir = off;
+		else if (strcmp(buf, SBBC_TAG_KEY_SOLCONS) == 0)
+			sbbc_solcons = off;
+		else if (strcmp(buf, SBBC_TAG_KEY_SOLSCIE) == 0)
+			sbbc_solscie = off;
+		else if (strcmp(buf, SBBC_TAG_KEY_SOLSCIR) == 0)
+			sbbc_solscir = off;
+		else if (strcmp(buf, SBBC_TAG_KEY_TODDATA) == 0)
+			sbbc_toddata = off;
+	}
+	return (0);
+}
+
+static const char *
+sbbc_serengeti_set_console_input(char *new)
+{
+	struct {
+		cell_t name;
+		cell_t nargs;
+		cell_t nreturns;
+		cell_t new;
+		cell_t old;
+	} args = {
+		(cell_t)SUNW_SETCONSINPUT,
+		1,
+		1,
+	};
+
+	args.new = (cell_t)new;
+	if (ofw_entry(&args) == -1)
+		return (NULL);
+	return ((const char *)args.old);
+}
+
+static inline void
+sbbc_send_intr(bus_space_tag_t bst, bus_space_handle_t bsh)
+{
+
+	SBBC_EPLD_WRITE_1(SBBC_EPLD_INTERRUPT, SBBC_EPLD_INTERRUPT_ON);
+	bus_space_barrier(bst, bsh, SBBC_EPLD_OFFSET + SBBC_EPLD_INTERRUPT, 1,
+	    BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE);
+}
+
+/*
+ * TOD interface
+ */
+static int
+sbbc_tod_gettime(device_t dev, struct timespec *ts)
+{
+	struct sbbc_softc *sc;
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+
+	sc = device_get_softc(dev);
+	bst = rman_get_bustag(sc->sc_res);
+	bsh = rman_get_bushandle(sc->sc_res);
+
+	ts->tv_sec = SBBC_SRAM_READ_8(sbbc_toddata + SBBC_TOD_OFF(tod_time)) +
+	    SBBC_SRAM_READ_8(sbbc_toddata + SBBC_TOD_OFF(tod_skew));
+	ts->tv_nsec = 0;
+	return (0);
+}
+
+static int
+sbbc_tod_settime(device_t dev, struct timespec *ts)
+{
+	struct sbbc_softc *sc;
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+
+	sc = device_get_softc(dev);
+	bst = rman_get_bustag(sc->sc_res);
+	bsh = rman_get_bushandle(sc->sc_res);
+
+	SBBC_SRAM_WRITE_8(sbbc_toddata + SBBC_TOD_OFF(tod_skew), ts->tv_sec -
+	    SBBC_SRAM_READ_8(sbbc_toddata + SBBC_TOD_OFF(tod_time)));
+	return (0);
+}
+
+/*
+ * UART bus front-end
+ */
+static device_probe_t sbbc_uart_sbbc_probe;
+
+static device_method_t sbbc_uart_sbbc_methods[] = {
+	/* Device interface */
+	DEVMETHOD(device_probe,		sbbc_uart_sbbc_probe),
+	DEVMETHOD(device_attach,	uart_bus_attach),
+	DEVMETHOD(device_detach,	uart_bus_detach),
+
+	KOBJMETHOD_END
+};
+
+DEFINE_CLASS_0(uart, sbbc_uart_driver, sbbc_uart_sbbc_methods,
+    sizeof(struct uart_softc));
+DRIVER_MODULE(uart, sbbc, sbbc_uart_driver, uart_devclass, 0, 0);
+
+static int
+sbbc_uart_sbbc_probe(device_t dev)
+{
+	struct uart_softc *sc;
+
+	sc = device_get_softc(dev);
+	sc->sc_class = &uart_sbbc_class;
+	device_set_desc(dev, "Serengeti console");
+	return (uart_bus_probe(dev, 0, 0, SBBC_PCI_BAR, 0));
+}
+
+/*
+ * Low-level UART interface
+ */
+static int sbbc_uart_probe(struct uart_bas *bas);
+static void sbbc_uart_init(struct uart_bas *bas, int baudrate, int databits,
+    int stopbits, int parity);
+static void sbbc_uart_term(struct uart_bas *bas);
+static void sbbc_uart_putc(struct uart_bas *bas, int c);
+static int sbbc_uart_rxready(struct uart_bas *bas);
+static int sbbc_uart_getc(struct uart_bas *bas, struct mtx *hwmtx);
+
+static struct uart_ops sbbc_uart_ops = {
+	.probe = sbbc_uart_probe,
+	.init = sbbc_uart_init,
+	.term = sbbc_uart_term,
+	.putc = sbbc_uart_putc,
+	.rxready = sbbc_uart_rxready,
+	.getc = sbbc_uart_getc,
+};
+
+static int
+sbbc_uart_probe(struct uart_bas *bas)
+{
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+	int error;
+
+	sbbc_console = 1;
+	bst = bas->bst;
+	bsh = bas->bsh;
+	error = sbbc_parse_toc(bst, bsh);
+	if (error != 0)
+		return (error);
+
+	if (sbbc_scsolie == 0 || sbbc_scsolir == 0 || sbbc_solcons == 0 ||
+	    sbbc_solscie == 0 || sbbc_solscir == 0)
+		return (ENXIO);
+
+	if (SBBC_SRAM_READ_4(sbbc_solcons + SBBC_CONS_OFF(cons_magic)) !=
+	    SBBC_CONS_MAGIC || SBBC_SRAM_READ_4(sbbc_solcons +
+	    SBBC_CONS_OFF(cons_version)) < SBBC_CONS_VERSION)
+		return (ENXIO);
+	return (0);
+}
+
+static void
+sbbc_uart_init(struct uart_bas *bas, int baudrate __unused,
+    int databits __unused, int stopbits __unused, int parity __unused)
+{
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+
+	bst = bas->bst;
+	bsh = bas->bsh;
+
+	/* Enable output to and space in from the SC interrupts. */
+	SBBC_SRAM_WRITE_4(sbbc_solscie, SBBC_SRAM_READ_4(sbbc_solscie) |
+	    SBBC_SRAM_CONS_OUT | SBBC_SRAM_CONS_SPACE_IN);
+	uart_barrier(bas);
+
+	/* Take over the console input. */
+	sbbc_serengeti_set_console_input(SUNW_SETCONSINPUT_CLNT);
+}
+
+static void
+sbbc_uart_term(struct uart_bas *bas __unused)
+{
+
+	/* Give back the console input. */
+	sbbc_serengeti_set_console_input(SUNW_SETCONSINPUT_OBP);
+}
+
+static void
+sbbc_uart_putc(struct uart_bas *bas, int c)
+{
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+	uint32_t wrptr;
+
+	bst = bas->bst;
+	bsh = bas->bsh;
+
+	wrptr = SBBC_SRAM_READ_4(sbbc_solcons +
+	    SBBC_CONS_OFF(cons_out_wrptr));
+	SBBC_SRAM_WRITE_1(sbbc_solcons + wrptr, c);
+	uart_barrier(bas);
+	if (++wrptr == SBBC_SRAM_READ_4(sbbc_solcons +
+	    SBBC_CONS_OFF(cons_out_end)))
+		wrptr = SBBC_SRAM_READ_4(sbbc_solcons +
+		    SBBC_CONS_OFF(cons_out_begin));
+	SBBC_SRAM_WRITE_4(sbbc_solcons + SBBC_CONS_OFF(cons_out_wrptr),
+	    wrptr);
+	uart_barrier(bas);
+
+	SBBC_SRAM_WRITE_4(sbbc_solscir, SBBC_SRAM_READ_4(sbbc_solscir) |
+	    SBBC_SRAM_CONS_OUT);
+	uart_barrier(bas);
+	sbbc_send_intr(bst, bsh);
+}
+
+static int
+sbbc_uart_rxready(struct uart_bas *bas)
+{
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+
+	bst = bas->bst;
+	bsh = bas->bsh;
+
+	if (SBBC_SRAM_READ_4(sbbc_solcons + SBBC_CONS_OFF(cons_in_rdptr)) ==
+	    SBBC_SRAM_READ_4(sbbc_solcons + SBBC_CONS_OFF(cons_in_wrptr)))
+		return (0);
+	return (1);
+}
+
+static int
+sbbc_uart_getc(struct uart_bas *bas, struct mtx *hwmtx)
+{
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+	int c;
+	uint32_t rdptr;
+
+	bst = bas->bst;
+	bsh = bas->bsh;
+
+	uart_lock(hwmtx);
+
+	while (sbbc_uart_rxready(bas) == 0) {
+		uart_unlock(hwmtx);
+		DELAY(4);
+		uart_lock(hwmtx);
+	}
+
+	rdptr = SBBC_SRAM_READ_4(sbbc_solcons + SBBC_CONS_OFF(cons_in_rdptr));
+	c = SBBC_SRAM_READ_1(sbbc_solcons + rdptr);
+	uart_barrier(bas);
+	if (++rdptr == SBBC_SRAM_READ_4(sbbc_solcons +
+	    SBBC_CONS_OFF(cons_in_end)))
+		rdptr = SBBC_SRAM_READ_4(sbbc_solcons +
+		    SBBC_CONS_OFF(cons_in_begin));
+	SBBC_SRAM_WRITE_4(sbbc_solcons + SBBC_CONS_OFF(cons_in_rdptr),
+	    rdptr);
+	uart_barrier(bas);
+	SBBC_SRAM_WRITE_4(sbbc_solscir, SBBC_SRAM_READ_4(sbbc_solscir) |
+	    SBBC_SRAM_CONS_SPACE_IN);
+	uart_barrier(bas);
+	sbbc_send_intr(bst, bsh);
+
+	uart_unlock(hwmtx);
+	return (c);
+}
+
+/*
+ * High-level UART interface
+ */
+static int sbbc_uart_bus_attach(struct uart_softc *sc);
+static int sbbc_uart_bus_detach(struct uart_softc *sc);
+static int sbbc_uart_bus_flush(struct uart_softc *sc, int what);
+static int sbbc_uart_bus_getsig(struct uart_softc *sc);
+static int sbbc_uart_bus_ioctl(struct uart_softc *sc, int request,
+    intptr_t data);
+static int sbbc_uart_bus_ipend(struct uart_softc *sc);
+static int sbbc_uart_bus_param(struct uart_softc *sc, int baudrate,
+    int databits, int stopbits, int parity);
+static int sbbc_uart_bus_probe(struct uart_softc *sc);
+static int sbbc_uart_bus_receive(struct uart_softc *sc);
+static int sbbc_uart_bus_setsig(struct uart_softc *sc, int sig);
+static int sbbc_uart_bus_transmit(struct uart_softc *sc);
+
+static kobj_method_t sbbc_uart_methods[] = {
+	KOBJMETHOD(uart_attach,		sbbc_uart_bus_attach),
+	KOBJMETHOD(uart_detach,		sbbc_uart_bus_detach),
+	KOBJMETHOD(uart_flush,		sbbc_uart_bus_flush),
+	KOBJMETHOD(uart_getsig,		sbbc_uart_bus_getsig),
+	KOBJMETHOD(uart_ioctl,		sbbc_uart_bus_ioctl),
+	KOBJMETHOD(uart_ipend,		sbbc_uart_bus_ipend),
+	KOBJMETHOD(uart_param,		sbbc_uart_bus_param),
+	KOBJMETHOD(uart_probe,		sbbc_uart_bus_probe),
+	KOBJMETHOD(uart_receive,	sbbc_uart_bus_receive),
+	KOBJMETHOD(uart_setsig,		sbbc_uart_bus_setsig),
+	KOBJMETHOD(uart_transmit,	sbbc_uart_bus_transmit),
+
+	KOBJMETHOD_END
+};
+
+struct uart_class uart_sbbc_class = {
+	"sbbc",
+	sbbc_uart_methods,
+	sizeof(struct uart_softc),
+	.uc_ops = &sbbc_uart_ops,
+	.uc_range = 1,
+	.uc_rclk = 0x5bbc	/* arbitrary */
+};
+
+#define	SIGCHG(c, i, s, d)						\
+	if ((c) != 0) {							\
+		i |= (((i) & (s)) != 0) ? (s) : (s) | (d);		\
+	} else {							\
+		i = (((i) & (s)) != 0) ? ((i) & ~(s)) | (d) : (i);	\
+	}
+
+static int
+sbbc_uart_bus_attach(struct uart_softc *sc)
+{
+	struct uart_bas *bas;
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+	uint32_t wrptr;
+
+	bas = &sc->sc_bas;
+	bst = bas->bst;
+	bsh = bas->bsh;
+
+	sc->sc_rxfifosz = SBBC_SRAM_READ_4(sbbc_solcons +
+	    SBBC_CONS_OFF(cons_in_end)) - SBBC_SRAM_READ_4(sbbc_solcons +
+	    SBBC_CONS_OFF(cons_in_begin)) - 1;
+	sc->sc_txfifosz = SBBC_SRAM_READ_4(sbbc_solcons +
+	    SBBC_CONS_OFF(cons_out_end)) - SBBC_SRAM_READ_4(sbbc_solcons +
+	    SBBC_CONS_OFF(cons_out_begin)) - 1;
+
+	uart_lock(sc->sc_hwmtx);
+
+	/*
+	 * Let the current output drain before enabling interrupts.  Not
+	 * doing so tends to cause lost output when turning them on.
+	 */
+	wrptr = SBBC_SRAM_READ_4(sbbc_solcons +
+	    SBBC_CONS_OFF(cons_out_wrptr));
+	while (SBBC_SRAM_READ_4(sbbc_solcons +
+	    SBBC_CONS_OFF(cons_out_rdptr)) != wrptr);
+		cpu_spinwait();
+
+	/* Clear and acknowledge possibly outstanding interrupts. */
+	SBBC_SRAM_WRITE_4(sbbc_scsolir, 0);
+	uart_barrier(bas);
+	SBBC_REGS_WRITE_4(SBBC_PCI_INT_STATUS,
+	    SBBC_SRAM_READ_4(sbbc_scsolir));
+	uart_barrier(bas);
+	/* Enable PCI interrupts. */
+	SBBC_REGS_WRITE_4(SBBC_PCI_INT_ENABLE, SBBC_PCI_ENABLE_INT_A);
+	uart_barrier(bas);
+	/* Enable input from and output to SC as well as break interrupts. */
+	SBBC_SRAM_WRITE_4(sbbc_scsolie, SBBC_SRAM_READ_4(sbbc_scsolie) |
+	    SBBC_SRAM_CONS_IN | SBBC_SRAM_CONS_BRK |
+	    SBBC_SRAM_CONS_SPACE_OUT);
+	uart_barrier(bas);
+
+	uart_unlock(sc->sc_hwmtx);
+	return (0);
+}
+
+static int
+sbbc_uart_bus_detach(struct uart_softc *sc)
+{
+
+	/* Give back the console input. */
+	sbbc_serengeti_set_console_input(SUNW_SETCONSINPUT_OBP);
+	return (0);
+}
+
+static int
+sbbc_uart_bus_flush(struct uart_softc *sc, int what)
+{
+	struct uart_bas *bas;
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+
+	bas = &sc->sc_bas;
+	bst = bas->bst;
+	bsh = bas->bsh;
+
+	if ((what & UART_FLUSH_TRANSMITTER) != 0)
+		return (ENODEV);
+	if ((what & UART_FLUSH_RECEIVER) != 0) {
+		SBBC_SRAM_WRITE_4(sbbc_solcons +
+		    SBBC_CONS_OFF(cons_in_rdptr),
+		    SBBC_SRAM_READ_4(sbbc_solcons +
+		    SBBC_CONS_OFF(cons_in_wrptr)));
+		uart_barrier(bas);
+	}
+	return (0);
+}
+
+static int
+sbbc_uart_bus_getsig(struct uart_softc *sc)
+{
+	uint32_t dummy, new, old, sig;
+
+	do {
+		old = sc->sc_hwsig;
+		sig = old;
+		dummy = 0;
+		SIGCHG(dummy, sig, SER_CTS, SER_DCTS);
+		SIGCHG(dummy, sig, SER_DCD, SER_DDCD);
+		SIGCHG(dummy, sig, SER_DSR, SER_DDSR);
+		new = sig & ~SER_MASK_DELTA;
+	} while (!atomic_cmpset_32(&sc->sc_hwsig, old, new));
+	return (sig);
+}
+
+static int
+sbbc_uart_bus_ioctl(struct uart_softc *sc, int request, intptr_t data)
+{
+	int error;
+
+	error = 0;
+	uart_lock(sc->sc_hwmtx);
+	switch (request) {
+	case UART_IOCTL_BAUD:
+		*(int*)data = 9600;	/* arbitrary */
+		break;
+	default:
+		error = EINVAL;
+		break;
+	}
+	uart_unlock(sc->sc_hwmtx);
+	return (error);
+}
+
+static int
+sbbc_uart_bus_ipend(struct uart_softc *sc)
+{
+	struct uart_bas *bas;
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+	int ipend;
+	uint32_t reason, status;
+
+	bas = &sc->sc_bas;
+	bst = bas->bst;
+	bsh = bas->bsh;
+
+	uart_lock(sc->sc_hwmtx);
+	status = SBBC_REGS_READ_4(SBBC_PCI_INT_STATUS);

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 12:05:31 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 88DB71065673;
	Sat, 10 Apr 2010 12:05:31 +0000 (UTC) (envelope-from bms@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 6CEA08FC1E;
	Sat, 10 Apr 2010 12:05:31 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3AC5VCv074268;
	Sat, 10 Apr 2010 12:05:31 GMT (envelope-from bms@svn.freebsd.org)
Received: (from bms@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3AC5VGp074266;
	Sat, 10 Apr 2010 12:05:31 GMT (envelope-from bms@svn.freebsd.org)
Message-Id: <201004101205.o3AC5VGp074266@svn.freebsd.org>
From: Bruce M Simpson 
Date: Sat, 10 Apr 2010 12:05:31 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206452 - head/sys/netinet
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 12:05:31 -0000

Author: bms
Date: Sat Apr 10 12:05:31 2010
New Revision: 206452
URL: http://svn.freebsd.org/changeset/base/206452

Log:
  Fix a few issues related to the legacy 4.4 BSD multicast APIs.
  
  IPv4 addresses can and do change during normal operation. Testing by
  pfSense developers exposed an issue where OpenOSPFD was using the IPv4
  address to leave the OSPF link-scope multicast groups on a dynamic
  OpenVPN tun interface, rather than using RFC 3678 with the interface
  index, which won't be raced when the interface's addresses change.
  
  In inp_join_group():
   If we are already a member of an ASM group, and IP_ADD_MEMBERSHIP or
   MCAST_JOIN_GROUP ioctls are re-issued, return EADDRINUSE as per the
   legacy 4.4BSD multicast API. This bends RFC 3678 slightly, but does
   not violate POLA for apps using the old API.
   It also stops us falling through to kicking IGMP state transactions
   in what is otherwise a no-op case.
   [This has already been dealt with in HEAD, but make it explicit before
    we MFC the change to 8.]
  
  In inp_leave_group():
   Fix a bogus conditional.
   Move the ifp null check to ioctls MCAST_LEAVE* in the switch..case
   where it actually belongs.
   If an interface was specified, by primary IPv4 address, for ioctl
   IP_DROP_MEMBERSHIP or MCAST_LEAVE_GROUP (an ASM full leave operation),
   then and only then should we look up the ifp from the IPv4 address in
   mreqs.imr_interface.
   If not, we fall through to imo_match_group() as before, but only in
   the IP_DROP_MEMBERSHIP case.
  
  With these changes, the legacy 4.4BSD multicast API idempotence should
  be mostly preserved in the SSM enabled IPv4 stack.
  
  Found by:	ermal (with pfSense)
  MFC after:	3 days

Modified:
  head/sys/netinet/in_mcast.c

Modified: head/sys/netinet/in_mcast.c
==============================================================================
--- head/sys/netinet/in_mcast.c	Sat Apr 10 11:52:12 2010	(r206451)
+++ head/sys/netinet/in_mcast.c	Sat Apr 10 12:05:31 2010	(r206452)
@@ -1999,9 +1999,12 @@ inp_join_group(struct inpcb *inp, struct
 			}
 		} else {
 			/*
-			 * MCAST_JOIN_GROUP alone, on any existing membership,
-			 * is rejected, to stop the same inpcb tying up
-			 * multiple refs to the in_multi.
+			 * MCAST_JOIN_GROUP on an existing exclusive
+			 * membership is an error; return EADDRINUSE
+			 * to preserve 4.4BSD API idempotence, and
+			 * avoid tedious detour to code below.
+			 * NOTE: This is bending RFC 3678 a bit.
+			 *
 			 * On an existing inclusive membership, this is also
 			 * an error; if you want to change filter mode,
 			 * you must use the userland API setsourcefilter().
@@ -2010,6 +2013,8 @@ inp_join_group(struct inpcb *inp, struct
 			 * is atomic with allocation of a membership.
 			 */
 			error = EINVAL;
+			if (imf->imf_st[1] == MCAST_EXCLUDE)
+				error = EADDRINUSE;
 			goto out_inp_locked;
 		}
 	}
@@ -2186,7 +2191,14 @@ inp_leave_group(struct inpcb *inp, struc
 			ssa->sin.sin_addr = mreqs.imr_sourceaddr;
 		}
 
-		if (!in_nullhost(gsa->sin.sin_addr))
+		/*
+		 * Attempt to look up hinted ifp from interface address.
+		 * Fallthrough with null ifp iff lookup fails, to
+		 * preserve 4.4BSD mcast API idempotence.
+		 * XXX NOTE WELL: The RFC 3678 API is preferred because
+		 * using an IPv4 address as a key is racy.
+		 */
+		if (!in_nullhost(mreqs.imr_interface))
 			INADDR_TO_IFP(mreqs.imr_interface, ifp);
 
 		CTR3(KTR_IGMPV3, "%s: imr_interface = %s, ifp = %p",
@@ -2222,6 +2234,9 @@ inp_leave_group(struct inpcb *inp, struc
 			return (EADDRNOTAVAIL);
 
 		ifp = ifnet_byindex(gsr.gsr_interface);
+
+		if (ifp == NULL)
+			return (EADDRNOTAVAIL);
 		break;
 
 	default:
@@ -2234,9 +2249,6 @@ inp_leave_group(struct inpcb *inp, struc
 	if (!IN_MULTICAST(ntohl(gsa->sin.sin_addr.s_addr)))
 		return (EINVAL);
 
-	if (ifp == NULL)
-		return (EADDRNOTAVAIL);
-
 	/*
 	 * Find the membership in the membership array.
 	 */

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 12:10:12 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 3752C106566B;
	Sat, 10 Apr 2010 12:10:12 +0000 (UTC)
	(envelope-from marius@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 0F8438FC12;
	Sat, 10 Apr 2010 12:10:12 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3ACABUm075340;
	Sat, 10 Apr 2010 12:10:11 GMT (envelope-from marius@svn.freebsd.org)
Received: (from marius@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3ACABtT075338;
	Sat, 10 Apr 2010 12:10:11 GMT (envelope-from marius@svn.freebsd.org)
Message-Id: <201004101210.o3ACABtT075338@svn.freebsd.org>
From: Marius Strobl 
Date: Sat, 10 Apr 2010 12:10:11 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206453 - head/sys/sparc64/pci
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 12:10:12 -0000

Author: marius
Date: Sat Apr 10 12:10:11 2010
New Revision: 206453
URL: http://svn.freebsd.org/changeset/base/206453

Log:
  Add missing copyright shebang.

Modified:
  head/sys/sparc64/pci/sbbc.c

Modified: head/sys/sparc64/pci/sbbc.c
==============================================================================
--- head/sys/sparc64/pci/sbbc.c	Sat Apr 10 12:05:31 2010	(r206452)
+++ head/sys/sparc64/pci/sbbc.c	Sat Apr 10 12:10:11 2010	(r206453)
@@ -1,5 +1,5 @@
 /*	$OpenBSD: sbbc.c,v 1.7 2009/11/09 17:53:39 nicm Exp $	*/
-/*
+/*-
  * Copyright (c) 2008 Mark Kettenis
  *
  * Permission to use, copy, modify, and distribute this software for any

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 12:24:22 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 0FBC71065672;
	Sat, 10 Apr 2010 12:24:22 +0000 (UTC) (envelope-from bms@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id F35338FC1F;
	Sat, 10 Apr 2010 12:24:21 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3ACOL6W078588;
	Sat, 10 Apr 2010 12:24:21 GMT (envelope-from bms@svn.freebsd.org)
Received: (from bms@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3ACOLfH078586;
	Sat, 10 Apr 2010 12:24:21 GMT (envelope-from bms@svn.freebsd.org)
Message-Id: <201004101224.o3ACOLfH078586@svn.freebsd.org>
From: Bruce M Simpson 
Date: Sat, 10 Apr 2010 12:24:21 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206454 - head/sys/netinet6
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 12:24:22 -0000

Author: bms
Date: Sat Apr 10 12:24:21 2010
New Revision: 206454
URL: http://svn.freebsd.org/changeset/base/206454

Log:
  When embedding the scope ID in MLDv1 output, check if the scope of the address
  being embedded is in fact link-local, before attempting to embed it.
  
  Note that this operation is a side-effect of trying to avoid recursion on
  the IN6 scope lock.
  
  PR:		144560
  Submitted by:	Petr Lampa
  MFC after:	3 days

Modified:
  head/sys/netinet6/mld6.c

Modified: head/sys/netinet6/mld6.c
==============================================================================
--- head/sys/netinet6/mld6.c	Sat Apr 10 12:10:11 2010	(r206453)
+++ head/sys/netinet6/mld6.c	Sat Apr 10 12:24:21 2010	(r206454)
@@ -195,8 +195,10 @@ static int	sysctl_mld_ifinfo(SYSCTL_HAND
 static struct mtx		 mld_mtx;
 MALLOC_DEFINE(M_MLD, "mld", "mld state");
 
-#define	MLD_EMBEDSCOPE(pin6, zoneid) \
-	(pin6)->s6_addr16[1] = htons((zoneid) & 0xFFFF)
+#define	MLD_EMBEDSCOPE(pin6, zoneid)					\
+	if (IN6_IS_SCOPE_LINKLOCAL(pin6) ||				\
+	    IN6_IS_ADDR_MC_INTFACELOCAL(pin6))				\
+		(pin6)->s6_addr16[1] = htons((zoneid) & 0xFFFF)		\
 
 /*
  * VIMAGE-wide globals.

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 12:29:10 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 03990106566B;
	Sat, 10 Apr 2010 12:29:10 +0000 (UTC) (envelope-from bms@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id E77468FC08;
	Sat, 10 Apr 2010 12:29:09 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3ACT9Zh079671;
	Sat, 10 Apr 2010 12:29:09 GMT (envelope-from bms@svn.freebsd.org)
Received: (from bms@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3ACT9T3079669;
	Sat, 10 Apr 2010 12:29:09 GMT (envelope-from bms@svn.freebsd.org)
Message-Id: <201004101229.o3ACT9T3079669@svn.freebsd.org>
From: Bruce M Simpson 
Date: Sat, 10 Apr 2010 12:29:09 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206455 - head
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 12:29:10 -0000

Author: bms
Date: Sat Apr 10 12:29:09 2010
New Revision: 206455
URL: http://svn.freebsd.org/changeset/base/206455

Log:
  Add a comment to MAINTAINERS indicating that sbin/routed is in fact
  vendor branch code from before contrib existed in FreeBSD's history.
  
  Changes should be run by Vernon Schryver at Rhyolite first.

Modified:
  head/MAINTAINERS

Modified: head/MAINTAINERS
==============================================================================
--- head/MAINTAINERS	Sat Apr 10 12:24:21 2010	(r206454)
+++ head/MAINTAINERS	Sat Apr 10 12:29:09 2010	(r206455)
@@ -125,6 +125,7 @@ lib/libc/stdtime	edwin   Heads-up apprec
 				is maintained by a third party source.
 sysinstall	randi	Please contact about any major changes so that
 			they can be co-ordinated.
+sbin/routed	bms	Pre-commit review; notify vendor at rhyolite.com
 
 Following are the entries from the Makefiles, and a few other sources.
 Please remove stale entries from both their origin, and this file.

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 12:47:07 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 03F23106566C;
	Sat, 10 Apr 2010 12:47:07 +0000 (UTC)
	(envelope-from rpaulo@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id E77458FC13;
	Sat, 10 Apr 2010 12:47:06 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3ACl69X083633;
	Sat, 10 Apr 2010 12:47:06 GMT (envelope-from rpaulo@svn.freebsd.org)
Received: (from rpaulo@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3ACl6br083631;
	Sat, 10 Apr 2010 12:47:06 GMT (envelope-from rpaulo@svn.freebsd.org)
Message-Id: <201004101247.o3ACl6br083631@svn.freebsd.org>
From: Rui Paulo 
Date: Sat, 10 Apr 2010 12:47:06 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206456 - head/sys/netinet
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 12:47:07 -0000

Author: rpaulo
Date: Sat Apr 10 12:47:06 2010
New Revision: 206456
URL: http://svn.freebsd.org/changeset/base/206456

Log:
  Honor the CE bit even when the CWR bit is set.
  
  PR:		145600
  Submitted by:	Richard Scheffenegger 
  MFC after:	1 week

Modified:
  head/sys/netinet/tcp_input.c

Modified: head/sys/netinet/tcp_input.c
==============================================================================
--- head/sys/netinet/tcp_input.c	Sat Apr 10 12:29:09 2010	(r206455)
+++ head/sys/netinet/tcp_input.c	Sat Apr 10 12:47:06 2010	(r206456)
@@ -1134,6 +1134,8 @@ tcp_do_segment(struct mbuf *m, struct tc
 	 * TCP ECN processing.
 	 */
 	if (tp->t_flags & TF_ECN_PERMIT) {
+		if (thflags & TH_CWR)
+			tp->t_flags &= ~TF_ECN_SND_ECE;
 		switch (iptos & IPTOS_ECN_MASK) {
 		case IPTOS_ECN_CE:
 			tp->t_flags |= TF_ECN_SND_ECE;
@@ -1146,10 +1148,6 @@ tcp_do_segment(struct mbuf *m, struct tc
 			TCPSTAT_INC(tcps_ecn_ect1);
 			break;
 		}
-
-		if (thflags & TH_CWR)
-			tp->t_flags &= ~TF_ECN_SND_ECE;
-
 		/*
 		 * Congestion experienced.
 		 * Ignore if we are already trying to recover.

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 13:54:00 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 7089F106566B;
	Sat, 10 Apr 2010 13:54:00 +0000 (UTC)
	(envelope-from bschmidt@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 5D2088FC08;
	Sat, 10 Apr 2010 13:54:00 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3ADs0sO098255;
	Sat, 10 Apr 2010 13:54:00 GMT
	(envelope-from bschmidt@svn.freebsd.org)
Received: (from bschmidt@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3ADs05a098248;
	Sat, 10 Apr 2010 13:54:00 GMT
	(envelope-from bschmidt@svn.freebsd.org)
Message-Id: <201004101354.o3ADs05a098248@svn.freebsd.org>
From: Bernhard Schmidt 
Date: Sat, 10 Apr 2010 13:54:00 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206457 - in head: sys/dev/ath sys/net80211
	usr.sbin/wpa/wpa_supplicant
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 13:54:00 -0000

Author: bschmidt
Date: Sat Apr 10 13:54:00 2010
New Revision: 206457
URL: http://svn.freebsd.org/changeset/base/206457

Log:
  Add WPA-None support:
  * WPA-None requires ap_scan=2:
    The major difference between ap_scan=1 (default) and 2 is, that no
    IEEE80211_IOC_SCAN* ioctls/functions are called, though, there is a
    dependency on those. For example the call to wpa_driver_bsd_scan()
    sets the interface UP, this never happens, therefore the interface
    must be marked up in wpa_driver_bsd_associate(). IEEE80211_IOC_SSID
    also is not called, which means that the SSID has not been set prior
    to the IEEE80211_MLME_ASSOC call.
  * WPA-None has no support for sequence number updates, it doesn't make
    sense to check for replay violations..
  * I had some crashes right after the switch to RUN state, issue is
    that sc->sc_lastrs was not yet defined.
  
  Approved by:	rpaulo (mentor)
  MFC after:	3 weeks

Modified:
  head/sys/dev/ath/if_ath.c
  head/sys/net80211/ieee80211_crypto_ccmp.c
  head/sys/net80211/ieee80211_crypto_tkip.c
  head/sys/net80211/ieee80211_ioctl.c
  head/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c
  head/usr.sbin/wpa/wpa_supplicant/wpa_supplicant.conf.5

Modified: head/sys/dev/ath/if_ath.c
==============================================================================
--- head/sys/dev/ath/if_ath.c	Sat Apr 10 12:47:06 2010	(r206456)
+++ head/sys/dev/ath/if_ath.c	Sat Apr 10 13:54:00 2010	(r206457)
@@ -3654,8 +3654,14 @@ ath_recv_mgmt(struct ieee80211_node *ni,
 	case IEEE80211_FC0_SUBTYPE_PROBE_RESP:
 		if (vap->iv_opmode == IEEE80211_M_IBSS &&
 		    vap->iv_state == IEEE80211_S_RUN) {
-			uint32_t rstamp = sc->sc_lastrs->rs_tstamp;
-			u_int64_t tsf = ath_extend_tsf(rstamp,
+			uint32_t rstamp;
+			uint64_t tsf;
+
+			if (sc->sc_lastrs == NULL)
+				break;
+
+			rstamp = sc->sc_lastrs->rs_tstamp;
+			tsf = ath_extend_tsf(rstamp,
 				ath_hal_gettsf64(sc->sc_ah));
 			/*
 			 * Handle ibss merge as needed; check the tsf on the

Modified: head/sys/net80211/ieee80211_crypto_ccmp.c
==============================================================================
--- head/sys/net80211/ieee80211_crypto_ccmp.c	Sat Apr 10 12:47:06 2010	(r206456)
+++ head/sys/net80211/ieee80211_crypto_ccmp.c	Sat Apr 10 13:54:00 2010	(r206457)
@@ -226,7 +226,14 @@ ccmp_decap(struct ieee80211_key *k, stru
 	}
 	tid = ieee80211_gettid(wh);
 	pn = READ_6(ivp[0], ivp[1], ivp[4], ivp[5], ivp[6], ivp[7]);
-	if (pn <= k->wk_keyrsc[tid]) {
+	/*
+	 * NB: Multiple stations are using the same key in
+	 * IBSS mode, there is currently no way to sync keyrsc
+	 * counters without discarding too many frames.
+	 */
+	if (vap->iv_opmode != IEEE80211_M_IBSS &&
+	    vap->iv_opmode != IEEE80211_M_AHDEMO &&
+	    pn <= k->wk_keyrsc[tid]) {
 		/*
 		 * Replay violation.
 		 */

Modified: head/sys/net80211/ieee80211_crypto_tkip.c
==============================================================================
--- head/sys/net80211/ieee80211_crypto_tkip.c	Sat Apr 10 12:47:06 2010	(r206456)
+++ head/sys/net80211/ieee80211_crypto_tkip.c	Sat Apr 10 13:54:00 2010	(r206457)
@@ -281,7 +281,14 @@ tkip_decap(struct ieee80211_key *k, stru
 
 	tid = ieee80211_gettid(wh);
 	ctx->rx_rsc = READ_6(ivp[2], ivp[0], ivp[4], ivp[5], ivp[6], ivp[7]);
-	if (ctx->rx_rsc <= k->wk_keyrsc[tid]) {
+	/*
+	 * NB: Multiple stations are using the same key in
+	 * IBSS mode, there is currently no way to sync keyrsc
+	 * counters without discarding too many frames.
+	 */
+	if (vap->iv_opmode != IEEE80211_M_IBSS &&
+	    vap->iv_opmode != IEEE80211_M_AHDEMO &&
+	    ctx->rx_rsc <= k->wk_keyrsc[tid]) {
 		/*
 		 * Replay violation; notify upper layer.
 		 */

Modified: head/sys/net80211/ieee80211_ioctl.c
==============================================================================
--- head/sys/net80211/ieee80211_ioctl.c	Sat Apr 10 12:47:06 2010	(r206456)
+++ head/sys/net80211/ieee80211_ioctl.c	Sat Apr 10 13:54:00 2010	(r206457)
@@ -70,6 +70,8 @@ __FBSDID("$FreeBSD$");
 static const uint8_t zerobssid[IEEE80211_ADDR_LEN];
 static struct ieee80211_channel *findchannel(struct ieee80211com *,
 		int ieee, int mode);
+static int ieee80211_scanreq(struct ieee80211vap *,
+		struct ieee80211_scan_req *);
 
 static __noinline int
 ieee80211_ioctl_getkey(struct ieee80211vap *vap, struct ieee80211req *ireq)
@@ -1471,14 +1473,15 @@ mlmelookup(void *arg, const struct ieee8
 }
 
 static __noinline int
-setmlme_assoc(struct ieee80211vap *vap, const uint8_t mac[IEEE80211_ADDR_LEN],
-	int ssid_len, const uint8_t ssid[IEEE80211_NWID_LEN])
+setmlme_assoc_sta(struct ieee80211vap *vap,
+	const uint8_t mac[IEEE80211_ADDR_LEN], int ssid_len,
+	const uint8_t ssid[IEEE80211_NWID_LEN])
 {
 	struct scanlookup lookup;
 
-	/* XXX ibss/ahdemo */
-	if (vap->iv_opmode != IEEE80211_M_STA)
-		return EINVAL;
+	KASSERT(vap->iv_opmode == IEEE80211_M_STA,
+	    ("expected opmode STA not %s",
+	    ieee80211_opmode_name[vap->iv_opmode]));
 
 	/* NB: this is racey if roaming is !manual */
 	lookup.se = NULL;
@@ -1495,6 +1498,36 @@ setmlme_assoc(struct ieee80211vap *vap, 
 }
 
 static __noinline int
+setmlme_assoc_adhoc(struct ieee80211vap *vap,
+	const uint8_t mac[IEEE80211_ADDR_LEN], int ssid_len,
+	const uint8_t ssid[IEEE80211_NWID_LEN])
+{
+	struct ieee80211_scan_req sr;
+
+	KASSERT(vap->iv_opmode == IEEE80211_M_IBSS ||
+	    vap->iv_opmode == IEEE80211_M_AHDEMO,
+	    ("expected opmode IBSS or AHDEMO not %s",
+	    ieee80211_opmode_name[vap->iv_opmode]));
+
+	if (ssid_len == 0)
+		return EINVAL;
+
+	/* NB: IEEE80211_IOC_SSID call missing for ap_scan=2. */
+	memset(vap->iv_des_ssid[0].ssid, 0, IEEE80211_NWID_LEN);
+	vap->iv_des_ssid[0].len = ssid_len;
+	memcpy(vap->iv_des_ssid[0].ssid, ssid, ssid_len);
+	vap->iv_des_nssid = 1;
+
+	sr.sr_flags = IEEE80211_IOC_SCAN_ACTIVE | IEEE80211_IOC_SCAN_ONCE;
+	sr.sr_duration = IEEE80211_IOC_SCAN_FOREVER;
+	memcpy(sr.sr_ssid[0].ssid, ssid, ssid_len);
+	sr.sr_ssid[0].len = ssid_len;
+	sr.sr_nssid = 1;
+
+	return ieee80211_scanreq(vap, &sr);
+}
+
+static __noinline int
 ieee80211_ioctl_setmlme(struct ieee80211vap *vap, struct ieee80211req *ireq)
 {
 	struct ieee80211req_mlme mlme;
@@ -1505,9 +1538,13 @@ ieee80211_ioctl_setmlme(struct ieee80211
 	error = copyin(ireq->i_data, &mlme, sizeof(mlme));
 	if (error)
 		return error;
-	if  (mlme.im_op == IEEE80211_MLME_ASSOC)
-		return setmlme_assoc(vap, mlme.im_macaddr,
+	if  (vap->iv_opmode == IEEE80211_M_STA &&
+	    mlme.im_op == IEEE80211_MLME_ASSOC)
+		return setmlme_assoc_sta(vap, mlme.im_macaddr,
 		    vap->iv_des_ssid[0].len, vap->iv_des_ssid[0].ssid);
+	else if (mlme.im_op == IEEE80211_MLME_ASSOC)
+		return setmlme_assoc_adhoc(vap, mlme.im_macaddr,
+		    mlme.im_ssid_len, mlme.im_ssid);
 	else
 		return setmlme_common(vap, mlme.im_op,
 		    mlme.im_macaddr, mlme.im_reason);
@@ -2332,8 +2369,8 @@ ieee80211_ioctl_chanswitch(struct ieee80
 	return error;
 }
 
-static __noinline int
-ieee80211_ioctl_scanreq(struct ieee80211vap *vap, struct ieee80211req *ireq)
+static int
+ieee80211_scanreq(struct ieee80211vap *vap, struct ieee80211_scan_req *sr)
 {
 #define	IEEE80211_IOC_SCAN_FLAGS \
 	(IEEE80211_IOC_SCAN_NOPICK | IEEE80211_IOC_SCAN_ACTIVE | \
@@ -2342,48 +2379,38 @@ ieee80211_ioctl_scanreq(struct ieee80211
 	 IEEE80211_IOC_SCAN_NOJOIN | IEEE80211_IOC_SCAN_FLUSH | \
 	 IEEE80211_IOC_SCAN_CHECK)
 	struct ieee80211com *ic = vap->iv_ic;
-	struct ieee80211_scan_req sr;		/* XXX off stack? */
-	int error, i;
-
-	/* NB: parent must be running */
-	if ((ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
-		return ENXIO;
+	int i;
 
-	if (ireq->i_len != sizeof(sr))
-		return EINVAL;
-	error = copyin(ireq->i_data, &sr, sizeof(sr));
-	if (error != 0)
-		return error;
 	/* convert duration */
-	if (sr.sr_duration == IEEE80211_IOC_SCAN_FOREVER)
-		sr.sr_duration = IEEE80211_SCAN_FOREVER;
+	if (sr->sr_duration == IEEE80211_IOC_SCAN_FOREVER)
+		sr->sr_duration = IEEE80211_SCAN_FOREVER;
 	else {
-		if (sr.sr_duration < IEEE80211_IOC_SCAN_DURATION_MIN ||
-		    sr.sr_duration > IEEE80211_IOC_SCAN_DURATION_MAX)
+		if (sr->sr_duration < IEEE80211_IOC_SCAN_DURATION_MIN ||
+		    sr->sr_duration > IEEE80211_IOC_SCAN_DURATION_MAX)
 			return EINVAL;
-		sr.sr_duration = msecs_to_ticks(sr.sr_duration);
-		if (sr.sr_duration < 1)
-			sr.sr_duration = 1;
+		sr->sr_duration = msecs_to_ticks(sr->sr_duration);
+		if (sr->sr_duration < 1)
+			sr->sr_duration = 1;
 	}
 	/* convert min/max channel dwell */
-	if (sr.sr_mindwell != 0) {
-		sr.sr_mindwell = msecs_to_ticks(sr.sr_mindwell);
-		if (sr.sr_mindwell < 1)
-			sr.sr_mindwell = 1;
-	}
-	if (sr.sr_maxdwell != 0) {
-		sr.sr_maxdwell = msecs_to_ticks(sr.sr_maxdwell);
-		if (sr.sr_maxdwell < 1)
-			sr.sr_maxdwell = 1;
+	if (sr->sr_mindwell != 0) {
+		sr->sr_mindwell = msecs_to_ticks(sr->sr_mindwell);
+		if (sr->sr_mindwell < 1)
+			sr->sr_mindwell = 1;
+	}
+	if (sr->sr_maxdwell != 0) {
+		sr->sr_maxdwell = msecs_to_ticks(sr->sr_maxdwell);
+		if (sr->sr_maxdwell < 1)
+			sr->sr_maxdwell = 1;
 	}
 	/* NB: silently reduce ssid count to what is supported */
-	if (sr.sr_nssid > IEEE80211_SCAN_MAX_SSID)
-		sr.sr_nssid = IEEE80211_SCAN_MAX_SSID;
-	for (i = 0; i < sr.sr_nssid; i++)
-		if (sr.sr_ssid[i].len > IEEE80211_NWID_LEN)
+	if (sr->sr_nssid > IEEE80211_SCAN_MAX_SSID)
+		sr->sr_nssid = IEEE80211_SCAN_MAX_SSID;
+	for (i = 0; i < sr->sr_nssid; i++)
+		if (sr->sr_ssid[i].len > IEEE80211_NWID_LEN)
 			return EINVAL;
 	/* cleanse flags just in case, could reject if invalid flags */
-	sr.sr_flags &= IEEE80211_IOC_SCAN_FLAGS;
+	sr->sr_flags &= IEEE80211_IOC_SCAN_FLAGS;
 	/*
 	 * Add an implicit NOPICK if the vap is not marked UP.  This
 	 * allows applications to scan without joining a bss (or picking
@@ -2391,13 +2418,13 @@ ieee80211_ioctl_scanreq(struct ieee80211
 	 * roaming mode--you just need to mark the parent device UP.
 	 */
 	if ((vap->iv_ifp->if_flags & IFF_UP) == 0)
-		sr.sr_flags |= IEEE80211_IOC_SCAN_NOPICK;
+		sr->sr_flags |= IEEE80211_IOC_SCAN_NOPICK;
 
 	IEEE80211_DPRINTF(vap, IEEE80211_MSG_SCAN,
 	    "%s: flags 0x%x%s duration 0x%x mindwell %u maxdwell %u nssid %d\n",
-	    __func__, sr.sr_flags,
+	    __func__, sr->sr_flags,
 	    (vap->iv_ifp->if_flags & IFF_UP) == 0 ? " (!IFF_UP)" : "",
-	    sr.sr_duration, sr.sr_mindwell, sr.sr_maxdwell, sr.sr_nssid);
+	    sr->sr_duration, sr->sr_mindwell, sr->sr_maxdwell, sr->sr_nssid);
 	/*
 	 * If we are in INIT state then the driver has never had a chance
 	 * to setup hardware state to do a scan; we must use the state
@@ -2412,13 +2439,13 @@ ieee80211_ioctl_scanreq(struct ieee80211
 	IEEE80211_LOCK(ic);
 	if (vap->iv_state == IEEE80211_S_INIT) {
 		/* NB: clobbers previous settings */
-		vap->iv_scanreq_flags = sr.sr_flags;
-		vap->iv_scanreq_duration = sr.sr_duration;
-		vap->iv_scanreq_nssid = sr.sr_nssid;
-		for (i = 0; i < sr.sr_nssid; i++) {
-			vap->iv_scanreq_ssid[i].len = sr.sr_ssid[i].len;
-			memcpy(vap->iv_scanreq_ssid[i].ssid, sr.sr_ssid[i].ssid,
-			    sr.sr_ssid[i].len);
+		vap->iv_scanreq_flags = sr->sr_flags;
+		vap->iv_scanreq_duration = sr->sr_duration;
+		vap->iv_scanreq_nssid = sr->sr_nssid;
+		for (i = 0; i < sr->sr_nssid; i++) {
+			vap->iv_scanreq_ssid[i].len = sr->sr_ssid[i].len;
+			memcpy(vap->iv_scanreq_ssid[i].ssid,
+			    sr->sr_ssid[i].ssid, sr->sr_ssid[i].len);
 		}
 		vap->iv_flags_ext |= IEEE80211_FEXT_SCANREQ;
 		IEEE80211_UNLOCK(ic);
@@ -2427,25 +2454,44 @@ ieee80211_ioctl_scanreq(struct ieee80211
 		vap->iv_flags_ext &= ~IEEE80211_FEXT_SCANREQ;
 		IEEE80211_UNLOCK(ic);
 		/* XXX neeed error return codes */
-		if (sr.sr_flags & IEEE80211_IOC_SCAN_CHECK) {
-			(void) ieee80211_check_scan(vap, sr.sr_flags,
-			    sr.sr_duration, sr.sr_mindwell, sr.sr_maxdwell,
-			    sr.sr_nssid,
+		if (sr->sr_flags & IEEE80211_IOC_SCAN_CHECK) {
+			(void) ieee80211_check_scan(vap, sr->sr_flags,
+			    sr->sr_duration, sr->sr_mindwell, sr->sr_maxdwell,
+			    sr->sr_nssid,
 			    /* NB: cheat, we assume structures are compatible */
-			    (const struct ieee80211_scan_ssid *) &sr.sr_ssid[0]);
+			    (const struct ieee80211_scan_ssid *) &sr->sr_ssid[0]);
 		} else {
-			(void) ieee80211_start_scan(vap, sr.sr_flags,
-			    sr.sr_duration, sr.sr_mindwell, sr.sr_maxdwell,
-			    sr.sr_nssid,
+			(void) ieee80211_start_scan(vap, sr->sr_flags,
+			    sr->sr_duration, sr->sr_mindwell, sr->sr_maxdwell,
+			    sr->sr_nssid,
 			    /* NB: cheat, we assume structures are compatible */
-			    (const struct ieee80211_scan_ssid *) &sr.sr_ssid[0]);
+			    (const struct ieee80211_scan_ssid *) &sr->sr_ssid[0]);
 		}
 	}
-	return error;
+	return 0;
 #undef IEEE80211_IOC_SCAN_FLAGS
 }
 
 static __noinline int
+ieee80211_ioctl_scanreq(struct ieee80211vap *vap, struct ieee80211req *ireq)
+{
+	struct ieee80211com *ic = vap->iv_ic;
+	struct ieee80211_scan_req sr;		/* XXX off stack? */
+	int error;
+
+	/* NB: parent must be running */
+	if ((ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+		return ENXIO;
+
+	if (ireq->i_len != sizeof(sr))
+		return EINVAL;
+	error = copyin(ireq->i_data, &sr, sizeof(sr));
+	if (error != 0)
+		return error;
+	return ieee80211_scanreq(vap, &sr);
+}
+
+static __noinline int
 ieee80211_ioctl_setstavlan(struct ieee80211vap *vap, struct ieee80211req *ireq)
 {
 	struct ieee80211_node *ni;

Modified: head/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c
==============================================================================
--- head/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c	Sat Apr 10 12:47:06 2010	(r206456)
+++ head/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c	Sat Apr 10 13:54:00 2010	(r206457)
@@ -396,7 +396,7 @@ wpa_driver_bsd_associate(void *priv, str
 {
 	struct wpa_driver_bsd_data *drv = priv;
 	struct ieee80211req_mlme mlme;
-	int privacy;
+	int flags, privacy;
 
 	wpa_printf(MSG_DEBUG,
 		"%s: ssid '%.*s' wpa ie len %u pairwise %u group %u key mgmt %u"
@@ -408,6 +408,17 @@ wpa_driver_bsd_associate(void *priv, str
 		, params->key_mgmt_suite
 	);
 
+	/* NB: interface must be marked UP to associate */
+	if (getifflags(drv, &flags) != 0) {
+		wpa_printf(MSG_DEBUG, "%s did not mark interface UP", __func__);
+		return -1;
+	}
+	if ((flags & IFF_UP) == 0 && setifflags(drv, flags | IFF_UP) != 0) {
+		wpa_printf(MSG_DEBUG, "%s unable to mark interface UP",
+		    __func__);
+		return -1;
+	}
+
 	/* XXX error handling is wrong but unclear what to do... */
 	if (wpa_driver_bsd_set_wpa_ie(drv, params->wpa_ie, params->wpa_ie_len) < 0)
 		return -1;

Modified: head/usr.sbin/wpa/wpa_supplicant/wpa_supplicant.conf.5
==============================================================================
--- head/usr.sbin/wpa/wpa_supplicant/wpa_supplicant.conf.5	Sat Apr 10 12:47:06 2010	(r206456)
+++ head/usr.sbin/wpa/wpa_supplicant/wpa_supplicant.conf.5	Sat Apr 10 13:54:00 2010	(r206457)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd July 8, 2007
+.Dd April 10, 2010
 .Dt WPA_SUPPLICANT.CONF 5
 .Os
 .Sh NAME
@@ -153,7 +153,27 @@ Note that IBSS (adhoc) mode can only be 
 .Va key_mgmt
 set to
 .Li NONE
-(plaintext and static WEP).
+(plaintext and static WEP), or
+.Va key_mgmt
+set to
+.Li WPA-NONE
+(fixed group key TKIP/CCMP).
+In addition,
+.Va ap_scan
+has to be set to 2 for IBSS.
+.Li WPA-NONE
+requires
+.Va proto
+set to WPA,
+.Va key_mgmt
+set to WPA-NONE,
+.Va pairwise
+set to NONE,
+.Va group
+set to either
+CCMP or TKIP (but not both), and
+.Va psk
+must also be set.
 .It Va proto
 List of acceptable protocols; one or more of:
 .Li WPA

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 15:55:08 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id F21211065670;
	Sat, 10 Apr 2010 15:55:07 +0000 (UTC) (envelope-from bz@FreeBSD.org)
Received: from mail.cksoft.de (mail.cksoft.de [IPv6:2001:4068:10::3])
	by mx1.freebsd.org (Postfix) with ESMTP id 7BE448FC08;
	Sat, 10 Apr 2010 15:55:07 +0000 (UTC)
Received: from localhost (amavis.fra.cksoft.de [192.168.74.71])
	by mail.cksoft.de (Postfix) with ESMTP id DBB9B41C752;
	Sat, 10 Apr 2010 17:55:05 +0200 (CEST)
X-Virus-Scanned: amavisd-new at cksoft.de
Received: from mail.cksoft.de ([192.168.74.103])
	by localhost (amavis.fra.cksoft.de [192.168.74.71]) (amavisd-new,
	port 10024)
	with ESMTP id H2Krgcn+XOW7; Sat, 10 Apr 2010 17:55:05 +0200 (CEST)
Received: by mail.cksoft.de (Postfix, from userid 66)
	id 5FB1141C751; Sat, 10 Apr 2010 17:55:05 +0200 (CEST)
Received: from maildrop.int.zabbadoz.net (maildrop.int.zabbadoz.net
	[10.111.66.10])
	(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
	(No client certificate requested)
	by mail.int.zabbadoz.net (Postfix) with ESMTP id 535414448EC;
	Sat, 10 Apr 2010 15:53:42 +0000 (UTC)
Date: Sat, 10 Apr 2010 15:53:42 +0000 (UTC)
From: "Bjoern A. Zeeb" 
X-X-Sender: bz@maildrop.int.zabbadoz.net
To: Jack F Vogel 
In-Reply-To: <201004091842.o39IgFbb031014@svn.freebsd.org>
Message-ID: <20100410155034.X40281@maildrop.int.zabbadoz.net>
References: <201004091842.o39IgFbb031014@svn.freebsd.org>
X-OpenPGP-Key: 0x14003F198FEFA3E77207EE8D2B58B8F83CCF1842
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org,
	src-committers@freebsd.org
Subject: Re: svn commit: r206429 - head/sys/dev/e1000
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 15:55:08 -0000

On Fri, 9 Apr 2010, Jack F Vogel wrote:

> Author: jfv
> Date: Fri Apr  9 18:42:15 2010
> New Revision: 206429
> URL: http://svn.freebsd.org/changeset/base/206429
>
> Log:
>  Incorporate suggested improvements from yongari.
>
>  Also, from feedback, make the multiqueue code an
>  option (EM_MULTIQUEUE) that is off by default.
>  Problems have been seen with UDP when its on.
>
> Modified:
>  head/sys/dev/e1000/if_em.c
>  head/sys/dev/e1000/if_em.h
>
> Modified: head/sys/dev/e1000/if_em.c
> ==============================================================================
> --- head/sys/dev/e1000/if_em.c	Fri Apr  9 18:02:19 2010	(r206428)
> +++ head/sys/dev/e1000/if_em.c	Fri Apr  9 18:42:15 2010	(r206429)
..
> @@ -1427,28 +1443,23 @@ em_handle_que(void *context, int pending
> 	struct ifnet	*ifp = adapter->ifp;
> 	struct tx_ring	*txr = adapter->tx_rings;
> 	struct rx_ring	*rxr = adapter->rx_rings;
> -	u32		loop = EM_MAX_LOOP;
> -	bool		more_rx, more_tx;
> +	bool		more_rx;
>
>
> 	if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
> +		more_rx = em_rxeof(rxr, adapter->rx_process_limit);
> 		EM_TX_LOCK(txr);
> -		do {
> -			more_rx = em_rxeof(rxr, adapter->rx_process_limit);

Booting with NFS root I got a panic:

  208089 Trying to mount root from nfs:
..
  208107 panic: mutex em0:rx(0) not owned at /zoo/bz/HEAD_clean.svn/sys/dev/e1000/if_em.c:4093
..
  208138 db> where
  208139 Tracing pid 0 tid 100050 td 0xffffff0001c43ab0
  208140 kdb_enter() at kdb_enter+0x3d
  208141 panic() at panic+0x1cc
  208142 _mtx_assert() at _mtx_assert+0x7d
  208143 em_rxeof() at em_rxeof+0x3b
  208144 em_handle_que() at em_handle_que+0x4a
  208145 taskqueue_run() at taskqueue_run+0xeb
  208146 taskqueue_thread_loop() at taskqueue_thread_loop+0x50
  208147 fork_exit() at fork_exit+0x14a
  208148 fork_trampoline() at fork_trampoline+0xe
  208149 --- trap 0, rip = 0, rsp = 0xffffff80001c9d30, rbp = 0 ---


Not sure if this would be the correct fix locking wise but it might;
at least this is where em_rxeof() get's called w/o the locking and
triggers the assert.


Index: sys/dev/e1000/if_em.c
===================================================================
--- sys/dev/e1000/if_em.c       (revision 206455)
+++ sys/dev/e1000/if_em.c       (working copy)
@@ -1447,7 +1447,9 @@ em_handle_que(void *context, int pending)


         if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
+               EM_RX_LOCK(rxr);
                 more_rx = em_rxeof(rxr, adapter->rx_process_limit);
+               EM_RX_UNLOCK(rxr);
                 EM_TX_LOCK(txr);
                 em_txeof(txr);
  #ifdef EM_MULTIQUEUE


-- 
Bjoern A. Zeeb         It will not break if you know what you are doing.

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 18:38:11 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id CC242106567E;
	Sat, 10 Apr 2010 18:38:11 +0000 (UTC) (envelope-from kib@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id BBE1E8FC1F;
	Sat, 10 Apr 2010 18:38:11 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3AIcBs3060482;
	Sat, 10 Apr 2010 18:38:11 GMT (envelope-from kib@svn.freebsd.org)
Received: (from kib@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3AIcBwZ060479;
	Sat, 10 Apr 2010 18:38:11 GMT (envelope-from kib@svn.freebsd.org)
Message-Id: <201004101838.o3AIcBwZ060479@svn.freebsd.org>
From: Konstantin Belousov 
Date: Sat, 10 Apr 2010 18:38:11 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206459 - in head/sys/amd64: amd64 include
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 18:38:12 -0000

Author: kib
Date: Sat Apr 10 18:38:11 2010
New Revision: 206459
URL: http://svn.freebsd.org/changeset/base/206459

Log:
  Handle a case when non-canonical address is loaded into the fsbase or
  gsbase MSR.
  
  MFC after:	3 days

Modified:
  head/sys/amd64/amd64/exception.S
  head/sys/amd64/amd64/trap.c
  head/sys/amd64/include/md_var.h

Modified: head/sys/amd64/amd64/exception.S
==============================================================================
--- head/sys/amd64/amd64/exception.S	Sat Apr 10 14:28:58 2010	(r206458)
+++ head/sys/amd64/amd64/exception.S	Sat Apr 10 18:38:11 2010	(r206459)
@@ -668,7 +668,8 @@ ld_fs:	movw	%ax,%fs
 	movl	$MSR_FSBASE,%ecx
 	movl	PCB_FSBASE(%r8),%eax
 	movl	PCB_FSBASE+4(%r8),%edx
-	wrmsr
+	.globl	ld_fsbase
+ld_fsbase: wrmsr
 1:
 	/* Restore %gs and gsbase */
 	movw	TF_GS(%rsp),%si
@@ -685,7 +686,8 @@ ld_gs:	movw	%si,%gs
 	movl	$MSR_KGSBASE,%ecx
 	movl	PCB_GSBASE(%r8),%eax
 	movl	PCB_GSBASE+4(%r8),%edx
-	wrmsr
+	.globl	ld_gsbase
+ld_gsbase: wrmsr
 1:	.globl	ld_es
 ld_es:	movw	TF_ES(%rsp),%es
 	.globl	ld_ds
@@ -798,6 +800,30 @@ gs_load_fault:
 	call	trap
 	movw	$KUG32SEL,TF_GS(%rsp)
 	jmp	doreti
+
+	ALIGN_TEXT
+	.globl	fsbase_load_fault
+fsbase_load_fault:
+	movl	$T_PROTFLT,TF_TRAPNO(%rsp)
+	movq	%rsp, %rdi
+	call	trap
+	movq	PCPU(CURTHREAD),%r8
+	movq	TD_PCB(%r8),%r8
+	movq	$0,PCB_FSBASE(%r8)
+	jmp	doreti
+
+	ALIGN_TEXT
+	.globl	gsbase_load_fault
+gsbase_load_fault:
+	popfq
+	movl	$T_PROTFLT,TF_TRAPNO(%rsp)
+	movq	%rsp, %rdi
+	call	trap
+	movq	PCPU(CURTHREAD),%r8
+	movq	TD_PCB(%r8),%r8
+	movq	$0,PCB_GSBASE(%r8)
+	jmp	doreti
+
 #ifdef HWPMC_HOOKS
 	ENTRY(end_exceptions)
 #endif

Modified: head/sys/amd64/amd64/trap.c
==============================================================================
--- head/sys/amd64/amd64/trap.c	Sat Apr 10 14:28:58 2010	(r206458)
+++ head/sys/amd64/amd64/trap.c	Sat Apr 10 18:38:11 2010	(r206459)
@@ -566,6 +566,14 @@ trap(struct trapframe *frame)
 				frame->tf_gs = _ugssel;
 				goto out;
 			}
+			if (frame->tf_rip == (long)ld_gsbase) {
+				frame->tf_rip = (long)gsbase_load_fault;
+				goto out;
+			}
+			if (frame->tf_rip == (long)ld_fsbase) {
+				frame->tf_rip = (long)fsbase_load_fault;
+				goto out;
+			}
 			if (PCPU_GET(curpcb)->pcb_onfault != NULL) {
 				frame->tf_rip =
 				    (long)PCPU_GET(curpcb)->pcb_onfault;

Modified: head/sys/amd64/include/md_var.h
==============================================================================
--- head/sys/amd64/include/md_var.h	Sat Apr 10 14:28:58 2010	(r206458)
+++ head/sys/amd64/include/md_var.h	Sat Apr 10 18:38:11 2010	(r206459)
@@ -83,10 +83,14 @@ void	ld_ds(void) __asm(__STRING(ld_ds));
 void	ld_es(void) __asm(__STRING(ld_es));
 void	ld_fs(void) __asm(__STRING(ld_fs));
 void	ld_gs(void) __asm(__STRING(ld_gs));
+void	ld_fsbase(void) __asm(__STRING(ld_fsbase));
+void	ld_gsbase(void) __asm(__STRING(ld_gsbase));
 void	ds_load_fault(void) __asm(__STRING(ds_load_fault));
 void	es_load_fault(void) __asm(__STRING(es_load_fault));
 void	fs_load_fault(void) __asm(__STRING(fs_load_fault));
 void	gs_load_fault(void) __asm(__STRING(gs_load_fault));
+void	fsbase_load_fault(void) __asm(__STRING(fsbase_load_fault));
+void	gsbase_load_fault(void) __asm(__STRING(gsbase_load_fault));
 void	dump_add_page(vm_paddr_t);
 void	dump_drop_page(vm_paddr_t);
 void	initializecpu(void);

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 19:25:56 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 4EB751065670;
	Sat, 10 Apr 2010 19:25:56 +0000 (UTC) (envelope-from jfv@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 3FCB88FC1D;
	Sat, 10 Apr 2010 19:25:56 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3AJPuSI070936;
	Sat, 10 Apr 2010 19:25:56 GMT (envelope-from jfv@svn.freebsd.org)
Received: (from jfv@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3AJPuaJ070934;
	Sat, 10 Apr 2010 19:25:56 GMT (envelope-from jfv@svn.freebsd.org)
Message-Id: <201004101925.o3AJPuaJ070934@svn.freebsd.org>
From: Jack F Vogel 
Date: Sat, 10 Apr 2010 19:25:56 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206460 - head/sys/dev/e1000
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 19:25:56 -0000

Author: jfv
Date: Sat Apr 10 19:25:55 2010
New Revision: 206460
URL: http://svn.freebsd.org/changeset/base/206460

Log:
  The lock move in rxeof necessitated a couple
  more places to do the locking, fixes a panic.

Modified:
  head/sys/dev/e1000/if_em.c

Modified: head/sys/dev/e1000/if_em.c
==============================================================================
--- head/sys/dev/e1000/if_em.c	Sat Apr 10 18:38:11 2010	(r206459)
+++ head/sys/dev/e1000/if_em.c	Sat Apr 10 19:25:55 2010	(r206460)
@@ -1371,7 +1371,9 @@ em_poll(struct ifnet *ifp, enum poll_cmd
 	}
 	EM_CORE_UNLOCK(adapter);
 
+	EM_RX_LOCK(rxr);
 	rx_done = em_rxeof(rxr, count);
+	EM_RX_UNLOCK(rxr);
 
 	EM_TX_LOCK(txr);
 	em_txeof(txr);
@@ -1447,7 +1449,10 @@ em_handle_que(void *context, int pending
 
 
 	if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
+		EM_RX_LOCK(rxr);
 		more_rx = em_rxeof(rxr, adapter->rx_process_limit);
+		EM_RX_UNLOCK(rxr);
+
 		EM_TX_LOCK(txr);
 		em_txeof(txr);
 #ifdef EM_MULTIQUEUE

From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 19:42:41 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id E66DB106566B;
	Sat, 10 Apr 2010 19:42:41 +0000 (UTC)
	(envelope-from remko@elvandar.org)
Received: from mailgate.jr-hosting.nl (mailgate.jr-hosting.nl [78.46.126.30])
	by mx1.freebsd.org (Postfix) with ESMTP id A2E8A8FC1A;
	Sat, 10 Apr 2010 19:42:41 +0000 (UTC)
Received: from websrv01.jr-hosting.nl (websrv01 [78.47.69.233])
	by mailgate.jr-hosting.nl (Postfix) with ESMTP id B02D71CC26;
	Sat, 10 Apr 2010 21:42:39 +0200 (CEST)
Received: from a83-163-38-147.adsl.xs4all.nl ([83.163.38.147]
	helo=axantucar.elvandar.int)
	by websrv01.jr-hosting.nl with esmtpsa (TLSv1:AES128-SHA:128)
	(Exim 4.71 (FreeBSD)) (envelope-from )
	id 1O0gZj-0000re-HB; Sat, 10 Apr 2010 21:42:39 +0200
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Remko Lodder 
In-Reply-To: <201004101205.o3AC5VGp074266@svn.freebsd.org>
Date: Sat, 10 Apr 2010 21:42:38 +0200
Content-Transfer-Encoding: 7bit
Message-Id: <52B0F06D-E40C-4F55-88F3-6721DF83D470@elvandar.org>
References: <201004101205.o3AC5VGp074266@svn.freebsd.org>
To: Bruce M Simpson 
X-Mailer: Apple Mail (2.1078)
Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org,
	src-committers@freebsd.org
Subject: Re: svn commit: r206452 - head/sys/netinet
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 19:42:42 -0000


On Apr 10, 2010, at 2:05 PM, Bruce M Simpson wrote:
> 
> Log:
>  Fix a few issues related to the legacy 4.4 BSD multicast APIs.
> 
>  IPv4 addresses can and do change during normal operation. Testing by
>  pfSense developers exposed an issue where OpenOSPFD was using the IPv4
>  address to leave the OSPF link-scope multicast groups on a dynamic
>  OpenVPN tun interface, rather than using RFC 3678 with the interface
>  index, which won't be raced when the interface's addresses change.
> 
> 
>  With these changes, the legacy 4.4BSD multicast API idempotence should
>  be mostly preserved in the SSM enabled IPv4 stack.
> 
>  Found by:	ermal (with pfSense)
>  MFC after:	3 days
> 


\o/ great work Ermal and Bruce!

-- 
/"\   Best regards,                        | remko@FreeBSD.org
\ /   Remko Lodder                      | remko@EFnet
X    http://www.evilcoder.org/    |
/ \   ASCII Ribbon Campaign    | Against HTML Mail and News


From owner-svn-src-head@FreeBSD.ORG  Sat Apr 10 22:11:02 2010
Return-Path: 
Delivered-To: svn-src-head@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 4C3DC1065674;
	Sat, 10 Apr 2010 22:11:02 +0000 (UTC) (envelope-from bz@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 3D3FC8FC15;
	Sat, 10 Apr 2010 22:11:02 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3AMB2Z6007323;
	Sat, 10 Apr 2010 22:11:02 GMT (envelope-from bz@svn.freebsd.org)
Received: (from bz@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3AMB2Gw007321;
	Sat, 10 Apr 2010 22:11:02 GMT (envelope-from bz@svn.freebsd.org)
Message-Id: <201004102211.o3AMB2Gw007321@svn.freebsd.org>
From: "Bjoern A. Zeeb" 
Date: Sat, 10 Apr 2010 22:11:02 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-head@freebsd.org
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r206461 - head/sys/netinet/ipfw
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
	
List-Unsubscribe: ,
	
List-Archive: 
List-Post: 
List-Help: 
List-Subscribe: ,
	
X-List-Received-Date: Sat, 10 Apr 2010 22:11:02 -0000

Author: bz
Date: Sat Apr 10 22:11:01 2010
New Revision: 206461
URL: http://svn.freebsd.org/changeset/base/206461

Log:
  Try to help with a virtualized dummynet after r206428.
  
  This adds the explicit include (so far probably included through one of the
  few "hidden" includes in other header files) for vnet.h and adds a cast
  to unbreak LINT-VIMAGE.

Modified:
  head/sys/netinet/ipfw/ip_dn_io.c

Modified: head/sys/netinet/ipfw/ip_dn_io.c
==============================================================================
--- head/sys/netinet/ipfw/ip_dn_io.c	Sat Apr 10 19:25:55 2010	(r206460)
+++ head/sys/netinet/ipfw/ip_dn_io.c	Sat Apr 10 22:11:01 2010	(r206461)
@@ -45,8 +45,11 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 #include 
+
 #include 	/* IFNAMSIZ, struct ifaddr, ifq head, lock.h mutex.h */
 #include 
+#include 
+
 #include 
 #include 		/* ip_len, ip_off */
 #include 	/* ip_output(), IP_FORWARDING */
@@ -500,7 +503,7 @@ dummynet_task(void *context, int pending
 	struct timeval t;
 	struct mq q = { NULL, NULL }; /* queue to accumulate results */
 
-	CURVNET_SET(context);
+	CURVNET_SET((struct vnet *)context);
 
 	DN_BH_WLOCK();