Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F133158839
D3471.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D3471.diff
View Options
Index: head/sys/net/rss_config.h
===================================================================
--- head/sys/net/rss_config.h
+++ head/sys/net/rss_config.h
@@ -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.
*/
Index: head/sys/net/rss_config.c
===================================================================
--- head/sys/net/rss_config.c
+++ head/sys/net/rss_config.c
@@ -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;
Index: head/sys/netinet/in_rss.c
===================================================================
--- head/sys/netinet/in_rss.c
+++ head/sys/netinet/in_rss.c
@@ -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);
}
}
Index: head/sys/netinet6/in6_rss.c
===================================================================
--- head/sys/netinet6/in6_rss.c
+++ head/sys/netinet6/in6_rss.c
@@ -147,6 +147,6 @@
}
/* No configured available hashtypes! */
- printf("%s: no available hashtypes!\n", __func__);
+ RSS_DEBUG("no available hashtypes!\n");
return (-1);
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Oct 24, 12:29 PM (9 h, 38 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24131843
Default Alt Text
D3471.diff (4 KB)
Attached To
Mode
D3471: Replace the printf()s with optional rate limited debugging for RSS
Attached
Detach File
Event Timeline
Log In to Comment