Netdev List
 help / color / mirror / Atom feed
* [RFC][PATCH 1/4] skbtrace: core feature
From: Li Yu @ 2012-07-11  2:17 UTC (permalink / raw)
  To: Linux Netdev List
In-Reply-To: <4FFBC6B6.2000600@gmail.com>

From: Li Yu <bingtian.ly@taobao.com>

This implements core feature of skbtrace, which contains glue code of
tracepoints subsystem and relay file system, and provide skbtrace API
for particular networking traces.

Thanks

Sign-off-by: Li Yu <bingtian.ly@taobao.com>
---
 include/linux/skbtrace.h        |  151 ++++++++
 include/linux/skbtrace_api.h    |   70 ++++
 include/trace/events/skbtrace.h |   29 ++
 net/core/skbtrace-core.c        |  758
+++++++++++++++++++++++++++++++++++++++
 4 files changed, 1008 insertions(+)
 create mode 100644 include/linux/skbtrace.h
 create mode 100644 include/linux/skbtrace_api.h
 create mode 100644 include/trace/events/skbtrace.h
 create mode 100644 net/core/skbtrace-core.c

diff --git a/include/linux/skbtrace.h b/include/linux/skbtrace.h
new file mode 100644
index 0000000..34b9144
--- /dev/null
+++ b/include/linux/skbtrace.h
@@ -0,0 +1,151 @@
+/*
+ *  skbtrace - sk_buff trace utilty
+ *
+ *	API for kernel
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
+ *
+ * 2012 Li Yu <bingtian.ly@taobao.com>
+ *
+ */
+
+#ifndef _LINUX_SKBTRACE_H
+#define _LINUX_SKBTRACE_H
+
+#include <linux/static_key.h>
+#include <linux/skbuff.h>
+#include <linux/netdevice.h>
+#include <linux/net.h>
+#include <linux/skbtrace_api.h>
+
+#include <net/sock.h>
+
+#if defined(CONFIG_SKBTRACE) || defined(CONFIG_SKBTRACE_MODULE)
+#define HAVE_SKBTRACE 1
+#else
+#define HAVE_SKBTRACE 0
+#endif
+
+#if HAVE_SKBTRACE
+
+struct skbtrace_tracepoint {
+	const char *name;
+	void *probe;
+	int (*setup_options)(struct skbtrace_tracepoint *tp,
+						char *name, char *options);
+	char* (*desc)(struct skbtrace_tracepoint *tp);
+	unsigned int enabled:1;
+	void *private;
+};
+
+extern atomic64_t skbtrace_event_seq;
+
+#define INIT_SKBTRACE_BLOCK(blk, p, act, fl, blk_size) \
+	do {\
+		(blk)->len = (blk_size);\
+		(blk)->action = (act);\
+		(blk)->flags = (fl);\
+		(blk)->seq = atomic64_add_return(1, &skbtrace_event_seq);\
+		(blk)->ts = current_kernel_time();\
+		(blk)->ptr = (p);\
+	} while (0)
+
+#define EMPTY_SKBTRACE_TP	{.name = NULL, }
+
+struct skbtrace_context {
+	union {
+		struct skbtrace_block blk;
+	};
+};
+
+extern int skbtrace_register_tracepoints(int af,
+				struct skbtrace_tracepoint *tp_list);
+extern void skbtrace_unregister_tracepoints(int af);
+extern void __skbtrace_probe(struct skbtrace_block *blk);
+extern int skbtrace_events_common_init(void);
+
+extern struct static_key skbtrace_filters_enabled;
+extern struct sk_filter *def_sk_filter;
+
+static inline void skbtrace_probe(struct skbtrace_block *blk)
+{
+	if (skbtrace_action_invalid == blk->action)
+		return;
+	__skbtrace_probe(blk);
+}
+
+static inline struct skbtrace_context *skbtrace_context_get(struct sock
*sk)
+{
+	if (likely(sk->sk_skbtrace))
+		return sk->sk_skbtrace;
+	sk->sk_skbtrace = kzalloc(sizeof(struct skbtrace_context), GFP_ATOMIC);
+	return sk->sk_skbtrace;
+}
+
+static inline void skbtrace_context_destroy(struct sock *sk)
+{
+	kfree(sk->sk_skbtrace);
+	sk->sk_skbtrace = NULL;
+}
+
+static inline void skbtrace_context_reset(struct sock *sk)
+{
+	sk->sk_skbtrace = NULL;
+}
+
+static inline int skbtrace_bypass_skb(struct sk_buff *skb)
+{
+	if (static_key_false(&skbtrace_filters_enabled)) {
+		if (skb->skbtrace_filtered)
+			return skb->hit_skbtrace;
+		else if (def_sk_filter) {
+			unsigned int pkt_len;
+
+			pkt_len = SK_RUN_FILTER(def_sk_filter, skb);
+			skb->hit_skbtrace = !pkt_len;
+			skb->skbtrace_filtered = 1;
+			return skb->hit_skbtrace;
+		}
+	}
+	return 0;
+}
+
+#define SKBTRACE_SKB_EVENT_BEGIN \
+{\
+	if (skbtrace_bypass_skb(skb)) {\
+		return;	\
+	} else {
+
+#define SKBTRACE_SKB_EVENT_END \
+	} \
+}
+
+#define SKBTRACE_SOCK_EVENT_BEGIN {
+
+#define SKBTRACE_SOCK_EVENT_END }
+
+#else /* HAVE_SKBTRACE */
+
+static inline void remove_skbtrace_context(struct sock *sk)
+{
+}
+
+static inline void skbtrace_context_reset(struct sock *sk)
+{
+}
+
+#endif /* HAVE_SKBTRACE */
+
+#endif /* _LINUX_SKBTRACE_H */
diff --git a/include/linux/skbtrace_api.h b/include/linux/skbtrace_api.h
new file mode 100644
index 0000000..58db922
--- /dev/null
+++ b/include/linux/skbtrace_api.h
@@ -0,0 +1,70 @@
+/*
+ *  skbtrace - sk_buff trace utilty
+ *
+ *	User/Kernel Interface
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
+ *
+ * 2012 Li Yu <bingtian.ly@taobao.com>
+ *
+ */
+#ifndef _LINUX_SKBTRACE_API_H
+#define _LINUX_SKBTRACE_API_H
+
+#include <linux/types.h>
+
+#ifdef __KERNEL__
+#include <linux/time.h>
+#else
+#include <time.h>
+#define __packed	__attribute__ ((__packed__))
+#endif
+
+#define TRACE_SPEC_MAX_LEN	256
+
+#define SKBTRACE_DEF_SUBBUF_SIZE	(1<<7)
+#define SKBTRACE_DEF_SUBBUF_NR		(1<<11)
+
+#define SKBTRACE_MIN_SUBBUF_SIZE	SKBTRACE_DEF_SUBBUF_SIZE
+#define SKBTRACE_MIN_SUBBUF_NR		SKBTRACE_DEF_SUBBUF_NR
+
+#define SKBTRACE_MAX_SUBBUF_SIZE	(1<<12)
+#define SKBTRACE_MAX_SUBBUF_NR		(1<<20)
+
+#define SC	0	/* for tracepoints in process context */
+#define SI	1	/* for tracepoints in softirq context */
+#define HW	2	/* for tracepoints in hardirq context */
+#define NR_CHANNELS	3
+
+/* struct skbtrace_block - be used in kernel/user interaction	*/
+/* @len:	whole data structure size in bytes		*/
+/* @action:	action of this skbtrace_block			*/
+/* @flags:	the flags depend on above action field		*/
+/* @ts:		the timestamp of this event.			*/
+/* @ptr:	the major source kernel data structure		*/
+/*		of this event, for gerneral, a sk_buff or sock	*/
+/* PLEASE:							*/
+/*	Keep 32 bits alignment on 32 bits platform		*/
+/*	And, keep 64 bits alignment on 64 bits platform		*/
+struct skbtrace_block {
+	__u16 len;
+	__u16 action;
+	__u32 flags;
+	struct timespec ts;
+	__u64 seq;
+	void *ptr;
+} __packed;
+
+#endif
diff --git a/include/trace/events/skbtrace.h
b/include/trace/events/skbtrace.h
new file mode 100644
index 0000000..b580814
--- /dev/null
+++ b/include/trace/events/skbtrace.h
@@ -0,0 +1,29 @@
+/*
+ *  skbtrace - sk_buff trace utilty
+ *
+ *	Events
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
+ *
+ * 2012 Li Yu <bingtian.ly@taobao.com>
+ *
+ */
+
+#if !defined(_TRACE_EVENTS_SKBTRACE_H)
+#define _TRACE_EVENTS_SKBTRACE_H
+
+#include <linux/tracepoint.h>
+
+#endif
diff --git a/net/core/skbtrace-core.c b/net/core/skbtrace-core.c
new file mode 100644
index 0000000..6146bca
--- /dev/null
+++ b/net/core/skbtrace-core.c
@@ -0,0 +1,758 @@
+/*
+ *  skbtrace - sk_buff trace utilty
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
+ *
+ * 2012 Li Yu <bingtian.ly@taobao.com>
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/relay.h>
+#include <linux/debugfs.h>
+#include <linux/slab.h>
+#include <linux/ctype.h>
+#include <linux/jhash.h>
+
+#include <linux/net.h>
+#include <linux/skbuff.h>
+#include <linux/netdevice.h>
+#include <linux/filter.h>
+#include <linux/skbtrace.h>
+#include <net/sock.h>
+
+#define SKBTRACE_VERSION	"1"
+#define SKBTRACE_DIR		"skbtrace"
+
+static unsigned long skbtrace_dropped[NR_CHANNELS][NR_CPUS];
+/* +1 for quick indexing trick in __skbtrace_probe() */
+static struct rchan *skbtrace_channels[NR_CHANNELS + 1];
+
+static struct sock_fprog def_sk_fprog;
+struct sk_filter *def_sk_filter;
+EXPORT_SYMBOL_GPL(def_sk_filter);
+
+static struct dentry	*skbtrace_dentry;
+static struct dentry	*enabled_control;
+static struct dentry	*dropped_control;
+static struct dentry	*version_control;
+static struct dentry	*subbuf_nr_control;
+static struct dentry	*subbuf_size_control;
+static struct dentry	*filters_control;
+
+static const struct file_operations	enabled_fops;
+static const struct file_operations	dropped_fops;
+static const struct file_operations	version_fops;
+static const struct file_operations	subbuf_nr_fops;
+static const struct file_operations	subbuf_size_fops;
+static const struct file_operations	filters_fops;
+
+static int nr_skbtrace_enabled_tp;
+static int subbuf_nr = SKBTRACE_DEF_SUBBUF_NR;
+static int subbuf_size = SKBTRACE_DEF_SUBBUF_SIZE;
+
+struct static_key skbtrace_filters_enabled = STATIC_KEY_INIT_FALSE;
+EXPORT_SYMBOL_GPL(skbtrace_filters_enabled);
+
+atomic64_t skbtrace_event_seq = ATOMIC64_INIT(0);
+EXPORT_SYMBOL_GPL(skbtrace_event_seq);
+
+/* protect agaist af_tp_list and skbtrace_channels */
+static struct mutex skbtrace_lock;
+static struct skbtrace_tracepoint *af_tp_list[AF_MAX];
+
+static int create_controls(void);
+static void remove_controls(void);
+static int  create_channels(void);
+static void flush_channels(void);
+static void destroy_channels(void);
+static ssize_t sk_filter_read(struct sock_fprog *fprog, char __user
*buffer,
+							    size_t count);
+static ssize_t sk_filter_write(struct sock_fprog *sk_fprog,
+				struct sk_filter **sk_filter,
+				const char __user *buffer, size_t count);
+
+static void skbtrace_proto_load(void)
+{
+	int af;
+
+	for (af = AF_UNSPEC; af < AF_MAX; af++) {
+		/* load proto-specific events */
+		if (!af_tp_list[af])
+			request_module("skbtrace-af-%d", af);
+	}
+}
+
+void __skbtrace_probe(struct skbtrace_block *blk)
+{
+	unsigned int chan_id;
+	struct rchan *rchan;
+
+	chan_id = (!!in_irq()) << 1;
+	chan_id |= !!in_softirq();	/* make sparse happy */
+	rchan = skbtrace_channels[chan_id];
+
+	if (unlikely(chan_id >= HW))
+		relay_write(rchan, blk, blk->len);
+	else {
+		local_bh_disable();
+		__relay_write(rchan, blk, blk->len);
+		local_bh_enable();
+	}
+	blk->action = skbtrace_action_invalid;
+}
+EXPORT_SYMBOL_GPL(__skbtrace_probe);
+
+int skbtrace_register_tracepoints(int af,
+				struct skbtrace_tracepoint *tp_list)
+{
+	int ret = 0;
+
+	if (af < 0 || af >= AF_MAX || !tp_list)
+		return -EINVAL;
+
+	mutex_lock(&skbtrace_lock);
+	if (af_tp_list[af])
+		ret = -EEXIST;
+	else if (tp_list[0].name)
+		af_tp_list[af] = tp_list;
+	mutex_unlock(&skbtrace_lock);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(skbtrace_register_tracepoints);
+
+void skbtrace_unregister_tracepoints(int af)
+{
+	struct skbtrace_tracepoint *tp;
+
+	if (af < 0 || af >= AF_MAX)
+		return;
+
+	mutex_lock(&skbtrace_lock);
+	tp = af_tp_list[af];
+	while (tp && tp->name) {
+		if (tp->enabled) {
+			tp->enabled = 0;
+			--nr_skbtrace_enabled_tp;
+			tracepoint_probe_unregister(tp->name, tp->probe, tp);
+		}
+		tp++;
+	}
+	af_tp_list[af] = NULL;
+	mutex_unlock(&skbtrace_lock);
+	flush_channels();
+}
+EXPORT_SYMBOL_GPL(skbtrace_unregister_tracepoints);
+
+static int subbuf_start_handler(struct rchan_buf *buf,
+				void *subbuf,
+				void *prev_subbuf,
+				size_t prev_padding)
+{
+	if (relay_buf_full(buf)) {
+		long trace, cpu;
+
+		trace = (long)buf->chan->private_data;
+		cpu = buf->cpu;
+		skbtrace_dropped[trace][cpu]++;
+		return 0;
+	}
+	return 1;
+}
+
+static struct dentry *create_buf_file_handler(const char *filename,
+					      struct dentry *parent,
+					      umode_t mode,
+					      struct rchan_buf *buf,
+					      int *is_global)
+{
+	return debugfs_create_file(filename, mode, parent, buf,
+				       &relay_file_operations);
+}
+
+static int remove_buf_file_handler(struct dentry *dentry)
+{
+	debugfs_remove(dentry);
+	return 0;
+}
+
+static struct rchan_callbacks relayfs_callbacks = {
+	.subbuf_start = subbuf_start_handler,
+	.create_buf_file = create_buf_file_handler,
+	.remove_buf_file = remove_buf_file_handler,
+};
+
+/* caller must hold skbtrace_lock */
+static int create_channels(void)
+{
+	unsigned long i, created;
+	const char *skbtrace_names[NR_CHANNELS] = {    "trace.syscall.cpu",
+							"trace.softirq.cpu",
+							"trace.hardirq.cpu" };
+	created = 0;
+	for (i = 0; i < NR_CHANNELS; i++) {
+		if (skbtrace_channels[i])
+			continue;
+		skbtrace_channels[i] = relay_open(skbtrace_names[i],
+			skbtrace_dentry, subbuf_size, subbuf_nr,
+				&relayfs_callbacks, (void *)i);
+		if (!skbtrace_channels[i]) {
+			destroy_channels();
+			return -ENOMEM;
+		}
+		created = 1;
+	}
+	skbtrace_channels[HW + 1] = skbtrace_channels[HW];
+
+	if (created)
+		__module_get(THIS_MODULE);
+	return 0;
+}
+
+static void flush_channels(void)
+{
+	int i;
+	for (i = 0; i < NR_CHANNELS; i++) {
+		if (skbtrace_channels[i])
+			relay_flush(skbtrace_channels[i]);
+	}
+}
+
+/* caller must hold skbtrace_lock */
+static void destroy_channels(void)
+{
+	int i, removed;
+
+	removed = 0;
+	for (i = 0; i < NR_CHANNELS; i++) {
+		if (skbtrace_channels[i]) {
+			relay_flush(skbtrace_channels[i]);
+			relay_close(skbtrace_channels[i]);
+			skbtrace_channels[i] = NULL;
+			removed = 1;
+		}
+	}
+	skbtrace_channels[HW + 1] = NULL;
+
+	if (removed)
+		module_put(THIS_MODULE);
+}
+
+static void remove_controls(void)
+{
+#define REMOVE_DEBUGFS_FILE(name) \
+	do {\
+		if (name##_control) \
+			debugfs_remove(name##_control); \
+	} while(0);
+
+	REMOVE_DEBUGFS_FILE(enabled)
+	REMOVE_DEBUGFS_FILE(dropped)
+	REMOVE_DEBUGFS_FILE(version)
+	REMOVE_DEBUGFS_FILE(subbuf_nr)
+	REMOVE_DEBUGFS_FILE(subbuf_size)
+	REMOVE_DEBUGFS_FILE(filters)
+}
+
+static int create_controls(void)
+{
+#define CREATE_DEBUGFS_FILE(name)\
+	do {\
+		name##_control = debugfs_create_file(#name, 0,\
+				skbtrace_dentry, NULL, &name##_fops);\
+		if (name##_control)\
+			break;\
+		pr_err("skbtrace: couldn't create relayfs file '" #name "'\n");\
+		goto fail;\
+	} while (0);
+
+	CREATE_DEBUGFS_FILE(enabled)
+	CREATE_DEBUGFS_FILE(dropped)
+	CREATE_DEBUGFS_FILE(version)
+	CREATE_DEBUGFS_FILE(subbuf_nr)
+	CREATE_DEBUGFS_FILE(subbuf_size)
+	CREATE_DEBUGFS_FILE(filters)
+
+#undef CREATE_DEBUGFS_FILE
+	return 0;
+fail:
+	remove_controls();
+	return -1;
+}
+
+static char *skbtrace_tracepoint_default_desc(struct
skbtrace_tracepoint *t)
+{
+	char *desc;
+	int n;
+
+	n = strlen(t->name) + 64;
+	desc = kmalloc(n, GFP_KERNEL);
+	if (!desc)
+		return NULL;
+
+	snprintf(desc, n, "%s enabled:%d\n", t->name, !!t->enabled);
+	return desc;
+}
+
+static char *skbtrace_tracepoint_desc(struct skbtrace_tracepoint *tp)
+{
+	if (tp->desc)
+		return tp->desc(tp);
+	return skbtrace_tracepoint_default_desc(tp);
+}
+
+static ssize_t enabled_read(struct file *filp, char __user *buffer,
+			    size_t count, loff_t *ppos)
+{
+	size_t ret, offset, len;
+	struct skbtrace_tracepoint *tp;
+	int af;
+	char *desc = NULL;
+
+	skbtrace_proto_load();
+
+	ret = offset = 0;
+	mutex_lock(&skbtrace_lock);
+	for (af = AF_UNSPEC; af < AF_MAX; af++) {
+		tp = af_tp_list[af];
+		while (tp && tp->name) {
+			kfree(desc);
+			desc = skbtrace_tracepoint_desc(tp);
+			if (!desc)
+				return -ENOMEM;
+			len = strlen(desc);
+			offset += len;
+			if (offset <= *ppos) {
+				++tp;
+				continue;
+			}
+			if (count < len) {
+				ret = -EINVAL;
+				goto unlock;
+			}
+			if (copy_to_user(buffer, desc, len)) {
+				ret = -EFAULT;
+				goto unlock;
+			}
+			*ppos += len;
+			ret = len;
+			goto unlock;
+		}
+	}
+unlock:
+	kfree(desc);
+	mutex_unlock(&skbtrace_lock);
+
+	return ret;
+}
+
+static int skbtrace_enable_tp(char *event_spec)
+{
+	char *name, *options;
+	int ret, af;
+	struct skbtrace_tracepoint *tp;
+
+	name = event_spec;
+	options = strchr(event_spec, ',');
+	if (options) {
+		*options = '\x0';
+		++options;
+		if ('\x0' == *options)
+			options = NULL;
+	}
+
+	ret = -EEXIST;
+	mutex_lock(&skbtrace_lock);
+
+	if (!nr_skbtrace_enabled_tp) {
+		ret = create_channels();
+		if (ret)
+			goto unlock;
+	}
+
+	for (af = AF_UNSPEC; af < AF_MAX; af++) {
+		tp = af_tp_list[af];
+		while (tp && tp->name) {
+			if (!strcmp(name, tp->name)) {
+				if (tp->setup_options) {
+					ret = tp->setup_options(tp,
+							name, options);
+					if (ret)
+						goto unlock;
+				}
+				ret = tracepoint_probe_register(tp->name,
+							tp->probe, tp);
+				goto reg;
+			}
+			++tp;
+		}
+	}
+
+reg:
+	if (ret && !nr_skbtrace_enabled_tp)
+		destroy_channels();
+	else if (!ret) {
+		tp->enabled = 1;
+		++nr_skbtrace_enabled_tp;
+	}
+unlock:
+	mutex_unlock(&skbtrace_lock);
+
+	return ret;
+}
+
+static int skbtrace_disable_tp(char *name)
+{
+	int ret, af;
+	struct skbtrace_tracepoint *tp;
+
+	/*
+	 * '-*' has two meanings:
+	 *
+	 *   (0) first time, it disables all tracepoints, and flush channels.
+	 *   (1) second time, it removes all channels.
+	 */
+
+	if (!nr_skbtrace_enabled_tp && '*' == *name) {
+		destroy_channels();
+		return 0;
+	}
+
+	ret = -EINVAL;
+	mutex_lock(&skbtrace_lock);
+	for (af = AF_UNSPEC; af < AF_MAX; af++) {
+		tp = af_tp_list[af];
+		while (tp && tp->name) {
+			if ('*' == *name || !strcmp(name, tp->name)) {
+				ret = tracepoint_probe_unregister(tp->name,
+							tp->probe, tp);
+				if (!ret) {
+					tp->enabled = 0;
+					--nr_skbtrace_enabled_tp;
+				}
+				if ('*' != *name)
+					goto unreg;
+			}
+			++tp;
+		}
+	}
+
+unreg:
+	flush_channels();
+
+	mutex_unlock(&skbtrace_lock);
+
+	return ret;
+}
+
+/* The user given buffer should contains such like string:
+ *	(0) To enable a skbtrace event:		"TRACE_NAME"
+ *	(1) To disable a skbtrace event:	"-TRACE_NAME"
+ *	(2) To disable all skbtrace events:	"-*"
+ */
+static ssize_t enabled_write(struct file *filp, const char __user *buffer,
+			     size_t count, loff_t *ppos)
+{
+	char kbuf[TRACE_SPEC_MAX_LEN+1];
+	int ret;
+
+	skbtrace_proto_load();
+
+	if (count >= TRACE_SPEC_MAX_LEN)
+		return -EINVAL;
+	if (copy_from_user(kbuf, buffer, count))
+		return -EFAULT;
+	kbuf[count] = '\x0';
+
+	if ('-' != kbuf[0])
+		ret = skbtrace_enable_tp(&kbuf[0]);
+	else
+		ret = skbtrace_disable_tp(&kbuf[1]);
+
+	return ret ?: count;
+}
+
+static int kmod_open(struct inode *inodep, struct file *filp)
+{
+	__module_get(THIS_MODULE);
+	return 0;
+}
+
+static int kmod_release(struct inode *inodep, struct file *filp)
+{
+	module_put(THIS_MODULE);
+	return 0;
+}
+
+static const struct file_operations enabled_fops = {
+	.owner =	THIS_MODULE,
+	.open =		kmod_open,
+	.release =	kmod_release,
+	.read =		enabled_read,
+	.write =	enabled_write,
+};
+
+static ssize_t dropped_read(struct file *filp, char __user *buffer,
+			    size_t count, loff_t *ppos)
+{
+
+	char buf[256];
+	unsigned long skbtrace_total_dropped[NR_CHANNELS] = {0, 0, 0};
+	int cpu;
+
+	for_each_possible_cpu(cpu) {
+		skbtrace_total_dropped[HW] += skbtrace_dropped[HW][cpu];
+		skbtrace_total_dropped[SI] += skbtrace_dropped[SI][cpu];
+		skbtrace_total_dropped[SC] += skbtrace_dropped[SC][cpu];
+	}
+
+	snprintf(buf, sizeof(buf), "%lu %lu %lu\n",
+		skbtrace_total_dropped[HW],
+		skbtrace_total_dropped[SI],
+		skbtrace_total_dropped[SC]
+		);
+
+	return simple_read_from_buffer(buffer, count, ppos,
+				       buf, strlen(buf));
+}
+
+static ssize_t dropped_write(struct file *filp, const char __user *buffer,
+			    size_t count, loff_t *ppos)
+{
+	memset(skbtrace_dropped, 0, sizeof(skbtrace_dropped));
+	return count;
+}
+
+static const struct file_operations dropped_fops = {
+	.owner =	THIS_MODULE,
+	.open =		kmod_open,
+	.release =	kmod_release,
+	.read =		dropped_read,
+	.write =	dropped_write,
+};
+
+static ssize_t version_read(struct file *filp, char __user *buffer,
+			    size_t count, loff_t *ppos)
+{
+	return simple_read_from_buffer(buffer, count, ppos,
+				       SKBTRACE_VERSION "\n",
+					strlen(SKBTRACE_VERSION "\n"));
+}
+
+static const struct file_operations version_fops = {
+	.owner =	THIS_MODULE,
+	.open =		kmod_open,
+	.release =	kmod_release,
+	.read =		version_read,
+};
+
+static ssize_t subbuf_x_read(struct file *filp, char __user *buffer,
+			    size_t count, loff_t *ppos, int which)
+{
+	char buf[24];
+
+	sprintf(buf, "%d\n", which);
+	return simple_read_from_buffer(buffer, count, ppos,
+				       buf, strlen(buf));
+}
+
+static ssize_t subbuf_x_write(struct file *filp, const char __user *buffer,
+			    size_t count, loff_t *ppos,
+			    int *which, int min_val, int max_val)
+{
+	char buf[24];
+	int v;
+
+	if (nr_skbtrace_enabled_tp)
+		return -EBUSY;
+
+	if (!buffer || count > sizeof(buf) - 1)
+		return -EINVAL;
+	memset(buf, 0, sizeof(buf));
+	if (copy_from_user(buf, buffer, count))
+		return -EFAULT;
+	if (sscanf(buf, "%d", &v) != 1)
+		return -EINVAL;
+	if (v < min_val || v > max_val)
+		return -EINVAL;
+
+	*which = v;
+	return count;
+}
+
+static ssize_t subbuf_nr_read(struct file *filp, char __user *buffer,
+			    size_t count, loff_t *ppos)
+{
+	return subbuf_x_read(filp, buffer, count, ppos, subbuf_nr);
+}
+
+static ssize_t subbuf_nr_write(struct file *filp, const char __user
*buffer,
+			    size_t count, loff_t *ppos)
+{
+	return subbuf_x_write(filp, buffer, count, ppos, &subbuf_nr,
+			SKBTRACE_MIN_SUBBUF_NR, SKBTRACE_MAX_SUBBUF_NR);
+}
+
+static const struct file_operations subbuf_nr_fops = {
+	.owner =	THIS_MODULE,
+	.open =		kmod_open,
+	.release =	kmod_release,
+	.read =		subbuf_nr_read,
+	.write =	subbuf_nr_write,
+};
+
+static ssize_t subbuf_size_read(struct file *filp, char __user *buffer,
+			    size_t count, loff_t *ppos)
+{
+	return subbuf_x_read(filp, buffer, count, ppos, subbuf_size);
+}
+
+static ssize_t subbuf_size_write(struct file *filp, const char __user
*buffer,
+			    size_t count, loff_t *ppos)
+{
+	return subbuf_x_write(filp, buffer, count, ppos, &subbuf_size,
+			SKBTRACE_MIN_SUBBUF_SIZE, SKBTRACE_MAX_SUBBUF_SIZE);
+}
+
+static const struct file_operations subbuf_size_fops = {
+	.owner =	THIS_MODULE,
+	.open =		kmod_open,
+	.release =	kmod_release,
+	.read =		subbuf_size_read,
+	.write =	subbuf_size_write,
+};
+
+static ssize_t sk_filter_read(struct sock_fprog *fprog, char __user
*buffer,
+							    size_t count)
+{
+	int sz_filter;
+	struct sock_fprog user_fprog;
+
+	if (!fprog || !fprog->filter)
+		return -EINVAL;
+	sz_filter = fprog->len * sizeof(struct sock_filter);
+	if (count < sizeof(struct sock_fprog) + sz_filter)
+		return -EINVAL;
+	user_fprog.len = fprog->len;
+	user_fprog.filter = (struct sock_filter *)
+					(buffer + sizeof(struct sock_fprog));
+	if (copy_to_user(buffer, &user_fprog, sizeof(struct sock_fprog)))
+		return -EFAULT;
+	if (copy_to_user(user_fprog.filter, fprog->filter, sz_filter))
+		return -EFAULT;
+
+	return sizeof(struct sock_fprog) + sz_filter;
+}
+
+static ssize_t sk_filter_write(struct sock_fprog *sk_fprog,
+				struct sk_filter **sk_filter,
+				const char __user *buffer, size_t count)
+{
+	int sz_filter, ret;
+	struct sock_filter __user *user_filter;
+
+	if (count < sizeof(struct sock_fprog) || sk_fprog->filter)
+		return -EINVAL;
+	if (copy_from_user(sk_fprog, buffer, sizeof(struct sock_fprog)))
+		return -EFAULT;
+	sz_filter = sk_fprog->len * sizeof(struct sock_filter);
+	user_filter = sk_fprog->filter;
+
+	sk_fprog->filter = kzalloc(sz_filter, GFP_KERNEL);
+	if (!sk_fprog->filter)
+		ret = -ENOMEM;
+
+	ret = -EFAULT;
+	if (!copy_from_user(sk_fprog->filter, user_filter, sz_filter))
+		ret = sk_unattached_filter_create(sk_filter, sk_fprog);
+	if (!ret) {
+		static_key_slow_inc(&skbtrace_filters_enabled);
+		return sizeof(struct sock_fprog) + sz_filter;
+	}
+	kfree(sk_fprog->filter);
+	sk_fprog->filter = NULL;
+	return ret;
+}
+
+static ssize_t filters_read(struct file *filp, char __user *buffer,
+			    size_t count, loff_t *ppos)
+{
+	return sk_filter_read(&def_sk_fprog, buffer, count);
+}
+
+static ssize_t filters_write(struct file *filp, const char __user *buffer,
+			    size_t count, loff_t *ppos)
+{
+	skbtrace_proto_load();
+
+	if (nr_skbtrace_enabled_tp)
+		return -EBUSY;
+
+	if (def_sk_fprog.filter) {
+		kfree(def_sk_fprog.filter);
+		def_sk_fprog.filter = NULL;
+	}
+	if (def_sk_filter) {
+		static_key_slow_dec(&skbtrace_filters_enabled);
+		sk_unattached_filter_destroy(def_sk_filter);
+		def_sk_filter = NULL;
+	}
+	return sk_filter_write(&def_sk_fprog, &def_sk_filter, buffer, count);
+}
+
+static const struct file_operations filters_fops = {
+	.owner =	THIS_MODULE,
+	.open =		kmod_open,
+	.release =	kmod_release,
+	.read =		filters_read,
+	.write =	filters_write,
+};
+
+static int skbtrace_init(void)
+{
+	mutex_init(&skbtrace_lock);
+
+	memset(&def_sk_fprog, 0, sizeof(struct sock_fprog));
+	def_sk_filter = NULL;
+
+	if (skbtrace_events_common_init())
+		return -ENODEV;
+
+	skbtrace_dentry = debugfs_create_dir(SKBTRACE_DIR, NULL);
+	if (!skbtrace_dentry)
+		return -ENOMEM;
+
+	if (create_controls()) {
+		debugfs_remove(skbtrace_dentry);
+		return -ENOMEM;
+	}
+
+	return 0;
+}
+
+static void skbtrace_exit(void)
+{
+	skbtrace_disable_tp("*"); /* disable all enabled tracepoints */
+	skbtrace_disable_tp("*"); /* remove channels in debugfs at 2nd time */
+	if (unlikely(nr_skbtrace_enabled_tp))
+		pr_err("skbtrace: failed to clean tracepoints.\n");
+	remove_controls();
+	debugfs_remove(skbtrace_dentry);
+}
+
+module_init(skbtrace_init);
+module_exit(skbtrace_exit);
+MODULE_LICENSE("GPL");
-- 
1.7.9.5

^ permalink raw reply related

* 3.5rc6 oops on caif unload.
From: Dave Jones @ 2012-07-11  1:48 UTC (permalink / raw)
  To: netdev; +Cc: sjur.brandeland

rmmod caif got me this surprise ..

general protection fault: 0000 [#1] PREEMPT SMP 
CPU 1 
Modules linked in:
 hfs catc aer_inject ptp pps_core target_core_file target_core_iblock target_core_pscsi tcm_loop target_core_mod vga16fb sysimgblt fb_sys_fops syscopyarea vgastate output platform_lcd lcd sysfillrect n_r3964 n_gsm nozomi jsm serio_raw altera_ps2 input_polldev sparse_keymap uinput bluetooth rfkill cpufreq_stats ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables kvm_intel kvm crc32c_intel ghash_clmulni_intel microcode pcspkr i2c_i801 usb_debug e1000e nfsd nfs_acl auth_rpcgss lockd sunrpc i915 video i2c_algo_bit drm_kms_helper drm i2c_core [last unloaded: caif_socket]
Pid: 17842, comm: modprobe Not tainted 3.5.0-rc6+ #101
RIP: 0010:[<ffffffffa0f7f561>]  [<ffffffffa0f7f561>] caif_get+0x51/0xb0 [caif]
RSP: 0000:ffff88012d5a5df8  EFLAGS: 00010296
RAX: 6b6b6b6b6b6b6b13 RBX: 6b6b6b6b6b6b6b6b RCX: 0000000000000001
RDX: 0000000000000000 RSI: ffffffff81c310e0 RDI: 0000000000000282
RBP: ffff88012d5a5e28 R08: 0000000000000000 R09: 0000000000000001
R10: 0000000000000000 R11: 0000000000000002 R12: ffff880142114828
R13: ffff8801457b22a0 R14: ffff880142114828 R15: 0000000000000000
FS:  00007fa134219740(0000) GS:ffff880147e00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 00000038e1e14e0b CR3: 000000009fa23000 CR4: 00000000001407e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process modprobe (pid: 17842, threadinfo ffff88012d5a4000, task ffff8801304226b0)
Stack:
 ffff88012d5a5e28  6b6b6b6b6b6b6b6b  ffffffffa0f7f350  ffff8801457b22a0  0000000000000009
 6b6b6b6b6b6b6b6b  ffff88012d5a5e88  ffffffffa0f802bd  0000000000000000  0000000000000000
 0000000001319578   0000000000000000

Call Trace:
 [<ffffffffa0f7f350>] ? transmit+0x2e0/0x2e0 [caif]
 [<ffffffffa0f802bd>] caif_device_notify+0x4d/0x5a0 [caif]
 [<ffffffff81552ba9>] unregister_netdevice_notifier+0xb9/0x100
 [<ffffffffa0f86dcc>] caif_device_exit+0x1c/0x250 [caif]
 [<ffffffff810e7734>] sys_delete_module+0x1a4/0x300
 [<ffffffff810da82d>] ? trace_hardirqs_on_caller+0x15d/0x1e0
 [<ffffffff813517de>] ? trace_hardirqs_on_thunk+0x3a/0x3f
 [<ffffffff81696bad>] system_call_fastpath+0x1a/0x1f
Code: 00 48 89 45 d8 48 8b 5d d8 e8 ac 17 11 e0 85 c0 74 10 80 3d 74 9c 00 00 00 74 34 0f 1f 
80 00 00 00 00 49 39 dc 48 8d 43 a8 74 4f <4c> 39 6b 10 74 4b 48 8b 40 58 48 89 45 d8 48 8b 
5d d8 e8 78 17 

RIP 
 [<ffffffffa0f7f561>] caif_get+0x51/0xb0 [caif]
 RSP <ffff88012d5a5df8>
---[ end trace a81c7acd5619effe ]---

^ permalink raw reply

* Re: 82571EB: Detected Hardware Unit Hang
From: Joe Jin @ 2012-07-11  1:44 UTC (permalink / raw)
  To: Dave, Tushar N
  Cc: netdev@vger.kernel.org, e1000-devel@lists.sf.net,
	linux-kernel@vger.kernel.org
In-Reply-To: <061C8A8601E8EE4CA8D8FD6990CEA891274EEC8B@ORSMSX102.amr.corp.intel.com>

On 07/11/12 09:18, Dave, Tushar N wrote:
>> >I tried several drivers included rhel5 the latest, Intel the latest,
>> >rhel6 the latest, issue see on all those drivers.
> Also after issue occurs please capture lspci -vvv (run as root)
> 

# lspci -s 05:00.0 -vvv
05:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (Copper) (rev 06)
	Subsystem: Oracle Corporation x4 PCI-Express Quad Gigabit Ethernet UTP Low Profile Adapter
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 256 bytes
	Interrupt: pin B routed to IRQ 80
	Region 0: Memory at fbde0000 (32-bit, non-prefetchable) [size=128K]
	Region 1: Memory at fbdc0000 (32-bit, non-prefetchable) [size=128K]
	Region 2: I/O ports at dc00 [size=32]
	Expansion ROM at fbda0000 [disabled] [size=128K]
	Capabilities: [c8] Power Management version 2
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=1 PME-
	Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee35000  Data: 409e
	Capabilities: [e0] Express (v1) Endpoint, MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE- FLReset-
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- UncorrErr+ FatalErr+ UnsuppReq+ AuxPwr+ TransPend-
		LnkCap:	Port #2, Speed 2.5GT/s, Width x4, ASPM L0s, Latency L0 <4us, L1 <64us
			ClockPM- Surprise- LLActRep- BwNot-
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
	Capabilities: [100 v1] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO+ CmpltAbrt- UnxCmplt- RxOF- MalfTLP+ ECRC- UnsupReq+ ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
		UESvrt:	DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
		AERCap:	First Error Pointer: 12, GenCap- CGenEn- ChkCap- ChkEn-
	Capabilities: [140 v1] Device Serial Number 00-15-17-ff-ff-b9-77-9c
	Kernel driver in use: e1000e
	Kernel modules: e1000e


Full kernel log with after enable debug.

e1000e: Intel(R) PRO/1000 Network Driver - 2.0.0-NAPI
e1000e: Copyright(c) 1999 - 2012 Intel Corporation.
e1000e 0000:05:00.0: Disabling ASPM  L1
e1000e 0000:05:00.0: PCI INT B -> GSI 38 (level, low) -> IRQ 38
e1000e 0000:05:00.0: setting latency timer to 64
e1000e 0000:05:00.0: irq 80 for MSI/MSI-X
e1000e 0000:05:00.0: eth0: (PCI Express:2.5GT/s:Width x4) 00:15:17:b9:77:9d
e1000e 0000:05:00.0: eth0: Intel(R) PRO/1000 Network Connection
e1000e 0000:05:00.0: eth0: MAC: 1, PHY: 4, PBA No: D90197-004
e1000e 0000:05:00.1: Disabling ASPM  L1
e1000e 0000:05:00.1: PCI INT A -> GSI 39 (level, low) -> IRQ 39
e1000e 0000:05:00.1: setting latency timer to 64
e1000e 0000:05:00.1: irq 81 for MSI/MSI-X
e1000e 0000:05:00.1: eth1: (PCI Express:2.5GT/s:Width x4) 00:15:17:b9:77:9c
e1000e 0000:05:00.1: eth1: Intel(R) PRO/1000 Network Connection
e1000e 0000:05:00.1: eth1: MAC: 1, PHY: 4, PBA No: D90197-004
e1000e 0000:04:00.0: Disabling ASPM  L1
e1000e 0000:04:00.0: PCI INT B -> GSI 37 (level, low) -> IRQ 37
e1000e 0000:04:00.0: setting latency timer to 64
e1000e 0000:04:00.0: irq 82 for MSI/MSI-X
e1000e 0000:04:00.0: eth2: (PCI Express:2.5GT/s:Width x4) 00:15:17:b9:77:9f
e1000e 0000:04:00.0: eth2: Intel(R) PRO/1000 Network Connection
e1000e 0000:04:00.0: eth2: MAC: 1, PHY: 4, PBA No: D90197-004
e1000e 0000:04:00.1: Disabling ASPM  L1
e1000e 0000:04:00.1: PCI INT A -> GSI 30 (level, low) -> IRQ 30
e1000e 0000:04:00.1: setting latency timer to 64
e1000e 0000:04:00.1: irq 83 for MSI/MSI-X
e1000e 0000:04:00.1: eth3: (PCI Express:2.5GT/s:Width x4) 00:15:17:b9:77:9e
e1000e 0000:04:00.1: eth3: Intel(R) PRO/1000 Network Connection
e1000e 0000:04:00.1: eth3: MAC: 1, PHY: 4, PBA No: D90197-004
e1000e 0000:05:00.0: irq 80 for MSI/MSI-X
e1000e 0000:05:00.0: irq 80 for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth0: link is not ready
e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
e1000e 0000:05:00.1: irq 81 for MSI/MSI-X
e1000e 0000:05:00.1: irq 81 for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth1: link is not ready
e1000e: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
e1000e 0000:04:00.0: irq 82 for MSI/MSI-X
e1000e 0000:04:00.0: irq 82 for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth2: link is not ready
e1000e: eth2 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready
eth0: no IPv6 routers present
e1000e 0000:04:00.1: irq 83 for MSI/MSI-X
e1000e 0000:04:00.1: irq 83 for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth3: link is not ready
e1000e: eth3 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
ADDRCONF(NETDEV_CHANGE): eth3: link becomes ready
eth1: no IPv6 routers present
ADDRCONF(NETDEV_UP): eth4: link is not ready
igb: eth4 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
ADDRCONF(NETDEV_CHANGE): eth4: link becomes ready
eth2: no IPv6 routers present
eth3: no IPv6 routers present
eth4: no IPv6 routers present
e1000e 0000:05:00.0: eth0: Detected Hardware Unit Hang:
  TDH                  <62>
  TDT                  <74>
  next_to_use          <74>
  next_to_clean        <61>
buffer_info[next_to_clean]:
  time_stamp           <1034c1c86>
  next_to_watch        <65>
  jiffies              <1034c2c38>
  next_to_watch.status <0>
MAC Status             <80387>
PHY Status             <792d>
PHY 1000BASE-T Status  <3c00>
PHY Extended Status    <3000>
PCI Status             <10>
e1000e 0000:05:00.0: eth0: Detected Hardware Unit Hang:
  TDH                  <62>
  TDT                  <74>
  next_to_use          <74>
  next_to_clean        <61>
buffer_info[next_to_clean]:
  time_stamp           <1034c1c86>
  next_to_watch        <65>
  jiffies              <1034c3bd8>
  next_to_watch.status <0>
MAC Status             <80387>
PHY Status             <792d>
PHY 1000BASE-T Status  <3c00>
PHY Extended Status    <3000>
PCI Status             <10>
e1000e 0000:05:00.0: Net device Info
e1000e: Device Name     state            trans_start      last_rx
e1000e: eth0            0000000000000003 00000001034C28A7 0000000000000000
e1000e 0000:05:00.0: Register Dump
e1000e:  Register Name   Value
e1000e: CTRL            180c0241
e1000e: STATUS          00080387
e1000e: CTRL_EXT        181400c0
e1000e: ICR             00000000
e1000e: RCTL            04048002
e1000e: RDLEN           00001000
e1000e: RDH             000000b8
e1000e: RDT             000000b0
e1000e: RDTR            00000020
e1000e: RXDCTL[0-1]     01040420 01040420
e1000e: ERT             00000000
e1000e: RDBAL           23852000
e1000e: RDBAH           0000000c
e1000e: RDFH            00000c04
e1000e: RDFT            00000c04
e1000e: RDFHS           00000c04
e1000e: RDFTS           00000c04
e1000e: RDFPC           00000000
e1000e: TCTL            3003f00a
e1000e: TDBAL           1210c000
e1000e: TDBAH           0000000c
e1000e: TDLEN           00001000
e1000e: TDH             00000062
e1000e: TDT             00000074
e1000e: TIDV            00000008
e1000e: TXDCTL[0-1]     0145011f 0145011f
e1000e: TADV            00000020
e1000e: TARC[0-1]       07a00403 07400403
e1000e: TDFH            00001404
e1000e: TDFT            0000140c
e1000e: TDFHS           00001404
e1000e: TDFTS           00001404
e1000e: TDFPC           00000000
e1000e 0000:05:00.0: Tx Ring Summary
e1000e: Queue [NTU] [NTC] [bi(ntc)->dma  ] leng ntw timestamp
e1000e:      0    74    61 0000000000000000 0000  65 00000001034C1C86
e1000e 0000:05:00.0: Tx Ring Dump
e1000e: Tl[desc]     [address 63:0  ] [SpeCssSCmCsLen] [bi->dma       ] leng  ntw timestamp        bi->skb <-- Legacy format
e1000e: Tc[desc]     [Ce CoCsIpceCoS] [MssHlRSCm0Plen] [bi->dma       ] leng  ntw timestamp        bi->skb <-- Ext Context format
e1000e: Td[desc]     [address 63:0  ] [VlaPoRSCm1Dlen] [bi->dma       ] leng  ntw timestamp        bi->skb <-- Ext Data format
e1000e: Tl[0x000]    0000000623890002 000000008B00005A 0000000000000000 005A    0 0000000000000000 (null)
e1000e: Tl[0x001]    0000000623B66402 000000008B00004E 0000000000000000 004E    1 0000000000000000 (null)
e1000e: Tl[0x002]    0000000C23A6C002 000000008B00002A 0000000000000000 002A    2 0000000000000000 (null)
e1000e: Tl[0x003]    000000061E6DBC02 000000008B000046 0000000000000000 0046    3 0000000000000000 (null)
e1000e: Tl[0x004]    000000061D9A0802 000000008B00006E 0000000000000000 006E    4 0000000000000000 (null)
e1000e: Tl[0x005]    000000062080040A 000000008B0000B9 0000000000000000 00B9    5 0000000000000000 (null)
e1000e: Tl[0x006]    000000062334740A 000000008B00017C 0000000000000000 017C    6 0000000000000000 (null)
e1000e: Tl[0x007]    000000062246200A 000000008B00017C 0000000000000000 017C    7 0000000000000000 (null)
e1000e: Tl[0x008]    000000061D91C402 000000008B00002A 0000000000000000 002A    8 0000000000000000 (null)
e1000e: Tl[0x009]    0000000C12130802 000000008B000036 0000000000000000 0036    9 0000000000000000 (null)
e1000e: Tc[0x00A]    0000282200000000 0000000020000000 0000000000000000 0000    B 0000000000000000 (null)
e1000e: Td[0x00B]    0000000C23CC6402 00000000AB1000A5 0000000000000000 00A5    B 0000000000000000 (null)
e1000e: Tl[0x00C]    0000000C23CCBC0A 000000008B00017C 0000000000000000 017C    C 0000000000000000 (null)
e1000e: Tc[0x00D]    0000282200000000 0000000020000000 0000000000000000 0000    E 0000000000000000 (null)
e1000e: Td[0x00E]    0000000C1AA49002 00000000AB10012F 0000000000000000 012F    E 0000000000000000 (null)
e1000e: Tl[0x00F]    000000061E6DBC0A 000000008B00016A 0000000000000000 016A    F 0000000000000000 (null)
e1000e: Tc[0x010]    0000282200000000 0000000020000000 0000000000000000 0000   11 0000000000000000 (null)
e1000e: Td[0x011]    000000062391C802 00000000AB10012F 0000000000000000 012F   11 0000000000000000 (null)
e1000e: Tc[0x012]    0000282200000000 0000000020000000 0000000000000000 0000   13 0000000000000000 (null)
e1000e: Td[0x013]    000000061E6DBC02 00000000AB10012F 0000000000000000 012F   13 0000000000000000 (null)
e1000e: Tl[0x014]    0000000623B6640A 000000008B0000B9 0000000000000000 00B9   14 0000000000000000 (null)
e1000e: Tc[0x015]    0000282200000000 0000000020000000 0000000000000000 0000   16 0000000000000000 (null)
e1000e: Td[0x016]    0000000623B66802 00000000AB10011D 0000000000000000 011D   16 0000000000000000 (null)
e1000e: Tc[0x017]    0000282200000000 0000000020000000 0000000000000000 0000   18 0000000000000000 (null)
e1000e: Td[0x018]    0000000623B66802 00000000AB1000A5 0000000000000000 00A5   18 0000000000000000 (null)
e1000e: Tl[0x019]    0000000623B6640A 000000008B00016A 0000000000000000 016A   19 0000000000000000 (null)
e1000e: Tc[0x01A]    0000282200000000 0000000020000000 0000000000000000 0000   1B 0000000000000000 (null)
e1000e: Td[0x01B]    000000061E6DBC02 00000000AB10011D 0000000000000000 011D   1B 0000000000000000 (null)
e1000e: Tl[0x01C]    0000000C23C68C02 000000008B00002A 0000000000000000 002A   1C 0000000000000000 (null)
e1000e: Tl[0x01D]    000000061E6DBC0A 000000008B00012E 0000000000000000 012E   1D 0000000000000000 (null)
e1000e: Tl[0x01E]    00000006238DE002 000000008B00005A 0000000000000000 005A   1E 0000000000000000 (null)
e1000e: Tc[0x01F]    0000282200000000 0000000020000000 0000000000000000 0000   20 0000000000000000 (null)
e1000e: Td[0x020]    00000006226FD802 00000000AB10010E 0000000000000000 010E   20 0000000000000000 (null)
e1000e: Tl[0x021]    000000062246200A 000000008B00016A 0000000000000000 016A   21 0000000000000000 (null)
e1000e: Tl[0x022]    00000006226FD802 000000008B000046 0000000000000000 0046   22 0000000000000000 (null)
e1000e: Tc[0x023]    0000282200000000 0000000020000000 0000000000000000 0000   24 0000000000000000 (null)
e1000e: Td[0x024]    0000000623B66802 00000000AB10011D 0000000000000000 011D   24 0000000000000000 (null)
e1000e: Tl[0x025]    00000006226FD80A 000000008B000095 0000000000000000 0095   25 0000000000000000 (null)
e1000e: Tc[0x026]    0000282200000000 0000000020000000 0000000000000000 0000   27 0000000000000000 (null)
e1000e: Td[0x027]    000000061DB85802 00000000AB100075 0000000000000000 0075   27 0000000000000000 (null)
e1000e: Tl[0x028]    0000000C1D85A802 000000008B000036 0000000000000000 0036   28 0000000000000000 (null)
e1000e: Tl[0x029]    00000006226FD802 000000008B00002A 0000000000000000 002A   29 0000000000000000 (null)
e1000e: Tl[0x02A]    0000000623B66802 000000008B000046 0000000000000000 0046   2A 0000000000000000 (null)
e1000e: Tl[0x02B]    000000062342A80A 000000008B000095 0000000000000000 0095   2B 0000000000000000 (null)
e1000e: Tc[0x02C]    0000282200000000 0000000020000000 0000000000000000 0000   2D 0000000000000000 (null)
e1000e: Td[0x02D]    000000062363E802 00000000AB100075 0000000000000000 0075   2D 0000000000000000 (null)
e1000e: Tl[0x02E]    00000006227E6C0A 000000008B000095 0000000000000000 0095   2E 0000000000000000 (null)
e1000e: Tl[0x02F]    00000006227E6402 000000008B00002A 0000000000000000 002A   2F 0000000000000000 (null)
e1000e: Tc[0x030]    0000282200000000 0000000020000000 0000000000000000 0000   31 0000000000000000 (null)
e1000e: Td[0x031]    0000000623B7C002 00000000AB10005C 0000000000000000 005C   31 0000000000000000 (null)
e1000e: Tl[0x032]    0000000623BAD40A 000000008B000095 0000000000000000 0095   32 0000000000000000 (null)
e1000e: Tc[0x033]    0000282200000000 0000000020000000 0000000000000000 0000   34 0000000000000000 (null)
e1000e: Td[0x034]    000000061E7C6C02 00000000AB100065 0000000000000000 0065   34 0000000000000000 (null)
e1000e: Tl[0x035]    0000000623B7C00A 000000008B000095 0000000000000000 0095   35 0000000000000000 (null)
e1000e: Tl[0x036]    000000061D957002 000000008B00002A 0000000000000000 002A   36 0000000000000000 (null)
e1000e: Tc[0x037]    0000282200000000 0000000020000000 0000000000000000 0000   38 0000000000000000 (null)
e1000e: Td[0x038]    0000000622625802 00000000AB100075 0000000000000000 0075   38 0000000000000000 (null)
e1000e: Tl[0x039]    000000061E6E1C0A 000000008B000095 0000000000000000 0095   39 0000000000000000 (null)
e1000e: Tl[0x03A]    000000062371ACEE 000000008B000042 0000000000000000 0042   3A 0000000000000000 (null)
e1000e: Tl[0x03B]    000000062392E002 000000008B00002A 0000000000000000 002A   3B 0000000000000000 (null)
e1000e: Tc[0x03C]    0000322200000000 0000000021000000 0000000000000000 0000   3E 0000000000000000 (null)
e1000e: Td[0x03D]    0000000C23B4310A 0000000022100036 0000000000000000 0036   3D 0000000000000000 (null)
e1000e: Td[0x03E]    0000000C201E7000 00000000AB100014 0000000000000000 0014   3E 0000000000000000 (null)
e1000e: Tl[0x03F]    000000062371ACFA 000000008B000036 0000000000000000 0036   3F 0000000000000000 (null)
e1000e: Tc[0x040]    0000322200000000 0000000021000000 0000000000000000 0000   42 0000000000000000 (null)
e1000e: Td[0x041]    0000000C23F3D10A 0000000022100036 0000000000000000 0036   41 0000000000000000 (null)
e1000e: Td[0x042]    0000000C201E7014 00000000AB1002C0 0000000000000000 02C0   42 0000000000000000 (null)
e1000e: Tl[0x043]    00000006233BC8FA 000000008B000036 0000000000000000 0036   43 0000000000000000 (null)
e1000e: Tl[0x044]    00000006226FD8FA 000000008B000036 0000000000000000 0036   44 0000000000000000 (null)
e1000e: Tc[0x045]    0000322200000000 0000000021000000 0000000000000000 0000   47 0000000000000000 (null)
e1000e: Td[0x046]    000000062094750A 0000000022100036 0000000000000000 0036   46 0000000000000000 (null)
e1000e: Td[0x047]    0000000C201E72D4 00000000AB100118 0000000000000000 0118   47 0000000000000000 (null)
e1000e: Tc[0x048]    0000322200000000 0000000021000000 0000000000000000 0000   4A 0000000000000000 (null)
e1000e: Td[0x049]    000000062094750A 0000000022100036 0000000000000000 0036   49 0000000000000000 (null)
e1000e: Td[0x04A]    0000000C201E73EC 00000000AB100350 0000000000000000 0350   4A 0000000000000000 (null)
e1000e: Tl[0x04B]    00000006226FD8FA 000000008B000036 0000000000000000 0036   4B 0000000000000000 (null)
e1000e: Tl[0x04C]    00000006233BC8FA 000000008B000036 0000000000000000 0036   4C 0000000000000000 (null)
e1000e: Tc[0x04D]    0000322200000000 0000000021000000 0000000000000000 0000   4F 0000000000000000 (null)
e1000e: Td[0x04E]    00000006226FDD0A 0000000022100036 0000000000000000 0036   4E 0000000000000000 (null)
e1000e: Td[0x04F]    0000000C201E773C 00000000AB100030 0000000000000000 0030   4F 0000000000000000 (null)
e1000e: Tc[0x050]    0000322200000000 0000000021000000 0000000000000000 0000   52 0000000000000000 (null)
e1000e: Td[0x051]    00000006247AA10A 0000000022100036 0000000000000000 0036   51 0000000000000000 (null)
e1000e: Td[0x052]    0000000C201E776C 00000000AB100050 0000000000000000 0050   52 0000000000000000 (null)
e1000e: Tc[0x053]    0000322200000000 0000000021000000 0000000000000000 0000   55 0000000000000000 (null)
e1000e: Td[0x054]    00000006226FDD0A 0000000022100036 0000000000000000 0036   54 0000000000000000 (null)
e1000e: Td[0x055]    0000000C201E77BC 00000000AB100020 0000000000000000 0020   55 0000000000000000 (null)
e1000e: Tl[0x056]    000000062342A8FA 000000008B000036 0000000000000000 0036   56 0000000000000000 (null)
e1000e: Tc[0x057]    0000322200000000 0000000021000000 0000000000000000 0000   59 0000000000000000 (null)
e1000e: Td[0x058]    00000006247AAD0A 0000000022100036 0000000000000000 0036   58 0000000000000000 (null)
e1000e: Td[0x059]    0000000C201E77DC 00000000AB100030 0000000000000000 0030   59 0000000000000000 (null)
e1000e: Tl[0x05A]    00000006247AACFA 000000008B000036 0000000000000000 0036   5A 0000000000000000 (null)
e1000e: Tc[0x05B]    0000322200000000 0000000021000000 0000000000000000 0000   5D 0000000000000000 (null)
e1000e: Td[0x05C]    000000062342A90A 0000000022100036 0000000000000000 0036   5C 0000000000000000 (null)
e1000e: Td[0x05D]    0000000C201E780C 00000000AB100030 0000000000000000 0030   5D 0000000000000000 (null)
e1000e: Tc[0x05E]    0000322200000000 0000000021000000 0000000000000000 0000   60 0000000000000000 (null)
e1000e: Td[0x05F]    00000006226FDD0A 0000000022100036 0000000000000000 0036   5F 0000000000000000 (null)
e1000e: Td[0x060]    0000000C201E783C 00000000AB100040 0000000000000000 0040   60 0000000000000000 (null)
e1000e: Tc[0x061]    000032220021180E 05B4360027001C84 0000000000000000 0000   65 00000001034C1C86 (null) NTC
e1000e: Td[0x062]    00000006227E610A 000003002610003A 00000006227E610A 003A   62 00000001034C1C86 (null)
e1000e: Td[0x063]    0000000C201E7880 0000030026100780 0000000C201E7880 0780   63 00000001034C1C86 (null)
e1000e: Td[0x064]    0000000620BCE000 0000030026101000 0000000620BCE000 1000   64 00000001034C1C86 (null)
e1000e: Td[0x065]    000000062407A000 00000300AF100500 000000062407A000 0500   65 00000001034C1C86 ffff88062268bb70
e1000e: Tc[0x066]    0000322200000000 0000000021000000 0000000000000000 0000   68 00000001034C1D55 (null)
e1000e: Td[0x067]    00000006226FDD0A 0000020022100036 00000006226FDD0A 0036   67 00000001034C1D55 (null)
e1000e: Td[0x068]    0000000C201E787C 00000200AB1005B4 0000000C201E787C 05B4   68 00000001034C1D55 ffff88061e46c3c0
e1000e: Tc[0x069]    0000322200000000 0000000021000000 0000000000000000 0000   6B 00000001034C1EF3 (null)
e1000e: Td[0x06A]    0000000623A21D0A 0000020022100036 0000000623A21D0A 0036   6A 00000001034C1EF3 (null)
e1000e: Td[0x06B]    0000000C201E787C 00000200AB1005B4 0000000C201E787C 05B4   6B 00000001034C1EF3 ffff88061e46c8c0
e1000e: Tl[0x06C]    0000000623A214EE 000000008B000042 0000000623A214EE 0042   6C 00000001034C2016 ffff88061e46c9c0
e1000e: Tc[0x06D]    0000322200000000 0000000021000000 0000000000000000 0000   6F 00000001034C222F (null)
e1000e: Td[0x06E]    0000000623347D0A 0000020022100036 0000000623347D0A 0036   6E 00000001034C222F (null)
e1000e: Td[0x06F]    0000000C201E787C 00000200AB1005B4 0000000C201E787C 05B4   6F 00000001034C222F ffff880623894680
e1000e: Tl[0x070]    000000061E4820EE 000000008B000042 000000061E4820EE 0042   70 00000001034C273C ffff88061e46cec0
e1000e: Tc[0x071]    0000322200000000 0000000021000000 0000000000000000 0000   73 00000001034C28A7 (null)
e1000e: Td[0x072]    0000000620B9E50A 0000020022100036 0000000620B9E50A 0036   72 00000001034C28A7 (null)
e1000e: Td[0x073]    0000000C201E787C 00000200AB1005B4 0000000C201E787C 05B4   73 00000001034C28A7 ffff88061e46cdc0
e1000e: Tl[0x074]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null) NTU
e1000e: Tl[0x075]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x076]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x077]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x078]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x079]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x07A]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x07B]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x07C]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x07D]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x07E]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x07F]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x080]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x081]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x082]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x083]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x084]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x085]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x086]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x087]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x088]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x089]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x08A]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x08B]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x08C]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x08D]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x08E]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x08F]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x090]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x091]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x092]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x093]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x094]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x095]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x096]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x097]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x098]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x099]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x09A]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x09B]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x09C]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x09D]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x09E]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x09F]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A0]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A1]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A2]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A3]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A4]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A5]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A6]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A7]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A8]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A9]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0AA]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0AB]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0AC]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0AD]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0AE]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0AF]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B0]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B1]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B2]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B3]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B4]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B5]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B6]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B7]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B8]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B9]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0BA]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0BB]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0BC]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0BD]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0BE]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0BF]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C0]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C1]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C2]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C3]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C4]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C5]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C6]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C7]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C8]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C9]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0CA]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0CB]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0CC]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0CD]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0CE]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0CF]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D0]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D1]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D2]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D3]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D4]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D5]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D6]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D7]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D8]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D9]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0DA]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0DB]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0DC]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0DD]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0DE]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0DF]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E0]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E1]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E2]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E3]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E4]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E5]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E6]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E7]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E8]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E9]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0EA]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0EB]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0EC]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0ED]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0EE]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0EF]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F0]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F1]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F2]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F3]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F4]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F5]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F6]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F7]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F8]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F9]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0FA]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0FB]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0FC]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0FD]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0FE]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0FF]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e 0000:05:00.0: Rx Ring Summary
e1000e: Queue [NTU] [NTC]
e1000e:      0    B7    B8
e1000e 0000:05:00.0: Rx Ring Dump
e1000e: R  [desc]      [buf addr 63:0 ] [reserved 63:0 ] [bi->dma       ] [bi->skb] <-- Ext (Read) format
e1000e: RWB[desc]      [cs ipid    mrq] [vt   ln xe  xs] [bi->skb] <-- Ext (Write-Back) format
e1000e: R  [0x000]     0000000C1AF66040 0000005C00020000 0000000C1AF66040 ffff880c238b16c0
e1000e: R  [0x001]     0000000C2364B040 0000005C00020000 0000000C2364B040 ffff880c238b12c0
e1000e: R  [0x002]     000000062275F040 0000005C00020000 000000062275F040 ffff88061e5dc4c0
e1000e: R  [0x003]     0000000C1E152040 0000005C00020000 0000000C1E152040 ffff880c238b19c0
e1000e: R  [0x004]     0000000C1A9E1040 0000003C00000000 0000000C1A9E1040 ffff880c21e4f9c0
e1000e: R  [0x005]     0000000C1AB2E040 0000003C00000000 0000000C1AB2E040 ffff880c21e4f0c0
e1000e: R  [0x006]     000000061E777040 0000003C00000000 000000061E777040 ffff880623722280
e1000e: R  [0x007]     0000000C1DBCB040 0000003C00000000 0000000C1DBCB040 ffff880c21e4f8c0
e1000e: R  [0x008]     0000000620917040 0000003C00000000 0000000620917040 ffff88061d8f95c0
e1000e: R  [0x009]     0000000C21F4E040 0000003C00000000 0000000C21F4E040 ffff880c21e4f4c0
e1000e: R  [0x00A]     0000000C211EE040 0000003C00000000 0000000C211EE040 ffff880c21e4f7c0
e1000e: R  [0x00B]     000000061DB3F040 0000003C00000000 000000061DB3F040 ffff8806230b4880
e1000e: R  [0x00C]     0000000C1216D040 0000003C00000000 0000000C1216D040 ffff880c21e4f1c0
e1000e: R  [0x00D]     0000000C2361E040 0000003C00000000 0000000C2361E040 ffff880c21e4fac0
e1000e: R  [0x00E]     00000006209B4040 0000003C00000000 00000006209B4040 ffff88061d8d6380
e1000e: R  [0x00F]     000000061D938040 0000003C00000000 000000061D938040 ffff8806224bbd80
e1000e: R  [0x010]     000000062388A040 0000003C00000000 000000062388A040 ffff880622578480
e1000e: R  [0x011]     0000000C23CAA040 0000003C00000000 0000000C23CAA040 ffff880c21e4f5c0
e1000e: R  [0x012]     0000000617D61040 0000003C00000000 0000000617D61040 ffff8806224d2280
e1000e: R  [0x013]     0000000C20055040 0000003C00000000 0000000C20055040 ffff880c121257c0
e1000e: R  [0x014]     0000000C239A8040 0000003C00000000 0000000C239A8040 ffff880c12125ac0
e1000e: R  [0x015]     0000000C1AF39040 0000003C00000000 0000000C1AF39040 ffff880c121253c0
e1000e: R  [0x016]     0000000C20054040 0000003C00000000 0000000C20054040 ffff880c121258c0
e1000e: R  [0x017]     0000000C2388D040 0000003C00000000 0000000C2388D040 ffff880c121256c0
e1000e: R  [0x018]     0000000C1AA09040 0000003C00000000 0000000C1AA09040 ffff880c12125dc0
e1000e: R  [0x019]     000000061DBBA040 0000003C00000000 000000061DBBA040 ffff88061e614880
e1000e: R  [0x01A]     0000000C213FF040 0000003C00000000 0000000C213FF040 ffff880c121252c0
e1000e: R  [0x01B]     0000000C1E154040 0000003C00000000 0000000C1E154040 ffff880c12125ec0
e1000e: R  [0x01C]     0000000C2395B040 0000003C00000000 0000000C2395B040 ffff880c121254c0
e1000e: R  [0x01D]     000000061C417040 0000003C00000000 000000061C417040 ffff88061d8d6480
e1000e: R  [0x01E]     0000000C1AB6B040 0000003C00000000 0000000C1AB6B040 ffff880c121250c0
e1000e: R  [0x01F]     0000000C1ABB4040 0000003C00000000 0000000C1ABB4040 ffff880c121259c0
e1000e: R  [0x020]     0000000620963040 0000003C00000000 0000000620963040 ffff8806224bbb80
e1000e: R  [0x021]     0000000C2438A040 0000003C00000000 0000000C2438A040 ffff880c1ab21a80
e1000e: R  [0x022]     0000000C1D89E040 0000003C00000000 0000000C1D89E040 ffff880c1ab21880
e1000e: R  [0x023]     0000000C24394040 0000003C00000000 0000000C24394040 ffff880c1ab21280
e1000e: R  [0x024]     0000000C1F6DE040 0000003C00000000 0000000C1F6DE040 ffff880c1ab21180
e1000e: R  [0x025]     0000000622599040 0000010300020000 0000000622599040 ffff88062345eec0
e1000e: R  [0x026]     0000000623997040 0000010300020000 0000000623997040 ffff8806230560c0
e1000e: R  [0x027]     00000006187F9040 0000010300020000 00000006187F9040 ffff8806187f8e80
e1000e: R  [0x028]     0000000617C20040 0000010300020000 0000000617C20040 ffff88061db371c0
e1000e: R  [0x029]     0000000C1AA2B040 0000005C00020000 0000000C1AA2B040 ffff880c238b14c0
e1000e: R  [0x02A]     0000000C12077040 0000005C00020000 0000000C12077040 ffff880c238b10c0
e1000e: R  [0x02B]     0000000C1202F040 0000005C00020000 0000000C1202F040 ffff880c238b15c0
e1000e: R  [0x02C]     0000000C1AB72040 0000005C00020000 0000000C1AB72040 ffff880c238b1ec0
e1000e: R  [0x02D]     000000061A2C6040 0000003C00000000 000000061A2C6040 ffff88061db40880
e1000e: R  [0x02E]     000000061E442040 0000003C00000000 000000061E442040 ffff8806230b4c80
e1000e: R  [0x02F]     0000000C239E4040 0000003C00000000 0000000C239E4040 ffff880c238b18c0
e1000e: R  [0x030]     0000000C239E5040 0000003C00000000 0000000C239E5040 ffff880c1aa838c0
e1000e: R  [0x031]     0000000622752040 0000003C00000000 0000000622752040 ffff8806224bb580
e1000e: R  [0x032]     0000000C1AB01040 0000003C00000000 0000000C1AB01040 ffff880c1aa83ac0
e1000e: R  [0x033]     0000000C1E265040 0000003C00000000 0000000C1E265040 ffff880c1aa83dc0
e1000e: R  [0x034]     000000061E63F040 0000003C00000000 000000061E63F040 ffff88061e63eec0
e1000e: R  [0x035]     0000000C1AB00040 0000003C00000000 0000000C1AB00040 ffff880c1aa837c0
e1000e: R  [0x036]     0000000C23EE4040 0000003C00000000 0000000C23EE4040 ffff880c1aa831c0
e1000e: R  [0x037]     0000000623446040 0000003C00000000 0000000623446040 ffff88061c6b6680
e1000e: R  [0x038]     000000061D9AA040 0000005600050000 000000061D9AA040 ffff88061db40580
e1000e: R  [0x039]     0000000C1E272040 0000005600050000 0000000C1E272040 ffff880c1aa836c0
e1000e: R  [0x03A]     000000062365F040 0000005600050000 000000062365F040 ffff880623056cc0
e1000e: R  [0x03B]     0000000C210D4040 0000005600050000 0000000C210D4040 ffff880c1aa834c0
e1000e: R  [0x03C]     0000000C23C9A040 0000005600050000 0000000C23C9A040 ffff880c1aa833c0
e1000e: R  [0x03D]     0000000C21CDD040 0000005600050000 0000000C21CDD040 ffff880c1f4d7e80
e1000e: R  [0x03E]     0000000C21CDC040 0000005600050000 0000000C21CDC040 ffff880c1f4d7d80
e1000e: R  [0x03F]     0000000C1AA19040 0000005600050000 0000000C1AA19040 ffff880c1f4d7c80
e1000e: R  [0x040]     0000000C1AA18040 0000005600050000 0000000C1AA18040 ffff880c1f4d7b80
e1000e: R  [0x041]     0000000622707040 0000005600050000 0000000622707040 ffff8806238318c0
e1000e: R  [0x042]     00000006208E2040 0000005600050000 00000006208E2040 ffff8806239b15c0
e1000e: R  [0x043]     0000000C21387040 0000005600050000 0000000C21387040 ffff880c1f4d7880
e1000e: R  [0x044]     0000000C2128B040 0000005600050000 0000000C2128B040 ffff880c1f4d7780
e1000e: R  [0x045]     0000000C20820040 0000005600050000 0000000C20820040 ffff880c1f4d7680
e1000e: R  [0x046]     0000000C1AB8F040 0000005600050000 0000000C1AB8F040 ffff880c1f4d7580
e1000e: R  [0x047]     0000000C23EE5040 0000005600050000 0000000C23EE5040 ffff880c1f4d7480
e1000e: R  [0x048]     0000000C1E273040 0000003C00000000 0000000C1E273040 ffff880c1f4d7380
e1000e: R  [0x049]     0000000C1DB5E040 0000003C00000000 0000000C1DB5E040 ffff880c1f4d7280
e1000e: R  [0x04A]     0000000C24D54040 0000003C00000000 0000000C24D54040 ffff880c1f4d7180
e1000e: R  [0x04B]     00000006224D9040 0000003C00000000 00000006224D9040 ffff880623831bc0
e1000e: R  [0x04C]     0000000C1E1C5040 0000003C00000000 0000000C1E1C5040 ffff880c20113ec0
e1000e: R  [0x04D]     0000000C1AA52040 0000003C00000000 0000000C1AA52040 ffff880c20113dc0
e1000e: R  [0x04E]     0000000C1A885040 0000003C00000000 0000000C1A885040 ffff880c20113cc0
e1000e: R  [0x04F]     0000000C20094040 0000003C00000000 0000000C20094040 ffff880c20113bc0
e1000e: R  [0x050]     0000000C20BA1040 0000003C00000000 0000000C20BA1040 ffff880c20113ac0
e1000e: R  [0x051]     0000000C210FB040 0000003C00000000 0000000C210FB040 ffff880c201139c0
e1000e: R  [0x052]     0000000C23C75040 0000003C00000000 0000000C23C75040 ffff880c201138c0
e1000e: R  [0x053]     0000000C23C97040 0000003C00000000 0000000C23C97040 ffff880c201137c0
e1000e: R  [0x054]     0000000C121EA040 0000005C00020000 0000000C121EA040 ffff880c201136c0
e1000e: R  [0x055]     0000000C121D7040 0000005C00020000 0000000C121D7040 ffff880c201135c0
e1000e: R  [0x056]     00000006227DD040 0000005C00020000 00000006227DD040 ffff88062362d1c0
e1000e: R  [0x057]     0000000C12154040 0000005C00020000 0000000C12154040 ffff880c201133c0
e1000e: R  [0x058]     00000006239A4040 0000003C00000000 00000006239A4040 ffff88061d8d6080
e1000e: R  [0x059]     0000000622430040 0000003C00000000 0000000622430040 ffff88061e5dcdc0
e1000e: R  [0x05A]     0000000623B1A040 0000003C00000000 0000000623B1A040 ffff880620b6eec0
e1000e: R  [0x05B]     000000061E400040 0000003C00000000 000000061E400040 ffff880623884b80
e1000e: R  [0x05C]     0000000C201A9040 0000003C00000000 0000000C201A9040 ffff880c1e0f2d80
e1000e: R  [0x05D]     0000000C23AB5040 0000003C00000000 0000000C23AB5040 ffff880c1e0f2c80
e1000e: R  [0x05E]     0000000620AFE040 0000003C00000000 0000000620AFE040 ffff88061d8d6580
e1000e: R  [0x05F]     00000006230F3040 0000003C00000000 00000006230F3040 ffff880620b6eac0
e1000e: R  [0x060]     0000000C20B3A040 0000003C00000000 0000000C20B3A040 ffff880c1e0f2980
e1000e: R  [0x061]     0000000C20B3B040 0000003C00000000 0000000C20B3B040 ffff880c1e0f2880
e1000e: R  [0x062]     0000000C12174040 0000003C00000000 0000000C12174040 ffff880c1e0f2780
e1000e: R  [0x063]     0000000C12175040 0000003C00000000 0000000C12175040 ffff880c1e0f2680
e1000e: R  [0x064]     0000000C1E110040 0000003C00000000 0000000C1E110040 ffff880c1e0f2580
e1000e: R  [0x065]     0000000C1E111040 0000003C00000000 0000000C1E111040 ffff880c1e0f2480
e1000e: R  [0x066]     0000000C1DA5A040 0000003C00000000 0000000C1DA5A040 ffff880c1e0f2380
e1000e: R  [0x067]     000000061E5BC040 0000005600050000 000000061E5BC040 ffff880620b6e5c0
e1000e: R  [0x068]     000000061E46E040 0000005600050000 000000061E46E040 ffff88061c6b6b80
e1000e: R  [0x069]     0000000C1ABD9040 0000005600050000 0000000C1ABD9040 ffff880c1e0f2080
e1000e: R  [0x06A]     000000061D8D4040 0000005600050000 000000061D8D4040 ffff88061c6b6e80
e1000e: R  [0x06B]     0000000C120DA040 0000003C00000000 0000000C120DA040 ffff880c23d52dc0
e1000e: R  [0x06C]     0000000C120DB040 0000003C00000000 0000000C120DB040 ffff880c23d52cc0
e1000e: R  [0x06D]     0000000623478040 0000003C00000000 0000000623478040 ffff8806237a2e80
e1000e: R  [0x06E]     0000000C2357F040 0000003C00000000 0000000C2357F040 ffff880c23d52ac0
e1000e: R  [0x06F]     0000000C21244040 0000003C00000000 0000000C21244040 ffff880c23d529c0
e1000e: R  [0x070]     000000061DB1B040 0000005C00020000 000000061DB1B040 ffff880620b6e7c0
e1000e: R  [0x071]     0000000623AFD040 0000005C00020000 0000000623AFD040 ffff88062405b080
e1000e: R  [0x072]     000000061E5C0040 0000005C00020000 000000061E5C0040 ffff88061c6b6d80
e1000e: R  [0x073]     0000000C1213E040 0000005C00020000 0000000C1213E040 ffff880c23d525c0
e1000e: R  [0x074]     000000061DAC5040 0000009D00020000 000000061DAC5040 ffff880617cfab80
e1000e: R  [0x075]     0000000C1E01E040 0000003C00000000 0000000C1E01E040 ffff880c23d523c0
e1000e: R  [0x076]     000000061E78E040 0000003C00000000 000000061E78E040 ffff880623722480
e1000e: R  [0x077]     00000006224BA040 0000003C00000000 00000006224BA040 ffff88061e415280
e1000e: R  [0x078]     0000000C203DD040 0000003C00000000 0000000C203DD040 ffff880c23d520c0
e1000e: R  [0x079]     0000000617EA1040 0000003C00000000 0000000617EA1040 ffff88062362ddc0
e1000e: R  [0x07A]     0000000C1AB4C040 0000003C00000000 0000000C1AB4C040 ffff880c211fed80
e1000e: R  [0x07B]     0000000617D02040 0000003C00000000 0000000617D02040 ffff88061e562ec0
e1000e: R  [0x07C]     0000000C239D4040 0000003C00000000 0000000C239D4040 ffff880c211feb80
e1000e: R  [0x07D]     0000000C239D5040 0000003C00000000 0000000C239D5040 ffff880c211fea80
e1000e: R  [0x07E]     0000000C1F794040 0000003C00000000 0000000C1F794040 ffff880c211fe980
e1000e: R  [0x07F]     0000000C1F795040 0000003C00000000 0000000C1F795040 ffff880c211fe880
e1000e: R  [0x080]     0000000C1ABF4040 0000003C00000000 0000000C1ABF4040 ffff880c211fe780
e1000e: R  [0x081]     0000000620A3E040 0000003C00000000 0000000620A3E040 ffff8806187d07c0
e1000e: R  [0x082]     000000061E71B040 0000003C00000000 000000061E71B040 ffff88062405b680
e1000e: R  [0x083]     0000000C202E9040 0000003C00000000 0000000C202E9040 ffff880c211fe480
e1000e: R  [0x084]     0000000C1AAB6040 0000003C00000000 0000000C1AAB6040 ffff880c211fe380
e1000e: R  [0x085]     0000000C1AAB7040 0000003C00000000 0000000C1AAB7040 ffff880c211fe280
e1000e: R  [0x086]     0000000C120A0040 0000003C00000000 0000000C120A0040 ffff880c211fe180
e1000e: R  [0x087]     000000061E7E4040 0000003C00000000 000000061E7E4040 ffff8806187d01c0
e1000e: R  [0x088]     0000000C1209D040 0000003C00000000 0000000C1209D040 ffff880c1209cec0
e1000e: R  [0x089]     0000000C1AB6E040 0000003C00000000 0000000C1AB6E040 ffff880c1209cdc0
e1000e: R  [0x08A]     0000000C1AB6F040 0000003C00000000 0000000C1AB6F040 ffff880c1209ccc0
e1000e: R  [0x08B]     0000000C12040040 0000003C00000000 0000000C12040040 ffff880c1209cbc0
e1000e: R  [0x08C]     0000000C12041040 0000003C00000000 0000000C12041040 ffff880c1209cac0
e1000e: R  [0x08D]     0000000C1211C040 0000003C00000000 0000000C1211C040 ffff880c1209c9c0
e1000e: R  [0x08E]     0000000C1211D040 0000003C00000000 0000000C1211D040 ffff880c1209c8c0
e1000e: R  [0x08F]     000000061D895040 0000003C00000000 000000061D895040 ffff8806224bb180
e1000e: R  [0x090]     000000061E46F040 0000003C00000000 000000061E46F040 ffff8806224bba80
e1000e: R  [0x091]     000000061E4D2040 0000003C00000000 000000061E4D2040 ffff8806227b7780
e1000e: R  [0x092]     0000000C23523040 0000003C00000000 0000000C23523040 ffff880c1209c4c0
e1000e: R  [0x093]     0000000623BF8040 0000003C00000000 0000000623BF8040 ffff88061e46cbc0
e1000e: R  [0x094]     0000000C1203F040 0000003C00000000 0000000C1203F040 ffff880c1209c2c0
e1000e: R  [0x095]     000000061C66B040 0000003C00000000 000000061C66B040 ffff88061e5624c0
e1000e: R  [0x096]     0000000C1DA7D040 0000003C00000000 0000000C1DA7D040 ffff880c1209c0c0
e1000e: R  [0x097]     000000061E651040 0000003C00000000 000000061E651040 ffff88061e5622c0
e1000e: R  [0x098]     000000061C455040 0000003C00000000 000000061C455040 ffff88061e415780
e1000e: R  [0x099]     0000000620B60040 0000003C00000000 0000000620B60040 ffff8806238d8080
e1000e: R  [0x09A]     000000061E572040 0000003C00000000 000000061E572040 ffff880620a79180
e1000e: R  [0x09B]     0000000623641040 0000003C00000000 0000000623641040 ffff880623fcde80
e1000e: R  [0x09C]     0000000C1F5D0040 0000005C00020000 0000000C1F5D0040 ffff880c1a9c8980
e1000e: R  [0x09D]     0000000C1F5D1040 0000005C00020000 0000000C1F5D1040 ffff880c1a9c8880
e1000e: R  [0x09E]     0000000C1A990040 0000005C00020000 0000000C1A990040 ffff880c1a9c8780
e1000e: R  [0x09F]     0000000C1A991040 0000005C00020000 0000000C1A991040 ffff880c1a9c8680
e1000e: R  [0x0A0]     0000000C20946040 0000003C00000000 0000000C20946040 ffff880c1a9c8580
e1000e: R  [0x0A1]     0000000C20947040 0000003C00000000 0000000C20947040 ffff880c1a9c8480
e1000e: R  [0x0A2]     0000000C1AA58040 0000003C00000000 0000000C1AA58040 ffff880c1a9c8380
e1000e: R  [0x0A3]     0000000C1AA59040 0000003C00000000 0000000C1AA59040 ffff880c1a9c8280
e1000e: R  [0x0A4]     0000000C20382040 0000003C00000000 0000000C20382040 ffff880c1a9c8180
e1000e: R  [0x0A5]     000000061E706040 0000003C00000000 000000061E706040 ffff8806224a97c0
e1000e: R  [0x0A6]     0000000623A6A040 0000003C00000000 0000000623A6A040 ffff88062405bd80
e1000e: R  [0x0A7]     0000000C1AA8A040 0000003C00000000 0000000C1AA8A040 ffff880c1ab40dc0
e1000e: R  [0x0A8]     0000000C1AA8B040 0000003C00000000 0000000C1AA8B040 ffff880c1ab40cc0
e1000e: R  [0x0A9]     0000000C1A86C040 0000003C00000000 0000000C1A86C040 ffff880c1ab40bc0
e1000e: R  [0x0AA]     0000000C1A86D040 0000003C00000000 0000000C1A86D040 ffff880c1ab40ac0
e1000e: R  [0x0AB]     00000006227F4040 0000003C00000000 00000006227F4040 ffff8806238a0a80
e1000e: R  [0x0AC]     0000000C1AAAD040 0000003C00000000 0000000C1AAAD040 ffff880c1ab408c0
e1000e: R  [0x0AD]     000000061E534040 0000003C00000000 000000061E534040 ffff88062405b480
e1000e: R  [0x0AE]     0000000C120D5040 0000003C00000000 0000000C120D5040 ffff880c1ab406c0
e1000e: R  [0x0AF]     0000000617E98040 0000003C00000000 0000000617E98040 ffff88062405b380
e1000e: R  [0x0B0]     0000000C201F9040 0000003C00000000 0000000C201F9040 ffff880c1ab404c0
e1000e: R  [0x0B1]     0000000C21E6C040 0000003C00000000 0000000C21E6C040 ffff880c1ab403c0
e1000e: R  [0x0B2]     0000000623F6F040 0000003C00000000 0000000623F6F040 ffff880623884880
e1000e: R  [0x0B3]     0000000C23D16040 0000003C00000000 0000000C23D16040 ffff880c1ab401c0
e1000e: R  [0x0B4]     0000000C23D17040 0000003C00000000 0000000C23D17040 ffff880c1ab400c0
e1000e: R  [0x0B5]     0000000C1AB7D040 0000003C00000000 0000000C1AB7D040 ffff880c1ab7ce80
e1000e: R  [0x0B6]     0000000C21250040 0000003C00000000 0000000C21250040 ffff880c1ab7cd80
e1000e: R  [0x0B7]     BF49000000000000 0000003C00000000 0000000000000000 ffff88061c669dc0 NTU
e1000e: R  [0x0B8]     00000006238F5040 0000003C00000000 00000006238F5040 ffff88061e533580 NTC
e1000e: R  [0x0B9]     000000061DA5D040 0000003C00000000 000000061DA5D040 ffff880619389c80
e1000e: R  [0x0BA]     000000061E553040 0000015600020000 000000061E553040 ffff8806239b14c0
e1000e: R  [0x0BB]     0000000620911040 0000003C00000000 0000000620911040 ffff8806230566c0
e1000e: R  [0x0BC]     0000000C12020040 0000003C00000000 0000000C12020040 ffff880c1ab7c780
e1000e: R  [0x0BD]     0000000623ACD040 0000003C00000000 0000000623ACD040 ffff8806227b7380
e1000e: R  [0x0BE]     0000000C1AFD2040 0000005C00020000 0000000C1AFD2040 ffff880c1ab7c580
e1000e: R  [0x0BF]     000000061C41F040 0000005C00020000 000000061C41F040 ffff880623884380
e1000e: R  [0x0C0]     000000062333A040 0000005C00020000 000000062333A040 ffff880620ba1180
e1000e: R  [0x0C1]     0000000C23A25040 0000005C00020000 0000000C23A25040 ffff880c1ab7c280
e1000e: R  [0x0C2]     0000000C2343A040 0000003C00000000 0000000C2343A040 ffff880c1ab7c180
e1000e: R  [0x0C3]     0000000C2343B040 0000003C00000000 0000000C2343B040 ffff880c1ab7c080
e1000e: R  [0x0C4]     00000006208A7040 0000003C00000000 00000006208A7040 ffff88061c6696c0
e1000e: R  [0x0C5]     000000062096C040 0000003C00000000 000000062096C040 ffff88061d9cc5c0
e1000e: R  [0x0C6]     00000006237DA040 0000003C00000000 00000006237DA040 ffff88061c6b6380
e1000e: R  [0x0C7]     00000006236CE040 0000003C00000000 00000006236CE040 ffff88062274a780
e1000e: R  [0x0C8]     0000000C1AA11040 0000003C00000000 0000000C1AA11040 ffff880c12112ac0
e1000e: R  [0x0C9]     0000000C235B0040 0000003C00000000 0000000C235B0040 ffff880c121129c0
e1000e: R  [0x0CA]     0000000C235B1040 0000003C00000000 0000000C235B1040 ffff880c121128c0
e1000e: R  [0x0CB]     0000000C2360C040 0000003C00000000 0000000C2360C040 ffff880c121127c0
e1000e: R  [0x0CC]     0000000C2360D040 0000003C00000000 0000000C2360D040 ffff880c121126c0
e1000e: R  [0x0CD]     0000000C1A932040 0000003C00000000 0000000C1A932040 ffff880c121125c0
e1000e: R  [0x0CE]     0000000C1A933040 0000003C00000000 0000000C1A933040 ffff880c121124c0
e1000e: R  [0x0CF]     0000000623B87040 0000003C00000000 0000000623B87040 ffff880623808a80
e1000e: R  [0x0D0]     000000061DA24040 0000003C00000000 000000061DA24040 ffff880619389480
e1000e: R  [0x0D1]     0000000C1ABBC040 0000003C00000000 0000000C1ABBC040 ffff880c121121c0
e1000e: R  [0x0D2]     000000062248F040 0000003C00000000 000000062248F040 ffff8806226fc2c0
e1000e: R  [0x0D3]     00000006225C9040 0000003C00000000 00000006225C9040 ffff88061e5620c0
e1000e: R  [0x0D4]     0000000622718040 0000003C00000000 0000000622718040 ffff8806226fcbc0
e1000e: R  [0x0D5]     0000000623AEE040 0000003C00000000 0000000623AEE040 ffff8806226fc5c0
e1000e: R  [0x0D6]     0000000C1E248040 0000003C00000000 0000000C1E248040 ffff880c1ac20b80
e1000e: R  [0x0D7]     0000000C1E249040 0000003C00000000 0000000C1E249040 ffff880c1ac20a80
e1000e: R  [0x0D8]     0000000C12122040 0000003C00000000 0000000C12122040 ffff880c1ac20980
e1000e: R  [0x0D9]     0000000C12123040 0000003C00000000 0000000C12123040 ffff880c1ac20880
e1000e: R  [0x0DA]     0000000C208C8040 0000003C00000000 0000000C208C8040 ffff880c1ac20780
e1000e: R  [0x0DB]     0000000C208C9040 0000005C00020000 0000000C208C9040 ffff880c1ac20680
e1000e: R  [0x0DC]     0000000C1E292040 0000005C00020000 0000000C1E292040 ffff880c1ac20580
e1000e: R  [0x0DD]     0000000C1E293040 0000005C00020000 0000000C1E293040 ffff880c1ac20480
e1000e: R  [0x0DE]     0000000620A09040 0000005C00020000 0000000620A09040 ffff880619389280
e1000e: R  [0x0DF]     0000000C1AB0F040 0000003C00000000 0000000C1AB0F040 ffff880c1ac20280
e1000e: R  [0x0E0]     00000006209F4040 0000004000020000 00000006209F4040 ffff88061e562ac0
e1000e: R  [0x0E1]     00000006227FC040 0000003C00000000 00000006227FC040 ffff88061d8f96c0
e1000e: R  [0x0E2]     0000000620B6F040 0000003C00000000 0000000620B6F040 ffff88061e5626c0
e1000e: R  [0x0E3]     00000006237C5040 0000003C00000000 00000006237C5040 ffff88061d8f94c0
e1000e: R  [0x0E4]     0000000C1ABE5040 0000003C00000000 0000000C1ABE5040 ffff880c12008cc0
e1000e: R  [0x0E5]     000000062097B040 0000003C00000000 000000062097B040 ffff8806239b18c0
e1000e: R  [0x0E6]     0000000C203CB040 0000003C00000000 0000000C203CB040 ffff880c12008ac0
e1000e: R  [0x0E7]     0000000C23DA6040 0000003C00000000 0000000C23DA6040 ffff880c120089c0
e1000e: R  [0x0E8]     000000061E43B040 0000003C00000000 000000061E43B040 ffff8806208dc080
e1000e: R  [0x0E9]     00000006224F5040 0000003C00000000 00000006224F5040 ffff880617d4abc0
e1000e: R  [0x0EA]     0000000C23901040 0000003C00000000 0000000C23901040 ffff880c120086c0
e1000e: R  [0x0EB]     0000000C21F5E040 0000003C00000000 0000000C21F5E040 ffff880c120085c0
e1000e: R  [0x0EC]     0000000C21F5F040 0000003C00000000 0000000C21F5F040 ffff880c120084c0
e1000e: R  [0x0ED]     0000000C1AB0A040 0000003C00000000 0000000C1AB0A040 ffff880c120083c0
e1000e: R  [0x0EE]     000000061E566040 0000003C00000000 000000061E566040 ffff8806238319c0
e1000e: R  [0x0EF]     0000000C23996040 0000003C00000000 0000000C23996040 ffff880c120081c0
e1000e: R  [0x0F0]     0000000C23997040 0000003C00000000 0000000C23997040 ffff880c120080c0
e1000e: R  [0x0F1]     0000000C1AAC1040 0000003C00000000 0000000C1AAC1040 ffff880c1aac0e80
e1000e: R  [0x0F2]     0000000C238D2040 0000003C00000000 0000000C238D2040 ffff880c1aac0d80
e1000e: R  [0x0F3]     000000061C6A5040 0000003C00000000 000000061C6A5040 ffff88061c6a8480
e1000e: R  [0x0F4]     0000000620A8B040 0000003C00000000 0000000620A8B040 ffff8806227b7c80
e1000e: R  [0x0F5]     0000000C1AA8D040 0000003C00000000 0000000C1AA8D040 ffff880c1aac0a80
e1000e: R  [0x0F6]     0000000C1ABFC040 0000003C00000000 0000000C1ABFC040 ffff880c1aac0980
e1000e: R  [0x0F7]     00000006209CD040 0000003C00000000 00000006209CD040 ffff8806227b7980
e1000e: R  [0x0F8]     0000000620BDD040 0000003C00000000 0000000620BDD040 ffff880623722380
e1000e: R  [0x0F9]     0000000C203B7040 0000003C00000000 0000000C203B7040 ffff880c1aac0680
e1000e: R  [0x0FA]     00000006224B5040 0000003C00000000 00000006224B5040 ffff880617d4a1c0
e1000e: R  [0x0FB]     000000061C5F2040 0000003C00000000 000000061C5F2040 ffff880623722e80
e1000e: R  [0x0FC]     0000000C1A9B0040 0000003C00000000 0000000C1A9B0040 ffff880c1aac0380
e1000e: R  [0x0FD]     0000000C1A9B1040 0000003C00000000 0000000C1A9B1040 ffff880c1aac0280
e1000e: R  [0x0FE]     0000000623A9B040 0000003C00000000 0000000623A9B040 ffff8806230b4680
e1000e: R  [0x0FF]     0000000623B35040 0000003C00000000 0000000623B35040 ffff8806224bb680
e1000e 0000:05:00.0: eth0: Reset adapter
e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
e1000e 0000:05:00.0: eth0: Detected Hardware Unit Hang:
  TDH                  <9>
  TDT                  <11>
  next_to_use          <11>
  next_to_clean        <7>
buffer_info[next_to_clean]:
  time_stamp           <1034c4fe7>
  next_to_watch        <a>
  jiffies              <1034c5f00>
  next_to_watch.status <0>
MAC Status             <80387>
PHY Status             <792d>
PHY 1000BASE-T Status  <3c00>
PHY Extended Status    <3000>
PCI Status             <10>
e1000e 0000:05:00.0: eth0: Detected Hardware Unit Hang:
  TDH                  <9>
  TDT                  <11>
  next_to_use          <11>
  next_to_clean        <7>
buffer_info[next_to_clean]:
  time_stamp           <1034c4fe7>
  next_to_watch        <a>
  jiffies              <1034c6ea0>
  next_to_watch.status <0>
MAC Status             <80387>
PHY Status             <792d>
PHY 1000BASE-T Status  <3c00>
PHY Extended Status    <3000>
PCI Status             <10>
e1000e 0000:05:00.0: Net device Info
e1000e: Device Name     state            trans_start      last_rx
e1000e: eth0            0000000000000003 00000001034C4FE7 0000000000000000
e1000e 0000:05:00.0: Register Dump
e1000e:  Register Name   Value
e1000e: CTRL            180c0241
e1000e: STATUS          00080387
e1000e: CTRL_EXT        181400c0
e1000e: ICR             00000000
e1000e: RCTL            04048002
e1000e: RDLEN           00001000
e1000e: RDH             00000068
e1000e: RDT             00000060
e1000e: RDTR            00000020
e1000e: RXDCTL[0-1]     01040420 01040420
e1000e: ERT             00000000
e1000e: RDBAL           23852000
e1000e: RDBAH           0000000c
e1000e: RDFH            00000ff0
e1000e: RDFT            00000ff0
e1000e: RDFHS           00000ff0
e1000e: RDFTS           00000ff0
e1000e: RDFPC           00000000
e1000e: TCTL            3003f00a
e1000e: TDBAL           1210c000
e1000e: TDBAH           0000000c
e1000e: TDLEN           00001000
e1000e: TDH             00000009
e1000e: TDT             00000011
e1000e: TIDV            00000008
e1000e: TXDCTL[0-1]     0145011f 0145011f
e1000e: TADV            00000020
e1000e: TARC[0-1]       07a00403 07400403
e1000e: TDFH            00001540
e1000e: TDFT            00001548
e1000e: TDFHS           00001540
e1000e: TDFTS           00001540
e1000e: TDFPC           00000000
e1000e 0000:05:00.0: Tx Ring Summary
e1000e: Queue [NTU] [NTC] [bi(ntc)->dma  ] leng ntw timestamp
e1000e:      0    11     7 0000000000000000 0000   A 00000001034C4FE7
e1000e 0000:05:00.0: Tx Ring Dump
e1000e: Tl[desc]     [address 63:0  ] [SpeCssSCmCsLen] [bi->dma       ] leng  ntw timestamp        bi->skb <-- Legacy format
e1000e: Tc[desc]     [Ce CoCsIpceCoS] [MssHlRSCm0Plen] [bi->dma       ] leng  ntw timestamp        bi->skb <-- Ext Context format
e1000e: Td[desc]     [address 63:0  ] [VlaPoRSCm1Dlen] [bi->dma       ] leng  ntw timestamp        bi->skb <-- Ext Data format
e1000e: Tc[0x000]    0000322200000000 0000000021000000 0000000000000000 0000    2 0000000000000000 (null)
e1000e: Td[0x001]    00000006226FDD0A 0000000022100036 0000000000000000 0036    1 0000000000000000 (null)
e1000e: Td[0x002]    0000000C201E787C 00000000AB1005B4 0000000000000000 05B4    2 0000000000000000 (null)
e1000e: Tc[0x003]    000032220021180E 0000000027000B68 0000000000000000 0000    6 0000000000000000 (null)
e1000e: Td[0x004]    0000000620B9E50A 000000002610003A 0000000000000000 003A    4 0000000000000000 (null)
e1000e: Td[0x005]    000000062407A504 0000000026100AFC 0000000000000000 0AFC    5 0000000000000000 (null)
e1000e: Td[0x006]    0000000620B62000 00000000AF100000 0000000000000000 0068    6 0000000000000000 (null)
e1000e: Tc[0x007]    0000322200000000 0000000021000000 0000000000000000 0000    A 00000001034C4FE7 (null) NTC
e1000e: Td[0x008]    000000061D97E50A 0000020022100036 000000061D97E50A 0036    8 00000001034C4FE7 (null)
e1000e: Td[0x009]    0000000C201E7E30 00000200221001D0 0000000C201E7E30 01D0    9 00000001034C4FE7 (null)
e1000e: Td[0x00A]    0000000620BCE000 00000200AB1003E4 0000000620BCE000 03E4    A 00000001034C4FE7 ffff88062268bd70
e1000e: Tc[0x00B]    0000322200000000 0000000021000000 0000000000000000 0000    D 00000001034C4FE7 (null)
e1000e: Td[0x00C]    0000000623A2150A 0000020022100036 0000000623A2150A 0036    C 00000001034C4FE7 (null)
e1000e: Td[0x00D]    0000000620BCE3E4 00000200AB1005B4 0000000620BCE3E4 05B4    D 00000001034C4FE7 ffff88062268b970
e1000e: Tc[0x00E]    0000322200000000 0000000021000000 0000000000000000 0000   10 00000001034C4FE7 (null)
e1000e: Td[0x00F]    0000000623A21D0A 0000020022100036 0000000623A21D0A 0036    F 00000001034C4FE7 (null)
e1000e: Td[0x010]    0000000620BCE998 00000200AB1005B4 0000000620BCE998 05B4   10 00000001034C4FE7 ffff88062268b370
e1000e: Tl[0x011]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null) NTU
e1000e: Tl[0x012]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x013]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x014]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x015]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x016]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x017]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x018]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x019]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x01A]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x01B]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x01C]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x01D]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x01E]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x01F]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x020]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x021]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x022]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x023]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x024]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x025]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x026]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x027]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x028]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x029]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x02A]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x02B]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x02C]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x02D]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x02E]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x02F]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x030]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x031]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x032]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x033]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x034]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x035]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x036]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x037]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x038]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x039]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x03A]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x03B]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x03C]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x03D]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x03E]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x03F]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x040]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x041]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x042]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x043]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x044]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x045]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x046]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x047]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x048]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x049]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x04A]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x04B]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x04C]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x04D]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x04E]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x04F]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x050]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x051]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x052]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x053]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x054]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x055]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x056]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x057]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x058]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x059]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x05A]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x05B]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x05C]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x05D]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x05E]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x05F]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x060]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x061]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x062]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x063]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x064]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x065]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x066]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x067]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x068]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x069]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x06A]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x06B]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x06C]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x06D]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x06E]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x06F]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x070]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x071]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x072]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x073]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x074]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x075]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x076]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x077]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x078]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x079]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x07A]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x07B]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x07C]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x07D]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x07E]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x07F]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x080]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x081]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x082]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x083]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x084]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x085]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x086]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x087]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x088]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x089]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x08A]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x08B]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x08C]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x08D]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x08E]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x08F]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x090]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x091]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x092]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x093]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x094]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x095]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x096]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x097]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x098]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x099]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x09A]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x09B]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x09C]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x09D]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x09E]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x09F]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A0]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A1]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A2]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A3]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A4]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A5]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A6]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A7]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A8]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0A9]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0AA]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0AB]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0AC]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0AD]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0AE]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0AF]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B0]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B1]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B2]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B3]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B4]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B5]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B6]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B7]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B8]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0B9]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0BA]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0BB]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0BC]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0BD]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0BE]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0BF]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C0]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C1]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C2]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C3]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C4]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C5]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C6]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C7]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C8]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0C9]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0CA]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0CB]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0CC]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0CD]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0CE]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0CF]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D0]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D1]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D2]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D3]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D4]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D5]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D6]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D7]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D8]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0D9]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0DA]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0DB]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0DC]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0DD]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0DE]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0DF]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E0]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E1]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E2]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E3]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E4]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E5]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E6]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E7]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E8]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0E9]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0EA]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0EB]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0EC]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0ED]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0EE]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0EF]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F0]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F1]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F2]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F3]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F4]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F5]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F6]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F7]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F8]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0F9]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0FA]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0FB]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0FC]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0FD]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0FE]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e: Tl[0x0FF]    0000000000000000 0000000000000000 0000000000000000 0000    0 0000000000000000 (null)
e1000e 0000:05:00.0: Rx Ring Summary
e1000e: Queue [NTU] [NTC]
e1000e:      0    67    68
e1000e 0000:05:00.0: Rx Ring Dump
e1000e: R  [desc]      [buf addr 63:0 ] [reserved 63:0 ] [bi->dma       ] [bi->skb] <-- Ext (Read) format
e1000e: RWB[desc]      [cs ipid    mrq] [vt   ln xe  xs] [bi->skb] <-- Ext (Write-Back) format
e1000e: R  [0x000]     0000000623B35040 0000003C00000000 0000000623B35040 ffff8806224bb680
e1000e: R  [0x001]     0000000623A9B040 0000003C00000000 0000000623A9B040 ffff8806230b4680
e1000e: R  [0x002]     000000061C5F2040 0000003C00000000 000000061C5F2040 ffff880623722e80
e1000e: R  [0x003]     00000006224B5040 0000003C00000000 00000006224B5040 ffff880617d4a1c0
e1000e: R  [0x004]     0000000620BDD040 0000003C00000000 0000000620BDD040 ffff880623722380
e1000e: R  [0x005]     00000006209CD040 0000003C00000000 00000006209CD040 ffff8806227b7980
e1000e: R  [0x006]     0000000620A8B040 0000003C00000000 0000000620A8B040 ffff8806227b7c80
e1000e: R  [0x007]     000000061C6A5040 0000003C00000000 000000061C6A5040 ffff88061c6a8480
e1000e: R  [0x008]     000000061E566040 0000003C00000000 000000061E566040 ffff8806238319c0
e1000e: R  [0x009]     00000006224F5040 0000003C00000000 00000006224F5040 ffff880617d4abc0
e1000e: R  [0x00A]     000000061E43B040 0000003C00000000 000000061E43B040 ffff8806208dc080
e1000e: R  [0x00B]     000000062097B040 0000003C00000000 000000062097B040 ffff8806239b18c0
e1000e: R  [0x00C]     00000006237C5040 0000005C00020000 00000006237C5040 ffff88061d8f94c0
e1000e: R  [0x00D]     0000000620B6F040 0000005C00020000 0000000620B6F040 ffff88061e5626c0
e1000e: R  [0x00E]     00000006227FC040 0000005C00020000 00000006227FC040 ffff88061d8f96c0
e1000e: R  [0x00F]     00000006209F4040 0000005C00020000 00000006209F4040 ffff88061e562ac0
e1000e: R  [0x010]     0000000620A09040 0000005C00020000 0000000620A09040 ffff880619389280
e1000e: R  [0x011]     0000000623AEE040 0000003C00000000 0000000623AEE040 ffff8806226fc5c0
e1000e: R  [0x012]     00000006225C9040 0000003C00000000 00000006225C9040 ffff88061e5620c0
e1000e: R  [0x013]     0000000622718040 0000003C00000000 0000000622718040 ffff8806226fcbc0
e1000e: R  [0x014]     000000062248F040 0000003C00000000 000000062248F040 ffff8806226fc2c0
e1000e: R  [0x015]     000000061DA24040 0000003C00000000 000000061DA24040 ffff880619389480
e1000e: R  [0x016]     0000000623B87040 0000003C00000000 0000000623B87040 ffff880623808a80
e1000e: R  [0x017]     00000006236CE040 0000003C00000000 00000006236CE040 ffff88062274a780
e1000e: R  [0x018]     00000006237DA040 0000003C00000000 00000006237DA040 ffff88061c6b6380
e1000e: R  [0x019]     000000062096C040 0000003C00000000 000000062096C040 ffff88061d9cc5c0
e1000e: R  [0x01A]     00000006208A7040 0000003C00000000 00000006208A7040 ffff88061c6696c0
e1000e: R  [0x01B]     000000062333A040 0000003C00000000 000000062333A040 ffff880620ba1180
e1000e: R  [0x01C]     000000061C41F040 0000003C00000000 000000061C41F040 ffff880623884380
e1000e: R  [0x01D]     0000000623ACD040 0000003C00000000 0000000623ACD040 ffff8806227b7380
e1000e: R  [0x01E]     0000000620911040 0000003C00000000 0000000620911040 ffff8806230566c0
e1000e: R  [0x01F]     000000061E553040 0000003C00000000 000000061E553040 ffff8806239b14c0
e1000e: R  [0x020]     000000061DA5D040 0000003C00000000 000000061DA5D040 ffff880619389c80
e1000e: R  [0x021]     00000006238F5040 0000003C00000000 00000006238F5040 ffff88061e533580
e1000e: R  [0x022]     000000061DBA5040 0000003C00000000 000000061DBA5040 ffff88061c669dc0
e1000e: R  [0x023]     0000000623F6F040 0000003C00000000 0000000623F6F040 ffff880623884880
e1000e: R  [0x024]     0000000617E98040 0000003C00000000 0000000617E98040 ffff88062405b380
e1000e: R  [0x025]     000000061E534040 0000003C00000000 000000061E534040 ffff88062405b480
e1000e: R  [0x026]     00000006227F4040 0000003C00000000 00000006227F4040 ffff8806238a0a80
e1000e: R  [0x027]     0000000623A6A040 0000003C00000000 0000000623A6A040 ffff88062405bd80
e1000e: R  [0x028]     000000061E706040 0000003C00000000 000000061E706040 ffff8806224a97c0
e1000e: R  [0x029]     0000000623641040 0000003C00000000 0000000623641040 ffff880623fcde80
e1000e: R  [0x02A]     000000061E572040 0000003C00000000 000000061E572040 ffff880620a79180
e1000e: R  [0x02B]     0000000620B60040 0000003C00000000 0000000620B60040 ffff8806238d8080
e1000e: R  [0x02C]     000000061C455040 0000003C00000000 000000061C455040 ffff88061e415780
e1000e: R  [0x02D]     0000000623BF8040 0000010300020000 0000000623BF8040 ffff88061e46cbc0
e1000e: R  [0x02E]     000000061C66B040 0000010300020000 000000061C66B040 ffff88061e5624c0
e1000e: R  [0x02F]     000000061E4D2040 0000010300020000 000000061E4D2040 ffff8806227b7780
e1000e: R  [0x030]     000000061E63C040 0000010300020000 000000061E63C040 ffff88061e415c80
e1000e: R  [0x031]     000000061E46F040 0000005C00020000 000000061E46F040 ffff8806224bba80
e1000e: R  [0x032]     000000061D895040 0000005C00020000 000000061D895040 ffff8806224bb180
e1000e: R  [0x033]     000000061E7E4040 0000005C00020000 000000061E7E4040 ffff8806187d01c0
e1000e: R  [0x034]     000000061E71B040 0000005C00020000 000000061E71B040 ffff88062405b680
e1000e: R  [0x035]     0000000620A3E040 0000003C00000000 0000000620A3E040 ffff8806187d07c0
e1000e: R  [0x036]     0000000617D02040 0000003C00000000 0000000617D02040 ffff88061e562ec0
e1000e: R  [0x037]     0000000617EA1040 0000003C00000000 0000000617EA1040 ffff88062362ddc0
e1000e: R  [0x038]     00000006224BA040 0000003C00000000 00000006224BA040 ffff88061e415280
e1000e: R  [0x039]     000000061E78E040 0000003C00000000 000000061E78E040 ffff880623722480
e1000e: R  [0x03A]     000000061DAC5040 0000003C00000000 000000061DAC5040 ffff880617cfab80
e1000e: R  [0x03B]     000000061E5C0040 0000003C00000000 000000061E5C0040 ffff88061c6b6d80
e1000e: R  [0x03C]     0000000623AFD040 0000003C00000000 0000000623AFD040 ffff88062405b080
e1000e: R  [0x03D]     000000061DB1B040 0000003C00000000 000000061DB1B040 ffff880620b6e7c0
e1000e: R  [0x03E]     0000000623478040 0000003C00000000 0000000623478040 ffff8806237a2e80
e1000e: R  [0x03F]     000000061D8D4040 0000003C00000000 000000061D8D4040 ffff88061c6b6e80
e1000e: R  [0x040]     000000061E46E040 0000003C00000000 000000061E46E040 ffff88061c6b6b80
e1000e: R  [0x041]     000000061E5BC040 0000003C00000000 000000061E5BC040 ffff880620b6e5c0
e1000e: R  [0x042]     00000006230F3040 0000003C00000000 00000006230F3040 ffff880620b6eac0
e1000e: R  [0x043]     0000000620AFE040 0000003C00000000 0000000620AFE040 ffff88061d8d6580
e1000e: R  [0x044]     000000061E400040 0000003C00000000 000000061E400040 ffff880623884b80
e1000e: R  [0x045]     0000000623B1A040 0000003C00000000 0000000623B1A040 ffff880620b6eec0
e1000e: R  [0x046]     0000000622430040 0000003C00000000 0000000622430040 ffff88061e5dcdc0
e1000e: R  [0x047]     00000006239A4040 0000003C00000000 00000006239A4040 ffff88061d8d6080
e1000e: R  [0x048]     00000006227DD040 0000003C00000000 00000006227DD040 ffff88062362d1c0
e1000e: R  [0x049]     00000006224D9040 0000003C00000000 00000006224D9040 ffff880623831bc0
e1000e: R  [0x04A]     00000006208E2040 0000003C00000000 00000006208E2040 ffff8806239b15c0
e1000e: R  [0x04B]     0000000622707040 0000003C00000000 0000000622707040 ffff8806238318c0
e1000e: R  [0x04C]     000000062365F040 0000003C00000000 000000062365F040 ffff880623056cc0
e1000e: R  [0x04D]     000000061D9AA040 0000003C00000000 000000061D9AA040 ffff88061db40580
e1000e: R  [0x04E]     0000000623446040 0000003C00000000 0000000623446040 ffff88061c6b6680
e1000e: R  [0x04F]     000000061E63F040 0000005C00020000 000000061E63F040 ffff88061e63eec0
e1000e: R  [0x050]     0000000622752040 0000005C00020000 0000000622752040 ffff8806224bb580
e1000e: R  [0x051]     000000061E442040 0000005C00020000 000000061E442040 ffff8806230b4c80
e1000e: R  [0x052]     000000061A2C6040 0000005C00020000 000000061A2C6040 ffff88061db40880
e1000e: R  [0x053]     0000000617C20040 0000003C00000000 0000000617C20040 ffff88061db371c0
e1000e: R  [0x054]     00000006187F9040 0000003C00000000 00000006187F9040 ffff8806187f8e80
e1000e: R  [0x055]     0000000623997040 0000003C00000000 0000000623997040 ffff8806230560c0
e1000e: R  [0x056]     0000000622599040 0000003C00000000 0000000622599040 ffff88062345eec0
e1000e: R  [0x057]     0000000620963040 0000003C00000000 0000000620963040 ffff8806224bbb80
e1000e: R  [0x058]     000000061C417040 0000003C00000000 000000061C417040 ffff88061d8d6480
e1000e: R  [0x059]     000000061DBBA040 0000003C00000000 000000061DBBA040 ffff88061e614880
e1000e: R  [0x05A]     0000000617D61040 0000003C00000000 0000000617D61040 ffff8806224d2280
e1000e: R  [0x05B]     000000062388A040 0000003C00000000 000000062388A040 ffff880622578480
e1000e: R  [0x05C]     000000061D938040 0000003C00000000 000000061D938040 ffff8806224bbd80
e1000e: R  [0x05D]     00000006209B4040 0000003C00000000 00000006209B4040 ffff88061d8d6380
e1000e: R  [0x05E]     000000061DB3F040 0000003C00000000 000000061DB3F040 ffff8806230b4880
e1000e: R  [0x05F]     0000000620917040 0000003C00000000 0000000620917040 ffff88061d8f95c0
e1000e: R  [0x060]     000000061E777040 0000003C00000000 000000061E777040 ffff880623722280
e1000e: R  [0x061]     000000062275F040 0000003C00000000 000000062275F040 ffff88061e5dc4c0
e1000e: R  [0x062]     0000000622659040 0000003C00000000 0000000622659040 ffff88061e46cdc0
e1000e: R  [0x063]     00000006224E5040 0000003C00000000 00000006224E5040 ffff88061e46cec0
e1000e: R  [0x064]     000000061D930040 0000003C00000000 000000061D930040 ffff880623894680
e1000e: R  [0x065]     000000061DBA8040 0000003C00000000 000000061DBA8040 ffff88061e46c9c0
e1000e: R  [0x066]     00000006231E0040 0000003C00000000 00000006231E0040 ffff88061e46c8c0
e1000e: R  [0x067]     BF39000000000000 0000003C00000000 0000000000000000 ffff88061e46c3c0 NTU
e1000e: R  [0x068]     00000006225B7040 0000003C00000000 00000006225B7040 ffff8806187e2ac0 NTC
e1000e: R  [0x069]     0000000623663040 0000003C00000000 0000000623663040 ffff88061db379c0
e1000e: R  [0x06A]     000000061E799040 0000003C00000000 000000061E799040 ffff8806187e28c0
e1000e: R  [0x06B]     00000006237A7040 0000005C00020000 00000006237A7040 ffff8806187e27c0
e1000e: R  [0x06C]     000000061D872040 0000005C00020000 000000061D872040 ffff88061e6c90c0
e1000e: R  [0x06D]     0000000623338040 0000005C00020000 0000000623338040 ffff88061db370c0
e1000e: R  [0x06E]     000000061E408040 0000005C00020000 000000061E408040 ffff88062362d6c0
e1000e: R  [0x06F]     0000000620919040 0000003C00000000 0000000620919040 ffff8806230676c0
e1000e: R  [0x070]     000000061E7E2040 0000003C00000000 000000061E7E2040 ffff8806187e2bc0
e1000e: R  [0x071]     00000006227FB040 0000003C00000000 00000006227FB040 ffff8806237a2b80
e1000e: R  [0x072]     00000006247B8040 0000003C00000000 00000006247B8040 ffff880623894480
e1000e: R  [0x073]     0000000620BCD040 0000003C00000000 0000000620BCD040 ffff880617f3e280
e1000e: R  [0x074]     000000061DA0E040 0000003C00000000 000000061DA0E040 ffff8806237a2a80
e1000e: R  [0x075]     000000061C528040 0000003C00000000 000000061C528040 ffff8806237a2980
e1000e: R  [0x076]     000000062267C040 0000003C00000000 000000062267C040 ffff8806237a2880
e1000e: R  [0x077]     00000006238E0040 0000003C00000000 00000006238E0040 ffff8806237a2780
e1000e: R  [0x078]     000000061E529040 0000003C00000000 000000061E529040 ffff8806237a2680
e1000e: R  [0x079]     000000062091A040 0000015600020000 000000062091A040 ffff8806237a2580
e1000e: R  [0x07A]     000000061DAEC040 0000003C00000000 000000061DAEC040 ffff8806237a2480
e1000e: R  [0x07B]     000000062246C040 0000003C00000000 000000062246C040 ffff8806237a2380
e1000e: R  [0x07C]     0000000620B05040 0000003C00000000 0000000620B05040 ffff8806237a2280
e1000e: R  [0x07D]     00000006225EA040 0000003C00000000 00000006225EA040 ffff8806237a2180
e1000e: R  [0x07E]     000000062279E040 0000003C00000000 000000062279E040 ffff8806237a2080
e1000e: R  [0x07F]     0000000620923040 0000003C00000000 0000000620923040 ffff88061db375c0
e1000e: R  [0x080]     0000000623886040 0000003C00000000 0000000623886040 ffff88061db374c0
e1000e: R  [0x081]     000000062086E040 0000003C00000000 000000062086E040 ffff88061db373c0
e1000e: R  [0x082]     0000000623A11040 0000003C00000000 0000000623A11040 ffff88061db372c0
e1000e: R  [0x083]     0000000620992040 0000003C00000000 0000000620992040 ffff88061db377c0
e1000e: R  [0x084]     000000061E771040 0000003C00000000 000000061E771040 ffff88061d98b0c0
e1000e: R  [0x085]     000000061E41F040 0000003C00000000 000000061E41F040 ffff88061d98b1c0
e1000e: R  [0x086]     0000000623004040 0000005C00020000 0000000623004040 ffff88061d98b2c0
e1000e: R  [0x087]     0000000622442040 0000005C00020000 0000000622442040 ffff88061d98b3c0
e1000e: R  [0x088]     000000062335C040 0000005C00020000 000000062335C040 ffff88061d98b4c0
e1000e: R  [0x089]     0000000623366040 0000005C00020000 0000000623366040 ffff88061d98b5c0
e1000e: R  [0x08A]     000000061E67C040 0000003C00000000 000000061E67C040 ffff88061d98b6c0
e1000e: R  [0x08B]     000000061E74D040 0000003C00000000 000000061E74D040 ffff880617f3e080
e1000e: R  [0x08C]     000000061DB2F040 0000003C00000000 000000061DB2F040 ffff880623894580
e1000e: R  [0x08D]     000000061E7DB040 0000003C00000000 000000061E7DB040 ffff880623894180
e1000e: R  [0x08E]     0000000620867040 0000003C00000000 0000000620867040 ffff8806187e2ec0
e1000e: R  [0x08F]     000000062268E040 0000003C00000000 000000062268E040 ffff88061e6c9ac0
e1000e: R  [0x090]     0000000623093040 0000003C00000000 0000000623093040 ffff8806237a2c80
e1000e: R  [0x091]     000000062330A040 0000003C00000000 000000062330A040 ffff880623fcd880
e1000e: R  [0x092]     000000061D80F040 0000003C00000000 000000061D80F040 ffff880620afbe80
e1000e: R  [0x093]     0000000623F94040 0000003C00000000 0000000623F94040 ffff880620afbd80
e1000e: R  [0x094]     0000000620AA4040 0000003C00000000 0000000620AA4040 ffff880620afbc80
e1000e: R  [0x095]     0000000623364040 0000003C00000000 0000000623364040 ffff880620afbb80
e1000e: R  [0x096]     000000061D97C040 0000003C00000000 000000061D97C040 ffff880620afba80
e1000e: R  [0x097]     0000000623315040 0000003C00000000 0000000623315040 ffff880620afb980
e1000e: R  [0x098]     0000000620882040 0000003C00000000 0000000620882040 ffff880620afb880
e1000e: R  [0x099]     00000006226F8040 0000003C00000000 00000006226F8040 ffff880620afb780
e1000e: R  [0x09A]     0000000620BD4040 0000003C00000000 0000000620BD4040 ffff880620afb680
e1000e: R  [0x09B]     000000062253F040 0000003C00000000 000000062253F040 ffff880620afb580
e1000e: R  [0x09C]     00000006233ED040 0000003C00000000 00000006233ED040 ffff880620afb480
e1000e: R  [0x09D]     00000006237D5040 0000003C00000000 00000006237D5040 ffff880620afb380
e1000e: R  [0x09E]     000000062374F040 0000003C00000000 000000062374F040 ffff880620afb280
e1000e: R  [0x09F]     0000000617D53040 0000003C00000000 0000000617D53040 ffff880620afb180
e1000e: R  [0x0A0]     000000062096B040 0000003C00000000 000000062096B040 ffff880620afb080
e1000e: R  [0x0A1]     0000000620B90040 0000003C00000000 0000000620B90040 ffff88061c532ec0
e1000e: R  [0x0A2]     000000061E486040 0000003C00000000 000000061E486040 ffff88061c532dc0
e1000e: R  [0x0A3]     000000061E4E0040 0000003C00000000 000000061E4E0040 ffff88061c532cc0
e1000e: R  [0x0A4]     0000000623B7B040 0000003C00000000 0000000623B7B040 ffff88061c532bc0
e1000e: R  [0x0A5]     00000006208C8040 0000003C00000000 00000006208C8040 ffff88061c532ac0
e1000e: R  [0x0A6]     0000000623FF7040 0000003C00000000 0000000623FF7040 ffff88061c5329c0
e1000e: R  [0x0A7]     000000061C45C040 0000005C00020000 000000061C45C040 ffff88061c5328c0
e1000e: R  [0x0A8]     00000006227BD040 0000005C00020000 00000006227BD040 ffff88061c5327c0
e1000e: R  [0x0A9]     0000000617C0A040 0000005C00020000 0000000617C0A040 ffff88061c5326c0
e1000e: R  [0x0AA]     0000000620A95040 0000005C00020000 0000000620A95040 ffff88061c5325c0
e1000e: R  [0x0AB]     000000061C454040 0000003C00000000 000000061C454040 ffff88061c5324c0
e1000e: R  [0x0AC]     000000061E4AB040 0000003C00000000 000000061E4AB040 ffff88061c5323c0
e1000e: R  [0x0AD]     0000000623899040 0000003C00000000 0000000623899040 ffff88061c5322c0
e1000e: R  [0x0AE]     000000061D8BF040 0000003C00000000 000000061D8BF040 ffff88061c5321c0
e1000e: R  [0x0AF]     0000000623362040 0000003C00000000 0000000623362040 ffff88061c5320c0
e1000e: R  [0x0B0]     0000000617C86040 0000003C00000000 0000000617C86040 ffff880623363e80
e1000e: R  [0x0B1]     0000000617C87040 0000003C00000000 0000000617C87040 ffff880623363d80
e1000e: R  [0x0B2]     000000061D882040 0000003C00000000 000000061D882040 ffff880623363c80
e1000e: R  [0x0B3]     000000061D883040 0000003C00000000 000000061D883040 ffff880623363b80
e1000e: R  [0x0B4]     000000061C4BA040 0000003C00000000 000000061C4BA040 ffff880623363a80
e1000e: R  [0x0B5]     000000061C4BB040 0000003C00000000 000000061C4BB040 ffff880623363980
e1000e: R  [0x0B6]     00000006209AE040 0000003C00000000 00000006209AE040 ffff880623363880
e1000e: R  [0x0B7]     00000006209AF040 0000003C00000000 00000006209AF040 ffff880623363780
e1000e: R  [0x0B8]     000000061E672040 0000003C00000000 000000061E672040 ffff880623363680
e1000e: R  [0x0B9]     000000061E673040 0000003C00000000 000000061E673040 ffff880623363580
e1000e: R  [0x0BA]     000000061E41C040 0000003C00000000 000000061E41C040 ffff880623363480
e1000e: R  [0x0BB]     000000061E41D040 0000003C00000000 000000061E41D040 ffff880623363380
e1000e: R  [0x0BC]     0000000617C06040 0000003C00000000 0000000617C06040 ffff880623363280
e1000e: R  [0x0BD]     0000000617C07040 0000003C00000000 0000000617C07040 ffff880623363180
e1000e: R  [0x0BE]     0000000620BB4040 0000003C00000000 0000000620BB4040 ffff880623363080
e1000e: R  [0x0BF]     0000000623772040 0000003C00000000 0000000623772040 ffff880620bb5ec0
e1000e: R  [0x0C0]     0000000623773040 0000003C00000000 0000000623773040 ffff880620bb5dc0
e1000e: R  [0x0C1]     0000000623350040 0000003C00000000 0000000623350040 ffff880620bb5cc0
e1000e: R  [0x0C2]     0000000623351040 0000003C00000000 0000000623351040 ffff880620bb5bc0
e1000e: R  [0x0C3]     00000006239D0040 0000003C00000000 00000006239D0040 ffff880620bb5ac0
e1000e: R  [0x0C4]     00000006239D1040 0000003C00000000 00000006239D1040 ffff880620bb59c0
e1000e: R  [0x0C5]     000000061C6CE040 0000003C00000000 000000061C6CE040 ffff880620bb58c0
e1000e: R  [0x0C6]     000000061C6CF040 0000003C00000000 000000061C6CF040 ffff880620bb57c0
e1000e: R  [0x0C7]     0000000620A32040 0000003C00000000 0000000620A32040 ffff880620bb56c0
e1000e: R  [0x0C8]     0000000620A33040 0000003C00000000 0000000620A33040 ffff880620bb55c0
e1000e: R  [0x0C9]     000000061D8A0040 0000003C00000000 000000061D8A0040 ffff880620bb54c0
e1000e: R  [0x0CA]     000000061D8A1040 0000003C00000000 000000061D8A1040 ffff880620bb53c0
e1000e: R  [0x0CB]     000000061DBA6040 0000003C00000000 000000061DBA6040 ffff880620bb52c0
e1000e: R  [0x0CC]     000000061DBA7040 0000003C00000000 000000061DBA7040 ffff880620bb51c0
e1000e: R  [0x0CD]     000000061E7A6040 0000003C00000000 000000061E7A6040 ffff880620bb50c0
e1000e: R  [0x0CE]     0000000623A72040 0000003C00000000 0000000623A72040 ffff88061e7a7e80
e1000e: R  [0x0CF]     0000000623A73040 0000003C00000000 0000000623A73040 ffff88061e7a7d80
e1000e: R  [0x0D0]     000000061D914040 0000005C00020000 000000061D914040 ffff88061e7a7c80
e1000e: R  [0x0D1]     000000061D915040 0000005C00020000 000000061D915040 ffff88061e7a7b80
e1000e: R  [0x0D2]     0000000623320040 0000005C00020000 0000000623320040 ffff88061e7a7a80
e1000e: R  [0x0D3]     0000000623321040 0000005C00020000 0000000623321040 ffff88061e7a7980
e1000e: R  [0x0D4]     0000000620A3A040 0000003C00000000 0000000620A3A040 ffff88061e7a7880
e1000e: R  [0x0D5]     0000000620A3B040 0000003C00000000 0000000620A3B040 ffff88061e7a7780
e1000e: R  [0x0D6]     000000061C4EC040 0000003C00000000 000000061C4EC040 ffff88061e7a7680
e1000e: R  [0x0D7]     000000061C4ED040 0000003C00000000 000000061C4ED040 ffff88061e7a7580
e1000e: R  [0x0D8]     000000061C586040 0000003C00000000 000000061C586040 ffff88061e7a7480
e1000e: R  [0x0D9]     000000061C587040 0000003C00000000 000000061C587040 ffff88061e7a7380
e1000e: R  [0x0DA]     0000000620B1A040 0000003C00000000 0000000620B1A040 ffff88061e7a7280
e1000e: R  [0x0DB]     0000000620B1B040 0000003C00000000 0000000620B1B040 ffff88061e7a7180
e1000e: R  [0x0DC]     00000006224F6040 0000003C00000000 00000006224F6040 ffff88061e7a7080
e1000e: R  [0x0DD]     00000006226B6040 0000003C00000000 00000006226B6040 ffff8806224f7ec0
e1000e: R  [0x0DE]     00000006226B7040 0000003C00000000 00000006226B7040 ffff8806224f7dc0
e1000e: R  [0x0DF]     000000061DB1E040 0000003C00000000 000000061DB1E040 ffff8806224f7cc0
e1000e: R  [0x0E0]     000000061DB1F040 0000003C00000000 000000061DB1F040 ffff8806224f7bc0
e1000e: R  [0x0E1]     000000061C59E040 0000003C00000000 000000061C59E040 ffff8806224f7ac0
e1000e: R  [0x0E2]     000000061C59F040 0000003C00000000 000000061C59F040 ffff8806224f79c0
e1000e: R  [0x0E3]     0000000620A12040 0000003C00000000 0000000620A12040 ffff8806224f78c0
e1000e: R  [0x0E4]     0000000620A13040 0000003C00000000 0000000620A13040 ffff8806224f77c0
e1000e: R  [0x0E5]     000000061C450040 0000003C00000000 000000061C450040 ffff8806224f76c0
e1000e: R  [0x0E6]     000000061C451040 0000005C00020000 000000061C451040 ffff8806224f75c0
e1000e: R  [0x0E7]     000000061E774040 0000003C00000000 000000061E774040 ffff8806224f74c0
e1000e: R  [0x0E8]     000000061E775040 0000003C00000000 000000061E775040 ffff8806224f73c0
e1000e: R  [0x0E9]     0000000623F6C040 0000003C00000000 0000000623F6C040 ffff8806224f72c0
e1000e: R  [0x0EA]     0000000623F6D040 0000003C00000000 0000000623F6D040 ffff8806224f71c0
e1000e: R  [0x0EB]     0000000623308040 0000003C00000000 0000000623308040 ffff8806224f70c0
e1000e: R  [0x0EC]     000000061E7F6040 0000003C00000000 000000061E7F6040 ffff880623309e80
e1000e: R  [0x0ED]     000000061E7F7040 0000005C00020000 000000061E7F7040 ffff880623309d80
e1000e: R  [0x0EE]     00000006224F8040 0000005C00020000 00000006224F8040 ffff880623309c80
e1000e: R  [0x0EF]     00000006224F9040 0000005C00020000 00000006224F9040 ffff880623309b80
e1000e: R  [0x0F0]     000000061C5A6040 0000005C00020000 000000061C5A6040 ffff880623309a80
e1000e: R  [0x0F1]     000000061C5A7040 0000003C00000000 000000061C5A7040 ffff880623309980
e1000e: R  [0x0F2]     0000000620996040 0000003C00000000 0000000620996040 ffff880623309880
e1000e: R  [0x0F3]     0000000620997040 0000003C00000000 0000000620997040 ffff880623309780
e1000e: R  [0x0F4]     0000000622544040 0000003C00000000 0000000622544040 ffff880623309680
e1000e: R  [0x0F5]     0000000622545040 0000003C00000000 0000000622545040 ffff880623309580
e1000e: R  [0x0F6]     000000061D8F4040 0000005600050000 000000061D8F4040 ffff880623309480
e1000e: R  [0x0F7]     000000061D8F5040 0000005600050000 000000061D8F5040 ffff880623309380
e1000e: R  [0x0F8]     0000000623AD8040 0000003C00000000 0000000623AD8040 ffff880623309280
e1000e: R  [0x0F9]     0000000623AD9040 0000003C00000000 0000000623AD9040 ffff880623309180
e1000e: R  [0x0FA]     00000006209CA040 0000003C00000000 00000006209CA040 ffff880623309080
e1000e: R  [0x0FB]     000000061C6BE040 0000003C00000000 000000061C6BE040 ffff8806209cbec0
e1000e: R  [0x0FC]     000000061C6BF040 0000003C00000000 000000061C6BF040 ffff8806209cbdc0
e1000e: R  [0x0FD]     000000062243E040 0000003C00000000 000000062243E040 ffff8806209cbcc0
e1000e: R  [0x0FE]     000000062243F040 0000003C00000000 000000062243F040 ffff8806209cbbc0
e1000e: R  [0x0FF]     0000000620AD2040 0000003C00000000 0000000620AD2040 ffff8806209cb9c0
e1000e 0000:05:00.0: eth0: Reset adapter
e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx


-- 
Oracle <http://www.oracle.com>
Joe Jin | Software Development Senior Manager | +8610.6106.5624
ORACLE | Linux and Virtualization
No. 24 Zhongguancun Software Park, Haidian District | 100193 Beijing 



------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit http://communities.intel.com/community/wired

^ permalink raw reply

* Re: [PATCH v2] net: cgroup: fix access the unallocated memory in netprio cgroup
From: Gao feng @ 2012-07-11  1:39 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: nhorman, linux-kernel, netdev, lizefan, tj, Eric Dumazet
In-Reply-To: <1341918530.3265.4839.camel@edumazet-glaptop>

于 2012年07月10日 19:08, Eric Dumazet 写道:
> On Tue, 2012-07-10 at 13:05 +0200, Eric Dumazet wrote:
>> On Tue, 2012-07-10 at 18:44 +0800, Gao feng wrote:
>>> there are some out of bound accesses in netprio cgroup.
>>
>>> -	update_netdev_tables();
>>> +	ret = extend_netdev_table(dev, max_len);
>>> +	if (ret < 0)
>>> +		goto out_free_devname;
>>> +
>>>  	ret = 0;
>>>  	rcu_read_lock();
>>>  	map = rcu_dereference(dev->priomap);
>>
>> Its unfortunately adding a bug.
>>
>> extend_netdev_table() is protected by RTNL.
> 
> Please test your next patch using :
> 
> CONFIG_LOCKDEP=y
> CONFIG_PROVE_RCU=y
> 
> Because rtnl_dereference() should shout if you dont hold RTNL
> 

Oops, I miss it.
Thanks Eric & Neil,I will test v3 patch with these two CONFIG.

^ permalink raw reply

* Re: [RFC] net:phy:phylib: phy shares the same interrupt with mac
From: Jason Lin @ 2012-07-11  1:32 UTC (permalink / raw)
  To: Florian Fainelli; +Cc: netdev
In-Reply-To: <CAGCDX1mVk-4JpjDhWxJdsssmXCM+NM8sPOPyjKBZwbqMj-UTvA@mail.gmail.com>

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=GB2312, Size: 7855 bytes --]

Dear :
I describe my situation again.
In my hardware design, the interrupt (INT) pin of phy is connected to
the INT input pin of MAC.
In other words, one of triggering interrupt condition of MAC is
related to phy's interrupt.
So the phy will share the same "IRQ pin" with MAC.
As described above, the best solution is the INT pin of phy is
connected to architecture independently.
But, the hardware architecture cannot modify easily.
So I think
1. We can assign dummy IRQ number (which is a empty IRQ number but
large than zero) to phy.
phydev->irq = PHY_DUMMY_IRQ (this value is depend on architecture)
2. Change to do the soft IRQ in phy's ISR.
    To schedule workqueue in this soft IRQ.
In this way, the MAC can schedule phy's soft IRQ to do phy's work
queue (to do ack phy's interrupt ... etc).

Dose it make sense?

2012/4/6 Jason Lin <kernel.jason@gmail.com>:
> Dear:
> In include/linux/phy.h
> There has some comments:
> /*
>  * Set phydev->irq to PHY_POLL if interrupts are not supported,
>  * or not desired for this PHY.  Set to PHY_IGNORE_INTERRUPT if
>  * the attached driver handles the interrupt
>  */
> Florian, you are right.
> I have to set phydev->irq to PHY_IGNORE_INTERRUPT.
> This seems to work if one MAC driver is stick to specific PHY driver.
> So one can use phywrite() and phyread() to control the PHY.
> In my case, MAC driver handles the interrupt, but not to stick to the
> specific PHY driver. So MAC driver needs a set of general functions
> to set PHY's registers to enable and ack PHY's interrupts.
> Dose it make sense?
>
> ÔÚ 2012Äê4ÔÂ6ÈÕÉÏÎç10:24£¬Jason Lin <kernel.jason@gmail.com> Œ‘µÀ£º
>> Should phy_enable_interrupts() and phy_disable_interrupts() open
>> to MAC driver?
>> And MAC driver should initialize a workqueue to ack PHY's interrupt.
>> Is this a better way?
>>
>> ÔÚ 2012Äê4ÔÂ5ÈÕÉÏÎç9:30£¬Jason Lin <kernel.jason@gmail.com> Œ‘µÀ£º
>>> But, I need to enable PHY's interrupt by setting PHY's registers.
>>> And after producing a interrupt, there needs a workqueue
>>> to ack the PHY's interrupt.
>>> The phy_start_interrupts() can enable PHY's interrupt.
>>> If I do the following:
>>> 1) set phydev->irq = PHY_IGNORE_INTERRUPT;
>>> 2) invoke phy_connect();
>>> 3) phy_conenct() -> phy_connect_direct() ->
>>>    if (phydev->irq > 0)
>>>         phy_start_interrupts(phydev);
>>> 4) PHY_IGNORE_INTERRUPT = -2, it will not enable PHY's interrupt.
>>> 5) phy_start_interrupts() will connect to a callback function
>>>    config_intr() of each PHY library.
>>>
>>> For example, drivers/net/phy/marvell.c, marvell_config_intr()
>>> Need to set register 0x12 to 0x6400 to enable corresponding interrupts.
>>>
>>> Any comments are appreciated.
>>> Thanks.
>>>
>>> ÔÚ 2012Äê4ÔÂ3ÈÕÏÂÎç4:49£¬Florian Fainelli <florian@openwrt.org> Œ‘µÀ£º
>>>> Hi,
>>>>
>>>> Le 04/03/12 04:11, Jason Lin a ¨¦crit :
>>>>
>>>>> 1)  Add a new definition PHY_MAC if phy shares the same
>>>>>      interrupt with mac.
>>>>> 2)  Add do_phy_workqueue(), that mac can invoke this function
>>>>>      in its ISR when link status changed or other conditions.
>>>>>
>>>>> Does this seems reasonable?
>>>>
>>>>
>>>> No, I think this is well handled by the PHY_IGNORE_INTERRUPT case
>>>> (documented in Documentation/networking/phy.txt) by doing the following:
>>>>
>>>> - distinguish between MAC and PHY interrupts in your MAC interrupt handler
>>>> (most likely you have separate bits for PHY interrupts)
>>>> - once you see a PHY interrupt, call the appropriate PHY state machine
>>>> callbacks to update the PHY state machine
>>>>
>>>>>
>>>>>
>>>>> ---------------------------
>>>>>  drivers/net/phy/phy.c        |   27 +++++++++++++++++++++++++++
>>>>>  drivers/net/phy/phy_device.c |    4 ++--
>>>>>  include/linux/phy.h          |    3 +++
>>>>>  3 files changed, 32 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
>>>>> index 7670aac..c8009e9 100644
>>>>> --- a/drivers/net/phy/phy.c
>>>>> +++ b/drivers/net/phy/phy.c
>>>>> @@ -527,6 +527,28 @@ static irqreturn_t phy_interrupt(int irq, void
>>>>> *phy_dat)
>>>>>     return IRQ_HANDLED;
>>>>>  }
>>>>>
>>>>> +/*
>>>>> + * do_phy_workqueue - PHY interrupt handler used by MAC
>>>>> + * @irq: interrupt line
>>>>> + * @phydev: phy_device pointer
>>>>> + *
>>>>> + * Description: When a PHY use the same interrupt with MAC,
>>>>> + * the handler is invoked by MAC, and schedules  a work task
>>>>> + * to clear the PHY's interrupt.
>>>>> + * This handler is invoked only in MAC's ISR.
>>>>> + */
>>>>> +irqreturn_t do_phy_workqueue(int irq, struct phy_device *phydev) {
>>>>> +
>>>>> +   BUG_ON(!in_interrupt());
>>>>> +
>>>>> +   if (PHY_HALTED == phydev->state)
>>>>> +       return IRQ_NONE;
>>>>> +
>>>>> +   schedule_work(&phydev->phy_queue);
>>>>> +   return IRQ_HANDLED;
>>>>> +}
>>>>> +EXPORT_SYMBOL(do_phy_workqueue);
>>>>> +
>>>>>  /**
>>>>>   * phy_enable_interrupts - Enable the interrupts from the PHY side
>>>>>   * @phydev: target phy_device struct
>>>>> @@ -589,6 +611,11 @@ int phy_start_interrupts(struct phy_device *phydev)
>>>>>
>>>>>     INIT_WORK(&phydev->phy_queue, phy_change);
>>>>>
>>>>> +   if (phydev->irq == PHY_MAC) {
>>>>> +       err = phy_enable_interrupts(phydev);
>>>>> +       return err;
>>>>> +   }
>>>>> +
>>>>>     atomic_set(&phydev->irq_disable, 0);
>>>>>     if (request_irq(phydev->irq, phy_interrupt,
>>>>>                 IRQF_SHARED,
>>>>> diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
>>>>> index 993c52c..1857097 100644
>>>>> --- a/drivers/net/phy/phy_device.c
>>>>> +++ b/drivers/net/phy/phy_device.c
>>>>> @@ -345,7 +345,7 @@ int phy_connect_direct(struct net_device *dev,
>>>>> struct phy_device *phydev,
>>>>>
>>>>>     phy_prepare_link(phydev, handler);
>>>>>     phy_start_machine(phydev, NULL);
>>>>> -   if (phydev->irq>  0)
>>>>> +   if ((phydev->irq>  0) || (phydev->irq == PHY_MAC))
>>>>>         phy_start_interrupts(phydev);
>>>>>
>>>>>     return 0;
>>>>> @@ -399,7 +399,7 @@ EXPORT_SYMBOL(phy_connect);
>>>>>   */
>>>>>  void phy_disconnect(struct phy_device *phydev)
>>>>>  {
>>>>> -   if (phydev->irq>  0)
>>>>> +   if ((phydev->irq>  0) || (phydev->irq == PHY_MAC))
>>>>>         phy_stop_interrupts(phydev);
>>>>>
>>>>>     phy_stop_machine(phydev);
>>>>> diff --git a/include/linux/phy.h b/include/linux/phy.h
>>>>> index 7da5fa8..155822c 100644
>>>>> --- a/include/linux/phy.h
>>>>> +++ b/include/linux/phy.h
>>>>> @@ -44,9 +44,11 @@
>>>>>   * Set phydev->irq to PHY_POLL if interrupts are not supported,
>>>>>   * or not desired for this PHY.  Set to PHY_IGNORE_INTERRUPT if
>>>>>   * the attached driver handles the interrupt
>>>>> + * Set to PHY_MAC if using the same interrupt with MAC
>>>>>   */
>>>>>  #define PHY_POLL       -1
>>>>>  #define PHY_IGNORE_INTERRUPT   -2
>>>>> +#define PHY_MAC        -3
>>>>>
>>>>>  #define PHY_HAS_INTERRUPT  0x00000001
>>>>>  #define PHY_HAS_MAGICANEG  0x00000002
>>>>> @@ -510,6 +512,7 @@ int phy_ethtool_sset(struct phy_device *phydev,
>>>>> struct ethtool_cmd *cmd);
>>>>>  int phy_ethtool_gset(struct phy_device *phydev, struct ethtool_cmd *cmd);
>>>>>  int phy_mii_ioctl(struct phy_device *phydev,
>>>>>         struct ifreq *ifr, int cmd);
>>>>> +irqreturn_t do_phy_workqueue(int irq, struct phy_device *phydev);
>>>>>  int phy_start_interrupts(struct phy_device *phydev);
>>>>>  void phy_print_status(struct phy_device *phydev);
>>>>>  void phy_device_free(struct phy_device *phydev);
>>>>> --
>>>>> To unsubscribe from this list: send the line "unsubscribe netdev" in
>>>>> the body of a message to majordomo@vger.kernel.org
>>>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: [PATCH 03/16] tcp: Maintain dynamic metrics in local cache.
From: Joe Perches @ 2012-07-11  1:22 UTC (permalink / raw)
  To: David Miller; +Cc: netdev
In-Reply-To: <20120710.180137.2161994914932724530.davem@davemloft.net>

On Tue, 2012-07-10 at 18:01 -0700, David Miller wrote:
> From: Joe Perches <joe@perches.com>
> Date: Tue, 10 Jul 2012 17:44:46 -0700
> 
> > I'd guess the one above is faster to execute.
> 
> It is.
> 
> > If it's not, the code in ipv6_addr_equal
> > should be reverted. commit fed85383ac34d82
> > ("[IPV6]: Use XOR and OR rather than mutiple ands for ipv6 address comparisons")
> 
> Not necessarily.
> 
> My version here is faster because we unconditionally test
> the first word, which we need to do for both the ipv4 and
> ipv6 cases.

I don't think that's correct.
Look at what I posted again.

If it's IPv4, 

	if (a->family == AF_INET)
		return a->addr.a4 == b->addr.a4;

	return ipv6_addr_equal((const struct in6_addr *)&a->addr.a6,
			       (const struct in6_addr *)&b->addr.a6);

so it's a single word test or a 4 word test.

Your code is compare/branch/continue in a loop with an
increment and test.  I find it hard to believe that's
faster.  I suppose it _could_ be faster dependent on the
data in the words though.

> The ipv6 routine optimization you mention exists in a
> world where we know we have an ipv6 address always, which
> is not the case here.

What do I miss?

Is there a case where a->family is neither
AF_INET or AF_INET6?

> If anything, we should do XOR's on the final three words,
> but we should not remove the first word optimization for
> ipv4 which is the common case.

cheers, Joe

^ permalink raw reply

* RE: 82571EB: Detected Hardware Unit Hang
From: Dave, Tushar N @ 2012-07-11  1:18 UTC (permalink / raw)
  To: Joe Jin
  Cc: e1000-devel@lists.sf.net, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org, Dave, Tushar N
In-Reply-To: <4FFCCA22.8060006@oracle.com>


>-----Original Message-----
>From: Joe Jin [mailto:joe.jin@oracle.com]
>Sent: Tuesday, July 10, 2012 5:35 PM
>To: Dave, Tushar N
>Cc: e1000-devel@lists.sf.net; netdev@vger.kernel.org; linux-
>kernel@vger.kernel.org
>Subject: Re: 82571EB: Detected Hardware Unit Hang
>
>On 07/11/12 03:02, Dave, Tushar N wrote:
>>> -----Original Message-----
>>> From: netdev-owner@vger.kernel.org
>>> [mailto:netdev-owner@vger.kernel.org]
>>> On Behalf Of Joe Jin
>>> Sent: Tuesday, July 10, 2012 12:40 AM
>>> To: Joe Jin
>>> Cc: e1000-devel@lists.sf.net; netdev@vger.kernel.org; linux-
>>> kernel@vger.kernel.org
>>> Subject: Re: 82571EB: Detected Hardware Unit Hang
>>>
>>> When I debug the driver I found before Detected HW hang, driver
>>> unable to clean and reclaim the resources:
>>>
>>> 1457         while ((eop_desc->upper.data &
>>> cpu_to_le32(E1000_TXD_STAT_DD)) &&  <== at here upper.data always is
>0x300
>>> 1458                (count < tx_ring->count)) {
>>>     <--- snip --->
>>> 1487         }
>>>
>>>
>>> I checked all driver codes I did not found anywhere will set the
>>> upper.data with E1000_TXD_STAT_DD, I guess upper.data be set by
>hardware?
>>
>> Yes upper.data (part of it is STATUS byte) is set by HW. Basically
>driver checks E1000_TXD_STAT_DD (Descriptor Done) bit. If this bit is set
>that means HW has processed that descriptor and driver can now clean that
>descriptor.
>> With value 0x300 , DD bit is not set. That means HW has not processed
>that descriptor.
>
>Thanks for the clarify, might be firmware issue?
>>
>> How fast does tx hang reproduce? I suggest you to enable debug code in
>driver so when tx hang occurs it will dump the HW desc ring info into
>kernel log.
>
>Once I copy a file from other server, issue to be reproduced at once.
>I'll enable the debug to get more debug info.
>
>> You can run "ethtool -s ethx msglvl 0x2c00" to enable debug.
>> Once tx hang occurs please send me the full dmesg log.
>>
>> Does tx hang occur with in-kernel e1000e driver too?
>
>I tried several drivers included rhel5 the latest, Intel the latest,
>rhel6 the latest, issue see on all those drivers.

Also after issue occurs please capture lspci -vvv (run as root)

>
>Thanks,
>Joe
>>
>> Thanks.
>>
>> -Tushar
>>
>>
>>> If OS is 32bit system, what which happen?
>>
>>
>>>
>>> Thanks in advance,
>>> Joe
>>>
>>> On 07/09/12 16:51, Joe Jin wrote:
>>>> Hi list,
>>>>
>>>> I'm seeing a Unit Hang even with the latest e1000e driver 2.0.0 when
>>>> doing scp test. this issue is easy do reproduced on SUN FIRE X2270
>>>> M2, just copy a big file (>500M) from another server will hit it at
>once.
>>>>
>>>> Would you please help on this?
>>>>
>>>> device info:
>>>> # lspci -s 05:00.0
>>>> 05:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit
>>>> Ethernet Controller (Copper) (rev 06)
>>>>
>>>> # lspci -s 05:00.0 -n
>>>> 05:00.0 0200: 8086:10bc (rev 06)
>>>>
>>>> # ethtool -i eth0
>>>> driver: e1000e
>>>> version: 2.0.0-NAPI
>>>> firmware-version: 5.10-2
>>>> bus-info: 0000:05:00.0
>>>>
>>>> # ethtool -k eth0
>>>> Offload parameters for eth0:
>>>> rx-checksumming: on
>>>> tx-checksumming: on
>>>> scatter-gather: on
>>>> tcp segmentation offload: on
>>>> udp fragmentation offload: off
>>>> generic segmentation offload: on
>>>> generic-receive-offload: on
>>>>
>>>> kernel log:
>>>> -----------
>>>> e1000e 0000:05:00.0: eth0: Detected Hardware Unit Hang:
>>>>   TDH                  <6c>
>>>>   TDT                  <81>
>>>>   next_to_use          <81>
>>>>   next_to_clean        <6b>
>>>> buffer_info[next_to_clean]:
>>>>   time_stamp           <fffc7a23>
>>>>   next_to_watch        <71>
>>>>   jiffies              <fffc8c0c>
>>>>   next_to_watch.status <0>
>>>> MAC Status             <80387>
>>>> PHY Status             <792d>
>>>> PHY 1000BASE-T Status  <3c00>
>>>> PHY Extended Status    <3000>
>>>> PCI Status             <10>
>>>> e1000e 0000:05:00.0: eth0: Detected Hardware Unit Hang:
>>>>   TDH                  <6c>
>>>>   TDT                  <81>
>>>>   next_to_use          <81>
>>>>   next_to_clean        <6b>
>>>> buffer_info[next_to_clean]:
>>>>   time_stamp           <fffc7a23>
>>>>   next_to_watch        <71>
>>>>   jiffies              <fffc9bac>
>>>>   next_to_watch.status <0>
>>>> MAC Status             <80387>
>>>> PHY Status             <792d>
>>>> PHY 1000BASE-T Status  <3c00>
>>>> PHY Extended Status    <3000>
>>>> PCI Status             <10>
>>>> ------------[ cut here ]------------
>>>> WARNING: at net/sched/sch_generic.c:255 dev_watchdog+0x225/0x230()
>>>> Hardware name: SUN FIRE X2270 M2 NETDEV WATCHDOG: eth0 (e1000e):
>>>> transmit queue 0 timed out Modules linked in: autofs4 hidp rfcomm
>>>> bluetooth rfkill lockd sunrpc cpufreq_ondemand acpi_cpufreq mperf
>>>> be2iscsi iscsi_boot_sysfs ib_iser rdma_cm ib_cm iw_cm ib_sa ib_mad
>>>> ib_core ib_addr iscsi_tcp bnx2i cnic uio ipv6 cxgb3i libcxgbi cxgb3
>>>> mdio libiscsi_tcp libiscsi scsi_transport_iscsi video sbs sbshc
>>>> acpi_pad acpi_ipmi ipmi_msghandler parport_pc lp parport e1000e(U)
>>>> snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device
>>>> igb snd_pcm_oss serio_raw snd_mixer_oss snd_pcm tpm_infineon
>>>> snd_timer snd soundcore snd_page_alloc i2c_i801 iTCO_wdt i2c_core
>>>> pcspkr i7core_edac iTCO_vendor_support ioatdma ghes dca edac_core
>>>> hed dm_snapshot dm_zero dm_mirror dm_region_hash dm_log dm_mod
>>>> usb_storage sd_mod crc_t10dif sg ahci libahci ext3 jbd mbcache [last
>unloaded:
>>>> microcode]
>>>> Pid: 0, comm: swapper Not tainted 2.6.39-200.24.1.el5uek #1 Call
>>>> Trace:
>>>>  [<c07d9ac5>] ? dev_watchdog+0x225/0x230  [<c045ba61>]
>>>> warn_slowpath_common+0x81/0xa0  [<c07d9ac5>] ?
>>>> dev_watchdog+0x225/0x230  [<c045bb23>] warn_slowpath_fmt+0x33/0x40
>>>> [<c07d9ac5>] dev_watchdog+0x225/0x230  [<c07d98a0>] ?
>>>> dev_activate+0xb0/0xb0  [<c0468e82>] call_timer_fn+0x32/0xf0
>>>> [<c04bceb0>] ? rcu_check_callbacks+0x80/0x80  [<c046a76d>]
>>>> run_timer_softirq+0xed/0x1b0  [<c07d98a0>] ? dev_activate+0xb0/0xb0
>>>> [<c0461a81>] __do_softirq+0x91/0x1a0  [<c04619f0>] ?
>>>> local_bh_enable+0x80/0x80  <IRQ>  [<c0462295>] ? irq_exit+0x95/0xa0
>>>> [<c087f8b8>] ? smp_apic_timer_interrupt+0x38/0x42
>>>>  [<c08784f5>] ? apic_timer_interrupt+0x31/0x38  [<c046007b>] ?
>>>> do_exit+0x11b/0x370  [<c065eae4>] ? intel_idle+0xa4/0x100
>>>> [<c078d9b9>] ? cpuidle_idle_call+0xb9/0x1e0  [<c0411d77>] ?
>>>> cpu_idle+0x97/0xd0  [<c085cbbd>] ? rest_init+0x5d/0x70  [<c0b07a7a>] ?
>>>> start_kernel+0x28a/0x340  [<c0b074b0>] ?
>>>> obsolete_checksetup+0xb0/0xb0 [<c0b070a4>] ?
>>>> i386_start_kernel+0x64/0xb0 ---[ end trace 5502b55cd4d4e5cb ]---
>>>> e1000e 0000:05:00.0: eth0: Reset adapter
>>>> e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control:
>>>> Rx/Tx
>>>>
>>>> Thanks,
>>>> Joe
>>>>
>>>
>>>
>>>

^ permalink raw reply

* [PATCH net-next 9/9] qlge: Bumped driver version to 1.00.00.31
From: Jitendra Kalsaria @ 2012-07-11  0:57 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer, Dept_NX_Linux_NIC_Driver, Jitendra Kalsaria
In-Reply-To: <1341968259-18931-1-git-send-email-jitendra.kalsaria@qlogic.com>

From: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>

Signed-off-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
---
 drivers/net/ethernet/qlogic/qlge/qlge.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qlge/qlge.h b/drivers/net/ethernet/qlogic/qlge/qlge.h
index e384bbd..709abaa 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge.h
+++ b/drivers/net/ethernet/qlogic/qlge/qlge.h
@@ -18,7 +18,7 @@
  */
 #define DRV_NAME  	"qlge"
 #define DRV_STRING 	"QLogic 10 Gigabit PCI-E Ethernet Driver "
-#define DRV_VERSION	"v1.00.00.30.00.00-01"
+#define DRV_VERSION	"v1.00.00.31"
 
 #define WQ_ADDR_ALIGN	0x3	/* 4 byte alignment */
 
-- 
1.7.1

^ permalink raw reply related

* [PATCH net-next 7/9] qlge: Moving low level frame error to ethtool statistics.
From: Jitendra Kalsaria @ 2012-07-11  0:57 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer, Dept_NX_Linux_NIC_Driver, Jitendra Kalsaria
In-Reply-To: <1341968259-18931-1-git-send-email-jitendra.kalsaria@qlogic.com>

From: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>

Signed-off-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
---
 drivers/net/ethernet/qlogic/qlge/qlge.h         |    8 +++
 drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c |   14 +++++
 drivers/net/ethernet/qlogic/qlge/qlge_main.c    |   63 +++++++++++++----------
 3 files changed, 58 insertions(+), 27 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qlge/qlge.h b/drivers/net/ethernet/qlogic/qlge/qlge.h
index ae7dddc..e384bbd 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge.h
+++ b/drivers/net/ethernet/qlogic/qlge/qlge.h
@@ -1536,6 +1536,14 @@ struct nic_stats {
 	u64 rx_1024_to_1518_pkts;
 	u64 rx_1519_to_max_pkts;
 	u64 rx_len_err_pkts;
+	/* Receive Mac Err stats */
+	u64 rx_code_err;
+	u64 rx_oversize_err;
+	u64 rx_undersize_err;
+	u64 rx_preamble_err;
+	u64 rx_frame_len_err;
+	u64 rx_crc_err;
+	u64 rx_err_count;
 	/*
 	 * These stats come from offset 500h to 5C8h
 	 * in the XGMAC register.
diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c b/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
index 4c141da..d505abe 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
@@ -226,6 +226,13 @@ static char ql_stats_str_arr[][ETH_GSTRING_LEN] = {
 	{"rx_1024_to_1518_pkts"},
 	{"rx_1519_to_max_pkts"},
 	{"rx_len_err_pkts"},
+	{"rx_code_err"},
+	{"rx_oversize_err"},
+	{"rx_undersize_err"},
+	{"rx_preamble_err"},
+	{"rx_frame_len_err"},
+	{"rx_crc_err"},
+	{"rx_err_count"},
 	{"tx_cbfc_pause_frames0"},
 	{"tx_cbfc_pause_frames1"},
 	{"tx_cbfc_pause_frames2"},
@@ -320,6 +327,13 @@ ql_get_ethtool_stats(struct net_device *ndev,
 	*data++ = s->rx_1024_to_1518_pkts;
 	*data++ = s->rx_1519_to_max_pkts;
 	*data++ = s->rx_len_err_pkts;
+	*data++ = s->rx_code_err;
+	*data++ = s->rx_oversize_err;
+	*data++ = s->rx_undersize_err;
+	*data++ = s->rx_preamble_err;
+	*data++ = s->rx_frame_len_err;
+	*data++ = s->rx_crc_err;
+	*data++ = s->rx_err_count;
 	*data++ = s->tx_cbfc_pause_frames0;
 	*data++ = s->tx_cbfc_pause_frames1;
 	*data++ = s->tx_cbfc_pause_frames2;
diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
index cf6887a..9d218b0 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
@@ -1433,6 +1433,36 @@ map_error:
 	return NETDEV_TX_BUSY;
 }
 
+/* Categorizing receive firmware frame errors */
+static void ql_categorize_rx_err(struct ql_adapter *qdev, u8 rx_err)
+{
+	struct nic_stats *stats = &qdev->nic_stats;
+
+	stats->rx_err_count++;
+
+	switch (rx_err & IB_MAC_IOCB_RSP_ERR_MASK) {
+	case IB_MAC_IOCB_RSP_ERR_CODE_ERR:
+		stats->rx_code_err++;
+		break;
+	case IB_MAC_IOCB_RSP_ERR_OVERSIZE:
+		stats->rx_oversize_err++;
+		break;
+	case IB_MAC_IOCB_RSP_ERR_UNDERSIZE:
+		stats->rx_undersize_err++;
+		break;
+	case IB_MAC_IOCB_RSP_ERR_PREAMBLE:
+		stats->rx_preamble_err++;
+		break;
+	case IB_MAC_IOCB_RSP_ERR_FRAME_LEN:
+		stats->rx_frame_len_err++;
+		break;
+	case IB_MAC_IOCB_RSP_ERR_CRC:
+		stats->rx_crc_err++;
+	default:
+		break;
+	}
+}
+
 /* Process an inbound completion from an rx ring. */
 static void ql_process_mac_rx_gro_page(struct ql_adapter *qdev,
 					struct rx_ring *rx_ring,
@@ -1499,15 +1529,6 @@ static void ql_process_mac_rx_page(struct ql_adapter *qdev,
 	addr = lbq_desc->p.pg_chunk.va;
 	prefetch(addr);
 
-
-	/* Frame error, so drop the packet. */
-	if (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_ERR_MASK) {
-		netif_info(qdev, drv, qdev->ndev,
-			  "Receive error, flags2 = 0x%x\n", ib_mac_rsp->flags2);
-		rx_ring->rx_errors++;
-		goto err_out;
-	}
-
 	/* The max framesize filter on this chip is set higher than
 	 * MTU since FCoE uses 2k frames.
 	 */
@@ -1593,15 +1614,6 @@ static void ql_process_mac_rx_skb(struct ql_adapter *qdev,
 	memcpy(skb_put(new_skb, length), skb->data, length);
 	skb = new_skb;
 
-	/* Frame error, so drop the packet. */
-	if (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_ERR_MASK) {
-		netif_info(qdev, drv, qdev->ndev,
-			  "Receive error, flags2 = 0x%x\n", ib_mac_rsp->flags2);
-		dev_kfree_skb_any(skb);
-		rx_ring->rx_errors++;
-		return;
-	}
-
 	/* loopback self test for ethtool */
 	if (test_bit(QL_SELFTEST, &qdev->flags)) {
 		ql_check_lb_frame(qdev, skb);
@@ -1908,15 +1920,6 @@ static void ql_process_mac_split_rx_intr(struct ql_adapter *qdev,
 		return;
 	}
 
-	/* Frame error, so drop the packet. */
-	if (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_ERR_MASK) {
-		netif_info(qdev, drv, qdev->ndev,
-			  "Receive error, flags2 = 0x%x\n", ib_mac_rsp->flags2);
-		dev_kfree_skb_any(skb);
-		rx_ring->rx_errors++;
-		return;
-	}
-
 	/* The max framesize filter on this chip is set higher than
 	 * MTU since FCoE uses 2k frames.
 	 */
@@ -1999,6 +2002,12 @@ static unsigned long ql_process_mac_rx_intr(struct ql_adapter *qdev,
 
 	QL_DUMP_IB_MAC_RSP(ib_mac_rsp);
 
+	/* Frame error, so drop the packet. */
+	if (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_ERR_MASK) {
+		ql_categorize_rx_err(qdev, ib_mac_rsp->flags2);
+		return (unsigned long)length;
+	}
+
 	if (ib_mac_rsp->flags4 & IB_MAC_IOCB_RSP_HV) {
 		/* The data and headers are split into
 		 * separate buffers.
-- 
1.7.1

^ permalink raw reply related

* [PATCH net-next 5/9] qlge: Added missing case statement to ethtool get_strings.
From: Jitendra Kalsaria @ 2012-07-11  0:57 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer, Dept_NX_Linux_NIC_Driver, Jitendra Kalsaria
In-Reply-To: <1341968259-18931-1-git-send-email-jitendra.kalsaria@qlogic.com>

From: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>

Missing case was causing ethtool self test to print garbage
value in extra info section.

Signed-off-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
---
 drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c b/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
index 3b0912f..4c141da 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
@@ -248,6 +248,9 @@ static char ql_stats_str_arr[][ETH_GSTRING_LEN] = {
 static void ql_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
 {
 	switch (stringset) {
+	case ETH_SS_TEST:
+		memcpy(buf, *ql_gstrings_test, QLGE_TEST_LEN * ETH_GSTRING_LEN);
+		break;
 	case ETH_SS_STATS:
 		memcpy(buf, ql_stats_str_arr, sizeof(ql_stats_str_arr));
 		break;
@@ -531,6 +534,8 @@ static void ql_self_test(struct net_device *ndev,
 {
 	struct ql_adapter *qdev = netdev_priv(ndev);
 
+	memset(data, 0, sizeof(u64) * QLGE_TEST_LEN);
+
 	if (netif_running(ndev)) {
 		set_bit(QL_SELFTEST, &qdev->flags);
 		if (eth_test->flags == ETH_TEST_FL_OFFLINE) {
-- 
1.7.1

^ permalink raw reply related

* [PATCH net-next 6/9] qlge: Fixed double pci free upon tx_ring->q allocation failure.
From: Jitendra Kalsaria @ 2012-07-11  0:57 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer, Dept_NX_Linux_NIC_Driver, Jitendra Kalsaria
In-Reply-To: <1341968259-18931-1-git-send-email-jitendra.kalsaria@qlogic.com>

From: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>

Signed-off-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
---
 drivers/net/ethernet/qlogic/qlge/qlge_main.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
index ee3457e..cf6887a 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
@@ -2710,10 +2710,9 @@ static int ql_alloc_tx_resources(struct ql_adapter *qdev,
 				 &tx_ring->wq_base_dma);
 
 	if ((tx_ring->wq_base == NULL) ||
-	    tx_ring->wq_base_dma & WQ_ADDR_ALIGN) {
-		netif_err(qdev, ifup, qdev->ndev, "tx_ring alloc failed.\n");
-		return -ENOMEM;
-	}
+	    tx_ring->wq_base_dma & WQ_ADDR_ALIGN)
+		goto pci_alloc_err;
+
 	tx_ring->q =
 	    kmalloc(tx_ring->wq_len * sizeof(struct tx_ring_desc), GFP_KERNEL);
 	if (tx_ring->q == NULL)
@@ -2723,6 +2722,9 @@ static int ql_alloc_tx_resources(struct ql_adapter *qdev,
 err:
 	pci_free_consistent(qdev->pdev, tx_ring->wq_size,
 			    tx_ring->wq_base, tx_ring->wq_base_dma);
+	tx_ring->wq_base = NULL;
+pci_alloc_err:
+	netif_err(qdev, ifup, qdev->ndev, "tx_ring alloc failed.\n");
 	return -ENOMEM;
 }
 
-- 
1.7.1

^ permalink raw reply related

* [PATCH net-next 8/9] qlge: Refactoring of ethtool stats.
From: Jitendra Kalsaria @ 2012-07-11  0:57 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer, Dept_NX_Linux_NIC_Driver, Jitendra Kalsaria
In-Reply-To: <1341968259-18931-1-git-send-email-jitendra.kalsaria@qlogic.com>

From: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>

Signed-off-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
---
 drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c |  295 ++++++++++++-----------
 1 files changed, 157 insertions(+), 138 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c b/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
index d505abe..3d4462b 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
@@ -35,10 +35,152 @@
 
 #include "qlge.h"
 
+struct ql_stats {
+	char stat_string[ETH_GSTRING_LEN];
+	int sizeof_stat;
+	int stat_offset;
+};
+
+#define QL_SIZEOF(m) FIELD_SIZEOF(struct ql_adapter, m)
+#define QL_OFF(m) offsetof(struct ql_adapter, m)
+
+static const struct ql_stats ql_gstrings_stats[] = {
+	{"tx_pkts", QL_SIZEOF(nic_stats.tx_pkts), QL_OFF(nic_stats.tx_pkts)},
+	{"tx_bytes", QL_SIZEOF(nic_stats.tx_bytes), QL_OFF(nic_stats.tx_bytes)},
+	{"tx_mcast_pkts", QL_SIZEOF(nic_stats.tx_mcast_pkts),
+					QL_OFF(nic_stats.tx_mcast_pkts)},
+	{"tx_bcast_pkts", QL_SIZEOF(nic_stats.tx_bcast_pkts),
+					QL_OFF(nic_stats.tx_bcast_pkts)},
+	{"tx_ucast_pkts", QL_SIZEOF(nic_stats.tx_ucast_pkts),
+					QL_OFF(nic_stats.tx_ucast_pkts)},
+	{"tx_ctl_pkts", QL_SIZEOF(nic_stats.tx_ctl_pkts),
+					QL_OFF(nic_stats.tx_ctl_pkts)},
+	{"tx_pause_pkts", QL_SIZEOF(nic_stats.tx_pause_pkts),
+					QL_OFF(nic_stats.tx_pause_pkts)},
+	{"tx_64_pkts", QL_SIZEOF(nic_stats.tx_64_pkt),
+					QL_OFF(nic_stats.tx_64_pkt)},
+	{"tx_65_to_127_pkts", QL_SIZEOF(nic_stats.tx_65_to_127_pkt),
+					QL_OFF(nic_stats.tx_65_to_127_pkt)},
+	{"tx_128_to_255_pkts", QL_SIZEOF(nic_stats.tx_128_to_255_pkt),
+					QL_OFF(nic_stats.tx_128_to_255_pkt)},
+	{"tx_256_511_pkts", QL_SIZEOF(nic_stats.tx_256_511_pkt),
+					QL_OFF(nic_stats.tx_256_511_pkt)},
+	{"tx_512_to_1023_pkts",	QL_SIZEOF(nic_stats.tx_512_to_1023_pkt),
+					QL_OFF(nic_stats.tx_512_to_1023_pkt)},
+	{"tx_1024_to_1518_pkts", QL_SIZEOF(nic_stats.tx_1024_to_1518_pkt),
+					QL_OFF(nic_stats.tx_1024_to_1518_pkt)},
+	{"tx_1519_to_max_pkts",	QL_SIZEOF(nic_stats.tx_1519_to_max_pkt),
+					QL_OFF(nic_stats.tx_1519_to_max_pkt)},
+	{"tx_undersize_pkts", QL_SIZEOF(nic_stats.tx_undersize_pkt),
+					QL_OFF(nic_stats.tx_undersize_pkt)},
+	{"tx_oversize_pkts", QL_SIZEOF(nic_stats.tx_oversize_pkt),
+					QL_OFF(nic_stats.tx_oversize_pkt)},
+	{"rx_bytes", QL_SIZEOF(nic_stats.rx_bytes), QL_OFF(nic_stats.rx_bytes)},
+	{"rx_bytes_ok",	QL_SIZEOF(nic_stats.rx_bytes_ok),
+					QL_OFF(nic_stats.rx_bytes_ok)},
+	{"rx_pkts", QL_SIZEOF(nic_stats.rx_pkts), QL_OFF(nic_stats.rx_pkts)},
+	{"rx_pkts_ok", QL_SIZEOF(nic_stats.rx_pkts_ok),
+					QL_OFF(nic_stats.rx_pkts_ok)},
+	{"rx_bcast_pkts", QL_SIZEOF(nic_stats.rx_bcast_pkts),
+					QL_OFF(nic_stats.rx_bcast_pkts)},
+	{"rx_mcast_pkts", QL_SIZEOF(nic_stats.rx_mcast_pkts),
+					QL_OFF(nic_stats.rx_mcast_pkts)},
+	{"rx_ucast_pkts", QL_SIZEOF(nic_stats.rx_ucast_pkts),
+					QL_OFF(nic_stats.rx_ucast_pkts)},
+	{"rx_undersize_pkts", QL_SIZEOF(nic_stats.rx_undersize_pkts),
+					QL_OFF(nic_stats.rx_undersize_pkts)},
+	{"rx_oversize_pkts", QL_SIZEOF(nic_stats.rx_oversize_pkts),
+					QL_OFF(nic_stats.rx_oversize_pkts)},
+	{"rx_jabber_pkts", QL_SIZEOF(nic_stats.rx_jabber_pkts),
+					QL_OFF(nic_stats.rx_jabber_pkts)},
+	{"rx_undersize_fcerr_pkts",
+		QL_SIZEOF(nic_stats.rx_undersize_fcerr_pkts),
+				QL_OFF(nic_stats.rx_undersize_fcerr_pkts)},
+	{"rx_drop_events", QL_SIZEOF(nic_stats.rx_drop_events),
+					QL_OFF(nic_stats.rx_drop_events)},
+	{"rx_fcerr_pkts", QL_SIZEOF(nic_stats.rx_fcerr_pkts),
+					QL_OFF(nic_stats.rx_fcerr_pkts)},
+	{"rx_align_err", QL_SIZEOF(nic_stats.rx_align_err),
+					QL_OFF(nic_stats.rx_align_err)},
+	{"rx_symbol_err", QL_SIZEOF(nic_stats.rx_symbol_err),
+					QL_OFF(nic_stats.rx_symbol_err)},
+	{"rx_mac_err", QL_SIZEOF(nic_stats.rx_mac_err),
+					QL_OFF(nic_stats.rx_mac_err)},
+	{"rx_ctl_pkts",	QL_SIZEOF(nic_stats.rx_ctl_pkts),
+					QL_OFF(nic_stats.rx_ctl_pkts)},
+	{"rx_pause_pkts", QL_SIZEOF(nic_stats.rx_pause_pkts),
+					QL_OFF(nic_stats.rx_pause_pkts)},
+	{"rx_64_pkts", QL_SIZEOF(nic_stats.rx_64_pkts),
+					QL_OFF(nic_stats.rx_64_pkts)},
+	{"rx_65_to_127_pkts", QL_SIZEOF(nic_stats.rx_65_to_127_pkts),
+					QL_OFF(nic_stats.rx_65_to_127_pkts)},
+	{"rx_128_255_pkts", QL_SIZEOF(nic_stats.rx_128_255_pkts),
+					QL_OFF(nic_stats.rx_128_255_pkts)},
+	{"rx_256_511_pkts", QL_SIZEOF(nic_stats.rx_256_511_pkts),
+					QL_OFF(nic_stats.rx_256_511_pkts)},
+	{"rx_512_to_1023_pkts",	QL_SIZEOF(nic_stats.rx_512_to_1023_pkts),
+					QL_OFF(nic_stats.rx_512_to_1023_pkts)},
+	{"rx_1024_to_1518_pkts", QL_SIZEOF(nic_stats.rx_1024_to_1518_pkts),
+					QL_OFF(nic_stats.rx_1024_to_1518_pkts)},
+	{"rx_1519_to_max_pkts",	QL_SIZEOF(nic_stats.rx_1519_to_max_pkts),
+					QL_OFF(nic_stats.rx_1519_to_max_pkts)},
+	{"rx_len_err_pkts", QL_SIZEOF(nic_stats.rx_len_err_pkts),
+					QL_OFF(nic_stats.rx_len_err_pkts)},
+	{"rx_code_err",	QL_SIZEOF(nic_stats.rx_code_err),
+					QL_OFF(nic_stats.rx_code_err)},
+	{"rx_oversize_err", QL_SIZEOF(nic_stats.rx_oversize_err),
+					QL_OFF(nic_stats.rx_oversize_err)},
+	{"rx_undersize_err", QL_SIZEOF(nic_stats.rx_undersize_err),
+					QL_OFF(nic_stats.rx_undersize_err)},
+	{"rx_preamble_err", QL_SIZEOF(nic_stats.rx_preamble_err),
+					QL_OFF(nic_stats.rx_preamble_err)},
+	{"rx_frame_len_err", QL_SIZEOF(nic_stats.rx_frame_len_err),
+					QL_OFF(nic_stats.rx_frame_len_err)},
+	{"rx_crc_err", QL_SIZEOF(nic_stats.rx_crc_err),
+					QL_OFF(nic_stats.rx_crc_err)},
+	{"rx_err_count", QL_SIZEOF(nic_stats.rx_err_count),
+					QL_OFF(nic_stats.rx_err_count)},
+	{"tx_cbfc_pause_frames0", QL_SIZEOF(nic_stats.tx_cbfc_pause_frames0),
+				QL_OFF(nic_stats.tx_cbfc_pause_frames0)},
+	{"tx_cbfc_pause_frames1", QL_SIZEOF(nic_stats.tx_cbfc_pause_frames1),
+				QL_OFF(nic_stats.tx_cbfc_pause_frames1)},
+	{"tx_cbfc_pause_frames2", QL_SIZEOF(nic_stats.tx_cbfc_pause_frames2),
+				QL_OFF(nic_stats.tx_cbfc_pause_frames2)},
+	{"tx_cbfc_pause_frames3", QL_SIZEOF(nic_stats.tx_cbfc_pause_frames3),
+				QL_OFF(nic_stats.tx_cbfc_pause_frames3)},
+	{"tx_cbfc_pause_frames4", QL_SIZEOF(nic_stats.tx_cbfc_pause_frames4),
+				QL_OFF(nic_stats.tx_cbfc_pause_frames4)},
+	{"tx_cbfc_pause_frames5", QL_SIZEOF(nic_stats.tx_cbfc_pause_frames5),
+				QL_OFF(nic_stats.tx_cbfc_pause_frames5)},
+	{"tx_cbfc_pause_frames6", QL_SIZEOF(nic_stats.tx_cbfc_pause_frames6),
+				QL_OFF(nic_stats.tx_cbfc_pause_frames6)},
+	{"tx_cbfc_pause_frames7", QL_SIZEOF(nic_stats.tx_cbfc_pause_frames7),
+				QL_OFF(nic_stats.tx_cbfc_pause_frames7)},
+	{"rx_cbfc_pause_frames0", QL_SIZEOF(nic_stats.rx_cbfc_pause_frames0),
+				QL_OFF(nic_stats.rx_cbfc_pause_frames0)},
+	{"rx_cbfc_pause_frames1", QL_SIZEOF(nic_stats.rx_cbfc_pause_frames1),
+				QL_OFF(nic_stats.rx_cbfc_pause_frames1)},
+	{"rx_cbfc_pause_frames2", QL_SIZEOF(nic_stats.rx_cbfc_pause_frames2),
+				QL_OFF(nic_stats.rx_cbfc_pause_frames2)},
+	{"rx_cbfc_pause_frames3", QL_SIZEOF(nic_stats.rx_cbfc_pause_frames3),
+				QL_OFF(nic_stats.rx_cbfc_pause_frames3)},
+	{"rx_cbfc_pause_frames4", QL_SIZEOF(nic_stats.rx_cbfc_pause_frames4),
+				QL_OFF(nic_stats.rx_cbfc_pause_frames4)},
+	{"rx_cbfc_pause_frames5", QL_SIZEOF(nic_stats.rx_cbfc_pause_frames5),
+				QL_OFF(nic_stats.rx_cbfc_pause_frames5)},
+	{"rx_cbfc_pause_frames6", QL_SIZEOF(nic_stats.rx_cbfc_pause_frames6),
+				QL_OFF(nic_stats.rx_cbfc_pause_frames6)},
+	{"rx_cbfc_pause_frames7", QL_SIZEOF(nic_stats.rx_cbfc_pause_frames7),
+				QL_OFF(nic_stats.rx_cbfc_pause_frames7)},
+	{"rx_nic_fifo_drop", QL_SIZEOF(nic_stats.rx_nic_fifo_drop),
+					QL_OFF(nic_stats.rx_nic_fifo_drop)},
+};
+
 static const char ql_gstrings_test[][ETH_GSTRING_LEN] = {
 	"Loopback test  (offline)"
 };
 #define QLGE_TEST_LEN (sizeof(ql_gstrings_test) / ETH_GSTRING_LEN)
+#define QLGE_STATS_LEN ARRAY_SIZE(ql_gstrings_stats)
 
 static int ql_update_ring_coalescing(struct ql_adapter *qdev)
 {
@@ -183,83 +325,19 @@ quit:
 	QL_DUMP_STAT(qdev);
 }
 
-static char ql_stats_str_arr[][ETH_GSTRING_LEN] = {
-	{"tx_pkts"},
-	{"tx_bytes"},
-	{"tx_mcast_pkts"},
-	{"tx_bcast_pkts"},
-	{"tx_ucast_pkts"},
-	{"tx_ctl_pkts"},
-	{"tx_pause_pkts"},
-	{"tx_64_pkts"},
-	{"tx_65_to_127_pkts"},
-	{"tx_128_to_255_pkts"},
-	{"tx_256_511_pkts"},
-	{"tx_512_to_1023_pkts"},
-	{"tx_1024_to_1518_pkts"},
-	{"tx_1519_to_max_pkts"},
-	{"tx_undersize_pkts"},
-	{"tx_oversize_pkts"},
-	{"rx_bytes"},
-	{"rx_bytes_ok"},
-	{"rx_pkts"},
-	{"rx_pkts_ok"},
-	{"rx_bcast_pkts"},
-	{"rx_mcast_pkts"},
-	{"rx_ucast_pkts"},
-	{"rx_undersize_pkts"},
-	{"rx_oversize_pkts"},
-	{"rx_jabber_pkts"},
-	{"rx_undersize_fcerr_pkts"},
-	{"rx_drop_events"},
-	{"rx_fcerr_pkts"},
-	{"rx_align_err"},
-	{"rx_symbol_err"},
-	{"rx_mac_err"},
-	{"rx_ctl_pkts"},
-	{"rx_pause_pkts"},
-	{"rx_64_pkts"},
-	{"rx_65_to_127_pkts"},
-	{"rx_128_255_pkts"},
-	{"rx_256_511_pkts"},
-	{"rx_512_to_1023_pkts"},
-	{"rx_1024_to_1518_pkts"},
-	{"rx_1519_to_max_pkts"},
-	{"rx_len_err_pkts"},
-	{"rx_code_err"},
-	{"rx_oversize_err"},
-	{"rx_undersize_err"},
-	{"rx_preamble_err"},
-	{"rx_frame_len_err"},
-	{"rx_crc_err"},
-	{"rx_err_count"},
-	{"tx_cbfc_pause_frames0"},
-	{"tx_cbfc_pause_frames1"},
-	{"tx_cbfc_pause_frames2"},
-	{"tx_cbfc_pause_frames3"},
-	{"tx_cbfc_pause_frames4"},
-	{"tx_cbfc_pause_frames5"},
-	{"tx_cbfc_pause_frames6"},
-	{"tx_cbfc_pause_frames7"},
-	{"rx_cbfc_pause_frames0"},
-	{"rx_cbfc_pause_frames1"},
-	{"rx_cbfc_pause_frames2"},
-	{"rx_cbfc_pause_frames3"},
-	{"rx_cbfc_pause_frames4"},
-	{"rx_cbfc_pause_frames5"},
-	{"rx_cbfc_pause_frames6"},
-	{"rx_cbfc_pause_frames7"},
-	{"rx_nic_fifo_drop"},
-};
-
 static void ql_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
 {
+	int index;
 	switch (stringset) {
 	case ETH_SS_TEST:
 		memcpy(buf, *ql_gstrings_test, QLGE_TEST_LEN * ETH_GSTRING_LEN);
 		break;
 	case ETH_SS_STATS:
-		memcpy(buf, ql_stats_str_arr, sizeof(ql_stats_str_arr));
+		for (index = 0; index < QLGE_STATS_LEN; index++) {
+			memcpy(buf + index * ETH_GSTRING_LEN,
+				ql_gstrings_stats[index].stat_string,
+				ETH_GSTRING_LEN);
+		}
 		break;
 	}
 }
@@ -270,7 +348,7 @@ static int ql_get_sset_count(struct net_device *dev, int sset)
 	case ETH_SS_TEST:
 		return QLGE_TEST_LEN;
 	case ETH_SS_STATS:
-		return ARRAY_SIZE(ql_stats_str_arr);
+		return QLGE_STATS_LEN;
 	default:
 		return -EOPNOTSUPP;
 	}
@@ -281,76 +359,17 @@ ql_get_ethtool_stats(struct net_device *ndev,
 		     struct ethtool_stats *stats, u64 *data)
 {
 	struct ql_adapter *qdev = netdev_priv(ndev);
-	struct nic_stats *s = &qdev->nic_stats;
+	int index, length;
 
+	length = QLGE_STATS_LEN;
 	ql_update_stats(qdev);
 
-	*data++ = s->tx_pkts;
-	*data++ = s->tx_bytes;
-	*data++ = s->tx_mcast_pkts;
-	*data++ = s->tx_bcast_pkts;
-	*data++ = s->tx_ucast_pkts;
-	*data++ = s->tx_ctl_pkts;
-	*data++ = s->tx_pause_pkts;
-	*data++ = s->tx_64_pkt;
-	*data++ = s->tx_65_to_127_pkt;
-	*data++ = s->tx_128_to_255_pkt;
-	*data++ = s->tx_256_511_pkt;
-	*data++ = s->tx_512_to_1023_pkt;
-	*data++ = s->tx_1024_to_1518_pkt;
-	*data++ = s->tx_1519_to_max_pkt;
-	*data++ = s->tx_undersize_pkt;
-	*data++ = s->tx_oversize_pkt;
-	*data++ = s->rx_bytes;
-	*data++ = s->rx_bytes_ok;
-	*data++ = s->rx_pkts;
-	*data++ = s->rx_pkts_ok;
-	*data++ = s->rx_bcast_pkts;
-	*data++ = s->rx_mcast_pkts;
-	*data++ = s->rx_ucast_pkts;
-	*data++ = s->rx_undersize_pkts;
-	*data++ = s->rx_oversize_pkts;
-	*data++ = s->rx_jabber_pkts;
-	*data++ = s->rx_undersize_fcerr_pkts;
-	*data++ = s->rx_drop_events;
-	*data++ = s->rx_fcerr_pkts;
-	*data++ = s->rx_align_err;
-	*data++ = s->rx_symbol_err;
-	*data++ = s->rx_mac_err;
-	*data++ = s->rx_ctl_pkts;
-	*data++ = s->rx_pause_pkts;
-	*data++ = s->rx_64_pkts;
-	*data++ = s->rx_65_to_127_pkts;
-	*data++ = s->rx_128_255_pkts;
-	*data++ = s->rx_256_511_pkts;
-	*data++ = s->rx_512_to_1023_pkts;
-	*data++ = s->rx_1024_to_1518_pkts;
-	*data++ = s->rx_1519_to_max_pkts;
-	*data++ = s->rx_len_err_pkts;
-	*data++ = s->rx_code_err;
-	*data++ = s->rx_oversize_err;
-	*data++ = s->rx_undersize_err;
-	*data++ = s->rx_preamble_err;
-	*data++ = s->rx_frame_len_err;
-	*data++ = s->rx_crc_err;
-	*data++ = s->rx_err_count;
-	*data++ = s->tx_cbfc_pause_frames0;
-	*data++ = s->tx_cbfc_pause_frames1;
-	*data++ = s->tx_cbfc_pause_frames2;
-	*data++ = s->tx_cbfc_pause_frames3;
-	*data++ = s->tx_cbfc_pause_frames4;
-	*data++ = s->tx_cbfc_pause_frames5;
-	*data++ = s->tx_cbfc_pause_frames6;
-	*data++ = s->tx_cbfc_pause_frames7;
-	*data++ = s->rx_cbfc_pause_frames0;
-	*data++ = s->rx_cbfc_pause_frames1;
-	*data++ = s->rx_cbfc_pause_frames2;
-	*data++ = s->rx_cbfc_pause_frames3;
-	*data++ = s->rx_cbfc_pause_frames4;
-	*data++ = s->rx_cbfc_pause_frames5;
-	*data++ = s->rx_cbfc_pause_frames6;
-	*data++ = s->rx_cbfc_pause_frames7;
-	*data++ = s->rx_nic_fifo_drop;
+	for (index = 0; index < length; index++) {
+		char *p = (char *)qdev +
+			ql_gstrings_stats[index].stat_offset;
+		*data++ = (ql_gstrings_stats[index].sizeof_stat ==
+			sizeof(u64)) ? *(u64 *)p : (*(u32 *)p);
+	}
 }
 
 static int ql_get_settings(struct net_device *ndev,
-- 
1.7.1

^ permalink raw reply related

* [PATCH net-next 2/9] qlge: Cleanup atomic queue threshold check.
From: Jitendra Kalsaria @ 2012-07-11  0:57 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer, Dept_NX_Linux_NIC_Driver, Jitendra Kalsaria
In-Reply-To: <1341968259-18931-1-git-send-email-jitendra.kalsaria@qlogic.com>

From: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>

Signed-off-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
---
 drivers/net/ethernet/qlogic/qlge/qlge.h      |    1 -
 drivers/net/ethernet/qlogic/qlge/qlge_main.c |    5 +----
 2 files changed, 1 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qlge/qlge.h b/drivers/net/ethernet/qlogic/qlge/qlge.h
index 5a639df..6e7050c 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge.h
+++ b/drivers/net/ethernet/qlogic/qlge/qlge.h
@@ -1397,7 +1397,6 @@ struct tx_ring {
 	struct tx_ring_desc *q;	/* descriptor list for the queue */
 	spinlock_t lock;
 	atomic_t tx_count;	/* counts down for every outstanding IO */
-	atomic_t queue_stopped;	/* Turns queue off when full. */
 	struct delayed_work tx_work;
 	struct ql_adapter *qdev;
 	u64 tx_packets;
diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
index ce2d37f..ee3457e 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
@@ -2173,8 +2173,7 @@ static int ql_clean_outbound_rx_ring(struct rx_ring *rx_ring)
 	ql_write_cq_idx(rx_ring);
 	tx_ring = &qdev->tx_ring[net_rsp->txq_idx];
 	if (__netif_subqueue_stopped(qdev->ndev, tx_ring->wq_id)) {
-		if (atomic_read(&tx_ring->queue_stopped) &&
-		    (atomic_read(&tx_ring->tx_count) > (tx_ring->wq_len / 4)))
+		if ((atomic_read(&tx_ring->tx_count) > (tx_ring->wq_len / 4)))
 			/*
 			 * The queue got stopped because the tx_ring was full.
 			 * Wake it up, because it's now at least 25% empty.
@@ -2561,7 +2560,6 @@ static netdev_tx_t qlge_send(struct sk_buff *skb, struct net_device *ndev)
 			   "%s: BUG! shutting down tx queue %d due to lack of resources.\n",
 			   __func__, tx_ring_idx);
 		netif_stop_subqueue(ndev, tx_ring->wq_id);
-		atomic_inc(&tx_ring->queue_stopped);
 		tx_ring->tx_errors++;
 		return NETDEV_TX_BUSY;
 	}
@@ -2690,7 +2688,6 @@ static void ql_init_tx_ring(struct ql_adapter *qdev, struct tx_ring *tx_ring)
 		tx_ring_desc++;
 	}
 	atomic_set(&tx_ring->tx_count, tx_ring->wq_len);
-	atomic_set(&tx_ring->queue_stopped, 0);
 }
 
 static void ql_free_tx_resources(struct ql_adapter *qdev,
-- 
1.7.1

^ permalink raw reply related

* [PATCH net-next 1/9] qlge: Fix TX queue stoppage due to full condition.
From: Jitendra Kalsaria @ 2012-07-11  0:57 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer, Dept_NX_Linux_NIC_Driver, Jitendra Kalsaria
In-Reply-To: <1341968259-18931-1-git-send-email-jitendra.kalsaria@qlogic.com>

From: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>

TX queue was being stopped at beginning of send path instead
of at the end when last descriptor is used.

Signed-off-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
---
 drivers/net/ethernet/qlogic/qlge/qlge_main.c |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
index 09d8d33..ce2d37f 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
@@ -2558,7 +2558,7 @@ static netdev_tx_t qlge_send(struct sk_buff *skb, struct net_device *ndev)
 
 	if (unlikely(atomic_read(&tx_ring->tx_count) < 2)) {
 		netif_info(qdev, tx_queued, qdev->ndev,
-			   "%s: shutting down tx queue %d du to lack of resources.\n",
+			   "%s: BUG! shutting down tx queue %d due to lack of resources.\n",
 			   __func__, tx_ring_idx);
 		netif_stop_subqueue(ndev, tx_ring->wq_id);
 		atomic_inc(&tx_ring->queue_stopped);
@@ -2612,6 +2612,16 @@ static netdev_tx_t qlge_send(struct sk_buff *skb, struct net_device *ndev)
 		     tx_ring->prod_idx, skb->len);
 
 	atomic_dec(&tx_ring->tx_count);
+
+	if (unlikely(atomic_read(&tx_ring->tx_count) < 2)) {
+		netif_stop_subqueue(ndev, tx_ring->wq_id);
+		if ((atomic_read(&tx_ring->tx_count) > (tx_ring->wq_len / 4)))
+			/*
+			 * The queue got stopped because the tx_ring was full.
+			 * Wake it up, because it's now at least 25% empty.
+			 */
+			netif_wake_subqueue(qdev->ndev, tx_ring->wq_id);
+	}
 	return NETDEV_TX_OK;
 }
 
-- 
1.7.1

^ permalink raw reply related

* [PATCH net-next 0/9] qlge: bug fix
From: Jitendra Kalsaria @ 2012-07-11  0:57 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer, Dept_NX_Linux_NIC_Driver, Jitendra Kalsaria

From: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>

Please apply it to net-next.

Thanks,
Jitendra

^ permalink raw reply

* [PATCH net-next 4/9] qlge: Clean up ethtool set WOL routine.
From: Jitendra Kalsaria @ 2012-07-11  0:57 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer, Dept_NX_Linux_NIC_Driver, Jitendra Kalsaria
In-Reply-To: <1341968259-18931-1-git-send-email-jitendra.kalsaria@qlogic.com>

From: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>

Signed-off-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
---
 drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c |    9 ---------
 1 files changed, 0 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c b/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
index c2adfa2..3b0912f 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
@@ -401,7 +401,6 @@ static void ql_get_wol(struct net_device *ndev, struct ethtool_wolinfo *wol)
 static int ql_set_wol(struct net_device *ndev, struct ethtool_wolinfo *wol)
 {
 	struct ql_adapter *qdev = netdev_priv(ndev);
-	int status;
 	unsigned short ssys_dev = qdev->pdev->subsystem_device;
 
 	/* WOL is only supported for mezz card. */
@@ -416,14 +415,6 @@ static int ql_set_wol(struct net_device *ndev, struct ethtool_wolinfo *wol)
 	qdev->wol = wol->wolopts;
 
 	netif_info(qdev, drv, qdev->ndev, "Set wol option 0x%x\n", qdev->wol);
-	if (!qdev->wol) {
-		u32 wol = 0;
-		status = ql_mb_wol_mode(qdev, wol);
-		netif_err(qdev, drv, qdev->ndev, "WOL %s (wol code 0x%x)\n",
-			  status == 0 ? "cleared successfully" : "clear failed",
-			  wol);
-	}
-
 	return 0;
 }
 
-- 
1.7.1

^ permalink raw reply related

* [PATCH net-next 3/9] qlge: Fix ethtool WOL calls to operate only on devices that support WOL.
From: Jitendra Kalsaria @ 2012-07-11  0:57 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer, Dept_NX_Linux_NIC_Driver, Jitendra Kalsaria
In-Reply-To: <1341968259-18931-1-git-send-email-jitendra.kalsaria@qlogic.com>

From: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>

Signed-off-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
---
 drivers/net/ethernet/qlogic/qlge/qlge.h         |    2 ++
 drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c |   20 ++++++++++++++++----
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qlge/qlge.h b/drivers/net/ethernet/qlogic/qlge/qlge.h
index 6e7050c..ae7dddc 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge.h
+++ b/drivers/net/ethernet/qlogic/qlge/qlge.h
@@ -25,6 +25,8 @@
 #define QLGE_VENDOR_ID    0x1077
 #define QLGE_DEVICE_ID_8012	0x8012
 #define QLGE_DEVICE_ID_8000	0x8000
+#define QLGE_MEZZ_SSYS_ID_068	0x0068
+#define QLGE_MEZZ_SSYS_ID_180	0x0180
 #define MAX_CPUS 8
 #define MAX_TX_RINGS MAX_CPUS
 #define MAX_RX_RINGS ((MAX_CPUS * 2) + 1)
diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c b/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
index 8e2c2a7..c2adfa2 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_ethtool.c
@@ -388,17 +388,29 @@ static void ql_get_drvinfo(struct net_device *ndev,
 static void ql_get_wol(struct net_device *ndev, struct ethtool_wolinfo *wol)
 {
 	struct ql_adapter *qdev = netdev_priv(ndev);
-	/* What we support. */
-	wol->supported = WAKE_MAGIC;
-	/* What we've currently got set. */
-	wol->wolopts = qdev->wol;
+	unsigned short ssys_dev = qdev->pdev->subsystem_device;
+
+	/* WOL is only supported for mezz card. */
+	if (ssys_dev == QLGE_MEZZ_SSYS_ID_068 ||
+			ssys_dev == QLGE_MEZZ_SSYS_ID_180) {
+		wol->supported = WAKE_MAGIC;
+		wol->wolopts = qdev->wol;
+	}
 }
 
 static int ql_set_wol(struct net_device *ndev, struct ethtool_wolinfo *wol)
 {
 	struct ql_adapter *qdev = netdev_priv(ndev);
 	int status;
+	unsigned short ssys_dev = qdev->pdev->subsystem_device;
 
+	/* WOL is only supported for mezz card. */
+	if (ssys_dev != QLGE_MEZZ_SSYS_ID_068 ||
+			ssys_dev != QLGE_MEZZ_SSYS_ID_180) {
+		netif_info(qdev, drv, qdev->ndev,
+				"WOL is only supported for mezz card\n");
+		return -EOPNOTSUPP;
+	}
 	if (wol->wolopts & ~WAKE_MAGIC)
 		return -EINVAL;
 	qdev->wol = wol->wolopts;
-- 
1.7.1

^ permalink raw reply related

* Re: [PATCH] etherdevice: introduce eth_broadcast_addr
From: Joe Perches @ 2012-07-11  1:09 UTC (permalink / raw)
  To: David Miller
  Cc: paul.gortmaker-CWA4WttNNZF54TAoqtyWWQ,
	johannes-cdvu00un1VgdHxzADdlk8Q, netdev-u79uwXL29TY76Z2rM5mHXA,
	linux-wireless-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20120710.174142.995966539991957646.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>

On Tue, 2012-07-10 at 17:41 -0700, David Miller wrote:
> From: Paul Gortmaker <paul.gortmaker-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org>
> Date: Tue, 10 Jul 2012 20:09:44 -0400
> 
> > On Tue, Jul 10, 2012 at 12:18 PM, Johannes Berg
> > <johannes-cdvu00un1VgdHxzADdlk8Q@public.gmane.org> wrote:
> >> From: Johannes Berg <johannes.berg-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> >>
> >> A lot of code has either the memset or an inefficient copy
> >> from a static array that contains the all-ones broadcast
> > 
> > Shouldn't we see all that "lot of code" here in this same
> > commit, now using this new shortcut?

If I grepped properly, there are 42 instances of static arrays for
for broadcast ethernet addresses in drivers/net and drivers/staging
so it'd save some smallish amount of code by using a combination of
is_broadcast_ether_addr and this new func.

I think there are 53 instances of the memset(foo, 0xff, 6|ETH_ALEN).

> I disagree and I intend to apply Johannes's patch as-is to net-next.

Sounds fine to me.

For some additional style symmetry, how about a conversion of
random_ether_address to eth_random_addr too via

o Rename random_ether_addr to eth_random_addr and add a
  #define random_ether_addr eth_random_addr
o sed 's/\brandom_ether_addr\b/eth_random_addr/g' files_that_use_REA
o remove the #define after awhile


--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: [PATCH] etherdevice: introduce eth_broadcast_addr
From: David Miller @ 2012-07-11  1:07 UTC (permalink / raw)
  To: johannes; +Cc: netdev, linux-wireless
In-Reply-To: <1341937124.4475.27.camel@jlt3.sipsolutions.net>

From: Johannes Berg <johannes@sipsolutions.net>
Date: Tue, 10 Jul 2012 18:18:44 +0200

> From: Johannes Berg <johannes.berg@intel.com>
> 
> A lot of code has either the memset or an inefficient copy
> from a static array that contains the all-ones broadcast
> address. Introduce eth_broadcast_addr() to fill an address
> with all ones, making the code clearer and allowing us to
> get rid of some constant arrays.
> 
> Signed-off-by: Johannes Berg <johannes.berg@intel.com>

Applied, thanks.

^ permalink raw reply

* Re: net-next kernel NULL pointer dereference at fib_rules_tclass
From: David Miller @ 2012-07-11  1:05 UTC (permalink / raw)
  To: gregory.v.rose; +Cc: eric.dumazet, ogerlitz, netdev, shlomop, amirv, erezsh
In-Reply-To: <20120710111434.00003ba8@unknown>

From: Greg Rose <gregory.v.rose@intel.com>
Date: Tue, 10 Jul 2012 11:14:34 -0700

> On Tue, 10 Jul 2012 19:25:01 +0200
> Eric Dumazet <eric.dumazet@gmail.com> wrote:
> 
>> On Tue, 2012-07-10 at 09:44 -0700, David Miller wrote:
>> > From: Or Gerlitz <ogerlitz@mellanox.com>
>> > Date: Tue, 10 Jul 2012 10:16:55 +0300
>> > 
>> > > Starting system logger: BUG: unable to handle kernel NULL pointer
>> > > dereference at 00000000000000ac IP: [<ffffffff81320393>]
>> > > fib_rules_tclass+0xf/0x17
>> > 
>> > Ok, fib_rules_tclass() checks for res->r being NULL and only
>> > dereferences it if it is not.
>> > 
>> > fib4_rule->tclassid has offset ~0x8c on x86-64, and this fault
>> > address is 0x10 bytes off.
>> > 
>> > Does this patch fix the problem?
>> > 
>> > diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h
>> > index 539c672..000c467 100644
>> > --- a/include/net/ip_fib.h
>> > +++ b/include/net/ip_fib.h
>> > @@ -230,6 +230,7 @@ static inline int fib_lookup(struct net *net,
>> > struct flowi4 *flp, struct fib_result *res)
>> >  {
>> >  	if (!net->ipv4.fib_has_custom_rules) {
>> > +		res->r = NULL;
>> >  		if (net->ipv4.fib_local &&
>> >  		    !fib_table_lookup(net->ipv4.fib_local, flp,
>> > res, FIB_LOOKUP_NOREF))
>> 
>> It does here, thanks
> 
> Works for me too.

Great, pushed out to net-next, thanks everyone.

^ permalink raw reply

* Re: [PATCH 03/16] tcp: Maintain dynamic metrics in local cache.
From: David Miller @ 2012-07-11  1:01 UTC (permalink / raw)
  To: joe; +Cc: netdev
In-Reply-To: <1341967486.13724.9.camel@joe2Laptop>

From: Joe Perches <joe@perches.com>
Date: Tue, 10 Jul 2012 17:44:46 -0700

> I'd guess the one above is faster to execute.

It is.

> If it's not, the code in ipv6_addr_equal
> should be reverted. commit fed85383ac34d82
> ("[IPV6]: Use XOR and OR rather than mutiple ands for ipv6 address comparisons")

Not necessarily.

My version here is faster because we unconditionally test
the first word, which we need to do for both the ipv4 and
ipv6 cases.

The ipv6 routine optimization you mention exists in a
world where we know we have an ipv6 address always, which
is not the case here.

If anything, we should do XOR's on the final three words,
but we should not remove the first word optimization for
ipv4 which is the common case.

^ permalink raw reply

* Re: [PATCH 03/16] tcp: Maintain dynamic metrics in local cache.
From: Joe Perches @ 2012-07-11  0:44 UTC (permalink / raw)
  To: David Miller; +Cc: netdev
In-Reply-To: <20120710.172908.745359979722998717.davem@davemloft.net>

On Tue, 2012-07-10 at 17:29 -0700, David Miller wrote:
> From: Joe Perches <joe@perches.com>
> Date: Tue, 10 Jul 2012 10:02:04 -0700
> 
> > Maybe something like this is a bit more legible?
> > {
> > 	if (a->family != b->family)
> > 		return false;
> > 
> > 	if (a->family == AF_INET)
> > 		return a->addr.a4 == b->addr.a4;
> > 
> > 	return ipv6_addr_equal((const struct in6_addr *)&a->addr.a6,
> > 			       (const struct in6_addr *)&b->addr.a6);
> > }
> 
> My version was meant to be fast rather than legible :-)

Fast to write you mean? ;)

I'd guess the one above is faster to execute.

If it's not, the code in ipv6_addr_equal
should be reverted. commit fed85383ac34d82
("[IPV6]: Use XOR and OR rather than mutiple ands for ipv6 address comparisons")

cheers, Joe

^ permalink raw reply

* Re: [PATCH] etherdevice: introduce eth_broadcast_addr
From: David Miller @ 2012-07-11  0:41 UTC (permalink / raw)
  To: paul.gortmaker; +Cc: johannes, netdev, linux-wireless
In-Reply-To: <CAP=VYLqNyAF1gSsKTd3YojeJXK_-pEzXAKyVQbQfwhtwOyMmwg@mail.gmail.com>

From: Paul Gortmaker <paul.gortmaker@windriver.com>
Date: Tue, 10 Jul 2012 20:09:44 -0400

> On Tue, Jul 10, 2012 at 12:18 PM, Johannes Berg
> <johannes@sipsolutions.net> wrote:
>> From: Johannes Berg <johannes.berg@intel.com>
>>
>> A lot of code has either the memset or an inefficient copy
>> from a static array that contains the all-ones broadcast
> 
> Shouldn't we see all that "lot of code" here in this same
> commit, now using this new shortcut?

I disagree and I intend to apply Johannes's patch as-is to net-next.

^ permalink raw reply

* Re: 82571EB: Detected Hardware Unit Hang
From: Joe Jin @ 2012-07-11  0:34 UTC (permalink / raw)
  To: Dave, Tushar N
  Cc: netdev@vger.kernel.org, e1000-devel@lists.sf.net,
	linux-kernel@vger.kernel.org
In-Reply-To: <061C8A8601E8EE4CA8D8FD6990CEA891274EE41F@ORSMSX102.amr.corp.intel.com>

On 07/11/12 03:02, Dave, Tushar N wrote:
>> -----Original Message-----
>> From: netdev-owner@vger.kernel.org [mailto:netdev-owner@vger.kernel.org]
>> On Behalf Of Joe Jin
>> Sent: Tuesday, July 10, 2012 12:40 AM
>> To: Joe Jin
>> Cc: e1000-devel@lists.sf.net; netdev@vger.kernel.org; linux-
>> kernel@vger.kernel.org
>> Subject: Re: 82571EB: Detected Hardware Unit Hang
>>
>> When I debug the driver I found before Detected HW hang, driver unable to
>> clean and reclaim the resources:
>>
>> 1457         while ((eop_desc->upper.data &
>> cpu_to_le32(E1000_TXD_STAT_DD)) &&  <== at here upper.data always is 0x300
>> 1458                (count < tx_ring->count)) {
>>     <--- snip --->
>> 1487         }
>>
>>
>> I checked all driver codes I did not found anywhere will set the
>> upper.data with E1000_TXD_STAT_DD, I guess upper.data be set by hardware?
> 
> Yes upper.data (part of it is STATUS byte) is set by HW. Basically driver checks E1000_TXD_STAT_DD (Descriptor Done) bit. If this bit is set that means HW has processed that descriptor and driver can now clean that descriptor.
> With value 0x300 , DD bit is not set. That means HW has not processed that descriptor.

Thanks for the clarify, might be firmware issue?
> 
> How fast does tx hang reproduce? I suggest you to enable debug code in driver so when tx hang occurs it will dump the HW desc ring info into kernel log.

Once I copy a file from other server, issue to be reproduced at once.
I'll enable the debug to get more debug info.

> You can run "ethtool -s ethx msglvl 0x2c00" to enable debug.
> Once tx hang occurs please send me the full dmesg log.
> 
> Does tx hang occur with in-kernel e1000e driver too?

I tried several drivers included rhel5 the latest, Intel the latest,
rhel6 the latest, issue see on all those drivers.

Thanks,
Joe 
> 
> Thanks.
> 
> -Tushar
> 
> 
>> If OS is 32bit system, what which happen?
> 
> 
>>
>> Thanks in advance,
>> Joe
>>
>> On 07/09/12 16:51, Joe Jin wrote:
>>> Hi list,
>>>
>>> I'm seeing a Unit Hang even with the latest e1000e driver 2.0.0 when
>>> doing scp test. this issue is easy do reproduced on SUN FIRE X2270 M2,
>>> just copy a big file (>500M) from another server will hit it at once.
>>>
>>> Would you please help on this?
>>>
>>> device info:
>>> # lspci -s 05:00.0
>>> 05:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit
>>> Ethernet Controller (Copper) (rev 06)
>>>
>>> # lspci -s 05:00.0 -n
>>> 05:00.0 0200: 8086:10bc (rev 06)
>>>
>>> # ethtool -i eth0
>>> driver: e1000e
>>> version: 2.0.0-NAPI
>>> firmware-version: 5.10-2
>>> bus-info: 0000:05:00.0
>>>
>>> # ethtool -k eth0
>>> Offload parameters for eth0:
>>> rx-checksumming: on
>>> tx-checksumming: on
>>> scatter-gather: on
>>> tcp segmentation offload: on
>>> udp fragmentation offload: off
>>> generic segmentation offload: on
>>> generic-receive-offload: on
>>>
>>> kernel log:
>>> -----------
>>> e1000e 0000:05:00.0: eth0: Detected Hardware Unit Hang:
>>>   TDH                  <6c>
>>>   TDT                  <81>
>>>   next_to_use          <81>
>>>   next_to_clean        <6b>
>>> buffer_info[next_to_clean]:
>>>   time_stamp           <fffc7a23>
>>>   next_to_watch        <71>
>>>   jiffies              <fffc8c0c>
>>>   next_to_watch.status <0>
>>> MAC Status             <80387>
>>> PHY Status             <792d>
>>> PHY 1000BASE-T Status  <3c00>
>>> PHY Extended Status    <3000>
>>> PCI Status             <10>
>>> e1000e 0000:05:00.0: eth0: Detected Hardware Unit Hang:
>>>   TDH                  <6c>
>>>   TDT                  <81>
>>>   next_to_use          <81>
>>>   next_to_clean        <6b>
>>> buffer_info[next_to_clean]:
>>>   time_stamp           <fffc7a23>
>>>   next_to_watch        <71>
>>>   jiffies              <fffc9bac>
>>>   next_to_watch.status <0>
>>> MAC Status             <80387>
>>> PHY Status             <792d>
>>> PHY 1000BASE-T Status  <3c00>
>>> PHY Extended Status    <3000>
>>> PCI Status             <10>
>>> ------------[ cut here ]------------
>>> WARNING: at net/sched/sch_generic.c:255 dev_watchdog+0x225/0x230()
>>> Hardware name: SUN FIRE X2270 M2 NETDEV WATCHDOG: eth0 (e1000e):
>>> transmit queue 0 timed out Modules linked in: autofs4 hidp rfcomm
>>> bluetooth rfkill lockd sunrpc cpufreq_ondemand acpi_cpufreq mperf
>>> be2iscsi iscsi_boot_sysfs ib_iser rdma_cm ib_cm iw_cm ib_sa ib_mad
>>> ib_core ib_addr iscsi_tcp bnx2i cnic uio ipv6 cxgb3i libcxgbi cxgb3
>>> mdio libiscsi_tcp libiscsi scsi_transport_iscsi video sbs sbshc
>>> acpi_pad acpi_ipmi ipmi_msghandler parport_pc lp parport e1000e(U)
>>> snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device
>>> igb snd_pcm_oss serio_raw snd_mixer_oss snd_pcm tpm_infineon snd_timer
>>> snd soundcore snd_page_alloc i2c_i801 iTCO_wdt i2c_core pcspkr
>>> i7core_edac iTCO_vendor_support ioatdma ghes dca edac_core hed
>>> dm_snapshot dm_zero dm_mirror dm_region_hash dm_log dm_mod usb_storage
>>> sd_mod crc_t10dif sg ahci libahci ext3 jbd mbcache [last unloaded:
>>> microcode]
>>> Pid: 0, comm: swapper Not tainted 2.6.39-200.24.1.el5uek #1 Call
>>> Trace:
>>>  [<c07d9ac5>] ? dev_watchdog+0x225/0x230  [<c045ba61>]
>>> warn_slowpath_common+0x81/0xa0  [<c07d9ac5>] ?
>>> dev_watchdog+0x225/0x230  [<c045bb23>] warn_slowpath_fmt+0x33/0x40
>>> [<c07d9ac5>] dev_watchdog+0x225/0x230  [<c07d98a0>] ?
>>> dev_activate+0xb0/0xb0  [<c0468e82>] call_timer_fn+0x32/0xf0
>>> [<c04bceb0>] ? rcu_check_callbacks+0x80/0x80  [<c046a76d>]
>>> run_timer_softirq+0xed/0x1b0  [<c07d98a0>] ? dev_activate+0xb0/0xb0
>>> [<c0461a81>] __do_softirq+0x91/0x1a0  [<c04619f0>] ?
>>> local_bh_enable+0x80/0x80  <IRQ>  [<c0462295>] ? irq_exit+0x95/0xa0
>>> [<c087f8b8>] ? smp_apic_timer_interrupt+0x38/0x42
>>>  [<c08784f5>] ? apic_timer_interrupt+0x31/0x38  [<c046007b>] ?
>>> do_exit+0x11b/0x370  [<c065eae4>] ? intel_idle+0xa4/0x100
>>> [<c078d9b9>] ? cpuidle_idle_call+0xb9/0x1e0  [<c0411d77>] ?
>>> cpu_idle+0x97/0xd0  [<c085cbbd>] ? rest_init+0x5d/0x70  [<c0b07a7a>] ?
>>> start_kernel+0x28a/0x340  [<c0b074b0>] ? obsolete_checksetup+0xb0/0xb0
>>> [<c0b070a4>] ? i386_start_kernel+0x64/0xb0 ---[ end trace
>>> 5502b55cd4d4e5cb ]--- e1000e 0000:05:00.0: eth0: Reset adapter
>>> e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
>>>
>>> Thanks,
>>> Joe
>>>
>>
>>
>>

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit http://communities.intel.com/community/wired

^ permalink raw reply

* Re: [PATCH 03/16] tcp: Maintain dynamic metrics in local cache.
From: David Miller @ 2012-07-11  0:29 UTC (permalink / raw)
  To: joe; +Cc: netdev
In-Reply-To: <1341939724.6118.145.camel@joe2Laptop>

From: Joe Perches <joe@perches.com>
Date: Tue, 10 Jul 2012 10:02:04 -0700

> Maybe something like this is a bit more legible?
> {
> 	if (a->family != b->family)
> 		return false;
> 
> 	if (a->family == AF_INET)
> 		return a->addr.a4 == b->addr.a4;
> 
> 	return ipv6_addr_equal((const struct in6_addr *)&a->addr.a6,
> 			       (const struct in6_addr *)&b->addr.a6);
> }

My version was meant to be fast rather than legible :-)

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox