Netdev List
 help / color / mirror / Atom feed
* Re: [PATCH net 1/1] net sched actions: fix GETing actions
From: Jamal Hadi Salim @ 2016-09-11 16:30 UTC (permalink / raw)
  To: Cong Wang; +Cc: David Miller, Linux Kernel Network Developers
In-Reply-To: <CAM_iQpUrbikYYfttzEn8AihpSmXtwrdnV-949BzVH_0DdwW37g@mail.gmail.com>

On 16-09-08 01:12 PM, Cong Wang wrote:

>> +}
>> +
>>  static int
>>  tca_action_gd(struct net *net, struct nlattr *nla, struct nlmsghdr *n,
>>               u32 portid, int event)
>> @@ -883,6 +894,7 @@ tca_action_gd(struct net *net, struct nlattr *nla, struct nlmsghdr *n,
>>                         goto err;
>>                 }
>>                 act->order = i;
>> +               act->tcfa_refcnt+=1;
>
>
> Maybe we only need to fixup the refcnt without touching list,
> from my quick observation to your bug report (again, you didn't explain).
>

Yes, you are correct. clearing the list is unnecessary since it is
temporary. When i get the chance i will fix it up, test and resubmit.

What do you want the commit message to say? It shows an example because
the functionality broke.

cheers,
jamal

^ permalink raw reply

* Re: [PATCH 00/26] constify local structures
From: Jarkko Sakkinen @ 2016-09-11 17:21 UTC (permalink / raw)
  To: Julia Lawall
  Cc: alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw, Mustafa Ismail,
	Tatyana Nikolova, kernel-janitors-u79uwXL29TY76Z2rM5mHXA,
	linux-fbdev-u79uwXL29TY76Z2rM5mHXA,
	platform-driver-x86-u79uwXL29TY76Z2rM5mHXA,
	devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b,
	linux-scsi-u79uwXL29TY76Z2rM5mHXA,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-acpi-u79uwXL29TY76Z2rM5mHXA,
	tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
	linux-media-u79uwXL29TY76Z2rM5mHXA,
	linux-pm-u79uwXL29TY76Z2rM5mHXA, linux-can-u79uwXL29TY76Z2rM5mHXA,
	Shiraz Saleem, Sergei Shtylyov, netdev-u79uwXL29TY76Z2rM5mHXA,
	Chien Tin Tung, linux-wireless-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-spi-u79uwXL29TY76Z2rM5mHXA,
	linux-renesas-soc-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA, joe-6d6DIl74uiNBDgjK7y7TUQ
In-Reply-To: <1473599168-30561-1-git-send-email-Julia.Lawall-L2FTfq7BK8M@public.gmane.org>

On Sun, Sep 11, 2016 at 03:05:42PM +0200, Julia Lawall wrote:
> Constify local structures.
> 
> The semantic patch that makes this change is as follows:
> (http://coccinelle.lip6.fr/)

Just my two cents but:

1. You *can* use a static analysis too to find bugs or other issues.
2. However, you should manually do the commits and proper commit
   messages to subsystems based on your findings. And I generally think
   that if one contributes code one should also at least smoke test changes
   somehow.

I don't know if I'm alone with my opinion. I just think that one should
also do the analysis part and not blindly create and submit patches.

Anyway, I'll apply the TPM change at some point. As I said they were
for better. Thanks.

/Jarkko

> // <smpl>
> // The first rule ignores some cases that posed problems
> @r disable optional_qualifier@
> identifier s != {peri_clk_data,threshold_attr,tracer_flags,tracer};
> identifier i != {s5k5baf_cis_rect,smtcfb_fix};
> position p;
> @@
> static struct s i@p = { ... };
> 
> @lstruct@
> identifier r.s;
> @@
> struct s { ... };
> 
> @used depends on lstruct@
> identifier r.i;
> @@
> i
> 
> @bad1@
> expression e;
> identifier r.i;
> assignment operator a;
> @@
>  (<+...i...+>) a e
> 
> @bad2@
> identifier r.i;
> @@
>  &(<+...i...+>)
> 
> @bad3@
> identifier r.i;
> declarer d;
> @@
>  d(...,<+...i...+>,...);
> 
> @bad4@
> identifier r.i;
> type T;
> T[] e;
> identifier f;
> position p;
> @@
> 
> f@p(...,
> (
>   (<+...i...+>)
> &
>   e
> )
> ,...)
> 
> @bad4a@
> identifier r.i;
> type T;
> T *e;
> identifier f;
> position p;
> @@
> 
> f@p(...,
> (
>   (<+...i...+>)
> &
>   e
> )
> ,...)
> 
> @ok5@
> expression *e;
> identifier r.i;
> position p;
> @@
> e =@p i
> 
> @bad5@
> expression *e;
> identifier r.i;
> position p != ok5.p;
> @@
> e =@p (<+...i...+>)
> 
> @rr depends on used && !bad1 && !bad2 && !bad3 && !bad4 && !bad4a && !bad5@
> identifier s,r.i;
> position r.p;
> @@
> 
> static
> +const
>  struct s i@p = { ... };
> 
> @depends on used && !bad1 && !bad2 && !bad3 && !bad4 && !bad4a && !bad5
>  disable optional_qualifier@
> identifier rr.s,r.i;
> @@
> 
> static
> +const
>  struct s i;
> // </smpl>
> 
> ---
> 
>  drivers/acpi/acpi_apd.c                              |    8 +++---
>  drivers/char/tpm/tpm-interface.c                     |   10 ++++----
>  drivers/char/tpm/tpm-sysfs.c                         |    2 -
>  drivers/cpufreq/intel_pstate.c                       |    8 +++---
>  drivers/infiniband/hw/i40iw/i40iw_uk.c               |    6 ++---
>  drivers/media/i2c/tvp514x.c                          |    2 -
>  drivers/media/pci/ddbridge/ddbridge-core.c           |   18 +++++++--------
>  drivers/media/pci/ngene/ngene-cards.c                |   14 ++++++------
>  drivers/media/pci/smipcie/smipcie-main.c             |    8 +++---
>  drivers/misc/sgi-xp/xpc_uv.c                         |    2 -
>  drivers/net/arcnet/com20020-pci.c                    |   10 ++++----
>  drivers/net/can/c_can/c_can_pci.c                    |    4 +--
>  drivers/net/can/sja1000/plx_pci.c                    |   20 ++++++++---------
>  drivers/net/ethernet/mellanox/mlx4/main.c            |    4 +--
>  drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c |    2 -
>  drivers/net/ethernet/renesas/sh_eth.c                |   14 ++++++------
>  drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c     |    2 -
>  drivers/net/wireless/ath/dfs_pattern_detector.c      |    2 -
>  drivers/net/wireless/intel/iwlegacy/3945.c           |    4 +--
>  drivers/net/wireless/realtek/rtlwifi/rtl8188ee/sw.c  |    2 -
>  drivers/net/wireless/realtek/rtlwifi/rtl8192ce/sw.c  |    2 -
>  drivers/net/wireless/realtek/rtlwifi/rtl8192de/sw.c  |    2 -
>  drivers/net/wireless/realtek/rtlwifi/rtl8192ee/sw.c  |    2 -
>  drivers/net/wireless/realtek/rtlwifi/rtl8192se/sw.c  |    2 -
>  drivers/net/wireless/realtek/rtlwifi/rtl8723ae/sw.c  |    2 -
>  drivers/net/wireless/realtek/rtlwifi/rtl8723be/sw.c  |    2 -
>  drivers/net/wireless/realtek/rtlwifi/rtl8821ae/sw.c  |    2 -
>  drivers/platform/chrome/chromeos_laptop.c            |   22 +++++++++----------
>  drivers/platform/x86/intel_scu_ipc.c                 |    6 ++---
>  drivers/platform/x86/intel_telemetry_debugfs.c       |    2 -
>  drivers/scsi/esas2r/esas2r_flash.c                   |    2 -
>  drivers/scsi/hptiop.c                                |    6 ++---
>  drivers/spi/spi-dw-pci.c                             |    4 +--
>  drivers/staging/rtl8192e/rtl8192e/rtl_core.c         |    2 -
>  drivers/usb/misc/ezusb.c                             |    2 -
>  drivers/video/fbdev/matrox/matroxfb_g450.c           |    2 -
>  lib/crc64_ecma.c                                     |    2 -
>  sound/pci/ctxfi/ctatc.c                              |    2 -
>  sound/pci/hda/patch_ca0132.c                         |   10 ++++----
>  sound/pci/riptide/riptide.c                          |    2 -
>  40 files changed, 110 insertions(+), 110 deletions(-)

------------------------------------------------------------------------------

^ permalink raw reply

* Re: [PATCH 00/26] constify local structures
From: Joe Perches @ 2016-09-11 17:56 UTC (permalink / raw)
  To: Julia Lawall, linux-renesas-soc-u79uwXL29TY76Z2rM5mHXA
  Cc: alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw, Mustafa Ismail,
	Tatyana Nikolova, kernel-janitors-u79uwXL29TY76Z2rM5mHXA,
	linux-fbdev-u79uwXL29TY76Z2rM5mHXA,
	platform-driver-x86-u79uwXL29TY76Z2rM5mHXA,
	devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b,
	linux-scsi-u79uwXL29TY76Z2rM5mHXA,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-acpi-u79uwXL29TY76Z2rM5mHXA,
	tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
	linux-media-u79uwXL29TY76Z2rM5mHXA,
	linux-pm-u79uwXL29TY76Z2rM5mHXA, linux-can-u79uwXL29TY76Z2rM5mHXA,
	Shiraz Saleem, Sergei Shtylyov, netdev-u79uwXL29TY76Z2rM5mHXA,
	Chien Tin Tung, linux-wireless-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-spi-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <1473599168-30561-1-git-send-email-Julia.Lawall-L2FTfq7BK8M@public.gmane.org>

On Sun, 2016-09-11 at 15:05 +0200, Julia Lawall wrote:
> Constify local structures.

Thanks Julia.

A few suggestions & questions:

Perhaps the script should go into scripts/coccinelle/
so that future cases could be caught by the robot
and commit message referenced by the patch instances.

Can you please compile the files modified using the
appropriate defconfig/allyesconfig and show the
movement from data to const by using
	$ size <object>.new/old
and include that in the changelogs (maybe next time)?

Is it possible for a rule to trace the instances where
an address of a struct or struct member is taken by
locally defined and declared function call where the
callee does not modify any dereferenced object?

ie:

struct foo {
	int bar;
	char *baz;
};

struct foo qux[] = {
	{ 1, "description 1" },
	{ 2, "dewcription 2" },
	[ n, "etc" ]...,
};

void message(struct foo *msg)
{
	printk("%d %s\n", msg->bar, msg->baz);
}

where some code uses

	message(qux[index]);

So could a coccinelle script change:

struct foo qux[] = { to const struct foo quz[] = {

and

void message(struct foo *msg) to void message(const struct foo *msg)


------------------------------------------------------------------------------

^ permalink raw reply

* Re: [PATCH 23/26] sh_eth: constify local structures
From: Sergei Shtylyov @ 2016-09-11 18:14 UTC (permalink / raw)
  To: Julia Lawall
  Cc: joe, kernel-janitors, netdev, linux-renesas-soc, linux-kernel
In-Reply-To: <1473599168-30561-24-git-send-email-Julia.Lawall@lip6.fr>

On 09/11/2016 04:06 PM, Julia Lawall wrote:
> For structure types defined in the same file or local header files, find
> top-level static structure declarations that have the following
> properties:
> 1. Never reassigned.

   Really?

> 2. Address never taken

   Really?

> 3. Not passed to a top-level macro call
> 4. No pointer or array-typed field passed to a function or stored in a
> variable.
> Declare structures having all of these properties as const.
>
> Done using Coccinelle.
> Based on a suggestion by Joe Perches <joe@perches.com>.
>
> Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>

    NAK, see sh_eth_set_default_cpu_data().

MBR, Sergei

^ permalink raw reply

* Re: [PATCH net 1/1] net sched actions: fix GETing actions
From: Cong Wang @ 2016-09-11 18:56 UTC (permalink / raw)
  To: Jamal Hadi Salim; +Cc: David Miller, Linux Kernel Network Developers
In-Reply-To: <0b66983d-c316-9084-0f2c-6993cbf1f56d@mojatatu.com>

On Sun, Sep 11, 2016 at 9:30 AM, Jamal Hadi Salim <jhs@mojatatu.com> wrote:
>
> What do you want the commit message to say? It shows an example because
> the functionality broke.

I expect it to explain why we need to increase that refcnt for GET
and how we missed it. Also need to find a right commit to blame. ;)

Thanks.

^ permalink raw reply

* Re: [PATCH 00/26] constify local structures
From: Julia Lawall @ 2016-09-11 19:11 UTC (permalink / raw)
  To: Joe Perches
  Cc: alsa-devel, Mustafa Ismail, Tatyana Nikolova, kernel-janitors,
	linux-fbdev, platform-driver-x86, devel, linux-scsi, linux-rdma,
	Jason Gunthorpe, linux-acpi, tpmdd-devel, linux-media, linux-pm,
	linux-can, Julia Lawall, Shiraz Saleem, Sergei Shtylyov, netdev,
	Chien Tin Tung, linux-wireless, linux-kernel, linux-spi,
	linux-renesas-soc, linux-usb
In-Reply-To: <1473616576.19464.10.camel@perches.com>


On Sun, 11 Sep 2016, Joe Perches wrote:

> On Sun, 2016-09-11 at 15:05 +0200, Julia Lawall wrote:
> > Constify local structures.
>
> Thanks Julia.
>
> A few suggestions & questions:
>
> Perhaps the script should go into scripts/coccinelle/
> so that future cases could be caught by the robot
> and commit message referenced by the patch instances.

OK.

> Can you please compile the files modified using the
> appropriate defconfig/allyesconfig and show the

I currently send patches for this issue only for files that compile using
the x86 allyesconfig.

> movement from data to const by using
> 	$ size <object>.new/old
> and include that in the changelogs (maybe next time)?

OK, thanks for the suggestion.

> Is it possible for a rule to trace the instances where
> an address of a struct or struct member is taken by
> locally defined and declared function call where the
> callee does not modify any dereferenced object?
>
> ie:
>
> struct foo {
> 	int bar;
> 	char *baz;
> };
>
> struct foo qux[] = {
> 	{ 1, "description 1" },
> 	{ 2, "dewcription 2" },
> 	[ n, "etc" ]...,
> };
>
> void message(struct foo *msg)
> {
> 	printk("%d %s\n", msg->bar, msg->baz);
> }
>
> where some code uses
>
> 	message(qux[index]);
>
> So could a coccinelle script change:
>
> struct foo qux[] = { to const struct foo quz[] = {
>
> and
>
> void message(struct foo *msg) to void message(const struct foo *msg)

Yes, this could be possible too.

Thanks for the feedback.

julia

^ permalink raw reply

* [PATCH v3] net: ip, diag -- Add diag interface for raw sockets
From: Cyrill Gorcunov @ 2016-09-11 19:17 UTC (permalink / raw)
  To: David Ahern
  Cc: NETDEV, LKML, David S. Miller, Eric Dumazet, Alexey Kuznetsov,
	James Morris, Hideaki YOSHIFUJI, Patrick McHardy, Andrey Vagin,
	Stephen Hemminger
In-Reply-To: <c5889fbd-ad20-0626-be1f-9d09a1d35b1a@cumulusnetworks.com>

On Sat, Sep 10, 2016 at 04:28:40PM -0600, David Ahern wrote:
> On 9/10/16 4:05 PM, Cyrill Gorcunov wrote:
> > On Sat, Sep 10, 2016 at 10:31:35AM -0600, David Ahern wrote:
> >>
> >> Would you mind adding the destroy capability as well? The udp version
> >> should be close to what is needed for raw sockets. See udp_diag_destroy
> >> and udp_abort.
> > 
> > Should be something like below. Didn't tested it yet so for review only.
> > Will do testing at Monday.
> 
> doesn't compile:
> - raw_abort needs to be in a header for ipv6, and
> - inet_sk_diag_fill args have changed due to a recent commit

Thanks for review, David. I updated against net-next.
---
From: Cyrill Gorcunov <gorcunov@openvz.org>
Subject: [PATCH v3] net: ip, diag -- Add diag interface for raw sockets

In criu we are actively using diag interface to collect sockets
present in the system when dumping applications. And while for
unix, tcp, udp[lite], packet, netlink it works as expected,
the raw sockets do not have. Thus add it.

v2:
 - add missing sock_put calls in raw_diag_dump_one (by eric.dumazet@)
 - implement @destroy for diag requests (by dsa@)

v3:
 - add export of raw_abort for IPv6 (by dsa@)
 - pass net-admin flag into inet_sk_diag_fill due to
   changes in net-next branch (by dsa@)

CC: David S. Miller <davem@davemloft.net>
CC: Eric Dumazet <eric.dumazet@gmail.com>
CC: David Ahern <dsa@cumulusnetworks.com>
CC: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
CC: James Morris <jmorris@namei.org>
CC: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
CC: Patrick McHardy <kaber@trash.net>
CC: Andrey Vagin <avagin@openvz.org>
CC: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
---

 include/net/raw.h   |    5 +
 include/net/rawv6.h |    7 +
 net/ipv4/Kconfig    |    8 +
 net/ipv4/Makefile   |    1 
 net/ipv4/raw.c      |   21 ++++
 net/ipv4/raw_diag.c |  226 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 net/ipv6/raw.c      |    7 +
 7 files changed, 271 insertions(+), 4 deletions(-)

Index: linux-ml.git/include/net/raw.h
===================================================================
--- linux-ml.git.orig/include/net/raw.h
+++ linux-ml.git/include/net/raw.h
@@ -23,6 +23,11 @@
 
 extern struct proto raw_prot;
 
+extern struct raw_hashinfo raw_v4_hashinfo;
+struct sock *__raw_v4_lookup(struct net *net, struct sock *sk,
+			     unsigned short num, __be32 raddr,
+			     __be32 laddr, int dif);
+
 void raw_icmp_error(struct sk_buff *, int, u32);
 int raw_local_deliver(struct sk_buff *, int);
 
Index: linux-ml.git/include/net/rawv6.h
===================================================================
--- linux-ml.git.orig/include/net/rawv6.h
+++ linux-ml.git/include/net/rawv6.h
@@ -3,6 +3,13 @@
 
 #include <net/protocol.h>
 
+extern struct raw_hashinfo raw_v6_hashinfo;
+struct sock *__raw_v6_lookup(struct net *net, struct sock *sk,
+			     unsigned short num, const struct in6_addr *loc_addr,
+			     const struct in6_addr *rmt_addr, int dif);
+
+int raw_abort(struct sock *sk, int err);
+
 void raw6_icmp_error(struct sk_buff *, int nexthdr,
 		u8 type, u8 code, int inner_offset, __be32);
 bool raw6_local_deliver(struct sk_buff *, int);
Index: linux-ml.git/net/ipv4/Kconfig
===================================================================
--- linux-ml.git.orig/net/ipv4/Kconfig
+++ linux-ml.git/net/ipv4/Kconfig
@@ -430,6 +430,14 @@ config INET_UDP_DIAG
 	  Support for UDP socket monitoring interface used by the ss tool.
 	  If unsure, say Y.
 
+config INET_RAW_DIAG
+	tristate "RAW: socket monitoring interface"
+	depends on INET_DIAG && (IPV6 || IPV6=n)
+	default n
+	---help---
+	  Support for RAW socket monitoring interface used by the ss tool.
+	  If unsure, say Y.
+
 config INET_DIAG_DESTROY
 	bool "INET: allow privileged process to administratively close sockets"
 	depends on INET_DIAG
Index: linux-ml.git/net/ipv4/Makefile
===================================================================
--- linux-ml.git.orig/net/ipv4/Makefile
+++ linux-ml.git/net/ipv4/Makefile
@@ -40,6 +40,7 @@ obj-$(CONFIG_NETFILTER)	+= netfilter.o n
 obj-$(CONFIG_INET_DIAG) += inet_diag.o 
 obj-$(CONFIG_INET_TCP_DIAG) += tcp_diag.o
 obj-$(CONFIG_INET_UDP_DIAG) += udp_diag.o
+obj-$(CONFIG_INET_RAW_DIAG) += raw_diag.o
 obj-$(CONFIG_NET_TCPPROBE) += tcp_probe.o
 obj-$(CONFIG_TCP_CONG_BIC) += tcp_bic.o
 obj-$(CONFIG_TCP_CONG_CDG) += tcp_cdg.o
Index: linux-ml.git/net/ipv4/raw.c
===================================================================
--- linux-ml.git.orig/net/ipv4/raw.c
+++ linux-ml.git/net/ipv4/raw.c
@@ -89,9 +89,10 @@ struct raw_frag_vec {
 	int hlen;
 };
 
-static struct raw_hashinfo raw_v4_hashinfo = {
+struct raw_hashinfo raw_v4_hashinfo = {
 	.lock = __RW_LOCK_UNLOCKED(raw_v4_hashinfo.lock),
 };
+EXPORT_SYMBOL_GPL(raw_v4_hashinfo);
 
 int raw_hash_sk(struct sock *sk)
 {
@@ -120,7 +121,7 @@ void raw_unhash_sk(struct sock *sk)
 }
 EXPORT_SYMBOL_GPL(raw_unhash_sk);
 
-static struct sock *__raw_v4_lookup(struct net *net, struct sock *sk,
+struct sock *__raw_v4_lookup(struct net *net, struct sock *sk,
 		unsigned short num, __be32 raddr, __be32 laddr, int dif)
 {
 	sk_for_each_from(sk) {
@@ -136,6 +137,7 @@ static struct sock *__raw_v4_lookup(stru
 found:
 	return sk;
 }
+EXPORT_SYMBOL_GPL(__raw_v4_lookup);
 
 /*
  *	0 - deliver
@@ -918,6 +920,20 @@ static int compat_raw_ioctl(struct sock
 }
 #endif
 
+int raw_abort(struct sock *sk, int err)
+{
+	lock_sock(sk);
+
+	sk->sk_err = err;
+	sk->sk_error_report(sk);
+	udp_disconnect(sk, 0);
+
+	release_sock(sk);
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(raw_abort);
+
 struct proto raw_prot = {
 	.name		   = "RAW",
 	.owner		   = THIS_MODULE,
@@ -943,6 +959,7 @@ struct proto raw_prot = {
 	.compat_getsockopt = compat_raw_getsockopt,
 	.compat_ioctl	   = compat_raw_ioctl,
 #endif
+	.diag_destroy	   = raw_abort,
 };
 
 #ifdef CONFIG_PROC_FS
Index: linux-ml.git/net/ipv4/raw_diag.c
===================================================================
--- /dev/null
+++ linux-ml.git/net/ipv4/raw_diag.c
@@ -0,0 +1,226 @@
+#include <linux/module.h>
+
+#include <linux/inet_diag.h>
+#include <linux/sock_diag.h>
+
+#include <net/raw.h>
+#include <net/rawv6.h>
+
+#ifdef pr_fmt
+# undef pr_fmt
+#endif
+
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+static struct raw_hashinfo *
+raw_get_hashinfo(const struct inet_diag_req_v2 *r)
+{
+	if (r->sdiag_family == AF_INET) {
+		return &raw_v4_hashinfo;
+#if IS_ENABLED(CONFIG_IPV6)
+	} else if (r->sdiag_family == AF_INET6) {
+		return &raw_v6_hashinfo;
+#endif
+	} else {
+		pr_warn_once("Unexpected inet family %d\n",
+			     r->sdiag_family);
+		WARN_ON_ONCE(1);
+		return ERR_PTR(-EINVAL);
+	}
+}
+
+static struct sock *raw_lookup(struct net *net, struct sock *from,
+			       const struct inet_diag_req_v2 *r)
+{
+	struct sock *sk = NULL;
+
+	if (r->sdiag_family == AF_INET)
+		sk = __raw_v4_lookup(net, from, r->sdiag_protocol,
+				     r->id.idiag_dst[0],
+				     r->id.idiag_src[0],
+				     r->id.idiag_if);
+#if IS_ENABLED(CONFIG_IPV6)
+	else
+		sk = __raw_v6_lookup(net, from, r->sdiag_protocol,
+				     (const struct in6_addr *)r->id.idiag_src,
+				     (const struct in6_addr *)r->id.idiag_dst,
+				     r->id.idiag_if);
+#endif
+	return sk;
+}
+
+static struct sock *raw_sock_get(struct net *net, const struct inet_diag_req_v2 *r)
+{
+	struct raw_hashinfo *hashinfo = raw_get_hashinfo(r);
+	struct sock *sk = NULL, *s;
+	int slot;
+
+	if (IS_ERR(hashinfo))
+		return ERR_CAST(hashinfo);
+
+	read_lock(&hashinfo->lock);
+	for (slot = 0; slot < RAW_HTABLE_SIZE; slot++) {
+		sk_for_each(s, &hashinfo->ht[slot]) {
+			sk = raw_lookup(net, s, r);
+			if (sk)
+				break;
+		}
+	}
+	if (sk && !atomic_inc_not_zero(&sk->sk_refcnt))
+		sk = NULL;
+	read_unlock(&hashinfo->lock);
+
+	return sk ? sk : ERR_PTR(-ENOENT);
+}
+
+static int raw_diag_dump_one(struct sk_buff *in_skb,
+			     const struct nlmsghdr *nlh,
+			     const struct inet_diag_req_v2 *r)
+{
+	struct net *net = sock_net(in_skb->sk);
+	struct sk_buff *rep;
+	struct sock *sk;
+	int err;
+
+	sk = raw_sock_get(net, r);
+	if (IS_ERR(sk))
+		return PTR_ERR(sk);
+
+	rep = nlmsg_new(sizeof(struct inet_diag_msg) +
+			sizeof(struct inet_diag_meminfo) + 64,
+			GFP_KERNEL);
+	if (!rep) {
+		sock_put(sk);
+		return -ENOMEM;
+	}
+
+	err = inet_sk_diag_fill(sk, NULL, rep, r,
+				sk_user_ns(NETLINK_CB(in_skb).sk),
+				NETLINK_CB(in_skb).portid,
+				nlh->nlmsg_seq, 0, nlh,
+				netlink_net_capable(in_skb, CAP_NET_ADMIN));
+	sock_put(sk);
+
+	if (err < 0) {
+		kfree_skb(rep);
+		return err;
+	}
+
+	err = netlink_unicast(net->diag_nlsk, rep,
+			      NETLINK_CB(in_skb).portid,
+			      MSG_DONTWAIT);
+	if (err > 0)
+		err = 0;
+	return err;
+}
+
+static int sk_diag_dump(struct sock *sk, struct sk_buff *skb,
+			struct netlink_callback *cb,
+			const struct inet_diag_req_v2 *r,
+			struct nlattr *bc, bool net_admin)
+{
+	if (!inet_diag_bc_sk(bc, sk))
+		return 0;
+
+	return inet_sk_diag_fill(sk, NULL, skb, r,
+			sk_user_ns(NETLINK_CB(cb->skb).sk),
+			NETLINK_CB(cb->skb).portid,
+			cb->nlh->nlmsg_seq, NLM_F_MULTI,
+			cb->nlh, net_admin);
+}
+
+static void raw_diag_dump(struct sk_buff *skb, struct netlink_callback *cb,
+			  const struct inet_diag_req_v2 *r, struct nlattr *bc)
+{
+	bool net_admin = netlink_net_capable(cb->skb, CAP_NET_ADMIN);
+	struct raw_hashinfo *hashinfo = raw_get_hashinfo(r);
+	struct net *net = sock_net(skb->sk);
+	int num, s_num, slot, s_slot;
+	struct sock *sk = NULL;
+
+	if (IS_ERR(hashinfo))
+		return;
+
+	s_slot = cb->args[0];
+	num = s_num = cb->args[1];
+
+	read_lock(&hashinfo->lock);
+	for (slot = s_slot; slot < RAW_HTABLE_SIZE; s_num = 0, slot++) {
+		num = 0;
+
+		sk_for_each(sk, &hashinfo->ht[slot]) {
+			struct inet_sock *inet = inet_sk(sk);
+
+			if (!net_eq(sock_net(sk), net))
+				continue;
+			if (num < s_num)
+				goto next;
+			if (sk->sk_family != r->sdiag_family)
+				goto next;
+			if (r->id.idiag_sport != inet->inet_sport &&
+			    r->id.idiag_sport)
+				goto next;
+			if (r->id.idiag_dport != inet->inet_dport &&
+			    r->id.idiag_dport)
+				goto next;
+			if (sk_diag_dump(sk, skb, cb, r, bc, net_admin) < 0)
+				goto out_unlock;
+next:
+			num++;
+		}
+	}
+
+out_unlock:
+	read_unlock(&hashinfo->lock);
+
+	cb->args[0] = slot;
+	cb->args[1] = num;
+}
+
+static void raw_diag_get_info(struct sock *sk, struct inet_diag_msg *r,
+			      void *info)
+{
+	r->idiag_rqueue = sk_rmem_alloc_get(sk);
+	r->idiag_wqueue = sk_wmem_alloc_get(sk);
+}
+
+#ifdef CONFIG_INET_DIAG_DESTROY
+static int raw_diag_destroy(struct sk_buff *in_skb,
+			    const struct inet_diag_req_v2 *r)
+{
+	struct net *net = sock_net(in_skb->sk);
+	struct sock *sk;
+
+	sk = raw_sock_get(net, r);
+	if (IS_ERR(sk))
+		return PTR_ERR(sk);
+	return sock_diag_destroy(sk, ECONNABORTED);
+}
+#endif
+
+static const struct inet_diag_handler raw_diag_handler = {
+	.dump			= raw_diag_dump,
+	.dump_one		= raw_diag_dump_one,
+	.idiag_get_info		= raw_diag_get_info,
+	.idiag_type		= IPPROTO_RAW,
+	.idiag_info_size	= 0,
+#ifdef CONFIG_INET_DIAG_DESTROY
+	.destroy		= raw_diag_destroy,
+#endif
+};
+
+static int __init raw_diag_init(void)
+{
+	return inet_diag_register(&raw_diag_handler);
+}
+
+static void __exit raw_diag_exit(void)
+{
+	inet_diag_unregister(&raw_diag_handler);
+}
+
+module_init(raw_diag_init);
+module_exit(raw_diag_exit);
+MODULE_LICENSE("GPL");
+MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_NETLINK, NETLINK_SOCK_DIAG, 2-255 /* AF_INET - IPPROTO_RAW */);
+MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_NETLINK, NETLINK_SOCK_DIAG, 10-255 /* AF_INET6 - IPPROTO_RAW */);
Index: linux-ml.git/net/ipv6/raw.c
===================================================================
--- linux-ml.git.orig/net/ipv6/raw.c
+++ linux-ml.git/net/ipv6/raw.c
@@ -65,11 +65,12 @@
 
 #define	ICMPV6_HDRLEN	4	/* ICMPv6 header, RFC 4443 Section 2.1 */
 
-static struct raw_hashinfo raw_v6_hashinfo = {
+struct raw_hashinfo raw_v6_hashinfo = {
 	.lock = __RW_LOCK_UNLOCKED(raw_v6_hashinfo.lock),
 };
+EXPORT_SYMBOL_GPL(raw_v6_hashinfo);
 
-static struct sock *__raw_v6_lookup(struct net *net, struct sock *sk,
+struct sock *__raw_v6_lookup(struct net *net, struct sock *sk,
 		unsigned short num, const struct in6_addr *loc_addr,
 		const struct in6_addr *rmt_addr, int dif)
 {
@@ -102,6 +103,7 @@ static struct sock *__raw_v6_lookup(stru
 found:
 	return sk;
 }
+EXPORT_SYMBOL_GPL(__raw_v6_lookup);
 
 /*
  *	0 - deliver
@@ -1252,6 +1254,7 @@ struct proto rawv6_prot = {
 	.compat_getsockopt = compat_rawv6_getsockopt,
 	.compat_ioctl	   = compat_rawv6_ioctl,
 #endif
+	.diag_destroy	   = raw_abort,
 };
 
 #ifdef CONFIG_PROC_FS

^ permalink raw reply

* [PATCH] drivers: net: phy: xgene: Fix 'remove' function
From: Christophe JAILLET @ 2016-09-11 19:43 UTC (permalink / raw)
  To: isubramanian, kchudgar, f.fainelli
  Cc: netdev, linux-kernel, kernel-janitors, Christophe JAILLET

If 'IS_ERR(pdata->clk)' is true, then 'clk_disable_unprepare(pdata->clk)'
will do nothing.

It is likely that 'if (!IS_ERR(pdata->clk))' was expected here.
In fact, the test can even be removed because 'clk_disable_unprepare'
already handles such cases.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
 drivers/net/phy/mdio-xgene.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/net/phy/mdio-xgene.c b/drivers/net/phy/mdio-xgene.c
index 775674808249..92af182951be 100644
--- a/drivers/net/phy/mdio-xgene.c
+++ b/drivers/net/phy/mdio-xgene.c
@@ -424,10 +424,8 @@ static int xgene_mdio_remove(struct platform_device *pdev)
 	mdiobus_unregister(mdio_bus);
 	mdiobus_free(mdio_bus);
 
-	if (dev->of_node) {
-		if (IS_ERR(pdata->clk))
-			clk_disable_unprepare(pdata->clk);
-	}
+	if (dev->of_node)
+		clk_disable_unprepare(pdata->clk);
 
 	return 0;
 }
-- 
2.7.4

^ permalink raw reply related

* stmmac/RTL8211F/Meson GXBB: TX throughput problems
From: Martin Blumenstingl @ 2016-09-11 20:39 UTC (permalink / raw)
  To: netdev, linux-amlogic; +Cc: Giuseppe Cavallaro, Alexandre Torgue, Johnson Leung

[-- Attachment #1: Type: text/plain, Size: 2831 bytes --]

Hello,

I have a device with a Meson GXBB SoC with an stmmac IP block.
Gbit ethernet on my device is provided by a Realtek RTL8211F RGMII PHY.
Similar issues were reported in #linux-amlogic by a user with an
Odroid C2 board (= similar hardware).

The symptoms are:
Receiving data is plenty fast (I can max out my internet connection
easily, and with iperf3 I get ~900Mbit/s).
Transmitting data from the device is unfortunately very slow, traffic
sometimes even stalls completely.

I have attached the iperf results and the output of
/sys/kernel/debug/stmmaceth/eth0/descriptors_status.
Below you can find the ifconfig, netstat and stmmac dma_cap info
(*after* I ran all tests).

The "involved parties" are:
- Meson GXBB specific network configuration registers (I have have
double-checked them with the reference drivers: everything seems fine
here)
- stmmac: it seems that nobody else has reported these kind of issues
so far, however I'd still like to hear where I should enable some
debugging bits to rule out any stmmac bug
- RTL8211F PHY driver: unfortunately there are no public datasheets
available so this is hard to debug. but I'm guessing that TX delay
could cause similar issues, so this may be the cause as well.


Thanks for any input in advance!
Regards,
Martin


[root@alarm ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.235  netmask 255.255.255.0  broadcast 192.168.1.255
        ether e2:aa:53:fc:f5:c5  txqueuelen 1000  (Ethernet)
        RX packets 1967602  bytes 2968750265 (2.7 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 101875  bytes 8548285 (8.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 18

[root@alarm ~]# netstat -i
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0      1500  1967801      0      0 0        101934      0      0      0 BMRU

[root@alarm ~]# cat /sys/kernel/debug/stmmaceth/eth0/dma_cap
==============================
        DMA HW features
==============================
        10/100 Mbps Y
        1000 Mbps Y
        Half duple Y
        Hash Filter: Y
        Multiple MAC address registers: Y
        PCS (TBI/SGMII/RTBI PHY interfatces): N
        SMA (MDIO) Interface: Y
        PMT Remote wake up: Y
        PMT Magic Frame: Y
        RMON module: Y
        IEEE 1588-2002 Time Stamp: N
        IEEE 1588-2008 Advanced Time Stamp:N
        802.3az - Energy-Efficient Ethernet (EEE) Y
        AV features: N
        Checksum Offload in TX: Y
        IP Checksum Offload (type1) in RX: N
        IP Checksum Offload (type2) in RX: Y
        RXFIFO > 2048bytes: Y
        Number of Additional RX channel: 0
        Number of Additional TX channel: 0
        Enhanced descriptors: N

[-- Attachment #2: iperf-results.txt --]
[-- Type: text/plain, Size: 5073 bytes --]

UDP test (iperf3):
[root@alarm ~]# iperf3 --client 192.168.1.100 -u
Connecting to host 192.168.1.100, port 5201
[  4] local 192.168.1.235 port 38931 connected to 192.168.1.100 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   1.00-2.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   2.00-3.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   3.00-4.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   4.00-5.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   5.00-6.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   6.00-7.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   7.00-8.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   8.00-9.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   9.00-10.00  sec   128 KBytes  1.05 Mbits/sec  16  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.25 MBytes  1.05 Mbits/sec  12526562.925 ms  113/159 (71%)  
[  4] Sent 159 datagrams

iperf Done.
[root@alarm ~]# iperf3 --client 192.168.1.100 -u -R
Connecting to host 192.168.1.100, port 5201
Reverse mode, remote host 192.168.1.100 is sending
[  4] local 192.168.1.235 port 45128 connected to 192.168.1.100 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec   136 KBytes  1.11 Mbits/sec  81407591.898 ms  0/17 (0%)  
[  4]   1.00-2.00   sec   128 KBytes  1.05 Mbits/sec  28987137.507 ms  0/16 (0%)  
[  4]   2.00-3.00   sec   128 KBytes  1.05 Mbits/sec  10321569.793 ms  0/16 (0%)  
[  4]   3.00-4.00   sec   128 KBytes  1.05 Mbits/sec  3675244.000 ms  0/16 (0%)  
[  4]   4.00-5.00   sec   128 KBytes  1.05 Mbits/sec  1308659.322 ms  0/16 (0%)  
[  4]   5.00-6.00   sec   128 KBytes  1.05 Mbits/sec  465979.740 ms  0/16 (0%)  
[  4]   6.00-7.00   sec   128 KBytes  1.05 Mbits/sec  165923.341 ms  0/16 (0%)  
[  4]   7.00-8.00   sec   128 KBytes  1.05 Mbits/sec  59081.019 ms  0/16 (0%)  
[  4]   8.00-9.00   sec   128 KBytes  1.05 Mbits/sec  21037.233 ms  0/16 (0%)  
[  4]   9.00-10.00  sec   128 KBytes  1.05 Mbits/sec  7490.825 ms  0/16 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.26 MBytes  1.06 Mbits/sec  7490.825 ms  0/161 (0%)  
[  4] Sent 161 datagrams

iperf Done.
[root@alarm ~]# 


TCP test (iperf3):
[root@alarm ~]# iperf3 --client 192.168.1.100      
Connecting to host 192.168.1.100, port 5201
[  4] local 192.168.1.235 port 47508 connected to 192.168.1.100 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec   115 KBytes   937 Kbits/sec    8   1.41 KBytes       
[  4]   1.00-2.00   sec  0.00 Bytes  0.00 bits/sec    1   1.41 KBytes       
[  4]   2.00-3.00   sec  0.00 Bytes  0.00 bits/sec    0   1.41 KBytes       
[  4]   3.00-4.00   sec  0.00 Bytes  0.00 bits/sec    1   1.41 KBytes       
[  4]   4.00-5.00   sec  0.00 Bytes  0.00 bits/sec    0   1.41 KBytes       
[  4]   5.00-6.00   sec  0.00 Bytes  0.00 bits/sec    0   1.41 KBytes       
[  4]   6.00-7.00   sec  0.00 Bytes  0.00 bits/sec    1   1.41 KBytes       
[  4]   7.00-8.00   sec  0.00 Bytes  0.00 bits/sec    0   1.41 KBytes       
[  4]   8.00-9.00   sec  0.00 Bytes  0.00 bits/sec    0   1.41 KBytes       
[  4]   9.00-10.00  sec  0.00 Bytes  0.00 bits/sec    0   1.41 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   115 KBytes  93.8 Kbits/sec   11             sender
[  4]   0.00-10.00  sec  7.07 KBytes  5.79 Kbits/sec                  receiver

iperf Done.
[root@alarm ~]# iperf3 --client 192.168.1.100 -R
Connecting to host 192.168.1.100, port 5201
Reverse mode, remote host 192.168.1.100 is sending
[  4] local 192.168.1.235 port 47512 connected to 192.168.1.100 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  84.9 MBytes   712 Mbits/sec                  
[  4]   1.00-2.00   sec   106 MBytes   891 Mbits/sec                  
[  4]   2.00-3.00   sec   107 MBytes   894 Mbits/sec                  
[  4]   3.00-4.00   sec  93.5 MBytes   784 Mbits/sec                  
[  4]   4.00-5.00   sec  98.6 MBytes   827 Mbits/sec                  
[  4]   5.00-6.00   sec  80.5 MBytes   675 Mbits/sec                  
[  4]   6.00-7.00   sec   107 MBytes   894 Mbits/sec                  
[  4]   7.00-8.00   sec   106 MBytes   886 Mbits/sec                  
[  4]   8.00-9.00   sec   107 MBytes   894 Mbits/sec                  
[  4]   9.00-10.00  sec   106 MBytes   893 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   997 MBytes   836 Mbits/sec  1569             sender
[  4]   0.00-10.00  sec   996 MBytes   835 Mbits/sec                  receiver

iperf Done.
[root@alarm ~]#

[-- Attachment #3: stmmac-descsriptor_status.txt --]
[-- Type: text/plain, Size: 48977 bytes --]

RX descriptor ring:
0 [0x23b2000]: 0x85e60320 0x803fffff 0x7378e702 0x0

1 [0x23b2000]: 0x85e60320 0x803fffff 0x7378de82 0x0

2 [0x23b2000]: 0x85e60320 0x803fffff 0x7378d602 0x0

3 [0x23b2000]: 0x85e60320 0x803fffff 0x7378cd82 0x0

4 [0x23b2000]: 0x85e60320 0x803fffff 0x7378c502 0x0

5 [0x23b2000]: 0x85e60320 0x803fffff 0x7378bc82 0x0

6 [0x23b2000]: 0x85e60320 0x803fffff 0x7378b402 0x0

7 [0x23b2000]: 0x85e60320 0x803fffff 0x7378ab82 0x0

8 [0x23b2000]: 0x85e60320 0x803fffff 0x7378a302 0x0

9 [0x23b2000]: 0x85e60320 0x803fffff 0x73789a82 0x0

10 [0x23b2000]: 0x85e60320 0x803fffff 0x73789202 0x0

11 [0x23b2000]: 0x85e60320 0x803fffff 0x73788982 0x0

12 [0x23b2000]: 0x85e60320 0x803fffff 0x73788102 0x0

13 [0x23b2000]: 0x85e60320 0x803fffff 0x721df802 0x0

14 [0x23b2000]: 0x85e60320 0x803fffff 0x721def82 0x0

15 [0x23b2000]: 0x85e60320 0x803fffff 0x721de702 0x0

16 [0x23b2000]: 0x85e60320 0x803fffff 0x721dde82 0x0

17 [0x23b2000]: 0x85e60320 0x803fffff 0x721dd602 0x0

18 [0x23b2000]: 0x85e60320 0x803fffff 0x721dcd82 0x0

19 [0x23b2000]: 0x85e60320 0x803fffff 0x721dc502 0x0

20 [0x23b2000]: 0x85e60320 0x803fffff 0x721dbc82 0x0

21 [0x23b2000]: 0x85e60320 0x803fffff 0x721db402 0x0

22 [0x23b2000]: 0x85e60320 0x803fffff 0x721dab82 0x0

23 [0x23b2000]: 0x85e60320 0x803fffff 0x721da302 0x0

24 [0x23b2000]: 0x85e60320 0x803fffff 0x721d9a82 0x0

25 [0x23b2000]: 0x85e60320 0x803fffff 0x721d9202 0x0

26 [0x23b2000]: 0x85e60320 0x803fffff 0x721d8982 0x0

27 [0x23b2000]: 0x85e60320 0x803fffff 0x721d8102 0x0

28 [0x23b2000]: 0x85e60320 0x803fffff 0x735b7802 0x0

29 [0x23b2000]: 0x85e60320 0x803fffff 0x735b6f82 0x0

30 [0x23b2000]: 0x85e60320 0x803fffff 0x735b6702 0x0

31 [0x23b2000]: 0x85e60320 0x803fffff 0x735b5e82 0x0

32 [0x23b2000]: 0x85e60320 0x803fffff 0x735b5602 0x0

33 [0x23b2000]: 0x85e60320 0x803fffff 0x735b4d82 0x0

34 [0x23b2000]: 0x85e60320 0x803fffff 0x735b4502 0x0

35 [0x23b2000]: 0x85e60320 0x803fffff 0x735b3c82 0x0

36 [0x23b2000]: 0x85e60320 0x803fffff 0x735b3402 0x0

37 [0x23b2000]: 0x85e60320 0x803fffff 0x735b2b82 0x0

38 [0x23b2000]: 0x85e60320 0x803fffff 0x735b2302 0x0

39 [0x23b2000]: 0x85e60320 0x803fffff 0x735b1a82 0x0

40 [0x23b2000]: 0x85e60320 0x803fffff 0x735b1202 0x0

41 [0x23b2000]: 0x85e60320 0x803fffff 0x735b0982 0x0

42 [0x23b2000]: 0x85e60320 0x803fffff 0x735b0102 0x0

43 [0x23b2000]: 0x85e60320 0x803fffff 0x737e7802 0x0

44 [0x23b2000]: 0x85e60320 0x803fffff 0x737e6f82 0x0

45 [0x23b2000]: 0x85e60320 0x803fffff 0x737e6702 0x0

46 [0x23b2000]: 0x85e60320 0x803fffff 0x737e5e82 0x0

47 [0x23b2000]: 0x85e60320 0x803fffff 0x737e5602 0x0

48 [0x23b2000]: 0x85e60320 0x803fffff 0x737e4d82 0x0

49 [0x23b2000]: 0x85e60320 0x803fffff 0x737e4502 0x0

50 [0x23b2000]: 0x85e60320 0x803fffff 0x737e3c82 0x0

51 [0x23b2000]: 0x85e60320 0x803fffff 0x737e3402 0x0

52 [0x23b2000]: 0x85e60320 0x803fffff 0x737e2b82 0x0

53 [0x23b2000]: 0x85e60320 0x803fffff 0x737e2302 0x0

54 [0x23b2000]: 0x85e60320 0x803fffff 0x737e1a82 0x0

55 [0x23b2000]: 0x85e60320 0x803fffff 0x737e1202 0x0

56 [0x23b2000]: 0x85e60320 0x803fffff 0x737e0982 0x0

57 [0x23b2000]: 0x85e60320 0x803fffff 0x737e0102 0x0

58 [0x23b2000]: 0x85e60320 0x803fffff 0x7086f802 0x0

59 [0x23b2000]: 0x85e60320 0x803fffff 0x7086ef82 0x0

60 [0x23b2000]: 0x85e60320 0x803fffff 0x7086e702 0x0

61 [0x23b2000]: 0x85e60320 0x803fffff 0x7086de82 0x0

62 [0x23b2000]: 0x85e60320 0x803fffff 0x7086d602 0x0

63 [0x23b2000]: 0x85e60320 0x803fffff 0x7086cd82 0x0

64 [0x23b2000]: 0x85e60320 0x803fffff 0x7086c502 0x0

65 [0x23b2000]: 0x85e60320 0x803fffff 0x7086bc82 0x0

66 [0x23b2000]: 0x85e60320 0x803fffff 0x7086b402 0x0

67 [0x23b2000]: 0x85e60320 0x803fffff 0x7086ab82 0x0

68 [0x23b2000]: 0x85e60320 0x803fffff 0x7086a302 0x0

69 [0x23b2000]: 0x85e60320 0x803fffff 0x70869a82 0x0

70 [0x23b2000]: 0x85e60320 0x803fffff 0x70869202 0x0

71 [0x23b2000]: 0x85e60320 0x803fffff 0x70868982 0x0

72 [0x23b2000]: 0x85e60320 0x803fffff 0x70868102 0x0

73 [0x23b2000]: 0x85e60320 0x803fffff 0x7200f802 0x0

74 [0x23b2000]: 0x85e60320 0x803fffff 0x7200ef82 0x0

75 [0x23b2000]: 0x85e60320 0x803fffff 0x7200e702 0x0

76 [0x23b2000]: 0x85e60320 0x803fffff 0x7200de82 0x0

77 [0x23b2000]: 0x85e60320 0x803fffff 0x7200d602 0x0

78 [0x23b2000]: 0x85e60320 0x803fffff 0x7200cd82 0x0

79 [0x23b2000]: 0x85e60320 0x803fffff 0x7200c502 0x0

80 [0x23b2000]: 0x85e60320 0x803fffff 0x7200bc82 0x0

81 [0x23b2000]: 0x85e60320 0x803fffff 0x7200b402 0x0

82 [0x23b2000]: 0x85e60320 0x803fffff 0x7200ab82 0x0

83 [0x23b2000]: 0x85e60320 0x803fffff 0x7200a302 0x0

84 [0x23b2000]: 0x85e60320 0x803fffff 0x72009a82 0x0

85 [0x23b2000]: 0x85e60320 0x803fffff 0x72009202 0x0

86 [0x23b2000]: 0x85e60320 0x803fffff 0x72008982 0x0

87 [0x23b2000]: 0x85e60320 0x803fffff 0x72008102 0x0

88 [0x23b2000]: 0x85e60320 0x803fffff 0x721e7802 0x0

89 [0x23b2000]: 0x85e60320 0x803fffff 0x721e6f82 0x0

90 [0x23b2000]: 0x85e60320 0x803fffff 0x721e6702 0x0

91 [0x23b2000]: 0x85e60320 0x803fffff 0x721e5e82 0x0

92 [0x23b2000]: 0x85e60320 0x803fffff 0x721e5602 0x0

93 [0x23b2000]: 0x85e60320 0x803fffff 0x721e4d82 0x0

94 [0x23b2000]: 0x85e60320 0x803fffff 0x721e4502 0x0

95 [0x23b2000]: 0x85e60320 0x803fffff 0x721e3c82 0x0

96 [0x23b2000]: 0x85e60320 0x803fffff 0x721e3402 0x0

97 [0x23b2000]: 0x85e60320 0x803fffff 0x721e2b82 0x0

98 [0x23b2000]: 0x85e60320 0x803fffff 0x721e2302 0x0

99 [0x23b2000]: 0x85e60320 0x803fffff 0x721e1a82 0x0

100 [0x23b2000]: 0x85e60320 0x803fffff 0x721e1202 0x0

101 [0x23b2000]: 0x85e60320 0x803fffff 0x721e0982 0x0

102 [0x23b2000]: 0x85e60320 0x803fffff 0x721e0102 0x0

103 [0x23b2000]: 0x85e60320 0x803fffff 0x73687802 0x0

104 [0x23b2000]: 0x85e60320 0x803fffff 0x73686f82 0x0

105 [0x23b2000]: 0x85e60320 0x803fffff 0x73686702 0x0

106 [0x23b2000]: 0x85e60320 0x803fffff 0x73685e82 0x0

107 [0x23b2000]: 0x85e60320 0x803fffff 0x73685602 0x0

108 [0x23b2000]: 0x85e60320 0x803fffff 0x73684d82 0x0

109 [0x23b2000]: 0x85e60320 0x803fffff 0x73684502 0x0

110 [0x23b2000]: 0x85e60320 0x803fffff 0x73683c82 0x0

111 [0x23b2000]: 0x85e60320 0x803fffff 0x73683402 0x0

112 [0x23b2000]: 0x85e60320 0x803fffff 0x73682b82 0x0

113 [0x23b2000]: 0x85e60320 0x803fffff 0x73682302 0x0

114 [0x23b2000]: 0x85e60320 0x803fffff 0x73681a82 0x0

115 [0x23b2000]: 0x85e60320 0x803fffff 0x73681202 0x0

116 [0x23b2000]: 0x85e60320 0x803fffff 0x73680982 0x0

117 [0x23b2000]: 0x85e60320 0x803fffff 0x73680102 0x0

118 [0x23b2000]: 0x85e60320 0x803fffff 0x7205f802 0x0

119 [0x23b2000]: 0x85e60320 0x803fffff 0x7205ef82 0x0

120 [0x23b2000]: 0x85e60320 0x803fffff 0x7205e702 0x0

121 [0x23b2000]: 0x85e60320 0x803fffff 0x7205de82 0x0

122 [0x23b2000]: 0x85e60320 0x803fffff 0x7205d602 0x0

123 [0x23b2000]: 0x85e60320 0x803fffff 0x7205cd82 0x0

124 [0x23b2000]: 0x85e60320 0x803fffff 0x7205c502 0x0

125 [0x23b2000]: 0x85e60320 0x803fffff 0x7205bc82 0x0

126 [0x23b2000]: 0x85e60320 0x803fffff 0x7205b402 0x0

127 [0x23b2000]: 0x85e60320 0x803fffff 0x7205ab82 0x0

128 [0x23b2000]: 0x85e60320 0x803fffff 0x7205a302 0x0

129 [0x23b2000]: 0x85e60320 0x803fffff 0x72059a82 0x0

130 [0x23b2000]: 0x85e60320 0x803fffff 0x72059202 0x0

131 [0x23b2000]: 0x85e60320 0x803fffff 0x72058982 0x0

132 [0x23b2000]: 0x85e60320 0x803fffff 0x72058102 0x0

133 [0x23b2000]: 0x85e60320 0x803fffff 0x72167802 0x0

134 [0x23b2000]: 0x85e60320 0x803fffff 0x72166f82 0x0

135 [0x23b2000]: 0x85e60320 0x803fffff 0x72166702 0x0

136 [0x23b2000]: 0x85e60320 0x803fffff 0x72165e82 0x0

137 [0x23b2000]: 0x85e60320 0x803fffff 0x72165602 0x0

138 [0x23b2000]: 0x85e60320 0x803fffff 0x72164d82 0x0

139 [0x23b2000]: 0x85e60320 0x803fffff 0x72164502 0x0

140 [0x23b2000]: 0x85e60320 0x803fffff 0x72163c82 0x0

141 [0x23b2000]: 0x85e60320 0x803fffff 0x72163402 0x0

142 [0x23b2000]: 0x85e60320 0x803fffff 0x72162b82 0x0

143 [0x23b2000]: 0x85e60320 0x803fffff 0x72162302 0x0

144 [0x23b2000]: 0x85e60320 0x803fffff 0x72161a82 0x0

145 [0x23b2000]: 0x85e60320 0x803fffff 0x72161202 0x0

146 [0x23b2000]: 0x85e60320 0x803fffff 0x72160982 0x0

147 [0x23b2000]: 0x85e60320 0x803fffff 0x72160102 0x0

148 [0x23b2000]: 0x85e60320 0x803fffff 0x737ef802 0x0

149 [0x23b2000]: 0x85e60320 0x803fffff 0x737eef82 0x0

150 [0x23b2000]: 0x85e60320 0x803fffff 0x737ee702 0x0

151 [0x23b2000]: 0x85e60320 0x803fffff 0x737ede82 0x0

152 [0x23b2000]: 0x85e60320 0x803fffff 0x737ed602 0x0

153 [0x23b2000]: 0x85e60320 0x803fffff 0x737ecd82 0x0

154 [0x23b2000]: 0x85e60320 0x803fffff 0x737ec502 0x0

155 [0x23b2000]: 0x85e60320 0x803fffff 0x737ebc82 0x0

156 [0x23b2000]: 0x85e60320 0x803fffff 0x737eb402 0x0

157 [0x23b2000]: 0x85e60320 0x803fffff 0x737eab82 0x0

158 [0x23b2000]: 0x85e60320 0x803fffff 0x737ea302 0x0

159 [0x23b2000]: 0x85e60320 0x803fffff 0x737e9a82 0x0

160 [0x23b2000]: 0x85e60320 0x803fffff 0x737e9202 0x0

161 [0x23b2000]: 0x85e60320 0x803fffff 0x737e8982 0x0

162 [0x23b2000]: 0x85e60320 0x803fffff 0x737e8102 0x0

163 [0x23b2000]: 0x85e60320 0x803fffff 0x735bf802 0x0

164 [0x23b2000]: 0x85e60320 0x803fffff 0x735bef82 0x0

165 [0x23b2000]: 0x85e60320 0x803fffff 0x735be702 0x0

166 [0x23b2000]: 0x85e60320 0x803fffff 0x735bde82 0x0

167 [0x23b2000]: 0x85e60320 0x803fffff 0x735bd602 0x0

168 [0x23b2000]: 0x85e60320 0x803fffff 0x735bcd82 0x0

169 [0x23b2000]: 0x85e60320 0x803fffff 0x735bc502 0x0

170 [0x23b2000]: 0x85e60320 0x803fffff 0x735bbc82 0x0

171 [0x23b2000]: 0x85e60320 0x803fffff 0x735bb402 0x0

172 [0x23b2000]: 0x85e60320 0x803fffff 0x735bab82 0x0

173 [0x23b2000]: 0x85e60320 0x803fffff 0x735ba302 0x0

174 [0x23b2000]: 0x85e60320 0x803fffff 0x735b9a82 0x0

175 [0x23b2000]: 0x85e60320 0x803fffff 0x735b9202 0x0

176 [0x23b2000]: 0x85e60320 0x803fffff 0x735b8982 0x0

177 [0x23b2000]: 0x85e60320 0x803fffff 0x735b8102 0x0

178 [0x23b2000]: 0x85e60320 0x803fffff 0x73697802 0x0

179 [0x23b2000]: 0x85e60320 0x803fffff 0x73696f82 0x0

180 [0x23b2000]: 0x85e60320 0x803fffff 0x73696702 0x0

181 [0x23b2000]: 0x85e60320 0x803fffff 0x73695e82 0x0

182 [0x23b2000]: 0x85e60320 0x803fffff 0x73695602 0x0

183 [0x23b2000]: 0x85e60320 0x803fffff 0x73694d82 0x0

184 [0x23b2000]: 0x85e60320 0x803fffff 0x73694502 0x0

185 [0x23b2000]: 0x85e60320 0x803fffff 0x73693c82 0x0

186 [0x23b2000]: 0x85e60320 0x803fffff 0x73693402 0x0

187 [0x23b2000]: 0x85e60320 0x803fffff 0x73692b82 0x0

188 [0x23b2000]: 0x85e60320 0x803fffff 0x73692302 0x0

189 [0x23b2000]: 0x85e60320 0x803fffff 0x73691a82 0x0

190 [0x23b2000]: 0x85e60320 0x803fffff 0x73691202 0x0

191 [0x23b2000]: 0x85e60320 0x803fffff 0x73690982 0x0

192 [0x23b2000]: 0x85e60320 0x803fffff 0x73690102 0x0

193 [0x23b2000]: 0x85e60320 0x803fffff 0x7081f802 0x0

194 [0x23b2000]: 0x85e60320 0x803fffff 0x7081ef82 0x0

195 [0x23b2000]: 0x85e60320 0x803fffff 0x7081e702 0x0

196 [0x23b2000]: 0x85e60320 0x803fffff 0x7081de82 0x0

197 [0x23b2000]: 0x85e60320 0x803fffff 0x7081d602 0x0

198 [0x23b2000]: 0x85e60320 0x803fffff 0x7081cd82 0x0

199 [0x23b2000]: 0x85e60320 0x803fffff 0x7081c502 0x0

200 [0x23b2000]: 0x85e60320 0x803fffff 0x7081bc82 0x0

201 [0x23b2000]: 0x85e60320 0x803fffff 0x7081b402 0x0

202 [0x23b2000]: 0x85e60320 0x803fffff 0x7081ab82 0x0

203 [0x23b2000]: 0x85e60320 0x803fffff 0x7081a302 0x0

204 [0x23b2000]: 0x85e60320 0x803fffff 0x70819a82 0x0

205 [0x23b2000]: 0x85e60320 0x803fffff 0x70819202 0x0

206 [0x23b2000]: 0x85e60320 0x803fffff 0x70818982 0x0

207 [0x23b2000]: 0x85e60320 0x803fffff 0x70818102 0x0

208 [0x23b2000]: 0x85e60320 0x803fffff 0x73607802 0x0

209 [0x23b2000]: 0x85e60320 0x803fffff 0x73606f82 0x0

210 [0x23b2000]: 0x85e60320 0x803fffff 0x73606702 0x0

211 [0x23b2000]: 0x85e60320 0x803fffff 0x73605e82 0x0

212 [0x23b2000]: 0x85e60320 0x803fffff 0x73605602 0x0

213 [0x23b2000]: 0x85e60320 0x803fffff 0x73604d82 0x0

214 [0x23b2000]: 0x85e60320 0x803fffff 0x73604502 0x0

215 [0x23b2000]: 0x85e60320 0x803fffff 0x73603c82 0x0

216 [0x23b2000]: 0x85e60320 0x803fffff 0x73603402 0x0

217 [0x23b2000]: 0x85e60320 0x803fffff 0x73602b82 0x0

218 [0x23b2000]: 0x85e60320 0x803fffff 0x73602302 0x0

219 [0x23b2000]: 0x85e60320 0x803fffff 0x73601a82 0x0

220 [0x23b2000]: 0x85e60320 0x803fffff 0x73601202 0x0

221 [0x23b2000]: 0x85e60320 0x803fffff 0x73600982 0x0

222 [0x23b2000]: 0x85e60320 0x803fffff 0x73600102 0x0

223 [0x23b2000]: 0x85e60320 0x803fffff 0x735f7802 0x0

224 [0x23b2000]: 0x85e60320 0x803fffff 0x735f6f82 0x0

225 [0x23b2000]: 0x85e60320 0x803fffff 0x735f6702 0x0

226 [0x23b2000]: 0x85e60320 0x803fffff 0x735f5e82 0x0

227 [0x23b2000]: 0x85e60320 0x803fffff 0x735f5602 0x0

228 [0x23b2000]: 0x85e60320 0x803fffff 0x735f4d82 0x0

229 [0x23b2000]: 0x85e60320 0x803fffff 0x735f4502 0x0

230 [0x23b2000]: 0x85e60320 0x803fffff 0x735f3c82 0x0

231 [0x23b2000]: 0x85e60320 0x803fffff 0x735f3402 0x0

232 [0x23b2000]: 0x85e60320 0x803fffff 0x735f2b82 0x0

233 [0x23b2000]: 0x85e60320 0x803fffff 0x735f2302 0x0

234 [0x23b2000]: 0x85e60320 0x803fffff 0x735f1a82 0x0

235 [0x23b2000]: 0x85e60320 0x803fffff 0x735f1202 0x0

236 [0x23b2000]: 0x85e60320 0x803fffff 0x735f0982 0x0

237 [0x23b2000]: 0x85e60320 0x803fffff 0x735f0102 0x0

238 [0x23b2000]: 0x85e60320 0x803fffff 0x7369f802 0x0

239 [0x23b2000]: 0x85e60320 0x803fffff 0x7369ef82 0x0

240 [0x23b2000]: 0x85e60320 0x803fffff 0x7369e702 0x0

241 [0x23b2000]: 0x85e60320 0x803fffff 0x7369de82 0x0

242 [0x23b2000]: 0x85e60320 0x803fffff 0x7369d602 0x0

243 [0x23b2000]: 0x85e60320 0x803fffff 0x7369cd82 0x0

244 [0x23b2000]: 0x85e60320 0x803fffff 0x7369c502 0x0

245 [0x23b2000]: 0x85e60320 0x803fffff 0x7369bc82 0x0

246 [0x23b2000]: 0x85e60320 0x803fffff 0x7369b402 0x0

247 [0x23b2000]: 0x85e60320 0x803fffff 0x7369ab82 0x0

248 [0x23b2000]: 0x85e60320 0x803fffff 0x7369a302 0x0

249 [0x23b2000]: 0x85e60320 0x803fffff 0x73699a82 0x0

250 [0x23b2000]: 0x85e60320 0x803fffff 0x73699202 0x0

251 [0x23b2000]: 0x85e60320 0x803fffff 0x73698982 0x0

252 [0x23b2000]: 0x85e60320 0x803fffff 0x73698102 0x0

253 [0x23b2000]: 0x85e60320 0x803fffff 0x7360f802 0x0

254 [0x23b2000]: 0x85e60320 0x803fffff 0x7360ef82 0x0

255 [0x23b2000]: 0x85e60320 0x803fffff 0x7360e702 0x0

256 [0x23b2000]: 0x85e60320 0x803fffff 0x7360de82 0x0

257 [0x23b2000]: 0x85e60320 0x803fffff 0x7360d602 0x0

258 [0x23b2000]: 0x85e60320 0x803fffff 0x7360cd82 0x0

259 [0x23b2000]: 0x85e60320 0x803fffff 0x7360c502 0x0

260 [0x23b2000]: 0x85e60320 0x803fffff 0x7360bc82 0x0

261 [0x23b2000]: 0x85e60320 0x803fffff 0x7360b402 0x0

262 [0x23b2000]: 0x85e60320 0x803fffff 0x7360ab82 0x0

263 [0x23b2000]: 0x85e60320 0x803fffff 0x7360a302 0x0

264 [0x23b2000]: 0x85e60320 0x803fffff 0x73609a82 0x0

265 [0x23b2000]: 0x85e60320 0x803fffff 0x73609202 0x0

266 [0x23b2000]: 0x85e60320 0x803fffff 0x73608982 0x0

267 [0x23b2000]: 0x85e60320 0x803fffff 0x73608102 0x0

268 [0x23b2000]: 0x85e60320 0x803fffff 0x735ff802 0x0

269 [0x23b2000]: 0x85e60320 0x803fffff 0x735fef82 0x0

270 [0x23b2000]: 0x85e60320 0x803fffff 0x735fe702 0x0

271 [0x23b2000]: 0x85e60320 0x803fffff 0x735fde82 0x0

272 [0x23b2000]: 0x85e60320 0x803fffff 0x735fd602 0x0

273 [0x23b2000]: 0x85e60320 0x803fffff 0x735fcd82 0x0

274 [0x23b2000]: 0x85e60320 0x803fffff 0x735fc502 0x0

275 [0x23b2000]: 0x85e60320 0x803fffff 0x735fbc82 0x0

276 [0x23b2000]: 0x85e60320 0x803fffff 0x735fb402 0x0

277 [0x23b2000]: 0x85e60320 0x803fffff 0x735fab82 0x0

278 [0x23b2000]: 0x85e60320 0x803fffff 0x735fa302 0x0

279 [0x23b2000]: 0x85e60320 0x803fffff 0x735f9a82 0x0

280 [0x23b2000]: 0x85e60320 0x803fffff 0x735f9202 0x0

281 [0x23b2000]: 0x85e60320 0x803fffff 0x735f8982 0x0

282 [0x23b2000]: 0x85e60320 0x803fffff 0x735f8102 0x0

283 [0x23b2000]: 0x85e60320 0x803fffff 0x737f7802 0x0

284 [0x23b2000]: 0x85e60320 0x803fffff 0x737f6f82 0x0

285 [0x23b2000]: 0x85e60320 0x803fffff 0x737f6702 0x0

286 [0x23b2000]: 0x85e60320 0x803fffff 0x737f5e82 0x0

287 [0x23b2000]: 0x85e60320 0x803fffff 0x737f5602 0x0

288 [0x23b2000]: 0x85e60320 0x803fffff 0x737f4d82 0x0

289 [0x23b2000]: 0x85e60320 0x803fffff 0x737f4502 0x0

290 [0x23b2000]: 0x85e60320 0x803fffff 0x737f3c82 0x0

291 [0x23b2000]: 0x85e60320 0x803fffff 0x737f3402 0x0

292 [0x23b2000]: 0x85e60320 0x803fffff 0x737f2b82 0x0

293 [0x23b2000]: 0x85e60320 0x803fffff 0x737f2302 0x0

294 [0x23b2000]: 0x85e60320 0x803fffff 0x737f1a82 0x0

295 [0x23b2000]: 0x85e60320 0x803fffff 0x737f1202 0x0

296 [0x23b2000]: 0x85e60320 0x803fffff 0x737f0982 0x0

297 [0x23b2000]: 0x85e60320 0x803fffff 0x737f0102 0x0

298 [0x23b2000]: 0x85e60320 0x803fffff 0x735e7802 0x0

299 [0x23b2000]: 0x85e60320 0x803fffff 0x735e6f82 0x0

300 [0x23b2000]: 0x85e60320 0x803fffff 0x735e6702 0x0

301 [0x23b2000]: 0x85e60320 0x803fffff 0x735e5e82 0x0

302 [0x23b2000]: 0x85e60320 0x803fffff 0x735e5602 0x0

303 [0x23b2000]: 0x85e60320 0x803fffff 0x735e4d82 0x0

304 [0x23b2000]: 0x85e60320 0x803fffff 0x735e4502 0x0

305 [0x23b2000]: 0x85e60320 0x803fffff 0x735e3c82 0x0

306 [0x23b2000]: 0x85e60320 0x803fffff 0x735e3402 0x0

307 [0x23b2000]: 0x85e60320 0x803fffff 0x735e2b82 0x0

308 [0x23b2000]: 0x85e60320 0x803fffff 0x735e2302 0x0

309 [0x23b2000]: 0x85e60320 0x803fffff 0x735e1a82 0x0

310 [0x23b2000]: 0x85e60320 0x803fffff 0x735e1202 0x0

311 [0x23b2000]: 0x85e60320 0x803fffff 0x735e0982 0x0

312 [0x23b2000]: 0x85e60320 0x803fffff 0x735e0102 0x0

313 [0x23b2000]: 0x85e60320 0x803fffff 0x735ef802 0x0

314 [0x23b2000]: 0x85e60320 0x803fffff 0x735eef82 0x0

315 [0x23b2000]: 0x85e60320 0x803fffff 0x735ee702 0x0

316 [0x23b2000]: 0x85e60320 0x803fffff 0x735ede82 0x0

317 [0x23b2000]: 0x85e60320 0x803fffff 0x735ed602 0x0

318 [0x23b2000]: 0x85e60320 0x803fffff 0x735ecd82 0x0

319 [0x23b2000]: 0x85e60320 0x803fffff 0x735ec502 0x0

320 [0x23b2000]: 0x85e60320 0x803fffff 0x735ebc82 0x0

321 [0x23b2000]: 0x85e60320 0x803fffff 0x735eb402 0x0

322 [0x23b2000]: 0x85e60320 0x803fffff 0x735eab82 0x0

323 [0x23b2000]: 0x85e60320 0x803fffff 0x735ea302 0x0

324 [0x23b2000]: 0x85e60320 0x803fffff 0x735e9a82 0x0

325 [0x23b2000]: 0x85e60320 0x803fffff 0x735e9202 0x0

326 [0x23b2000]: 0x85e60320 0x803fffff 0x735e8982 0x0

327 [0x23b2000]: 0x85e60320 0x803fffff 0x735e8102 0x0

328 [0x23b2000]: 0x85e60320 0x803fffff 0x708d7802 0x0

329 [0x23b2000]: 0x85e60320 0x803fffff 0x708d6f82 0x0

330 [0x23b2000]: 0x85e60320 0x803fffff 0x708d6702 0x0

331 [0x23b2000]: 0x85e60320 0x803fffff 0x708d5e82 0x0

332 [0x23b2000]: 0x85e60320 0x803fffff 0x708d5602 0x0

333 [0x23b2000]: 0x85e60320 0x803fffff 0x708d4d82 0x0

334 [0x23b2000]: 0x85e60320 0x803fffff 0x708d4502 0x0

335 [0x23b2000]: 0x85e60320 0x803fffff 0x708d3c82 0x0

336 [0x23b2000]: 0x85e60320 0x803fffff 0x708d3402 0x0

337 [0x23b2000]: 0x85e60320 0x803fffff 0x708d2b82 0x0

338 [0x23b2000]: 0x85e60320 0x803fffff 0x708d2302 0x0

339 [0x23b2000]: 0x85e60320 0x803fffff 0x708d1a82 0x0

340 [0x23b2000]: 0x85e60320 0x803fffff 0x708d1202 0x0

341 [0x23b2000]: 0x85e60320 0x803fffff 0x708d0982 0x0

342 [0x23b2000]: 0x85e60320 0x803fffff 0x708d0102 0x0

343 [0x23b2000]: 0x85e60320 0x803fffff 0x72127802 0x0

344 [0x23b2000]: 0x85e60320 0x803fffff 0x72126f82 0x0

345 [0x23b2000]: 0x85e60320 0x803fffff 0x72126702 0x0

346 [0x23b2000]: 0x85e60320 0x803fffff 0x72125e82 0x0

347 [0x23b2000]: 0x85e60320 0x803fffff 0x72125602 0x0

348 [0x23b2000]: 0x85e60320 0x803fffff 0x72124d82 0x0

349 [0x23b2000]: 0x85e60320 0x803fffff 0x72124502 0x0

350 [0x23b2000]: 0x85e60320 0x803fffff 0x72123c82 0x0

351 [0x23b2000]: 0x85e60320 0x803fffff 0x72123402 0x0

352 [0x23b2000]: 0x85e60320 0x803fffff 0x72122b82 0x0

353 [0x23b2000]: 0x85e60320 0x803fffff 0x72122302 0x0

354 [0x23b2000]: 0x85e60320 0x803fffff 0x72121a82 0x0

355 [0x23b2000]: 0x85e60320 0x803fffff 0x72121202 0x0

356 [0x23b2000]: 0x85e60320 0x803fffff 0x72120982 0x0

357 [0x23b2000]: 0x85e60320 0x803fffff 0x72120102 0x0

358 [0x23b2000]: 0x85e60320 0x803fffff 0x720c7802 0x0

359 [0x23b2000]: 0x85e60320 0x803fffff 0x720c6f82 0x0

360 [0x23b2000]: 0x85e60320 0x803fffff 0x720c6702 0x0

361 [0x23b2000]: 0x85e60320 0x803fffff 0x720c5e82 0x0

362 [0x23b2000]: 0x85e60320 0x803fffff 0x720c5602 0x0

363 [0x23b2000]: 0x85e60320 0x803fffff 0x720c4d82 0x0

364 [0x23b2000]: 0x85e60320 0x803fffff 0x720c4502 0x0

365 [0x23b2000]: 0x85e60320 0x803fffff 0x720c3c82 0x0

366 [0x23b2000]: 0x85e60320 0x803fffff 0x720c3402 0x0

367 [0x23b2000]: 0x85e60320 0x803fffff 0x720c2b82 0x0

368 [0x23b2000]: 0x85e60320 0x803fffff 0x720c2302 0x0

369 [0x23b2000]: 0x85e60320 0x803fffff 0x720c1a82 0x0

370 [0x23b2000]: 0x85e60320 0x803fffff 0x720c1202 0x0

371 [0x23b2000]: 0x85e60320 0x803fffff 0x720c0982 0x0

372 [0x23b2000]: 0x85e60320 0x803fffff 0x720c0102 0x0

373 [0x23b2000]: 0x85e60320 0x803fffff 0x7379f802 0x0

374 [0x23b2000]: 0x85e60320 0x803fffff 0x7379ef82 0x0

375 [0x23b2000]: 0x85e60320 0x803fffff 0x7379e702 0x0

376 [0x23b2000]: 0x85e60320 0x803fffff 0x7379de82 0x0

377 [0x23b2000]: 0x85e60320 0x803fffff 0x7379d602 0x0

378 [0x23b2000]: 0x85e60320 0x803fffff 0x7379cd82 0x0

379 [0x23b2000]: 0x85e60320 0x803fffff 0x7379c502 0x0

380 [0x23b2000]: 0x85e60320 0x803fffff 0x7379bc82 0x0

381 [0x23b2000]: 0x85e60320 0x803fffff 0x7379b402 0x0

382 [0x23b2000]: 0x85e60320 0x803fffff 0x7379ab82 0x0

383 [0x23b2000]: 0x85e60320 0x803fffff 0x7379a302 0x0

384 [0x23b2000]: 0x85e60320 0x803fffff 0x73799a82 0x0

385 [0x23b2000]: 0x85e60320 0x803fffff 0x73799202 0x0

386 [0x23b2000]: 0x85e60320 0x803fffff 0x73798982 0x0

387 [0x23b2000]: 0x85e60320 0x803fffff 0x73798102 0x0

388 [0x23b2000]: 0x85e60320 0x803fffff 0x72107802 0x0

389 [0x23b2000]: 0x85e60320 0x803fffff 0x72106f82 0x0

390 [0x23b2000]: 0x85e60320 0x803fffff 0x72106702 0x0

391 [0x23b2000]: 0x85e60320 0x803fffff 0x72105e82 0x0

392 [0x23b2000]: 0x85e60320 0x803fffff 0x72105602 0x0

393 [0x23b2000]: 0x85e60320 0x803fffff 0x72104d82 0x0

394 [0x23b2000]: 0x85e60320 0x803fffff 0x72104502 0x0

395 [0x23b2000]: 0x85e60320 0x803fffff 0x72103c82 0x0

396 [0x23b2000]: 0x85e60320 0x803fffff 0x72103402 0x0

397 [0x23b2000]: 0x85e60320 0x803fffff 0x72102b82 0x0

398 [0x23b2000]: 0x85e60320 0x803fffff 0x72102302 0x0

399 [0x23b2000]: 0x85e60320 0x803fffff 0x72101a82 0x0

400 [0x23b2000]: 0x85e60320 0x803fffff 0x72101202 0x0

401 [0x23b2000]: 0x85e60320 0x803fffff 0x72100982 0x0

402 [0x23b2000]: 0x85e60320 0x803fffff 0x72100102 0x0

403 [0x23b2000]: 0x85e60320 0x803fffff 0x73557802 0x0

404 [0x23b2000]: 0x85e60320 0x803fffff 0x73556f82 0x0

405 [0x23b2000]: 0x85e60320 0x803fffff 0x73556702 0x0

406 [0x23b2000]: 0x85e60320 0x803fffff 0x73555e82 0x0

407 [0x23b2000]: 0x85e60320 0x803fffff 0x73555602 0x0

408 [0x23b2000]: 0x85e60320 0x803fffff 0x73554d82 0x0

409 [0x23b2000]: 0x85e60320 0x803fffff 0x73554502 0x0

410 [0x23b2000]: 0x85e60320 0x803fffff 0x73553c82 0x0

411 [0x23b2000]: 0x85e60320 0x803fffff 0x73553402 0x0

412 [0x23b2000]: 0x85e60320 0x803fffff 0x73552b82 0x0

413 [0x23b2000]: 0x85e60320 0x803fffff 0x73552302 0x0

414 [0x23b2000]: 0x85e60320 0x803fffff 0x73551a82 0x0

415 [0x23b2000]: 0x85e60320 0x803fffff 0x73551202 0x0

416 [0x23b2000]: 0x85e60320 0x803fffff 0x73550982 0x0

417 [0x23b2000]: 0x85e60320 0x803fffff 0x73550102 0x0

418 [0x23b2000]: 0x85e60320 0x803fffff 0x73797802 0x0

419 [0x23b2000]: 0x85e60320 0x803fffff 0x73796f82 0x0

420 [0x23b2000]: 0x85e60320 0x803fffff 0x73796702 0x0

421 [0x23b2000]: 0x85e60320 0x803fffff 0x73795e82 0x0

422 [0x23b2000]: 0x85e60320 0x803fffff 0x73795602 0x0

423 [0x23b2000]: 0x85e60320 0x803fffff 0x73794d82 0x0

424 [0x23b2000]: 0x85e60320 0x803fffff 0x73794502 0x0

425 [0x23b2000]: 0x85e60320 0x803fffff 0x73793c82 0x0

426 [0x23b2000]: 0x85e60320 0x803fffff 0x73793402 0x0

427 [0x23b2000]: 0x85e60320 0x803fffff 0x73792b82 0x0

428 [0x23b2000]: 0x85e60320 0x803fffff 0x73792302 0x0

429 [0x23b2000]: 0x85e60320 0x803fffff 0x73791a82 0x0

430 [0x23b2000]: 0x85e60320 0x803fffff 0x73791202 0x0

431 [0x23b2000]: 0x85e60320 0x803fffff 0x73790982 0x0

432 [0x23b2000]: 0x85e60320 0x803fffff 0x73790102 0x0

433 [0x23b2000]: 0x85e60320 0x803fffff 0x73517802 0x0

434 [0x23b2000]: 0x85e60320 0x803fffff 0x73516f82 0x0

435 [0x23b2000]: 0x85e60320 0x803fffff 0x73516702 0x0

436 [0x23b2000]: 0x85e60320 0x803fffff 0x73515e82 0x0

437 [0x23b2000]: 0x85e60320 0x803fffff 0x73515602 0x0

438 [0x23b2000]: 0x85e60320 0x803fffff 0x73514d82 0x0

439 [0x23b2000]: 0x85e60320 0x803fffff 0x73514502 0x0

440 [0x23b2000]: 0x85e60320 0x803fffff 0x73513c82 0x0

441 [0x23b2000]: 0x85e60320 0x803fffff 0x73513402 0x0

442 [0x23b2000]: 0x85e60320 0x803fffff 0x73512b82 0x0

443 [0x23b2000]: 0x85e60320 0x803fffff 0x73512302 0x0

444 [0x23b2000]: 0x85e60320 0x803fffff 0x73511a82 0x0

445 [0x23b2000]: 0x85e60320 0x803fffff 0x73511202 0x0

446 [0x23b2000]: 0x85e60320 0x803fffff 0x73510982 0x0

447 [0x23b2000]: 0x85e60320 0x803fffff 0x73510102 0x0

448 [0x23b2000]: 0x85e60320 0x803fffff 0x708df802 0x0

449 [0x23b2000]: 0x85e60320 0x803fffff 0x708def82 0x0

450 [0x23b2000]: 0x85e60320 0x803fffff 0x708de702 0x0

451 [0x23b2000]: 0x85e60320 0x803fffff 0x708dde82 0x0

452 [0x23b2000]: 0x85e60320 0x803fffff 0x708dd602 0x0

453 [0x23b2000]: 0x85e60320 0x803fffff 0x708dcd82 0x0

454 [0x23b2000]: 0x85e60320 0x803fffff 0x708dc502 0x0

455 [0x23b2000]: 0x85e60320 0x803fffff 0x708dbc82 0x0

456 [0x23b2000]: 0x85e60320 0x803fffff 0x708db402 0x0

457 [0x23b2000]: 0x85e60320 0x803fffff 0x708dab82 0x0

458 [0x23b2000]: 0x85e60320 0x803fffff 0x708da302 0x0

459 [0x23b2000]: 0x85e60320 0x803fffff 0x708d9a82 0x0

460 [0x23b2000]: 0x85e60320 0x803fffff 0x708d9202 0x0

461 [0x23b2000]: 0x85e60320 0x803fffff 0x708d8982 0x0

462 [0x23b2000]: 0x85e60320 0x803fffff 0x708d8102 0x0

463 [0x23b2000]: 0x85e60320 0x803fffff 0x720e7802 0x0

464 [0x23b2000]: 0x85e60320 0x803fffff 0x720e6f82 0x0

465 [0x23b2000]: 0x85e60320 0x803fffff 0x720e6702 0x0

466 [0x23b2000]: 0x85e60320 0x803fffff 0x720e5e82 0x0

467 [0x23b2000]: 0x85e60320 0x803fffff 0x720e5602 0x0

468 [0x23b2000]: 0x85e60320 0x803fffff 0x720e4d82 0x0

469 [0x23b2000]: 0x85e60320 0x803fffff 0x720e4502 0x0

470 [0x23b2000]: 0x85e60320 0x803fffff 0x720e3c82 0x0

471 [0x23b2000]: 0x85e60320 0x803fffff 0x720e3402 0x0

472 [0x23b2000]: 0x85e60320 0x803fffff 0x720e2b82 0x0

473 [0x23b2000]: 0x85e60320 0x803fffff 0x720e2302 0x0

474 [0x23b2000]: 0x85e60320 0x803fffff 0x720e1a82 0x0

475 [0x23b2000]: 0x85e60320 0x803fffff 0x720e1202 0x0

476 [0x23b2000]: 0x85e60320 0x803fffff 0x720e0982 0x0

477 [0x23b2000]: 0x85e60320 0x803fffff 0x720e0102 0x0

478 [0x23b2000]: 0x85e60320 0x803fffff 0x7375f802 0x0

479 [0x23b2000]: 0x85e60320 0x803fffff 0x7375ef82 0x0

480 [0x23b2000]: 0x85e60320 0x803fffff 0x7375e702 0x0

481 [0x23b2000]: 0x85e60320 0x803fffff 0x7375de82 0x0

482 [0x23b2000]: 0x85e60320 0x803fffff 0x7375d602 0x0

483 [0x23b2000]: 0x85e60320 0x803fffff 0x7375cd82 0x0

484 [0x23b2000]: 0x85e60320 0x803fffff 0x7375c502 0x0

485 [0x23b2000]: 0x85e60320 0x803fffff 0x7375bc82 0x0

486 [0x23b2000]: 0x85e60320 0x803fffff 0x7375b402 0x0

487 [0x23b2000]: 0x83cd0320 0x803fffff 0x7375ab82 0x0

488 [0x23b2000]: 0x80460320 0x803fffff 0x70863402 0x0

489 [0x23b2000]: 0x80400381 0x803fffff 0x70862b82 0x0

490 [0x23b2000]: 0x80400381 0x803fffff 0x70862302 0x0

491 [0x23b2000]: 0x80400381 0x803fffff 0x70861a82 0x0

492 [0x23b2000]: 0x80400381 0x803fffff 0x70861202 0x0

493 [0x23b2000]: 0x80400381 0x803fffff 0x70860982 0x0

494 [0x23b2000]: 0x80400381 0x803fffff 0x70860102 0x0

495 [0x23b2000]: 0x80400381 0x803fffff 0x73617802 0x0

496 [0x23b2000]: 0x80400381 0x803fffff 0x73616f82 0x0

497 [0x23b2000]: 0x80400381 0x803fffff 0x73616702 0x0

498 [0x23b2000]: 0x80400301 0x803fffff 0x73615e82 0x0

499 [0x23b2000]: 0x80400381 0x803fffff 0x73615602 0x0

500 [0x23b2000]: 0x80400381 0x803fffff 0x73614d82 0x0

501 [0x23b2000]: 0x80400381 0x803fffff 0x73614502 0x0

502 [0x23b2000]: 0x80400381 0x803fffff 0x73613c82 0x0

503 [0x23b2000]: 0x80400381 0x803fffff 0x73613402 0x0

504 [0x23b2000]: 0x80400381 0x803fffff 0x73612b82 0x0

505 [0x23b2000]: 0x80400381 0x803fffff 0x73612302 0x0

506 [0x23b2000]: 0x80400381 0x803fffff 0x73611a82 0x0

507 [0x23b2000]: 0x80400381 0x803fffff 0x73611202 0x0

508 [0x23b2000]: 0x80400381 0x803fffff 0x73610982 0x0

509 [0x23b2000]: 0x80400381 0x803fffff 0x73610102 0x0

510 [0x23b2000]: 0x80400381 0x803fffff 0x7378f802 0x0

511 [0x23b2000]: 0x85e60320 0x823fffff 0x7378ef82 0x0

TX descriptor ring:
0 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

1 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

2 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

3 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

4 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

5 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

6 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

7 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

8 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

9 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

10 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

11 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

12 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

13 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

14 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

15 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

16 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

17 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

18 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

19 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

20 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

21 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

22 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

23 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

24 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

25 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

26 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

27 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

28 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

29 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

30 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

31 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

32 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

33 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

34 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

35 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

36 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

37 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

38 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

39 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

40 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

41 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

42 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

43 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

44 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

45 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

46 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

47 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

48 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

49 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

50 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

51 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

52 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

53 [0x23b5000]: 0x0 0x0 0x7390789e 0x0

54 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

55 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

56 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

57 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

58 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

59 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

60 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

61 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

62 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

63 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

64 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

65 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

66 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

67 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

68 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

69 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

70 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

71 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

72 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

73 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

74 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

75 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

76 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

77 [0x23b5000]: 0x0 0x0 0x72016202 0x0

78 [0x23b5000]: 0x0 0x0 0x72016202 0x0

79 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

80 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

81 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

82 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

83 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

84 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

85 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

86 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

87 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

88 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

89 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

90 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

91 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

92 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

93 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

94 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

95 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

96 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

97 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

98 [0x23b5000]: 0x0 0x0 0x73906c9e 0x0

99 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

100 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

101 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

102 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

103 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

104 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

105 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

106 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

107 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

108 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

109 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

110 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

111 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

112 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

113 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

114 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

115 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

116 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

117 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

118 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

119 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

120 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

121 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

122 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

123 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

124 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

125 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

126 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

127 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

128 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

129 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

130 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

131 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

132 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

133 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

134 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

135 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

136 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

137 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

138 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

139 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

140 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

141 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

142 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

143 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

144 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

145 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

146 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

147 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

148 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

149 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

150 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

151 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

152 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

153 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

154 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

155 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

156 [0x23b5000]: 0x0 0x0 0x7390709e 0x0

157 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

158 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

159 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

160 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

161 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

162 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

163 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

164 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

165 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

166 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

167 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

168 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

169 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

170 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

171 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

172 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

173 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

174 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

175 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

176 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

177 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

178 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

179 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

180 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

181 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

182 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

183 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

184 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

185 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

186 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

187 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

188 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

189 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

190 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

191 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

192 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

193 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

194 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

195 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

196 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

197 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

198 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

199 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

200 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

201 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

202 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

203 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

204 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

205 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

206 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

207 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

208 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

209 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

210 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

211 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

212 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

213 [0x23b5000]: 0x0 0x0 0x7390789e 0x0

214 [0x23b5000]: 0x0 0x0 0x7390709e 0x0

215 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

216 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

217 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

218 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

219 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

220 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

221 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

222 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

223 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

224 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

225 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

226 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

227 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

228 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

229 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

230 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

231 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

232 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

233 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

234 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

235 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

236 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

237 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

238 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

239 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

240 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

241 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

242 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

243 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

244 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

245 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

246 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

247 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

248 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

249 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

250 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

251 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

252 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

253 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

254 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

255 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

256 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

257 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

258 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

259 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

260 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

261 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

262 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

263 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

264 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

265 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

266 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

267 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

268 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

269 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

270 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

271 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

272 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

273 [0x23b5000]: 0x0 0x0 0x73906c9e 0x0

274 [0x23b5000]: 0x0 0x0 0x73905c9e 0x0

275 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

276 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

277 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

278 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

279 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

280 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

281 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

282 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

283 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

284 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

285 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

286 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

287 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

288 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

289 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

290 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

291 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

292 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

293 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

294 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

295 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

296 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

297 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

298 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

299 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

300 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

301 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

302 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

303 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

304 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

305 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

306 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

307 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

308 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

309 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

310 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

311 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

312 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

313 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

314 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

315 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

316 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

317 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

318 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

319 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

320 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

321 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

322 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

323 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

324 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

325 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

326 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

327 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

328 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

329 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

330 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

331 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

332 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

333 [0x23b5000]: 0x0 0x0 0x73907c9e 0x0

334 [0x23b5000]: 0x0 0x0 0x73905c9e 0x0

335 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

336 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

337 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

338 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

339 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

340 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

341 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

342 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

343 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

344 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

345 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

346 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

347 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

348 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

349 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

350 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

351 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

352 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

353 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

354 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

355 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

356 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

357 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

358 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

359 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

360 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

361 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

362 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

363 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

364 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

365 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

366 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

367 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

368 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

369 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

370 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

371 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

372 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

373 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

374 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

375 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

376 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

377 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

378 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

379 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

380 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

381 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

382 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

383 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

384 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

385 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

386 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

387 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

388 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

389 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

390 [0x23b5000]: 0x0 0x0 0x73906c9e 0x0

391 [0x23b5000]: 0x0 0x0 0x7390709e 0x0

392 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

393 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

394 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

395 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

396 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

397 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

398 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

399 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

400 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

401 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

402 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

403 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

404 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

405 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

406 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

407 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

408 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

409 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

410 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

411 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

412 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

413 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

414 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

415 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

416 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

417 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

418 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

419 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

420 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

421 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

422 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

423 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

424 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

425 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

426 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

427 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

428 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

429 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

430 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

431 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

432 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

433 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

434 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

435 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

436 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

437 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

438 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

439 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

440 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

441 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

442 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

443 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

444 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

445 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

446 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

447 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

448 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

449 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

450 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

451 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

452 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

453 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

454 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

455 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

456 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

457 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

458 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

459 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

460 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

461 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

462 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

463 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

464 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

465 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

466 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

467 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

468 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

469 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

470 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

471 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

472 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

473 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

474 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

475 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

476 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

477 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

478 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

479 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

480 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

481 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

482 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

483 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

484 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

485 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

486 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

487 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

488 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

489 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

490 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

491 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

492 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

493 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

494 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

495 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

496 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

497 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

498 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

499 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

500 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

501 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

502 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

503 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

504 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

505 [0x23b5000]: 0x0 0x0 0x721ad49e 0x0

506 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

507 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

508 [0x23b5000]: 0x0 0x0 0x7390789e 0x0

509 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

510 [0x23b5000]: 0x0 0x0 0x721acc9e 0x0

511 [0x23b5000]: 0x0 0x2000000 0x721acc9e 0x0

^ permalink raw reply

* Donation
From: Julie Leach @ 2016-09-11 23:17 UTC (permalink / raw)


You are a recipient to Mrs Julie Leach Donation of $3 million USD. Contact ( julieleach93@gmail.com ) for claims.

^ permalink raw reply

* linux-next: manual merge of the net-next tree with the net tree
From: Stephen Rothwell @ 2016-09-12  0:49 UTC (permalink / raw)
  To: David Miller, Networking
  Cc: linux-next, linux-kernel, Jean Delvare, Andrew Lunn

Hi all,

Today's linux-next merge of the net-next tree got a conflict in:

  drivers/net/phy/Kconfig

between commit:

  c2f57fb97da5 ("drivers: net: phy: mdio-xgene: Add hardware dependency")

from the net tree and commit:

  d75b4a22b255 ("net: phy: Sort Makefile and Kconfig")

from the net-next tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

These "sort the Kconfig/Makefile" patches are much better done just
before or after -rc1 so that the conflicting changes are already merged
and new development can be based on top of them.
-- 
Cheers,
Stephen Rothwell

138c337cf0c2436790877f87e91154b3c3294346
diff --cc drivers/net/phy/Kconfig
index b4863e4e522b,87b566f54cc1..2651c8d8de2f
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@@ -15,88 -15,156 +15,157 @@@ if PHYLI
  config SWPHY
  	bool
  
- comment "MII PHY device drivers"
- 
- config AQUANTIA_PHY
-         tristate "Drivers for the Aquantia PHYs"
-         ---help---
-           Currently supports the Aquantia AQ1202, AQ2104, AQR105, AQR405
+ comment "MDIO bus device drivers"
  
- config AT803X_PHY
- 	tristate "Drivers for Atheros AT803X PHYs"
- 	---help---
- 	  Currently supports the AT8030 and AT8035 model
+ config MDIO_BCM_IPROC
+ 	tristate "Broadcom iProc MDIO bus controller"
+ 	depends on ARCH_BCM_IPROC || COMPILE_TEST
+ 	depends on HAS_IOMEM && OF_MDIO
+ 	help
+ 	  This module provides a driver for the MDIO busses found in the
+ 	  Broadcom iProc SoC's.
  
- config AMD_PHY
- 	tristate "Drivers for the AMD PHYs"
- 	---help---
- 	  Currently supports the am79c874
+ config MDIO_BCM_UNIMAC
+ 	tristate "Broadcom UniMAC MDIO bus controller"
+ 	depends on HAS_IOMEM
+ 	help
+ 	  This module provides a driver for the Broadcom UniMAC MDIO busses.
+ 	  This hardware can be found in the Broadcom GENET Ethernet MAC
+ 	  controllers as well as some Broadcom Ethernet switches such as the
+ 	  Starfighter 2 switches.
  
- config MARVELL_PHY
- 	tristate "Drivers for Marvell PHYs"
- 	---help---
- 	  Currently has a driver for the 88E1011S
- 	
- config DAVICOM_PHY
- 	tristate "Drivers for Davicom PHYs"
- 	---help---
- 	  Currently supports dm9161e and dm9131
+ config MDIO_BITBANG
+ 	tristate "Bitbanged MDIO buses"
+ 	help
+ 	  This module implements the MDIO bus protocol in software,
+ 	  for use by low level drivers that export the ability to
+ 	  drive the relevant pins.
  
- config QSEMI_PHY
- 	tristate "Drivers for Quality Semiconductor PHYs"
- 	---help---
- 	  Currently supports the qs6612
+ 	  If in doubt, say N.
  
- config LXT_PHY
- 	tristate "Drivers for the Intel LXT PHYs"
- 	---help---
- 	  Currently supports the lxt970, lxt971
+ config MDIO_BUS_MUX
+ 	tristate
+ 	depends on OF_MDIO
+ 	help
+ 	  This module provides a driver framework for MDIO bus
+ 	  multiplexers which connect one of several child MDIO busses
+ 	  to a parent bus.  Switching between child busses is done by
+ 	  device specific drivers.
  
- config CICADA_PHY
- 	tristate "Drivers for the Cicada PHYs"
- 	---help---
- 	  Currently supports the cis8204
+ config MDIO_BUS_MUX_BCM_IPROC
+ 	tristate "Broadcom iProc based MDIO bus multiplexers"
+ 	depends on OF && OF_MDIO && (ARCH_BCM_IPROC || COMPILE_TEST)
+ 	select MDIO_BUS_MUX
+ 	default ARCH_BCM_IPROC
+ 	help
+ 	  This module provides a driver for MDIO bus multiplexers found in
+ 	  iProc based Broadcom SoCs. This multiplexer connects one of several
+ 	  child MDIO bus to a parent bus. Buses could be internal as well as
+ 	  external and selection logic lies inside the same multiplexer.
  
- config VITESSE_PHY
-         tristate "Drivers for the Vitesse PHYs"
-         ---help---
-           Currently supports the vsc8244
+ config MDIO_BUS_MUX_GPIO
+ 	tristate "GPIO controlled MDIO bus multiplexers"
+ 	depends on OF_GPIO && OF_MDIO
+ 	select MDIO_BUS_MUX
+ 	help
+ 	  This module provides a driver for MDIO bus multiplexers that
+ 	  are controlled via GPIO lines.  The multiplexer connects one of
+ 	  several child MDIO busses to a parent bus.  Child bus
+ 	  selection is under the control of GPIO lines.
  
- config TERANETICS_PHY
-         tristate "Drivers for the Teranetics PHYs"
-         ---help---
-           Currently supports the Teranetics TN2020
+ config MDIO_BUS_MUX_MMIOREG
+ 	tristate "MMIO device-controlled MDIO bus multiplexers"
+ 	depends on OF_MDIO && HAS_IOMEM
+ 	select MDIO_BUS_MUX
+ 	help
+ 	  This module provides a driver for MDIO bus multiplexers that
+ 	  are controlled via a simple memory-mapped device, like an FPGA.
+ 	  The multiplexer connects one of several child MDIO busses to a
+ 	  parent bus.  Child bus selection is under the control of one of
+ 	  the FPGA's registers.
  
- config SMSC_PHY
- 	tristate "Drivers for SMSC PHYs"
- 	---help---
- 	  Currently supports the LAN83C185, LAN8187 and LAN8700 PHYs
+ 	  Currently, only 8-bit registers are supported.
  
- config BCM_NET_PHYLIB
+ config MDIO_CAVIUM
  	tristate
  
- config BROADCOM_PHY
- 	tristate "Drivers for Broadcom PHYs"
- 	select BCM_NET_PHYLIB
+ config MDIO_GPIO
+ 	tristate "GPIO lib-based bitbanged MDIO buses"
+ 	depends on MDIO_BITBANG && GPIOLIB
  	---help---
- 	  Currently supports the BCM5411, BCM5421, BCM5461, BCM54616S, BCM5464,
- 	  BCM5481 and BCM5482 PHYs.
+ 	  Supports GPIO lib-based MDIO busses.
  
- config BCM_CYGNUS_PHY
- 	tristate "Drivers for Broadcom Cygnus SoC internal PHY"
- 	depends on ARCH_BCM_CYGNUS || COMPILE_TEST
- 	depends on MDIO_BCM_IPROC
- 	select BCM_NET_PHYLIB
+ 	  To compile this driver as a module, choose M here: the module
+ 	  will be called mdio-gpio.
+ 
+ config MDIO_HISI_FEMAC
+ 	tristate "Hisilicon FEMAC MDIO bus controller"
+ 	depends on HAS_IOMEM && OF_MDIO
+ 	help
+ 	  This module provides a driver for the MDIO busses found in the
+ 	  Hisilicon SoC that have an Fast Ethernet MAC.
+ 
+ config MDIO_MOXART
+         tristate "MOXA ART MDIO interface support"
+         depends on ARCH_MOXART
+         help
+           This driver supports the MDIO interface found in the network
+           interface units of the MOXA ART SoC
+ 
+ config MDIO_OCTEON
+ 	tristate "Octeon and some ThunderX SOCs MDIO buses"
+ 	depends on 64BIT
+ 	depends on HAS_IOMEM
+ 	select MDIO_CAVIUM
+ 	help
+ 	  This module provides a driver for the Octeon and ThunderX MDIO
+ 	  buses. It is required by the Octeon and ThunderX ethernet device
+ 	  drivers on some systems.
+ 
+ config MDIO_SUN4I
+ 	tristate "Allwinner sun4i MDIO interface support"
+ 	depends on ARCH_SUNXI
+ 	help
+ 	  This driver supports the MDIO interface found in the network
+ 	  interface units of the Allwinner SoC that have an EMAC (A10,
+ 	  A12, A10s, etc.)
+ 
+ config MDIO_THUNDER
+ 	tristate "ThunderX SOCs MDIO buses"
+ 	depends on 64BIT
+ 	depends on PCI
+ 	select MDIO_CAVIUM
+ 	help
+ 	  This driver supports the MDIO interfaces found on Cavium
+ 	  ThunderX SoCs when the MDIO bus device appears as a PCI
+ 	  device.
+ 
+ config MDIO_XGENE
+ 	tristate "APM X-Gene SoC MDIO bus controller"
++	depends on ARCH_XGENE || COMPILE_TEST
+ 	help
+ 	  This module provides a driver for the MDIO busses found in the
+ 	  APM X-Gene SoC's.
+ 
+ comment "MII PHY device drivers"
+ 
+ config AMD_PHY
+ 	tristate "AMD PHYs"
  	---help---
- 	  This PHY driver is for the 1G internal PHYs of the Broadcom
- 	  Cygnus Family SoC.
+ 	  Currently supports the am79c874
  
- 	  Currently supports internal PHY's used in the BCM11300,
- 	  BCM11320, BCM11350, BCM11360, BCM58300, BCM58302,
- 	  BCM58303 & BCM58305 Broadcom Cygnus SoCs.
+ config AQUANTIA_PHY
+         tristate "Aquantia PHYs"
+         ---help---
+           Currently supports the Aquantia AQ1202, AQ2104, AQR105, AQR405
+ 
+ config AT803X_PHY
+ 	tristate "AT803X PHYs"
+ 	---help---
+ 	  Currently supports the AT8030 and AT8035 model
  
  config BCM63XX_PHY
- 	tristate "Drivers for Broadcom 63xx SOCs internal PHY"
+ 	tristate "Broadcom 63xx SOCs internal PHY"
  	depends on BCM63XX
  	select BCM_NET_PHYLIB
  	---help---

^ permalink raw reply

* [PATCH] net: VRF: Pass original iif to ip_route_input()
From: Mark Tomlinson @ 2016-09-12  1:45 UTC (permalink / raw)
  To: netdev; +Cc: Mark Tomlinson

The function ip_rcv_finish() calls l3mdev_ip_rcv(). On any VRF except
the global VRF, this replaces skb->dev with the VRF master interface.
When calling ip_route_input_noref() from here, the checks for forwarding
look at this master device instead of the initial ingress interface.
This will allow packets to be routed which normally would be dropped.
For example, an interface that is not assigned an IP address should
drop packets, but because the checking is against the master device, the
packet will be forwarded.

The fix here is to still call l3mdev_ip_rcv(), but remember the initial
net_device. This is passed to the other functions within ip_rcv_finish,
so they still see the original interface.

Please note that while this patch fixes my issue, I am not entirely sure
why the skb->dev is changed to the master device, so I am not sure this
is the right fix.

Signed-off-by: Mark Tomlinson <mark.tomlinson@alliedtelesis.co.nz>
---
 net/ipv4/ip_input.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c
index 4b351af..d6feabb 100644
--- a/net/ipv4/ip_input.c
+++ b/net/ipv4/ip_input.c
@@ -312,6 +312,7 @@ static int ip_rcv_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
 {
 	const struct iphdr *iph = ip_hdr(skb);
 	struct rtable *rt;
+	struct net_device *dev = skb->dev;
 
 	/* if ingress device is enslaved to an L3 master device pass the
 	 * skb to its handler for processing
@@ -341,7 +342,7 @@ static int ip_rcv_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
 	 */
 	if (!skb_valid_dst(skb)) {
 		int err = ip_route_input_noref(skb, iph->daddr, iph->saddr,
-					       iph->tos, skb->dev);
+					       iph->tos, dev);
 		if (unlikely(err)) {
 			if (err == -EXDEV)
 				__NET_INC_STATS(net, LINUX_MIB_IPRPFILTER);
@@ -370,7 +371,7 @@ static int ip_rcv_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
 		__IP_UPD_PO_STATS(net, IPSTATS_MIB_INBCAST, skb->len);
 	} else if (skb->pkt_type == PACKET_BROADCAST ||
 		   skb->pkt_type == PACKET_MULTICAST) {
-		struct in_device *in_dev = __in_dev_get_rcu(skb->dev);
+		struct in_device *in_dev = __in_dev_get_rcu(dev);
 
 		/* RFC 1122 3.3.6:
 		 *
-- 
2.9.3

^ permalink raw reply related

* Re: [PATCH net-next] net: dsa: bcm_sf2: Get VLAN_PORT_MASK from b53_device
From: David Miller @ 2016-09-12  2:37 UTC (permalink / raw)
  To: f.fainelli; +Cc: netdev, vivien.didelot, andrew
In-Reply-To: <1473536343-13427-1-git-send-email-f.fainelli@gmail.com>

From: Florian Fainelli <f.fainelli@gmail.com>
Date: Sat, 10 Sep 2016 12:39:03 -0700

> While migrating the bcm_sf2 driver to use b53_common, we left a small
> piece untouched where we kept our local copy of the per-port
> port_vlan_ctl bitmask value. This value is now maintained by b53_device
> so we need to use it instead of our local (and now stale) copy of it.
> 
> Fixes: f458995b9ad8 ("net: dsa: bcm_sf2: Utilize core B53 driver when possible")
> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>

Applied.

^ permalink raw reply

* Re: [PATCH net V2 0/4] mlx4 fixes
From: David Miller @ 2016-09-12  2:40 UTC (permalink / raw)
  To: tariqt; +Cc: netdev, eranbe
In-Reply-To: <1473580580-2323-1-git-send-email-tariqt@mellanox.com>

From: Tariq Toukan <tariqt@mellanox.com>
Date: Sun, 11 Sep 2016 10:56:16 +0300

> This patchset contains several bug fixes from the team to the
> mlx4 Eth driver.
> 
> Series generated against net commit:
> c2f57fb97da5 "drivers: net: phy: mdio-xgene: Add hardware dependency"
 ...
> v2:
> * excluded some cleanup patches.

Series applied, thanks.

^ permalink raw reply

* Re: Minimum MTU Mess
From: Andrew Lunn @ 2016-09-12  2:41 UTC (permalink / raw)
  To: Jarod Wilson; +Cc: David Miller, netdev
In-Reply-To: <20160909180555.GE20632@redhat.com>

> Actually breaking this up into easily digestable/mergeable chunks is going
> to be kind of entertaining... Suggestions welcomed on that. First up is
> obviously the core change, which touches just net/ethernet/eth.c,
> net/core/dev.c, include/linux/netdevice.h and
> include/uapi/linux/if_ether.h, and should let existing code continue to
> Just Work(tm), though devices using ether_setup() that had no MTU range
> checking (or one or the other missing) will wind up with new bounds.

Hi Jarod

Did you find any drivers which support jumbo packets, but don't have
checks? These drivers, if there are any, need handling first, before
this core change is made. Otherwise you introduce regressions.

     Andrew

^ permalink raw reply

* Re: [PATCH 25/26] pch_gbe: constify local structures
From: David Miller @ 2016-09-12  2:48 UTC (permalink / raw)
  To: Julia.Lawall; +Cc: netdev, joe, kernel-janitors, linux-kernel
In-Reply-To: <1473599168-30561-26-git-send-email-Julia.Lawall@lip6.fr>


Julia, I went over the networking driver patches in this series and
I have to say that I'd rather see these changes be more durable
and self-checking.

By this I mean that I want you to also make the driver private pointer
that holds these structures be const too.

Then if there are really any assignments to the objects being marked
const, it will show immediately.

Thank you.

^ permalink raw reply

* Re: Minimum MTU Mess
From: YOSHIFUJI Hideaki @ 2016-09-12  2:59 UTC (permalink / raw)
  To: Jarod Wilson, David Miller; +Cc: hideaki.yoshifuji, netdev
In-Reply-To: <20160907195356.GX33916@redhat.com>



Jarod Wilson wrote:
> On Tue, Sep 06, 2016 at 04:55:29PM -0700, David Miller wrote:
>> From: Jarod Wilson <jarod@redhat.com>
>> Date: Fri, 2 Sep 2016 13:07:42 -0400
>>
>>> In any case, the number of "mtu < 68" and "#define FOO_MIN_MTU 68", or
>>> variations thereof, under drivers/net/ is kind of crazy.
>>
>> Agreed, we can have a default and let the different cases provide
>> overrides.
>>
>> Mostly what to do here is a function of the hardware though.
> 
> So I've been tinkering with this some, and it looks like having both
> centralized min and max checking could be useful here. I'm hacking away at
> drivers now, but the basis of all this would potentially look about like
> the patch below, and each device would have to set dev->m{in,ax}_mtu one
> way or another. Drivers using alloc_etherdev and/or ether_setup would get
> the "default" values, and then they can be overridden. Probably need
> something to make sure dev->max_mtu isn't set to 0 though...
> 
> Possibly on the right track here, or might there be a better way to
> approach this?
> 
> diff --git a/include/uapi/linux/if_ether.h b/include/uapi/linux/if_ether.h
> index 117d02e..864d6f2 100644
> --- a/include/uapi/linux/if_ether.h
> +++ b/include/uapi/linux/if_ether.h
> @@ -35,6 +35,8 @@
>  #define ETH_FRAME_LEN	1514		/* Max. octets in frame sans FCS */
>  #define ETH_FCS_LEN	4		/* Octets in the FCS		 */
>  
> +#define ETH_MIN_MTU	68		/* Min IPv4 MTU per RFC791	*/
> +
>  /*
>   *	These are the defined Ethernet Protocol ID's.
>   */

Why don't we disable IPv4 if the MTU is lower than this value
as we do for IPv6?

-- 
Hideaki Yoshifuji <hideaki.yoshifuji@miraclelinux.com>
Technical Division, MIRACLE LINUX CORPORATION

^ permalink raw reply

* Re: [net-next PATCH v2 2/2] e1000: bundle xdp xmit routines
From: John Fastabend @ 2016-09-12  3:07 UTC (permalink / raw)
  To: Tom Herbert
  Cc: Brenden Blanco, Alexei Starovoitov, Jeff Kirsher,
	Jesper Dangaard Brouer, David S. Miller, Cong Wang,
	intel-wired-lan, William Tu, Linux Kernel Network Developers
In-Reply-To: <CALx6S34+Mgb173vReYt=yPOztcFhVU9rRZyodVc56toXP1OiHQ@mail.gmail.com>

On 16-09-10 08:36 AM, Tom Herbert wrote:
> On Fri, Sep 9, 2016 at 2:29 PM, John Fastabend <john.fastabend@gmail.com> wrote:
>> e1000 supports a single TX queue so it is being shared with the stack
>> when XDP runs XDP_TX action. This requires taking the xmit lock to
>> ensure we don't corrupt the tx ring. To avoid taking and dropping the
>> lock per packet this patch adds a bundling implementation to submit
>> a bundle of packets to the xmit routine.
>>
>> I tested this patch running e1000 in a VM using KVM over a tap
>> device using pktgen to generate traffic along with 'ping -f -l 100'.
>>
>> Suggested-by: Jesper Dangaard Brouer <brouer@redhat.com>
>> Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
>> ---

[...]

>> diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
>> index 91d5c87..b985271 100644
>> --- a/drivers/net/ethernet/intel/e1000/e1000_main.c
>> +++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
>> @@ -1738,10 +1738,18 @@ static int e1000_setup_rx_resources(struct e1000_adapter *adapter,
>>         struct pci_dev *pdev = adapter->pdev;
>>         int size, desc_len;
>>
>> +       size = sizeof(struct e1000_rx_buffer_bundle) *
>> +                       E1000_XDP_XMIT_BUNDLE_MAX;
>> +       rxdr->xdp_buffer = vzalloc(size);
>> +       if (!rxdr->xdp_buffer)
>> +               return -ENOMEM;
>> +
>>         size = sizeof(struct e1000_rx_buffer) * rxdr->count;
>>         rxdr->buffer_info = vzalloc(size);
>> -       if (!rxdr->buffer_info)
>> +       if (!rxdr->buffer_info) {
>> +               vfree(rxdr->xdp_buffer);
> 
> This could be deferred until an XDP program is added.

Yep that would be best to avoid overhead in the normal non-XDP case.
Also I'll move the xdp prog pointer into the rx ring per Jespers comment
that I missed in this rev.

[...]

>> +
>> +static void e1000_xdp_xmit_bundle(struct e1000_rx_buffer_bundle *buffer_info,
>> +                                 struct net_device *netdev,
>> +                                 struct e1000_adapter *adapter)
>> +{
>> +       struct netdev_queue *txq = netdev_get_tx_queue(netdev, 0);
>> +       struct e1000_tx_ring *tx_ring = adapter->tx_ring;
>> +       struct e1000_hw *hw = &adapter->hw;
>> +       int i = 0;
>> +
>>         /* e1000 only support a single txq at the moment so the queue is being
>>          * shared with stack. To support this requires locking to ensure the
>>          * stack and XDP are not running at the same time. Devices with
>>          * multiple queues should allocate a separate queue space.
>> +        *
>> +        * To amortize the locking cost e1000 bundles the xmits and sends as
>> +        * many as possible until either running out of descriptors or failing.
> 
> Up to E1000_XDP_XMIT_BUNDLE_MAX  at least...

Yep will fix comment.

[...]

>>
>>                 /* use prefetched values */
>> @@ -4498,8 +4536,11 @@ next_desc:
>>         rx_ring->next_to_clean = i;
>>
>>         cleaned_count = E1000_DESC_UNUSED(rx_ring);
>> -       if (cleaned_count)
>> +       if (cleaned_count) {
>> +               if (xdp_xmit)
>> +                       e1000_xdp_xmit_bundle(xdp_bundle, netdev, adapter);
>>                 adapter->alloc_rx_buf(adapter, rx_ring, cleaned_count);
>> +       }
> 
> Looks good for XDP path. Is this something we can abstract out into a
> library for use by other drivers?
> 

I'm not really sure it can be abstracted much its a bit intertwined with
the normal rx receive path. But it should probably be a pattern that
gets copied so we avoid unnecessary tx work.

> 
>>
>>         adapter->total_rx_packets += total_rx_packets;
>>         adapter->total_rx_bytes += total_rx_bytes;
>>

^ permalink raw reply

* [GIT] Networking
From: David Miller @ 2016-09-12  3:08 UTC (permalink / raw)
  To: torvalds; +Cc: akpm, netdev, linux-kernel


Mostly small sets of driver fixes scattered all over the place.

1) Mediatek driver fixes from Sean Wang.  Forward port not written
   correctly during TX map, missed handling of EPROBE_DEFER, and
   mistaken use of put_page() instead of skb_free_frag().

2) Fix socket double-free in KCM code, from WANG Cong.

3) QED driver fixes from Sudarsana Reddy Kalluru, including a fix
   for using the dcbx buffers before initializing them.

4) Mellanox Switch driver fixes from Jiri Pirko, including a fix for
   double fib removals and an error handling fix in
   mlxsw_sp_module_init().

5) Fix kernel panic when enabling LLDP in i40e driver, from Dave
   Ertman.

6) Fix padding of TSO packets in thunderx driver, from Sunil Goutham.

7) TCP's rcv_wup not initialized properly when using fastopen, from
   Neal Cardwell.

8) Don't use uninitialized flow keys in flow dissector, from Gao
   Feng.

9) Use after free in l2tp module unload, from Sabrina Dubroca.

10) Fix interrupt registry ordering issues in smsc911x driver, from
    Jeremy Linton.

11) Fix crashes in bonding having to do with enslaving and rx_handler,
    from Mahesh Bandewar.

12) AF_UNIX deadlock fixes from Linus.

13) In mlx5 driver, don't read skb->xmit_mode after it might have been
    freed from the TX reclaim path.  From Tariq Toukan.

14) Fix a bug from 2015 in TCP Yeah where the congestion window does
    not increase, from Artem Germanov.

15) Don't pad frames on receive in NFP driver, from Jakub Kicinski.

16) Fix chunk fragmenting in SCTP wrt. GSO, from Marcelo Ricardo
    Leitner.

17) Fix deletion of VRF routes, from Mark Tomlinson.

18) Fix device refcount leak when DAD fails in ipv6, from Wei Yongjun.

Please pull, thanks a lot!

The following changes since commit e4e98c460ad38c78498622a164fd5ef09a2dc9cb:

  Merge tag 'hwmon-for-linus-v4.8-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging (2016-08-29 19:12:35 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 

for you to fetch changes up to 373df3131aa83bd3e0ea7cd15be92d942d75fc72:

  Merge branch 'mlx4-fixes' (2016-09-11 19:40:26 -0700)

----------------------------------------------------------------
Alexey Kodanev (1):
      net/xfrm_input: fix possible NULL deref of tunnel.ip6->parms.i_key

Andy Gospodarek (1):
      MAINTAINERS: update to working email address

Arend Van Spriel (1):
      brcmfmac: avoid potential stack overflow in brcmf_cfg80211_start_ap()

Arik Nemtsov (1):
      mac80211: TDLS: don't require beaconing for AP BW

Artem Germanov (1):
      tcp: cwnd does not increase in TCP YeAH

Ashok Raj Nagarajan (1):
      ath10k: fix get rx_status from htt context

Bodong Wang (1):
      net/mlx5e: Move an_disable_cap bit to a new position

Cathy Luo (1):
      mwifiex: fix large amsdu packets causing firmware hang

Chris Brandt (1):
      net: ethernet: renesas: sh_eth: add POST registers for rz

Dave Ertman (1):
      i40e: Fix kernel panic on enable/disable LLDP

Dave Jones (1):
      ipv6: release dst in ping_v6_sendmsg

David Ahern (1):
      xfrm: Only add l3mdev oif to dst lookups

David S. Miller (15):
      Merge tag 'mac80211-for-davem-2016-08-30' of git://git.kernel.org/.../jberg/mac80211
      Merge git://git.kernel.org/.../pablo/nf
      Merge branch 'mediatek-fixes'
      Merge branch 'qed-fixes'
      Merge branch 'mlxsw-fixes'
      Merge tag 'wireless-drivers-for-davem-2016-08-29' of git://git.kernel.org/.../kvalo/wireless-drivers
      Merge branch 'thunderx-fixes'
      Merge branch 'smsc911x-fixes'
      Merge branch 'vxlan-fixes'
      Merge branch 'master' of git://git.kernel.org/.../klassert/ipsec
      Merge branch 'mlx5-fixes'
      Merge branch 'nfp-fixes'
      Merge branch 'mlxsw-fixes'
      Merge tag 'wireless-drivers-for-davem-2016-09-08' of git://git.kernel.org/.../kvalo/wireless-drivers
      Merge branch 'mlx4-fixes'

Davide Caratti (1):
      bridge: re-introduce 'fix parsing of MLDv2 reports'

Eli Cooper (1):
      ipv6: Don't unset flowi6_proto in ipxip6_tnl_xmit()

Emmanuel Grumbach (2):
      iwlwifi: mvm: consider P2p device type for firmware dump triggers
      iwlwifi: mvm: don't use ret when not initialised

Eric Dumazet (1):
      tcp: fastopen: avoid negative sk_forward_alloc

Felix Fietkau (2):
      ath9k: fix client mode beacon configuration
      ath9k: fix using sta->drv_priv before initializing it

Florian Fainelli (1):
      MAINTAINERS: Update CPMAC email address

Gal Pressman (3):
      net/mlx5e: Prevent casting overflow
      net/mlx5e: Fix global PFC counters replication
      net/mlx5e: Fix parsing of vlan packets when updating lro header

Gao Feng (1):
      rps: flow_dissector: Fix uninitialized flow_keys used in __skb_get_hash possibly

Giedrius Statkevičius (1):
      ath9k: bring back direction setting in ath9k_{start_stop}

Guilherme G. Piccoli (1):
      bnx2x: don't reset chip on cleanup if PCI function is offline

Helmut Buchsbaum (1):
      net: macb: initialize checksum when using checksum offloading

Ido Schimmel (3):
      mlxsw: spectrum: Don't take multiple references on a FID
      mlxsw: spectrum: Use existing flood setup when adding VLANs
      mlxsw: spectrum: Set port type before setting its address

Ivan Vecera (1):
      tg3: Fix for disallow tx coalescing time to be 0

Jakub Kicinski (3):
      nfp: remove linux/version.h includes
      nfp: drop support for old firmware ABIs
      nfp: don't pad frames on receive

Jean Delvare (1):
      drivers: net: phy: mdio-xgene: Add hardware dependency

Jeremy Linton (4):
      net: smsc911x: Remove multiple exit points from smsc911x_open
      net: smsc911x: Fix register_netdev, phy startup, driver unload ordering
      net: smsc911x: Move interrupt handler before open
      net: smsc911x: Move interrupt allocation to open/stop

Jiri Benc (2):
      vxlan: reject multicast destination without an interface
      vxlan: fix duplicated and wrong error messages

Jiri Pirko (5):
      mlxsw: spectrum_router: Fix failure caused by double fib removal from HW
      mlxsw: spectrum_router: Fix fib entry update path
      mlxsw: spectrum: Fix error path in mlxsw_sp_module_init
      mlxsw: spectrum_router: Fix netevent notifier registration
      mlxsw: spectrum_router: Fix error path in mlxsw_sp_router_init

Johannes Berg (1):
      Revert "wext: Fix 32 bit iwpriv compatibility issue with 64 bit Kernel"

Kalle Valo (3):
      Merge ath-current from ath.git
      Merge tag 'iwlwifi-for-kalle-2016-08-29' of git://git.kernel.org/.../iwlwifi/iwlwifi-fixes
      Merge ath-current from ath.git

Kamal Heib (2):
      net/mlx4_en: Fix the return value of mlx4_en_dcbnl_set_all()
      net/mlx4_en: Fix the return value of mlx4_en_dcbnl_set_state()

Lars Persson (1):
      dwc_eth_qos: do not register semi-initialized device

Linus Lüssing (1):
      cfg80211: Add stub for cfg80211_get_station()

Linus Torvalds (2):
      Revert "af_unix: Fix splice-bind deadlock"
      af_unix: split 'u->readlock' into two: 'iolock' and 'bindlock'

Liping Zhang (6):
      netfilter: nft_reject: restrict to INPUT/FORWARD/OUTPUT
      netfilter: nfnetlink: use list_for_each_entry_safe to delete all objects
      netfilter: cttimeout: put back l4proto when replacing timeout policy
      netfilter: cttimeout: unlink timeout objs in the unconfirmed ct lists
      netfilter: nft_meta: improve the validity check of pkttype set expr
      netfilter: nf_tables_netdev: remove redundant ip_hdr assignment

Mahesh Bandewar (1):
      bonding: Fix bonding crash

Marcelo Ricardo Leitner (1):
      sctp: identify chunks that need to be fragmented at IP level

Mark Tomlinson (1):
      net: Don't delete routes in different VRFs

Miaoqing Pan (1):
      ath9k: fix AR5416 access GPIO warning

Michael Chan (1):
      bnxt_en: Fix TX push operation on ARM64.

Mohammed Shafi Shajakhan (1):
      ath10k: Remove driver log suggesting QCA9887 support is experimental

Moshe Shemesh (1):
      net/mlx4_en: Fix panic on xmit while port is down

Neal Cardwell (1):
      tcp: fastopen: fix rcv_wup initialization for TFO server on SYN/data

Nicolas Dichtel (2):
      ipv6: add missing netconf notif when 'all' is updated
      netconf: add a notif when settings are created

Nikolay Aleksandrov (1):
      net: bridge: don't increment tx_dropped in br_do_proxy_arp

Parthasarathy Bhuvaragan (1):
      tipc: fix random link resets while adding a second bearer

Peer, Ilan (1):
      iwlwifi: mvm: Advertise support for AP channel width change

Sabrina Dubroca (2):
      netfilter: ebtables: put module reference when an incorrect extension is found
      l2tp: fix use-after-free during module unload

Sean Wang (9):
      net: ethernet: mediatek: fix fails from TX housekeeping due to incorrect port setup
      net: ethernet: mediatek: fix incorrect return value of devm_clk_get with EPROBE_DEFER
      net: ethernet: mediatek: fix API usage with skb_free_frag
      net: ethernet: mediatek: remove redundant free_irq for devm_request_irq allocated irq
      net: ethernet: mediatek: fix logic unbalance between probe and remove
      net: ethernet: mediatek: fix issue of driver removal with interface is up
      net: ethernet: mediatek: fix the missing of_node_put() after node is used done inside mtk_mdio_init
      net: ethernet: mediatek: use devm_mdiobus_alloc instead of mdiobus_alloc inside mtk_mdio_init
      net: ethernet: mediatek: fix error handling inside mtk_mdio_init

Sharon Dvir (1):
      iwlwifi: mvm: check if vif is NULL before using it

Sudarsana Reddy Kalluru (3):
      qed*: Disallow dcbx configuration for VF interfaces.
      qed: Set selection-field while configuring the app entry in ieee mode.
      qed: Clear dcbx memory buffers before the usage.

Sudip Mukherjee (1):
      net: smsc: remove build warning of duplicate definition

Sunil Goutham (2):
      net: thunderx: Fix for HW issue while padding TSO packet
      net: thunderx: Fix for issues with multiple CQEs posted for a TSO packet

Tariq Toukan (2):
      net/mlx5e: Fix xmit_more counter race issue
      net/mlx4_en: Fixes for DCBX

Tobias Brunner (1):
      xfrm: Ignore socket policies when rebuilding hash tables

Vegard Nossum (3):
      xfrm: fix crash in XFRM_MSG_GETSA netlink handler
      xfrm: get rid of incorrect WARN
      xfrm: get rid of another incorrect WARN

WANG Cong (1):
      kcm: fix a socket double free

Wei Yongjun (1):
      ipv6: addrconf: fix dev refcont leak when DAD failed

Wu Fengguang (1):
      qed: fix kzalloc-simple.cocci warnings

mhiramat@kernel.org (2):
      brcmfmac: Check rtnl_lock is locked when removing interface
      brcmfmac: Change vif_event_lock to spinlock

 MAINTAINERS                                                 |   4 +-
 drivers/net/bonding/bond_main.c                             |   7 ++-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c            |  19 ++++--
 drivers/net/ethernet/broadcom/bnxt/bnxt.c                   |   4 +-
 drivers/net/ethernet/broadcom/tg3.c                         |  11 +---
 drivers/net/ethernet/cadence/macb.c                         |  23 ++++++++
 drivers/net/ethernet/cavium/thunder/nic.h                   |   1 +
 drivers/net/ethernet/cavium/thunder/nic_main.c              |  11 +++-
 drivers/net/ethernet/cavium/thunder/nicvf_main.c            |  20 +++++--
 drivers/net/ethernet/cavium/thunder/nicvf_queues.c          |  64 +++++++++++++++++---
 drivers/net/ethernet/intel/i40e/i40e_main.c                 |  15 +++--
 drivers/net/ethernet/mediatek/mtk_eth_soc.c                 |  82 +++++++++++++-------------
 drivers/net/ethernet/mediatek/mtk_eth_soc.h                 |  22 ++++---
 drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c              |  57 +++++++++---------
 drivers/net/ethernet/mellanox/mlx4/en_netdev.c              |  21 +++----
 drivers/net/ethernet/mellanox/mlx4/en_tx.c                  |  12 ++--
 drivers/net/ethernet/mellanox/mlx4/mlx4_en.h                |  15 +----
 drivers/net/ethernet/mellanox/mlx4/port.c                   |   4 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c        |   8 ++-
 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c             |  22 ++++---
 drivers/net/ethernet/mellanox/mlx5/core/en_tx.c             |   2 +-
 drivers/net/ethernet/mellanox/mlxsw/spectrum.c              |  28 ++++++---
 drivers/net/ethernet/mellanox/mlxsw/spectrum.h              |   2 +
 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c       | 160 +++++++++++++++++++++++++++++++------------------
 drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c    |  28 ++++-----
 drivers/net/ethernet/netronome/nfp/nfp_net_common.c         |   5 --
 drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c        |   1 -
 drivers/net/ethernet/netronome/nfp/nfp_netvf_main.c         |   7 +--
 drivers/net/ethernet/qlogic/qed/qed_dcbx.c                  |  20 ++++++-
 drivers/net/ethernet/qlogic/qede/qede_main.c                |   3 +-
 drivers/net/ethernet/renesas/sh_eth.c                       |   7 +++
 drivers/net/ethernet/smsc/smc91x.h                          |   2 +
 drivers/net/ethernet/smsc/smsc911x.c                        | 213 ++++++++++++++++++++++++++++++++----------------------------------
 drivers/net/ethernet/synopsys/dwc_eth_qos.c                 |  38 ++++++------
 drivers/net/phy/Kconfig                                     |   1 +
 drivers/net/vxlan.c                                         |  38 ++++--------
 drivers/net/wireless/ath/ath10k/htt_rx.c                    |  10 ++--
 drivers/net/wireless/ath/ath10k/pci.c                       |   1 -
 drivers/net/wireless/ath/ath9k/hw.c                         |   4 +-
 drivers/net/wireless/ath/ath9k/main.c                       |  18 ++++--
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c |  28 ++++-----
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h |   2 +-
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c     |   2 +-
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c      |   8 ++-
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.h      |   2 +-
 drivers/net/wireless/intel/iwlwifi/mvm/fw-dbg.c             |   3 +-
 drivers/net/wireless/intel/iwlwifi/mvm/fw-dbg.h             |   3 +-
 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c           |   1 +
 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h                |   2 +
 drivers/net/wireless/marvell/mwifiex/11n_aggr.c             |   3 +-
 include/linux/mlx5/mlx5_ifc.h                               |   5 +-
 include/linux/netdevice.h                                   |   1 +
 include/net/af_unix.h                                       |   2 +-
 include/net/cfg80211.h                                      |   9 +++
 include/net/ip_fib.h                                        |   3 +-
 include/net/netfilter/nft_meta.h                            |   4 ++
 include/net/netfilter/nft_reject.h                          |   4 ++
 net/bridge/br_input.c                                       |   7 +--
 net/bridge/br_multicast.c                                   |   2 +-
 net/bridge/netfilter/ebtables.c                             |   2 +
 net/bridge/netfilter/nft_meta_bridge.c                      |   1 +
 net/core/dev.c                                              |  16 +++++
 net/core/flow_dissector.c                                   |   6 +-
 net/ipv4/devinet.c                                          |  11 ++--
 net/ipv4/fib_frontend.c                                     |   3 +-
 net/ipv4/fib_semantics.c                                    |   8 ++-
 net/ipv4/netfilter/nft_reject_ipv4.c                        |   1 +
 net/ipv4/tcp_fastopen.c                                     |   2 +
 net/ipv4/tcp_yeah.c                                         |   2 +-
 net/ipv4/xfrm4_policy.c                                     |   2 +-
 net/ipv6/addrconf.c                                         |  18 +++++-
 net/ipv6/ip6_tunnel.c                                       |   2 +
 net/ipv6/netfilter/nft_reject_ipv6.c                        |   1 +
 net/ipv6/ping.c                                             |   9 ++-
 net/ipv6/xfrm6_input.c                                      |   1 +
 net/ipv6/xfrm6_policy.c                                     |   2 +-
 net/kcm/kcmsock.c                                           |   3 +-
 net/l2tp/l2tp_core.c                                        |   3 +
 net/mac80211/tdls.c                                         |   7 ++-
 net/netfilter/nf_tables_netdev.c                            |   1 -
 net/netfilter/nfnetlink_acct.c                              |   6 +-
 net/netfilter/nfnetlink_cttimeout.c                         |  49 ++++++++-------
 net/netfilter/nft_meta.c                                    |  17 ++++--
 net/netfilter/nft_reject.c                                  |  16 +++++
 net/netfilter/nft_reject_inet.c                             |   7 ++-
 net/sctp/output.c                                           |  13 +++-
 net/tipc/name_distr.c                                       |   8 ++-
 net/unix/af_unix.c                                          | 111 +++++++++++++++-------------------
 net/wireless/wext-core.c                                    |  25 +-------
 net/xfrm/xfrm_input.c                                       |  14 ++---
 net/xfrm/xfrm_policy.c                                      |   4 ++
 net/xfrm/xfrm_user.c                                        |  13 ++--
 92 files changed, 875 insertions(+), 610 deletions(-)

^ permalink raw reply

* Re: [net-next PATCH v2 2/2] e1000: bundle xdp xmit routines
From: John Fastabend @ 2016-09-12  3:15 UTC (permalink / raw)
  To: Tom Herbert
  Cc: Alexei Starovoitov, Brenden Blanco, Jeff Kirsher,
	Jesper Dangaard Brouer, David S. Miller, Cong Wang,
	intel-wired-lan, William Tu, Linux Kernel Network Developers
In-Reply-To: <CALx6S373K92E5uabb8MtyHpDvkpWUQmZRmoRF7pFnZ3wBW68Cw@mail.gmail.com>

On 16-09-09 09:13 PM, Tom Herbert wrote:
> On Fri, Sep 9, 2016 at 8:26 PM, John Fastabend <john.fastabend@gmail.com> wrote:
>> On 16-09-09 08:12 PM, Tom Herbert wrote:
>>> On Fri, Sep 9, 2016 at 6:40 PM, Alexei Starovoitov
>>> <alexei.starovoitov@gmail.com> wrote:
>>>> On Fri, Sep 09, 2016 at 06:19:56PM -0700, Tom Herbert wrote:
>>>>> On Fri, Sep 9, 2016 at 6:12 PM, John Fastabend <john.fastabend@gmail.com> wrote:
>>>>>> On 16-09-09 06:04 PM, Tom Herbert wrote:
>>>>>>> On Fri, Sep 9, 2016 at 5:01 PM, John Fastabend <john.fastabend@gmail.com> wrote:
>>>>>>>> On 16-09-09 04:44 PM, Tom Herbert wrote:
>>>>>>>>> On Fri, Sep 9, 2016 at 2:29 PM, John Fastabend <john.fastabend@gmail.com> wrote:
>>>>>>>>>> e1000 supports a single TX queue so it is being shared with the stack
>>>>>>>>>> when XDP runs XDP_TX action. This requires taking the xmit lock to
>>>>>>>>>> ensure we don't corrupt the tx ring. To avoid taking and dropping the
>>>>>>>>>> lock per packet this patch adds a bundling implementation to submit
>>>>>>>>>> a bundle of packets to the xmit routine.
>>>>>>>>>>
>>>>>>>>>> I tested this patch running e1000 in a VM using KVM over a tap
>>>>>>>>>> device using pktgen to generate traffic along with 'ping -f -l 100'.
>>>>>>>>>>
>>>>>>>>> Hi John,
>>>>>>>>>
>>>>>>>>> How does this interact with BQL on e1000?
>>>>>>>>>
>>>>>>>>> Tom
>>>>>>>>>
>>>>>>>>
>>>>>>>> Let me check if I have the API correct. When we enqueue a packet to
>>>>>>>> be sent we must issue a netdev_sent_queue() call and then on actual
>>>>>>>> transmission issue a netdev_completed_queue().
>>>>>>>>
>>>>>>>> The patch attached here missed a few things though.
>>>>>>>>
>>>>>>>> But it looks like I just need to call netdev_sent_queue() from the
>>>>>>>> e1000_xmit_raw_frame() routine and then let the tx completion logic
>>>>>>>> kick in which will call netdev_completed_queue() correctly.
>>>>>>>>
>>>>>>>> I'll need to add a check for the queue state as well. So if I do these
>>>>>>>> three things,
>>>>>>>>
>>>>>>>>         check __QUEUE_STATE_XOFF before sending
>>>>>>>>         netdev_sent_queue() -> on XDP_TX
>>>>>>>>         netdev_completed_queue()
>>>>>>>>
>>>>>>>> It should work agree? Now should we do this even when XDP owns the
>>>>>>>> queue? Or is this purely an issue with sharing the queue between
>>>>>>>> XDP and stack.
>>>>>>>>
>>>>>>> But what is the action for XDP_TX if the queue is stopped? There is no
>>>>>>> qdisc to back pressure in the XDP path. Would we just start dropping
>>>>>>> packets then?
>>>>>>
>>>>>> Yep that is what the patch does if there is any sort of error packets
>>>>>> get dropped on the floor. I don't think there is anything else that
>>>>>> can be done.
>>>>>>
>>>>> That probably means that the stack will always win out under load.
>>>>> Trying to used the same queue where half of the packets are well
>>>>> managed by a qdisc and half aren't is going to leave someone unhappy.
>>>>> Maybe in the this case where we have to share the qdisc we can
>>>>> allocate the skb on on returning XDP_TX and send through the normal
>>>>> qdisc for the device.
>>>>
>>>> I wouldn't go to such extremes for e1k.
>>>> The only reason to have xdp in e1k is to use it for testing
>>>> of xdp programs. Nothing else. e1k is, best case, 1Gbps adapter.
>>>
>>> I imagine someone may want this for the non-forwarding use cases like
>>> early drop for DOS mitigation. Regardless of the use case, I don't
>>> think we can break the fundamental assumptions made for qdiscs or the
>>> rest of the transmit path. If XDP must transmit on a queue shared with
>>> the stack we need to abide by the stack's rules for transmitting on
>>> the queue-- which would mean alloc skbuff and go through qdisc (which
>>
>> If we require XDP_TX to go up to qdisc layer its best not to implement
>> it at all and just handle it in normal ingress path. That said I think
>> users have to expect that XDP will interfere with qdisc schemes. Even
>> with its own tx queue its going to interfere at the hardware level with
>> bandwidth as the hardware round robins through the queues or uses
>> whatever hardware strategy it is configured to use. Additionally it
>> will bypass things like BQL, etc.
>>
> Right, but not all use cases involve XDP_TX (like DOS mitigation as I
> pointed out). Since you've already done 95% of the work, can you take
> a look at creating the skbuff and injecting into the stack for XDP_TX
> so we can evaluate the performance and impact of that :-)
> 
> With separate TX queues it's explicit which queues are managed by the
> stack. This is no different than what kernel bypass gives use, we are
> relying on HW to do something reasonable in scheduling MQ.
> 

How about instead of dropping packets on xdp errors we make the
behavior to send the packet to the stack by default. Then the stack can
decide what to do with it. This is easier from the drivers perspective
and avoids creating a qdisc inject path for XDP. We could set the mark
field if the stack wants to handle XDP exceptions somehow differently.

If we really want XDP to have an inject path I think we should add
another action XDP_QDISC_INJECT. And add some way for XDP to run
programs on exceptions. Perhaps via an exception map.

In this flow when an exception occurs in some path the exception map
is consulted and the exception handler is run. I think its better to
be very explicit when falling back to the stack vs doing it
transparently.

Notice even in the dedicated queue case errors may occur when
descriptors are exhausted and other transient errors occur.

>>> really shouldn't be difficult to implement). Emulating various
>>> functions of the stack in the XDP TX path, like this patch seems to be
>>> doing for XMIT_MORE, potentially gets us into a wack-a-mole situation
>>> trying to keep things coherent.
>>
>> I think bundling tx xmits is fair game as an internal optimization and
>> doesn't need to be exposed at the XDP layer. Drivers already do this
>> type of optimizations for allocating buffers. It likely doesn't matter
>> much at the e1k level but doing a tail update on every pkt with the
>> 40gbps drivers likely will be noticeable is my gut feeling.
>>
> How is this different than what XMIT_MORE gives us?
> 

Its not really. Except there is no call signaling. The code path just
bundles up as many packets as it can and throws them onto the xmit
routine.

> Tom
> 
>>
>>>
>>>> Existing stack with skb is perfectly fine as it is.
>>>> No need to do recycling, batching or any other complex things.
>>>> xdp for e1k cannot be used as an example for other drivers either,
>>>> since there is only one tx ring and any high performance adapter
>>>> has more which makes the driver support quite different.
>>>>
>>

^ permalink raw reply

* Re: [net-next PATCH v2 2/2] e1000: bundle xdp xmit routines
From: Alexei Starovoitov @ 2016-09-12  4:12 UTC (permalink / raw)
  To: John Fastabend
  Cc: Tom Herbert, Brenden Blanco, Jeff Kirsher, Jesper Dangaard Brouer,
	David S. Miller, Cong Wang, intel-wired-lan, William Tu,
	Linux Kernel Network Developers
In-Reply-To: <57D61DD0.40504@gmail.com>

On Sun, Sep 11, 2016 at 08:15:28PM -0700, John Fastabend wrote:
> >>>>>>>>
> >>>>>>> But what is the action for XDP_TX if the queue is stopped? There is no
> >>>>>>> qdisc to back pressure in the XDP path. Would we just start dropping
> >>>>>>> packets then?
> >>>>>>
> >>>>>> Yep that is what the patch does if there is any sort of error packets
> >>>>>> get dropped on the floor. I don't think there is anything else that
> >>>>>> can be done.
> >>>>>>
> >>>>> That probably means that the stack will always win out under load.
> >>>>> Trying to used the same queue where half of the packets are well
> >>>>> managed by a qdisc and half aren't is going to leave someone unhappy.
> >>>>> Maybe in the this case where we have to share the qdisc we can
> >>>>> allocate the skb on on returning XDP_TX and send through the normal
> >>>>> qdisc for the device.
> >>>>
> >>>> I wouldn't go to such extremes for e1k.
> >>>> The only reason to have xdp in e1k is to use it for testing
> >>>> of xdp programs. Nothing else. e1k is, best case, 1Gbps adapter.
> >>>
> >>> I imagine someone may want this for the non-forwarding use cases like
> >>> early drop for DOS mitigation. Regardless of the use case, I don't
> >>> think we can break the fundamental assumptions made for qdiscs or the
> >>> rest of the transmit path. If XDP must transmit on a queue shared with
> >>> the stack we need to abide by the stack's rules for transmitting on
> >>> the queue-- which would mean alloc skbuff and go through qdisc (which
> >>
> >> If we require XDP_TX to go up to qdisc layer its best not to implement
> >> it at all and just handle it in normal ingress path. That said I think
> >> users have to expect that XDP will interfere with qdisc schemes. Even
> >> with its own tx queue its going to interfere at the hardware level with
> >> bandwidth as the hardware round robins through the queues or uses
> >> whatever hardware strategy it is configured to use. Additionally it
> >> will bypass things like BQL, etc.
> >>
> > Right, but not all use cases involve XDP_TX (like DOS mitigation as I
> > pointed out). Since you've already done 95% of the work, can you take
> > a look at creating the skbuff and injecting into the stack for XDP_TX
> > so we can evaluate the performance and impact of that :-)
> > 
> > With separate TX queues it's explicit which queues are managed by the
> > stack. This is no different than what kernel bypass gives use, we are
> > relying on HW to do something reasonable in scheduling MQ.
> > 
> 
> How about instead of dropping packets on xdp errors we make the
> behavior to send the packet to the stack by default. Then the stack can
> decide what to do with it. This is easier from the drivers perspective
> and avoids creating a qdisc inject path for XDP. We could set the mark
> field if the stack wants to handle XDP exceptions somehow differently.
> 
> If we really want XDP to have an inject path I think we should add
> another action XDP_QDISC_INJECT. And add some way for XDP to run
> programs on exceptions. Perhaps via an exception map.

Nack for any new features just for e1k.
I don't like where this discussion is going.
I've been hacking xdp support for e1k only to be able to debug
xdp programs in kvm instead of messing with physical hosts where
every bpf program mistake kills ssh connection.
Please stop this overdesign. I'd rather not have xdp for e1k
instead of going into this crazy new action codes and random
punt to stack. If there is a conflict between stack and xdp, just
drop the packet. e1k is _not_ an example for any other drivers.
When high performance NIC will have such tx ring sharing issues
only then we'd need to come with a solution. Currently that's not
the case, so there is no need to come up with anything but
the simplest approach.

^ permalink raw reply

* [PATCH v4 00/16] Add Paravirtual RDMA Driver
From: Adit Ranadive @ 2016-09-12  4:49 UTC (permalink / raw)
  To: dledford-H+wXaHxf7aLQT0dZR+AlfA,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	pv-drivers-pghWNbHTmq7QT0dZR+AlfA
  Cc: Adit Ranadive, netdev-u79uwXL29TY76Z2rM5mHXA,
	linux-pci-u79uwXL29TY76Z2rM5mHXA, jhansen-pghWNbHTmq7QT0dZR+AlfA,
	asarwade-pghWNbHTmq7QT0dZR+AlfA,
	georgezhang-pghWNbHTmq7QT0dZR+AlfA,
	bryantan-pghWNbHTmq7QT0dZR+AlfA

Hi Doug, others,

This patch series adds a driver for a paravirtual RDMA device. The device
is developed for VMware's Virtual Machines and allows existing RDMA
applications to continue to use existing Verbs API when deployed in VMs on
ESXi. We recently did a presentation in the OFA Workshop [1] regarding this
device.

Description and RDMA Support
============================
The virtual device is exposed as a dual function PCIe device. One part is
a virtual network device (VMXNet3) which provides networking properties
like MAC, IP addresses to the RDMA part of the device. The networking
properties are used to register GIDs required by RDMA applications to
communicate.

These patches add support and the all required infrastructure for letting
applications use such a device. We support the mandatory Verbs API as well
as the base memory management extensions (Local Inv, Send with Inv and Fast
Register Work Requests). We currently support both Reliable Connected and
Unreliable Datagram QPs but do not support Shared Receive Queues (SRQs).
Also, we support the following types of Work Requests:
 o Send/Receive (with or without Immediate Data)
 o RDMA Write (with or without Immediate Data)
 o RDMA Read
 o Local Invalidate
 o Send with Invalidate
 o Fast Register Work Requests

This version only adds support for version 1 of RoCE. We will add RoCEv2
support in a future patch. We do support registration of both MAC-based and
IP-based GIDs. I have also created a git tree for our user-level driver [2].

Testing
=======
We have tested this internally for various types of Guest OS - Red Hat,
Centos, Ubuntu 12.04/14.04/16.04, Oracle Enterprise Linux, SLES 12
using backported versions of this driver. The tests included several runs
of the performance tests (included with OFED), Intel MPI PingPong benchmark
on OpenMPI, krping for FRWRs. Mellanox has been kind enough to test the
backported version of the driver internally on their hardware using a
VMware provided ESX build. I have also applied and tested this with Doug's
k.o/for-4.9 branch (commit 64278fe). Note, that this patch series should be
applied all together. I split out the commits so that it may be easier to
review.

PVRDMA Resources
================
[1] OFA Workshop Presentation - https://goo.gl/pHOXJ8
[2] Libpvrdma User-level library - 
http://git.openfabrics.org/?p=~aditr/libpvrdma.git;a=summary
---
Changes v3->v4:
 - Rebased on for-4.9 branch - commit 64278fe89b729
   ("Merge branch 'hns-roce' into k.o/for-4.9")
 - PATCH [01/16]
     - New in v4 - Moved vmxnet3 id to pci_ids.h
 - PATCH [02,03/16]
     - pvrdma_sge was moved into pvrdma_uapi.h
 - PATCH [04/16]
     - Removed explicit enum values.
 - PATCH [05/16]
     - Renamed priviledged -> privileged.
     - Added error numbers for command errors.
     - Removed unnecessary goto in modify_device.
     - Moved pd allocation to after command execution.
     - Removed an incorrect atomic_dec.
 - PATCH [06/16]
     - Renamed priviledged -> privileged.
     - Renamed pvrdma_flush_cqe to _pvrdma_flush_cqe since we hold a lock
     to call it.
     - Added wrapper functions for writing to UARs for CQ/QP.
     - The conversion functions are updated as func_name(dst, src) format.
     - Renamed max_gs to max_sg.
     - Added work struct for net device events.
 - PATCH [07/16]
     - Updated conversion functions to func_name(dst, src) format.
     - Removed unneeded local variables.
 - PATCH [08/16]
     - Removed the min check and added a BUILD_BUG_ON check for size.
 - PATCH [09/16]
     - Added a pvrdma_destroy_cq in the error path.
     - Renamed pvrdma_flush_cqe to _pvrdma_flush_cqe since we need a lock to
     be held while calling this.
     - Updated to use wrapper for UAR write for CQ.
     - Ensure that poll_cq does not return error values.
 - PATCH [10/16]
     - Removed an unnecessary comment.
 - PATCH [11/16]
     - Changed access flag check for DMA MR to using bit operation.
     - Removed some local variables.
 - PATCH [12/16]
     - Removed an unnecessary switch case.
     - Unified the returns in pvrdma_create_qp to use one exit point.
     - Renamed pvrdma_flush_cqe to _pvrdma_flush_cqe since we need a lock to
     be held when calling this.
     - Updated to use wrapper for UAR write for QP.
     - Updated conversion function to func_name(dst, src) format.
     - Renamed max_gs to max_sg.
     - Renamed cap variable to req_cap in pvrdma_set_sq/rq_size.
     - Changed dev_warn to dev_warn_ratelimited in pvrdma_post_send/recv.
     - Added nesting locking for flushing CQs when destroying/resetting a QP.
     - Added missing ret value.
 - PATCH [13/16]
     - Fixed some checkpatch warnings.
     - Added support for new get_dev_fw_str API.
     - Added event workqueue for netdevice events.
     - Restructured the pvrdma_pci_remove function a little bit.
 - PATCH [14/16]
     - Enforced dependency on VMXNet3 module.

Changes v2->v3:
 - I reordered the patches so that the definitions of enums, structures is
 before their use (suggested by Yuval Shaia) so its easier to review.
 - Removed an unneccesary bool in pvrdma_cmd_post (suggested by Yuval Shaia).
 - Made the use of comma at end of enums consistent across files (suggested
 by Leon Romanovsky).

Changes v1->v2:
 - Patch [07/15] - Addressed Yuval Shaia's comments and 32-bit build errors.

---
Adit Ranadive (16):
  vmxnet3: Move PCI Id to pci_ids.h
  IB/pvrdma: Add user-level shared functions
  IB/pvrdma: Add virtual device RDMA structures
  IB/pvrdma: Add the paravirtual RDMA device specification
  IB/pvrdma: Add functions for Verbs support
  IB/pvrdma: Add paravirtual rdma device
  IB/pvrdma: Add helper functions
  IB/pvrdma: Add device command support
  IB/pvrdma: Add support for Completion Queues
  IB/pvrdma: Add UAR support
  IB/pvrdma: Add support for memory regions
  IB/pvrdma: Add Queue Pair support
  IB/pvrdma: Add the main driver module for PVRDMA
  IB/pvrdma: Add Kconfig and Makefile
  IB: Add PVRDMA driver
  MAINTAINERS: Update for PVRDMA driver

 MAINTAINERS                                    |    7 +
 drivers/infiniband/Kconfig                     |    1 +
 drivers/infiniband/hw/Makefile                 |    1 +
 drivers/infiniband/hw/pvrdma/Kconfig           |    7 +
 drivers/infiniband/hw/pvrdma/Makefile          |    3 +
 drivers/infiniband/hw/pvrdma/pvrdma.h          |  473 +++++++++
 drivers/infiniband/hw/pvrdma/pvrdma_cmd.c      |  108 +++
 drivers/infiniband/hw/pvrdma/pvrdma_cq.c       |  428 +++++++++
 drivers/infiniband/hw/pvrdma/pvrdma_defs.h     |  302 ++++++
 drivers/infiniband/hw/pvrdma/pvrdma_dev_api.h  |  342 +++++++
 drivers/infiniband/hw/pvrdma/pvrdma_doorbell.c |  127 +++
 drivers/infiniband/hw/pvrdma/pvrdma_ib_verbs.h |  444 +++++++++
 drivers/infiniband/hw/pvrdma/pvrdma_main.c     | 1222 ++++++++++++++++++++++++
 drivers/infiniband/hw/pvrdma/pvrdma_misc.c     |  303 ++++++
 drivers/infiniband/hw/pvrdma/pvrdma_mr.c       |  332 +++++++
 drivers/infiniband/hw/pvrdma/pvrdma_qp.c       |  980 +++++++++++++++++++
 drivers/infiniband/hw/pvrdma/pvrdma_uapi.h     |  255 +++++
 drivers/infiniband/hw/pvrdma/pvrdma_user.h     |   99 ++
 drivers/infiniband/hw/pvrdma/pvrdma_verbs.c    |  611 ++++++++++++
 drivers/infiniband/hw/pvrdma/pvrdma_verbs.h    |  108 +++
 drivers/net/vmxnet3/vmxnet3_int.h              |    3 +-
 include/linux/pci_ids.h                        |    1 +
 22 files changed, 6155 insertions(+), 2 deletions(-)
 create mode 100644 drivers/infiniband/hw/pvrdma/Kconfig
 create mode 100644 drivers/infiniband/hw/pvrdma/Makefile
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma.h
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma_cmd.c
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma_cq.c
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma_defs.h
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma_dev_api.h
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma_doorbell.c
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma_ib_verbs.h
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma_main.c
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma_misc.c
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma_mr.c
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma_qp.c
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma_uapi.h
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma_user.h
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma_verbs.c
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma_verbs.h

-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" 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

* [PATCH v4 01/16] vmxnet3: Move PCI Id to pci_ids.h
From: Adit Ranadive @ 2016-09-12  4:49 UTC (permalink / raw)
  To: dledford, linux-rdma, pv-drivers
  Cc: Adit Ranadive, netdev, linux-pci, jhansen, asarwade, georgezhang,
	bryantan
In-Reply-To: <1473655766-31628-1-git-send-email-aditr@vmware.com>

The VMXNet3 PCI Id will be shared with our paravirtual RDMA driver.
Moved it to the shared location in pci_ids.h.

Suggested-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Adit Ranadive <aditr@vmware.com>
---
---
 drivers/net/vmxnet3/vmxnet3_int.h | 3 +--
 include/linux/pci_ids.h           | 1 +
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/vmxnet3/vmxnet3_int.h b/drivers/net/vmxnet3/vmxnet3_int.h
index 74fc030..2bd6bf8 100644
--- a/drivers/net/vmxnet3/vmxnet3_int.h
+++ b/drivers/net/vmxnet3/vmxnet3_int.h
@@ -119,9 +119,8 @@ enum {
 };
 
 /*
- * PCI vendor and device IDs.
+ * Maximum devices supported.
  */
-#define PCI_DEVICE_ID_VMWARE_VMXNET3    0x07B0
 #define MAX_ETHERNET_CARDS		10
 #define MAX_PCI_PASSTHRU_DEVICE		6
 
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index c58752f..98bb455 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -2251,6 +2251,7 @@
 #define PCI_DEVICE_ID_RASTEL_2PORT	0x2000
 
 #define PCI_VENDOR_ID_VMWARE		0x15ad
+#define PCI_DEVICE_ID_VMWARE_VMXNET3	0x07b0
 
 #define PCI_VENDOR_ID_ZOLTRIX		0x15b0
 #define PCI_DEVICE_ID_ZOLTRIX_2BD0	0x2bd0
-- 
2.7.4

^ permalink raw reply related

* [PATCH v4 02/16] IB/pvrdma: Add user-level shared functions
From: Adit Ranadive @ 2016-09-12  4:49 UTC (permalink / raw)
  To: dledford-H+wXaHxf7aLQT0dZR+AlfA,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	pv-drivers-pghWNbHTmq7QT0dZR+AlfA
  Cc: Adit Ranadive, netdev-u79uwXL29TY76Z2rM5mHXA,
	linux-pci-u79uwXL29TY76Z2rM5mHXA, jhansen-pghWNbHTmq7QT0dZR+AlfA,
	asarwade-pghWNbHTmq7QT0dZR+AlfA,
	georgezhang-pghWNbHTmq7QT0dZR+AlfA,
	bryantan-pghWNbHTmq7QT0dZR+AlfA
In-Reply-To: <1473655766-31628-1-git-send-email-aditr-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>

We share some common structures with the user-level driver. This patch
adds those structures and shared functions to traverse the QP/CQ rings.

Reviewed-by: Yuval Shaia <yuval.shaia-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
Reviewed-by: Jorgen Hansen <jhansen-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
Reviewed-by: George Zhang <georgezhang-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
Reviewed-by: Aditya Sarwade <asarwade-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
Reviewed-by: Bryan Tan <bryantan-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
Signed-off-by: Adit Ranadive <aditr-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
---
Changes v3->v4:
 - Moved pvrdma_sge into pvrdma_uapi.h
---
 drivers/infiniband/hw/pvrdma/pvrdma_uapi.h | 255 +++++++++++++++++++++++++++++
 drivers/infiniband/hw/pvrdma/pvrdma_user.h |  99 +++++++++++
 2 files changed, 354 insertions(+)
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma_uapi.h
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma_user.h

diff --git a/drivers/infiniband/hw/pvrdma/pvrdma_uapi.h b/drivers/infiniband/hw/pvrdma/pvrdma_uapi.h
new file mode 100644
index 0000000..430d8a5
--- /dev/null
+++ b/drivers/infiniband/hw/pvrdma/pvrdma_uapi.h
@@ -0,0 +1,255 @@
+/*
+ * Copyright (c) 2012-2016 VMware, Inc.  All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of EITHER the GNU General Public License
+ * version 2 as published by the Free Software Foundation or the BSD
+ * 2-Clause License. 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 version 2 for more details at
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program available in the file COPYING in the main
+ * directory of this source tree.
+ *
+ * The BSD 2-Clause License
+ *
+ *     Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *      - Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *
+ *      - Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef __PVRDMA_UAPI_H__
+#define __PVRDMA_UAPI_H__
+
+#include <linux/types.h>
+
+#define PVRDMA_VERSION 17
+
+#define PVRDMA_UAR_HANDLE_MASK	0x00FFFFFF	/* Bottom 24 bits. */
+#define PVRDMA_UAR_QP_OFFSET	0		/* Offset of QP doorbell. */
+#define PVRDMA_UAR_QP_SEND	BIT(30)		/* Send bit. */
+#define PVRDMA_UAR_QP_RECV	BIT(31)		/* Recv bit. */
+#define PVRDMA_UAR_CQ_OFFSET	4		/* Offset of CQ doorbell. */
+#define PVRDMA_UAR_CQ_ARM_SOL	BIT(29)		/* Arm solicited bit. */
+#define PVRDMA_UAR_CQ_ARM	BIT(30)		/* Arm bit. */
+#define PVRDMA_UAR_CQ_POLL	BIT(31)		/* Poll bit. */
+#define PVRDMA_INVALID_IDX	-1		/* Invalid index. */
+
+/* PVRDMA atomic compare and swap */
+struct pvrdma_exp_cmp_swap {
+	__u64 swap_val;
+	__u64 compare_val;
+	__u64 swap_mask;
+	__u64 compare_mask;
+};
+
+/* PVRDMA atomic fetch and add */
+struct pvrdma_exp_fetch_add {
+	__u64 add_val;
+	__u64 field_boundary;
+};
+
+/* PVRDMA address vector. */
+struct pvrdma_av {
+	__u32 port_pd;
+	__u32 sl_tclass_flowlabel;
+	__u8 dgid[16];
+	__u8 src_path_bits;
+	__u8 gid_index;
+	__u8 stat_rate;
+	__u8 hop_limit;
+	__u8 dmac[6];
+	__u8 reserved[6];
+};
+
+/* PVRDMA scatter/gather entry */
+struct pvrdma_sge {
+	__u64   addr;
+	__u32   length;
+	__u32   lkey;
+};
+
+/* PVRDMA receive queue work request */
+struct pvrdma_rq_wqe_hdr {
+	__u64 wr_id;		/* wr id */
+	__u32 num_sge;		/* size of s/g array */
+	__u32 total_len;	/* reserved */
+};
+/* Use pvrdma_sge (ib_sge) for receive queue s/g array elements. */
+
+/* PVRDMA send queue work request */
+struct pvrdma_sq_wqe_hdr {
+	__u64 wr_id;		/* wr id */
+	__u32 num_sge;		/* size of s/g array */
+	__u32 total_len;	/* reserved */
+	__u32 opcode;		/* operation type */
+	__u32 send_flags;	/* wr flags */
+	union {
+		__u32 imm_data;
+		__u32 invalidate_rkey;
+	} ex;
+	__u32 reserved;
+	union {
+		struct {
+			__u64 remote_addr;
+			__u32 rkey;
+			__u8 reserved[4];
+		} rdma;
+		struct {
+			__u64 remote_addr;
+			__u64 compare_add;
+			__u64 swap;
+			__u32 rkey;
+			__u32 reserved;
+		} atomic;
+		struct {
+			__u64 remote_addr;
+			__u32 log_arg_sz;
+			__u32 rkey;
+			union {
+				struct pvrdma_exp_cmp_swap  cmp_swap;
+				struct pvrdma_exp_fetch_add fetch_add;
+			} wr_data;
+		} masked_atomics;
+		struct {
+			__u64 iova_start;
+			__u64 pl_pdir_dma;
+			__u32 page_shift;
+			__u32 page_list_len;
+			__u32 length;
+			__u32 access_flags;
+			__u32 rkey;
+		} fast_reg;
+		struct {
+			__u32 remote_qpn;
+			__u32 remote_qkey;
+			struct pvrdma_av av;
+		} ud;
+	} wr;
+};
+/* Use pvrdma_sge (ib_sge) for send queue s/g array elements. */
+
+/* Completion queue element. */
+struct pvrdma_cqe {
+	__u64 wr_id;
+	__u64 qp;
+	__u32 opcode;
+	__u32 status;
+	__u32 byte_len;
+	__u32 imm_data;
+	__u32 src_qp;
+	__u32 wc_flags;
+	__u32 vendor_err;
+	__u16 pkey_index;
+	__u16 slid;
+	__u8 sl;
+	__u8 dlid_path_bits;
+	__u8 port_num;
+	__u8 smac[6];
+	__u8 reserved2[7]; /* Pad to next power of 2 (64). */
+};
+
+struct pvrdma_ring {
+	atomic_t prod_tail;	/* Producer tail. */
+	atomic_t cons_head;	/* Consumer head. */
+};
+
+struct pvrdma_ring_state {
+	struct pvrdma_ring tx;	/* Tx ring. */
+	struct pvrdma_ring rx;	/* Rx ring. */
+};
+
+static inline int pvrdma_idx_valid(__u32 idx, __u32 max_elems)
+{
+	/* Generates fewer instructions than a less-than. */
+	return (idx & ~((max_elems << 1) - 1)) == 0;
+}
+
+static inline __s32 pvrdma_idx(atomic_t *var, __u32 max_elems)
+{
+	const unsigned int idx = atomic_read(var);
+
+	if (pvrdma_idx_valid(idx, max_elems))
+		return idx & (max_elems - 1);
+	return PVRDMA_INVALID_IDX;
+}
+
+static inline void pvrdma_idx_ring_inc(atomic_t *var, __u32 max_elems)
+{
+	__u32 idx = atomic_read(var) + 1;	/* Increment. */
+
+	idx &= (max_elems << 1) - 1;		/* Modulo size, flip gen. */
+	atomic_set(var, idx);
+}
+
+static inline __s32 pvrdma_idx_ring_has_space(const struct pvrdma_ring *r,
+					      __u32 max_elems, __u32 *out_tail)
+{
+	const __u32 tail = atomic_read(&r->prod_tail);
+	const __u32 head = atomic_read(&r->cons_head);
+
+	if (pvrdma_idx_valid(tail, max_elems) &&
+	    pvrdma_idx_valid(head, max_elems)) {
+		*out_tail = tail & (max_elems - 1);
+		return tail != (head ^ max_elems);
+	}
+	return PVRDMA_INVALID_IDX;
+}
+
+static inline __s32 pvrdma_idx_ring_has_data(const struct pvrdma_ring *r,
+					     __u32 max_elems, __u32 *out_head)
+{
+	const __u32 tail = atomic_read(&r->prod_tail);
+	const __u32 head = atomic_read(&r->cons_head);
+
+	if (pvrdma_idx_valid(tail, max_elems) &&
+	    pvrdma_idx_valid(head, max_elems)) {
+		*out_head = head & (max_elems - 1);
+		return tail != head;
+	}
+	return PVRDMA_INVALID_IDX;
+}
+
+static inline bool pvrdma_idx_ring_is_valid_idx(const struct pvrdma_ring *r,
+						__u32 max_elems, __u32 *idx)
+{
+	const __u32 tail = atomic_read(&r->prod_tail);
+	const __u32 head = atomic_read(&r->cons_head);
+
+	if (pvrdma_idx_valid(tail, max_elems) &&
+	    pvrdma_idx_valid(head, max_elems) &&
+	    pvrdma_idx_valid(*idx, max_elems)) {
+		if (tail > head && (*idx < tail && *idx >= head))
+			return true;
+		else if (head > tail && (*idx >= head || *idx < tail))
+			return true;
+	}
+	return false;
+}
+
+#endif /* __PVRDMA_UAPI_H__ */
diff --git a/drivers/infiniband/hw/pvrdma/pvrdma_user.h b/drivers/infiniband/hw/pvrdma/pvrdma_user.h
new file mode 100644
index 0000000..35f8c1e
--- /dev/null
+++ b/drivers/infiniband/hw/pvrdma/pvrdma_user.h
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2012-2016 VMware, Inc.  All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of EITHER the GNU General Public License
+ * version 2 as published by the Free Software Foundation or the BSD
+ * 2-Clause License. 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 version 2 for more details at
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program available in the file COPYING in the main
+ * directory of this source tree.
+ *
+ * The BSD 2-Clause License
+ *
+ *     Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *      - Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *
+ *      - Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef __PVRDMA_USER_H__
+#define __PVRDMA_USER_H__
+
+#include <linux/types.h>
+
+#define PVRDMA_UVERBS_ABI_VERSION	3
+#define PVRDMA_BOARD_ID			1
+#define PVRDMA_REV_ID			1
+
+struct pvrdma_alloc_ucontext_resp {
+	u32 qp_tab_size;
+	u32 reserved;
+};
+
+struct pvrdma_alloc_pd_resp {
+	u32 pdn;
+	u32 reserved;
+};
+
+struct pvrdma_create_cq {
+	u64 buf_addr;
+	u32 buf_size;
+	u32 reserved;
+};
+
+struct pvrdma_create_cq_resp {
+	u32 cqn;
+	u32 reserved;
+};
+
+struct pvrdma_resize_cq {
+	u64 buf_addr;
+	u32 buf_size;
+	u32 reserved;
+};
+
+struct pvrdma_create_srq {
+	u64 buf_addr;
+};
+
+struct pvrdma_create_srq_resp {
+	u32 srqn;
+	u32 reserved;
+};
+
+struct pvrdma_create_qp {
+	u64 rbuf_addr;
+	u64 sbuf_addr;
+	u32 rbuf_size;
+	u32 sbuf_size;
+	u64 qp_addr;
+};
+
+#endif /* __PVRDMA_USER_H__ */
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" 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 related

* [PATCH v4 03/16] IB/pvrdma: Add virtual device RDMA structures
From: Adit Ranadive @ 2016-09-12  4:49 UTC (permalink / raw)
  To: dledford, linux-rdma, pv-drivers
  Cc: Adit Ranadive, netdev, linux-pci, jhansen, asarwade, georgezhang,
	bryantan
In-Reply-To: <1473655766-31628-1-git-send-email-aditr@vmware.com>

This patch adds the various Verbs structures that we support in the
virtual RDMA device. We have re-mapped the ones from the RDMA core stack
to make sure we can maintain compatibility with our backend.

Reviewed-by: Jorgen Hansen <jhansen@vmware.com>
Reviewed-by: George Zhang <georgezhang@vmware.com>
Reviewed-by: Aditya Sarwade <asarwade@vmware.com>
Reviewed-by: Bryan Tan <bryantan@vmware.com>
Signed-off-by: Adit Ranadive <aditr@vmware.com>
---
Changes v3->v4:
 - Moved the pvrdma_sge struct to pvrdma_uapi.h
---
 drivers/infiniband/hw/pvrdma/pvrdma_ib_verbs.h | 444 +++++++++++++++++++++++++
 1 file changed, 444 insertions(+)
 create mode 100644 drivers/infiniband/hw/pvrdma/pvrdma_ib_verbs.h

diff --git a/drivers/infiniband/hw/pvrdma/pvrdma_ib_verbs.h b/drivers/infiniband/hw/pvrdma/pvrdma_ib_verbs.h
new file mode 100644
index 0000000..105c6ab
--- /dev/null
+++ b/drivers/infiniband/hw/pvrdma/pvrdma_ib_verbs.h
@@ -0,0 +1,444 @@
+/*
+ * [PLEASE NOTE:  VMWARE, INC. ELECTS TO USE AND DISTRIBUTE THIS COMPONENT
+ * UNDER THE TERMS OF THE OpenIB.org BSD license.  THE ORIGINAL LICENSE TERMS
+ * ARE REPRODUCED BELOW ONLY AS A REFERENCE.]
+ *
+ * Copyright (c) 2004 Mellanox Technologies Ltd.  All rights reserved.
+ * Copyright (c) 2004 Infinicon Corporation.  All rights reserved.
+ * Copyright (c) 2004 Intel Corporation.  All rights reserved.
+ * Copyright (c) 2004 Topspin Corporation.  All rights reserved.
+ * Copyright (c) 2004 Voltaire Corporation.  All rights reserved.
+ * Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 2005, 2006, 2007 Cisco Systems.  All rights reserved.
+ * Copyright (c) 2015-2016 VMware, Inc.  All rights reserved.
+ *
+ * This software is available to you under a choice of one of two
+ * licenses.  You may choose to be licensed under the terms of the GNU
+ * General Public License (GPL) Version 2, available from the file
+ * COPYING in the main directory of this source tree, or the
+ * OpenIB.org BSD license below:
+ *
+ *     Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *      - Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *
+ *      - Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef __PVRDMA_IB_VERBS_H__
+#define __PVRDMA_IB_VERBS_H__
+
+#include <linux/types.h>
+
+union pvrdma_gid {
+	__u8	raw[16];
+	struct {
+		__be64	subnet_prefix;
+		__be64	interface_id;
+	} global;
+};
+
+enum pvrdma_link_layer {
+	PVRDMA_LINK_LAYER_UNSPECIFIED,
+	PVRDMA_LINK_LAYER_INFINIBAND,
+	PVRDMA_LINK_LAYER_ETHERNET,
+};
+
+enum pvrdma_mtu {
+	PVRDMA_MTU_256  = 1,
+	PVRDMA_MTU_512  = 2,
+	PVRDMA_MTU_1024 = 3,
+	PVRDMA_MTU_2048 = 4,
+	PVRDMA_MTU_4096 = 5,
+};
+
+static inline int pvrdma_mtu_enum_to_int(enum pvrdma_mtu mtu)
+{
+	switch (mtu) {
+	case PVRDMA_MTU_256:	return  256;
+	case PVRDMA_MTU_512:	return  512;
+	case PVRDMA_MTU_1024:	return 1024;
+	case PVRDMA_MTU_2048:	return 2048;
+	case PVRDMA_MTU_4096:	return 4096;
+	default:		return   -1;
+	}
+}
+
+static inline enum pvrdma_mtu pvrdma_mtu_int_to_enum(int mtu)
+{
+	switch (mtu) {
+	case 256:	return PVRDMA_MTU_256;
+	case 512:	return PVRDMA_MTU_512;
+	case 1024:	return PVRDMA_MTU_1024;
+	case 2048:	return PVRDMA_MTU_2048;
+	case 4096:
+	default:	return PVRDMA_MTU_4096;
+	}
+}
+
+enum pvrdma_port_state {
+	PVRDMA_PORT_NOP			= 0,
+	PVRDMA_PORT_DOWN		= 1,
+	PVRDMA_PORT_INIT		= 2,
+	PVRDMA_PORT_ARMED		= 3,
+	PVRDMA_PORT_ACTIVE		= 4,
+	PVRDMA_PORT_ACTIVE_DEFER	= 5,
+};
+
+enum pvrdma_port_cap_flags {
+	PVRDMA_PORT_SM				= 1 <<  1,
+	PVRDMA_PORT_NOTICE_SUP			= 1 <<  2,
+	PVRDMA_PORT_TRAP_SUP			= 1 <<  3,
+	PVRDMA_PORT_OPT_IPD_SUP			= 1 <<  4,
+	PVRDMA_PORT_AUTO_MIGR_SUP		= 1 <<  5,
+	PVRDMA_PORT_SL_MAP_SUP			= 1 <<  6,
+	PVRDMA_PORT_MKEY_NVRAM			= 1 <<  7,
+	PVRDMA_PORT_PKEY_NVRAM			= 1 <<  8,
+	PVRDMA_PORT_LED_INFO_SUP		= 1 <<  9,
+	PVRDMA_PORT_SM_DISABLED			= 1 << 10,
+	PVRDMA_PORT_SYS_IMAGE_GUID_SUP		= 1 << 11,
+	PVRDMA_PORT_PKEY_SW_EXT_PORT_TRAP_SUP	= 1 << 12,
+	PVRDMA_PORT_EXTENDED_SPEEDS_SUP		= 1 << 14,
+	PVRDMA_PORT_CM_SUP			= 1 << 16,
+	PVRDMA_PORT_SNMP_TUNNEL_SUP		= 1 << 17,
+	PVRDMA_PORT_REINIT_SUP			= 1 << 18,
+	PVRDMA_PORT_DEVICE_MGMT_SUP		= 1 << 19,
+	PVRDMA_PORT_VENDOR_CLASS_SUP		= 1 << 20,
+	PVRDMA_PORT_DR_NOTICE_SUP		= 1 << 21,
+	PVRDMA_PORT_CAP_MASK_NOTICE_SUP		= 1 << 22,
+	PVRDMA_PORT_BOOT_MGMT_SUP		= 1 << 23,
+	PVRDMA_PORT_LINK_LATENCY_SUP		= 1 << 24,
+	PVRDMA_PORT_CLIENT_REG_SUP		= 1 << 25,
+	PVRDMA_PORT_IP_BASED_GIDS		= 1 << 26,
+	PVRDMA_PORT_CAP_FLAGS_MAX		= PVRDMA_PORT_IP_BASED_GIDS,
+};
+
+enum pvrdma_port_width {
+	PVRDMA_WIDTH_1X		= 1,
+	PVRDMA_WIDTH_4X		= 2,
+	PVRDMA_WIDTH_8X		= 4,
+	PVRDMA_WIDTH_12X	= 8,
+};
+
+static inline int pvrdma_width_enum_to_int(enum pvrdma_port_width width)
+{
+	switch (width) {
+	case PVRDMA_WIDTH_1X:	return  1;
+	case PVRDMA_WIDTH_4X:	return  4;
+	case PVRDMA_WIDTH_8X:	return  8;
+	case PVRDMA_WIDTH_12X:	return 12;
+	default:		return -1;
+	}
+}
+
+enum pvrdma_port_speed {
+	PVRDMA_SPEED_SDR	= 1,
+	PVRDMA_SPEED_DDR	= 2,
+	PVRDMA_SPEED_QDR	= 4,
+	PVRDMA_SPEED_FDR10	= 8,
+	PVRDMA_SPEED_FDR	= 16,
+	PVRDMA_SPEED_EDR	= 32,
+};
+
+struct pvrdma_port_attr {
+	enum pvrdma_port_state	state;
+	enum pvrdma_mtu		max_mtu;
+	enum pvrdma_mtu		active_mtu;
+	__u32			gid_tbl_len;
+	__u32			port_cap_flags;
+	__u32			max_msg_sz;
+	__u32			bad_pkey_cntr;
+	__u32			qkey_viol_cntr;
+	__u16			pkey_tbl_len;
+	__u16			lid;
+	__u16			sm_lid;
+	__u8			lmc;
+	__u8			max_vl_num;
+	__u8			sm_sl;
+	__u8			subnet_timeout;
+	__u8			init_type_reply;
+	__u8			active_width;
+	__u8			active_speed;
+	__u8			phys_state;
+	__u8			reserved[2];
+};
+
+struct pvrdma_global_route {
+	union pvrdma_gid	dgid;
+	__u32			flow_label;
+	__u8			sgid_index;
+	__u8			hop_limit;
+	__u8			traffic_class;
+	__u8			reserved;
+};
+
+struct pvrdma_grh {
+	__be32			version_tclass_flow;
+	__be16			paylen;
+	__u8			next_hdr;
+	__u8			hop_limit;
+	union pvrdma_gid	sgid;
+	union pvrdma_gid	dgid;
+};
+
+enum pvrdma_ah_flags {
+	PVRDMA_AH_GRH = 1,
+};
+
+enum pvrdma_rate {
+	PVRDMA_RATE_PORT_CURRENT	= 0,
+	PVRDMA_RATE_2_5_GBPS		= 2,
+	PVRDMA_RATE_5_GBPS		= 5,
+	PVRDMA_RATE_10_GBPS		= 3,
+	PVRDMA_RATE_20_GBPS		= 6,
+	PVRDMA_RATE_30_GBPS		= 4,
+	PVRDMA_RATE_40_GBPS		= 7,
+	PVRDMA_RATE_60_GBPS		= 8,
+	PVRDMA_RATE_80_GBPS		= 9,
+	PVRDMA_RATE_120_GBPS		= 10,
+	PVRDMA_RATE_14_GBPS		= 11,
+	PVRDMA_RATE_56_GBPS		= 12,
+	PVRDMA_RATE_112_GBPS		= 13,
+	PVRDMA_RATE_168_GBPS		= 14,
+	PVRDMA_RATE_25_GBPS		= 15,
+	PVRDMA_RATE_100_GBPS		= 16,
+	PVRDMA_RATE_200_GBPS		= 17,
+	PVRDMA_RATE_300_GBPS		= 18,
+};
+
+struct pvrdma_ah_attr {
+	struct pvrdma_global_route	grh;
+	__u16				dlid;
+	__u16				vlan_id;
+	__u8				sl;
+	__u8				src_path_bits;
+	__u8				static_rate;
+	__u8				ah_flags;
+	__u8				port_num;
+	__u8				dmac[6];
+	__u8				reserved;
+};
+
+enum pvrdma_wc_status {
+	PVRDMA_WC_SUCCESS,
+	PVRDMA_WC_LOC_LEN_ERR,
+	PVRDMA_WC_LOC_QP_OP_ERR,
+	PVRDMA_WC_LOC_EEC_OP_ERR,
+	PVRDMA_WC_LOC_PROT_ERR,
+	PVRDMA_WC_WR_FLUSH_ERR,
+	PVRDMA_WC_MW_BIND_ERR,
+	PVRDMA_WC_BAD_RESP_ERR,
+	PVRDMA_WC_LOC_ACCESS_ERR,
+	PVRDMA_WC_REM_INV_REQ_ERR,
+	PVRDMA_WC_REM_ACCESS_ERR,
+	PVRDMA_WC_REM_OP_ERR,
+	PVRDMA_WC_RETRY_EXC_ERR,
+	PVRDMA_WC_RNR_RETRY_EXC_ERR,
+	PVRDMA_WC_LOC_RDD_VIOL_ERR,
+	PVRDMA_WC_REM_INV_RD_REQ_ERR,
+	PVRDMA_WC_REM_ABORT_ERR,
+	PVRDMA_WC_INV_EECN_ERR,
+	PVRDMA_WC_INV_EEC_STATE_ERR,
+	PVRDMA_WC_FATAL_ERR,
+	PVRDMA_WC_RESP_TIMEOUT_ERR,
+	PVRDMA_WC_GENERAL_ERR,
+};
+
+enum pvrdma_wc_opcode {
+	PVRDMA_WC_SEND,
+	PVRDMA_WC_RDMA_WRITE,
+	PVRDMA_WC_RDMA_READ,
+	PVRDMA_WC_COMP_SWAP,
+	PVRDMA_WC_FETCH_ADD,
+	PVRDMA_WC_BIND_MW,
+	PVRDMA_WC_LSO,
+	PVRDMA_WC_LOCAL_INV,
+	PVRDMA_WC_FAST_REG_MR,
+	PVRDMA_WC_MASKED_COMP_SWAP,
+	PVRDMA_WC_MASKED_FETCH_ADD,
+	PVRDMA_WC_RECV = 1 << 7,
+	PVRDMA_WC_RECV_RDMA_WITH_IMM,
+};
+
+enum pvrdma_wc_flags {
+	PVRDMA_WC_GRH			= 1 << 0,
+	PVRDMA_WC_WITH_IMM		= 1 << 1,
+	PVRDMA_WC_WITH_INVALIDATE	= 1 << 2,
+	PVRDMA_WC_IP_CSUM_OK		= 1 << 3,
+	PVRDMA_WC_WITH_SMAC		= 1 << 4,
+	PVRDMA_WC_WITH_VLAN		= 1 << 5,
+	PVRDMA_WC_FLAGS_MAX		= PVRDMA_WC_WITH_VLAN,
+};
+
+enum pvrdma_cq_notify_flags {
+	PVRDMA_CQ_SOLICITED		= 1 << 0,
+	PVRDMA_CQ_NEXT_COMP		= 1 << 1,
+	PVRDMA_CQ_SOLICITED_MASK	= PVRDMA_CQ_SOLICITED |
+					  PVRDMA_CQ_NEXT_COMP,
+	PVRDMA_CQ_REPORT_MISSED_EVENTS	= 1 << 2,
+};
+
+struct pvrdma_qp_cap {
+	__u32	max_send_wr;
+	__u32	max_recv_wr;
+	__u32	max_send_sge;
+	__u32	max_recv_sge;
+	__u32	max_inline_data;
+	__u32	reserved;
+};
+
+enum pvrdma_sig_type {
+	PVRDMA_SIGNAL_ALL_WR,
+	PVRDMA_SIGNAL_REQ_WR,
+};
+
+enum pvrdma_qp_type {
+	PVRDMA_QPT_SMI,
+	PVRDMA_QPT_GSI,
+	PVRDMA_QPT_RC,
+	PVRDMA_QPT_UC,
+	PVRDMA_QPT_UD,
+	PVRDMA_QPT_RAW_IPV6,
+	PVRDMA_QPT_RAW_ETHERTYPE,
+	PVRDMA_QPT_RAW_PACKET = 8,
+	PVRDMA_QPT_XRC_INI = 9,
+	PVRDMA_QPT_XRC_TGT,
+	PVRDMA_QPT_MAX,
+};
+
+enum pvrdma_qp_create_flags {
+	PVRDMA_QP_CREATE_IPOPVRDMA_UD_LSO		= 1 << 0,
+	PVRDMA_QP_CREATE_BLOCK_MULTICAST_LOOPBACK	= 1 << 1,
+};
+
+enum pvrdma_qp_attr_mask {
+	PVRDMA_QP_STATE			= 1 << 0,
+	PVRDMA_QP_CUR_STATE		= 1 << 1,
+	PVRDMA_QP_EN_SQD_ASYNC_NOTIFY	= 1 << 2,
+	PVRDMA_QP_ACCESS_FLAGS		= 1 << 3,
+	PVRDMA_QP_PKEY_INDEX		= 1 << 4,
+	PVRDMA_QP_PORT			= 1 << 5,
+	PVRDMA_QP_QKEY			= 1 << 6,
+	PVRDMA_QP_AV			= 1 << 7,
+	PVRDMA_QP_PATH_MTU		= 1 << 8,
+	PVRDMA_QP_TIMEOUT		= 1 << 9,
+	PVRDMA_QP_RETRY_CNT		= 1 << 10,
+	PVRDMA_QP_RNR_RETRY		= 1 << 11,
+	PVRDMA_QP_RQ_PSN		= 1 << 12,
+	PVRDMA_QP_MAX_QP_RD_ATOMIC	= 1 << 13,
+	PVRDMA_QP_ALT_PATH		= 1 << 14,
+	PVRDMA_QP_MIN_RNR_TIMER		= 1 << 15,
+	PVRDMA_QP_SQ_PSN		= 1 << 16,
+	PVRDMA_QP_MAX_DEST_RD_ATOMIC	= 1 << 17,
+	PVRDMA_QP_PATH_MIG_STATE	= 1 << 18,
+	PVRDMA_QP_CAP			= 1 << 19,
+	PVRDMA_QP_DEST_QPN		= 1 << 20,
+	PVRDMA_QP_ATTR_MASK_MAX		= PVRDMA_QP_DEST_QPN,
+};
+
+enum pvrdma_qp_state {
+	PVRDMA_QPS_RESET,
+	PVRDMA_QPS_INIT,
+	PVRDMA_QPS_RTR,
+	PVRDMA_QPS_RTS,
+	PVRDMA_QPS_SQD,
+	PVRDMA_QPS_SQE,
+	PVRDMA_QPS_ERR,
+};
+
+enum pvrdma_mig_state {
+	PVRDMA_MIG_MIGRATED,
+	PVRDMA_MIG_REARM,
+	PVRDMA_MIG_ARMED,
+};
+
+enum pvrdma_mw_type {
+	PVRDMA_MW_TYPE_1 = 1,
+	PVRDMA_MW_TYPE_2 = 2,
+};
+
+struct pvrdma_qp_attr {
+	enum pvrdma_qp_state	qp_state;
+	enum pvrdma_qp_state	cur_qp_state;
+	enum pvrdma_mtu		path_mtu;
+	enum pvrdma_mig_state	path_mig_state;
+	__u32			qkey;
+	__u32			rq_psn;
+	__u32			sq_psn;
+	__u32			dest_qp_num;
+	__u32			qp_access_flags;
+	__u16			pkey_index;
+	__u16			alt_pkey_index;
+	__u8			en_sqd_async_notify;
+	__u8			sq_draining;
+	__u8			max_rd_atomic;
+	__u8			max_dest_rd_atomic;
+	__u8			min_rnr_timer;
+	__u8			port_num;
+	__u8			timeout;
+	__u8			retry_cnt;
+	__u8			rnr_retry;
+	__u8			alt_port_num;
+	__u8			alt_timeout;
+	__u8			reserved[5];
+	struct pvrdma_qp_cap	cap;
+	struct pvrdma_ah_attr	ah_attr;
+	struct pvrdma_ah_attr	alt_ah_attr;
+};
+
+enum pvrdma_wr_opcode {
+	PVRDMA_WR_RDMA_WRITE,
+	PVRDMA_WR_RDMA_WRITE_WITH_IMM,
+	PVRDMA_WR_SEND,
+	PVRDMA_WR_SEND_WITH_IMM,
+	PVRDMA_WR_RDMA_READ,
+	PVRDMA_WR_ATOMIC_CMP_AND_SWP,
+	PVRDMA_WR_ATOMIC_FETCH_AND_ADD,
+	PVRDMA_WR_LSO,
+	PVRDMA_WR_SEND_WITH_INV,
+	PVRDMA_WR_RDMA_READ_WITH_INV,
+	PVRDMA_WR_LOCAL_INV,
+	PVRDMA_WR_FAST_REG_MR,
+	PVRDMA_WR_MASKED_ATOMIC_CMP_AND_SWP,
+	PVRDMA_WR_MASKED_ATOMIC_FETCH_AND_ADD,
+	PVRDMA_WR_BIND_MW,
+	PVRDMA_WR_REG_SIG_MR,
+};
+
+enum pvrdma_send_flags {
+	PVRDMA_SEND_FENCE	= 1 << 0,
+	PVRDMA_SEND_SIGNALED	= 1 << 1,
+	PVRDMA_SEND_SOLICITED	= 1 << 2,
+	PVRDMA_SEND_INLINE	= 1 << 3,
+	PVRDMA_SEND_IP_CSUM	= 1 << 4,
+	PVRDMA_SEND_FLAGS_MAX	= PVRDMA_SEND_IP_CSUM,
+};
+
+enum pvrdma_access_flags {
+	PVRDMA_ACCESS_LOCAL_WRITE	= 1 << 0,
+	PVRDMA_ACCESS_REMOTE_WRITE	= 1 << 1,
+	PVRDMA_ACCESS_REMOTE_READ	= 1 << 2,
+	PVRDMA_ACCESS_REMOTE_ATOMIC	= 1 << 3,
+	PVRDMA_ACCESS_MW_BIND		= 1 << 4,
+	PVRDMA_ZERO_BASED		= 1 << 5,
+	PVRDMA_ACCESS_ON_DEMAND		= 1 << 6,
+	PVRDMA_ACCESS_FLAGS_MAX		= PVRDMA_ACCESS_ON_DEMAND,
+};
+
+#endif /* __PVRDMA_IB_VERBS_H__ */
-- 
2.7.4

^ permalink raw reply related


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