From owner-svn-soc-all@freebsd.org Thu Aug 27 07:54:02 2015 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E9FAD9C4F95 for ; Thu, 27 Aug 2015 07:54:02 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id CB7A43AF for ; Thu, 27 Aug 2015 07:54:02 +0000 (UTC) (envelope-from btw@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id t7R7s26i051734 for ; Thu, 27 Aug 2015 07:54:02 GMT (envelope-from btw@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id t7R7s13d051650 for svn-soc-all@FreeBSD.org; Thu, 27 Aug 2015 07:54:01 GMT (envelope-from btw@FreeBSD.org) Date: Thu, 27 Aug 2015 07:54:01 GMT Message-Id: <201508270754.t7R7s13d051650@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to btw@FreeBSD.org using -f From: btw@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r290244 - in soc2015/btw/head/sys: net netinet netinet6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 Aug 2015 07:54:03 -0000 Author: btw Date: Thu Aug 27 07:54:00 2015 New Revision: 290244 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=290244 Log: Replace the printf()s with optional rate limited debugging for RSS. Modified: soc2015/btw/head/sys/net/rss_config.c soc2015/btw/head/sys/net/rss_config.h soc2015/btw/head/sys/netinet/in_rss.c soc2015/btw/head/sys/netinet6/in6_rss.c Modified: soc2015/btw/head/sys/net/rss_config.c ============================================================================== --- soc2015/btw/head/sys/net/rss_config.c Thu Aug 27 06:28:42 2015 (r290243) +++ soc2015/btw/head/sys/net/rss_config.c Thu Aug 27 07:54:00 2015 (r290244) @@ -152,6 +152,15 @@ __DECONST(int *, &rss_basecpu), 0, "RSS base CPU"); /* + * Print verbose debugging messages. + * 0 - disable + * non-zero - enable + */ +int rss_debug = 0; +SYSCTL_INT(_net_inet_rss, OID_AUTO, debug, CTLFLAG_RWTUN, &rss_debug, 0, + "RSS debug level"); + +/* * RSS secret key, intended to prevent attacks on load-balancing. Its * effectiveness may be limited by algorithm choice and available entropy * during the boot. @@ -194,8 +203,8 @@ break; default: - printf("%s: invalid RSS hashalgo %u, coercing to %u", - __func__, rss_hashalgo, RSS_HASH_TOEPLITZ); + RSS_DEBUG("invalid RSS hashalgo %u, coercing to %u\n", + rss_hashalgo, RSS_HASH_TOEPLITZ); rss_hashalgo = RSS_HASH_TOEPLITZ; } @@ -229,8 +238,8 @@ * ones. */ if (rss_bits == 0 || rss_bits > RSS_MAXBITS) { - printf("%s: RSS bits %u not valid, coercing to %u", - __func__, rss_bits, RSS_MAXBITS); + RSS_DEBUG("RSS bits %u not valid, coercing to %u\n", + rss_bits, RSS_MAXBITS); rss_bits = RSS_MAXBITS; } @@ -241,9 +250,8 @@ */ rss_buckets = (1 << rss_bits); if (rss_buckets < rss_ncpus) - printf("%s: WARNING: rss_buckets (%u) less than " - "rss_ncpus (%u)\n", __func__, rss_buckets, - rss_ncpus); + RSS_DEBUG("WARNING: rss_buckets (%u) less than " + "rss_ncpus (%u)\n", rss_buckets, rss_ncpus); rss_mask = rss_buckets - 1; } else { rss_bits = 0; Modified: soc2015/btw/head/sys/net/rss_config.h ============================================================================== --- soc2015/btw/head/sys/net/rss_config.h Thu Aug 27 06:28:42 2015 (r290243) +++ soc2015/btw/head/sys/net/rss_config.h Thu Aug 27 07:54:00 2015 (r290244) @@ -93,6 +93,21 @@ #define RSS_HASH_PKT_EGRESS 1 /* + * Rate limited debugging routines. + */ +#define RSS_DEBUG(format, ...) do { \ + if (rss_debug) { \ + static struct timeval lastfail; \ + static int curfail; \ + if (ppsratecheck(&lastfail, &curfail, 5)) \ + printf("RSS (%s:%u): " format, __func__, __LINE__,\ + ##__VA_ARGS__); \ + } \ +} while (0) + +extern int rss_debug; + +/* * Device driver interfaces to query RSS properties that must be programmed * into hardware. */ Modified: soc2015/btw/head/sys/netinet/in_rss.c ============================================================================== --- soc2015/btw/head/sys/netinet/in_rss.c Thu Aug 27 06:28:42 2015 (r290243) +++ soc2015/btw/head/sys/netinet/in_rss.c Thu Aug 27 07:54:00 2015 (r290244) @@ -147,7 +147,7 @@ } /* No configured available hashtypes! */ - printf("%s: no available hashtypes!\n", __func__); + RSS_DEBUG("no available hashtypes!\n"); return (-1); } @@ -183,7 +183,7 @@ * XXX For now this only handles hashing on incoming mbufs. */ if (dir != RSS_HASH_PKT_INGRESS) { - printf("%s: called on EGRESS packet!\n", __func__); + RSS_DEBUG("called on EGRESS packet!\n"); return (-1); } @@ -192,11 +192,11 @@ * to have an IPv4 header in it. */ if (m->m_pkthdr.len < (sizeof(struct ip))) { - printf("%s: short mbuf pkthdr\n", __func__); + RSS_DEBUG("short mbuf pkthdr\n"); return (-1); } if (m->m_len < (sizeof(struct ip))) { - printf("%s: short mbuf len\n", __func__); + RSS_DEBUG("short mbuf len\n"); return (-1); } @@ -280,7 +280,7 @@ (proto == IPPROTO_TCP) && (is_frag == 0)) { if (m->m_len < iphlen + sizeof(struct tcphdr)) { - printf("%s: short TCP frame?\n", __func__); + RSS_DEBUG("short TCP frame?\n"); return (-1); } th = (const struct tcphdr *)((c_caddr_t)ip + iphlen); @@ -295,7 +295,7 @@ (is_frag == 0)) { uh = (const struct udphdr *)((c_caddr_t)ip + iphlen); if (m->m_len < iphlen + sizeof(struct udphdr)) { - printf("%s: short UDP frame?\n", __func__); + RSS_DEBUG("short UDP frame?\n"); return (-1); } return rss_proto_software_hash_v4(ip->ip_src, ip->ip_dst, @@ -313,7 +313,7 @@ hashval, hashtype); } else { - printf("%s: no available hashtypes!\n", __func__); + RSS_DEBUG("no available hashtypes!\n"); return (-1); } } Modified: soc2015/btw/head/sys/netinet6/in6_rss.c ============================================================================== --- soc2015/btw/head/sys/netinet6/in6_rss.c Thu Aug 27 06:28:42 2015 (r290243) +++ soc2015/btw/head/sys/netinet6/in6_rss.c Thu Aug 27 07:54:00 2015 (r290244) @@ -147,6 +147,6 @@ } /* No configured available hashtypes! */ - printf("%s: no available hashtypes!\n", __func__); + RSS_DEBUG("no available hashtypes!\n"); return (-1); }