* 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
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox