* Re: [PATCH net-next v4 1/4] net/sched: Introduce action ct
From: Florian Westphal @ 2019-07-08 14:02 UTC (permalink / raw)
To: Paul Blakey
Cc: Florian Westphal, Jiri Pirko, Roi Dayan, Yossi Kuperman,
Oz Shlomo, Marcelo Ricardo Leitner, netdev@vger.kernel.org,
David Miller, Aaron Conole, Zhike Wang, Rony Efraim,
nst-kernel@redhat.com, John Hurley, Simon Horman, Justin Pettit
In-Reply-To: <55a5a05f-b2c0-dda0-e961-75a7b4821dc1@mellanox.com>
Paul Blakey <paulb@mellanox.com> wrote:
> Like if conntrack has just timed it out (or conntrack flushed), and skb
> holds the last ref?
Yes, thats very unlikely but its possible.
^ permalink raw reply
* Re: [PATCH net-next 2/2] bpf: avoid unused variable warning in tcp_bpf_rtt()
From: Soheil Hassas Yeganeh @ 2019-07-08 13:55 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Eric Dumazet, David S. Miller, Alexei Starovoitov,
Daniel Borkmann, Priyaranjan Jha, Yuchung Cheng,
Stanislav Fomichev, Martin KaFai Lau, Song Liu, Yonghong Song,
Neal Cardwell, Jason Baron, Yafang Shao, Ard Biesheuvel, netdev,
linux-kernel, bpf
In-Reply-To: <20190708125733.3944836-2-arnd@arndb.de>
On Mon, Jul 8, 2019 at 8:57 AM Arnd Bergmann <arnd@arndb.de> wrote:
>
> When CONFIG_BPF is disabled, we get a warning for an unused
> variable:
>
> In file included from drivers/target/target_core_device.c:26:
> include/net/tcp.h:2226:19: error: unused variable 'tp' [-Werror,-Wunused-variable]
> struct tcp_sock *tp = tcp_sk(sk);
>
> The variable is only used in one place, so it can be
> replaced with its value there to avoid the warning.
>
> Fixes: 23729ff23186 ("bpf: add BPF_CGROUP_SOCK_OPS callback that is executed on every RTT")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
> ---
> include/net/tcp.h | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/include/net/tcp.h b/include/net/tcp.h
> index e16d8a3fd3b4..cca3c59b98bf 100644
> --- a/include/net/tcp.h
> +++ b/include/net/tcp.h
> @@ -2223,9 +2223,7 @@ static inline bool tcp_bpf_ca_needs_ecn(struct sock *sk)
>
> static inline void tcp_bpf_rtt(struct sock *sk)
> {
> - struct tcp_sock *tp = tcp_sk(sk);
> -
> - if (BPF_SOCK_OPS_TEST_FLAG(tp, BPF_SOCK_OPS_RTT_CB_FLAG))
> + if (BPF_SOCK_OPS_TEST_FLAG(tcp_sk(sk), BPF_SOCK_OPS_RTT_CB_FLAG))
> tcp_call_bpf(sk, BPF_SOCK_OPS_RTT_CB, 0, NULL);
> }
>
> --
> 2.20.0
>
^ permalink raw reply
* Re: i.mx6ul with DSA in multi chip addressing mode - no MDIO access
From: Benjamin Beckmeyer @ 2019-07-08 13:55 UTC (permalink / raw)
To: Andrew Lunn; +Cc: netdev
In-Reply-To: <20190705143647.GC4428@lunn.ch>
> I think you are going to have to parse the register writes/reads to
> figure out what switch registers it is accessing. That should
> hopefully make it clearer why it is making so many accesses.
Hi Andrew,
I got it working a little bit better. When I'm fast enough I can read
the registers I want but it isn't a solution.
Here is an output of the tracing even with my custom accesses.
mii -i 2 0 0x9b60; mii -i 2 1
phyid:2, reg:0x01 -> 0xc801
Do you know how to delete EEInt bit? It is always one. And now all
accesses coming from the kworker thread. Maybe this is your polling
function?
I view the INT pin on an oscilloscope but it never changed. So maybe
this is the problem. We just soldered a pull-up to that pin but it
still never changend. Maybe you have an idea?
So what I think is, because of the EEInt bit is never set back to one
i will poll it as fast as possible.
root@DistroKit:~ cat /sys/kernel/debug/tracing/trace
# tracer: nop
#
# entries-in-buffer/entries-written: 568/568 #P:1
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
kworker/0:2-106 [000] .... 209.532531: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 209.532649: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:2-106 [000] .... 209.532741: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:2-106 [000] .... 209.532835: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 209.532937: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:2-106 [000] .... 209.533027: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 209.533632: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:2-106 [000] .... 209.533765: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 209.533875: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 209.534470: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:2-106 [000] .... 209.534603: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:2-106 [000] .... 209.534695: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 209.535296: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:2-106 [000] .... 209.535429: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 209.535529: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:2-106 [000] .... 209.536129: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 209.536266: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 209.536364: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:2-106 [000] .... 209.536955: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:2-106 [000] .... 209.537097: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 209.537194: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:2-106 [000] .... 209.537355: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 209.537487: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:2-106 [000] .... 209.537608: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 209.537739: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 209.537890: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:2-106 [000] .... 209.540203: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:2-106 [000] .... 209.540323: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 209.540469: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:2-106 [000] .... 209.540568: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 209.540666: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:2-106 [000] .... 209.540768: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 210.491498: mdio_access: 2188000.ethernet-1 read phy:0x01 reg:0x01 val:0x786d
kworker/0:2-106 [000] .... 210.491619: mdio_access: 2188000.ethernet-1 read phy:0x01 reg:0x05 val:0x0080
kworker/0:2-106 [000] .... 210.491762: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 210.491860: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 210.491953: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 210.492052: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 210.492146: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 210.492244: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 210.492332: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 210.493008: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 210.493160: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 210.493252: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 210.493342: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 210.494000: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 210.494137: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 210.494236: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 210.494914: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 210.495050: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 210.495156: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 210.495823: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 210.495958: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 210.496052: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 210.496646: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 210.496781: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 210.496876: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 210.497466: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 210.497615: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 210.497715: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 210.497870: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 210.498433: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 210.498582: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 210.498843: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 210.498948: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 210.499519: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 210.572569: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 210.572687: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 210.572790: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 210.572884: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x203e
kworker/0:1-14 [000] .... 210.573502: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 210.573653: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 210.573747: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 210.573844: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 210.574447: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 210.574585: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 210.574682: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 210.575275: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 210.575412: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 210.575514: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 210.576103: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 210.576242: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 210.576346: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 210.576502: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 210.576596: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 210.576723: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 210.576850: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 210.576978: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 210.577073: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 210.577201: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 210.577328: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 210.577452: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 210.577651: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 210.577780: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 210.580149: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 210.580261: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x203e
kworker/0:1-14 [000] .... 210.580365: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 210.580509: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
mii-387 [000] .... 210.646652: mdio_access: 2188000.ethernet-1 write phy:0x22 reg:0x00 val:0x9b60
mii-388 [000] .... 210.659304: mdio_access: 2188000.ethernet-1 read phy:0x22 reg:0x01 val:0xc801
kworker/0:2-106 [000] .... 211.531394: mdio_access: 2188000.ethernet-1 read phy:0x01 reg:0x01 val:0x786d
kworker/0:2-106 [000] .... 211.531526: mdio_access: 2188000.ethernet-1 read phy:0x01 reg:0x05 val:0x0080
kworker/0:2-106 [000] .... 211.531725: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1b60
kworker/0:2-106 [000] .... 211.531835: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 211.531936: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 211.532033: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 211.532131: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 211.532223: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 211.532316: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 211.532486: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 211.532603: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 211.532707: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 211.532806: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 211.532902: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 211.532993: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 211.533683: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 211.533832: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 211.533939: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 211.534613: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 211.534754: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 211.535418: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 211.535550: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 211.535647: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 211.536398: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 211.536524: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 211.536629: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 211.537235: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 211.537373: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 211.537467: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 211.538068: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 211.538209: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 211.538310: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 211.538472: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 211.538564: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 211.612565: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 211.612685: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 211.612776: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 211.612876: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x203e
kworker/0:1-14 [000] .... 211.612964: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 211.613580: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 211.613727: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 211.613829: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 211.613931: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 211.614531: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 211.614674: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 211.614768: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 211.615374: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 211.615505: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 211.615602: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 211.616194: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 211.616340: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 211.616444: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 211.616535: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 211.616696: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 211.616795: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 211.616925: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 211.617052: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 211.617176: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 211.617273: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 211.617398: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 211.617524: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 211.617649: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 211.617775: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 211.617959: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x203e
kworker/0:1-14 [000] .... 211.620269: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 211.620379: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 212.571491: mdio_access: 2188000.ethernet-1 read phy:0x01 reg:0x01 val:0x786d
kworker/0:2-106 [000] .... 212.571624: mdio_access: 2188000.ethernet-1 read phy:0x01 reg:0x05 val:0x0080
kworker/0:2-106 [000] .... 212.571781: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 212.571886: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 212.571981: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 212.572079: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 212.572181: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 212.572272: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 212.572953: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 212.573091: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 212.573191: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 212.573859: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 212.573998: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 212.574097: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 212.574756: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 212.574899: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 212.575000: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 212.575658: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 212.575808: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 212.575909: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 212.576565: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 212.576699: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 212.576797: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 212.576890: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 212.576982: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 212.577567: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 212.577720: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 212.577823: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 212.577914: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 212.578071: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 212.578641: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 212.578876: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 212.578978: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 212.579074: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 212.652559: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 212.652682: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 212.652772: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 212.652871: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x203e
kworker/0:1-14 [000] .... 212.652965: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 212.653054: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 212.653668: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 212.653803: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 212.653909: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 212.654511: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 212.654646: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 212.654745: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 212.655343: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 212.655485: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 212.655583: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 212.655746: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 212.655844: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 212.655981: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 212.656115: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 212.656245: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 212.656381: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 212.656514: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 212.656641: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 212.656767: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 212.656895: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 212.657018: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 212.657142: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 212.657339: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 212.657471: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 212.657595: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x203e
kworker/0:1-14 [000] .... 212.657691: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 212.657869: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 213.611366: mdio_access: 2188000.ethernet-1 read phy:0x01 reg:0x01 val:0x786d
kworker/0:2-106 [000] .... 213.611493: mdio_access: 2188000.ethernet-1 read phy:0x01 reg:0x05 val:0x0080
kworker/0:2-106 [000] .... 213.611682: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 213.611798: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 213.611898: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 213.611990: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 213.612086: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 213.612179: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 213.612284: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 213.612385: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 213.612495: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 213.612591: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 213.612686: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 213.612791: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 213.612887: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 213.612982: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 213.613074: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 213.613165: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 213.613269: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 213.613362: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 213.613457: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 213.613549: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 213.613642: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 213.613733: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 213.613823: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 213.613922: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 213.614022: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 213.614116: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 213.614209: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 213.614299: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 213.614390: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 213.614482: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 213.614574: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 213.614667: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 213.692647: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 213.692763: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 213.692857: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 213.692956: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x203e
kworker/0:1-14 [000] .... 213.693052: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 213.693137: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 213.693299: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 213.693441: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 213.693587: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 213.693728: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 213.693858: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 213.693988: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 213.694108: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 213.694231: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 213.694354: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 213.694473: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 213.694599: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 213.694723: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 213.694842: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 213.694963: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 213.695087: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 213.695211: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 213.695341: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 213.695464: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 213.695587: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 213.695679: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 213.695800: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 213.695928: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 213.696049: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 213.696169: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x203e
kworker/0:1-14 [000] .... 213.696290: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 213.696414: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 214.651403: mdio_access: 2188000.ethernet-1 read phy:0x01 reg:0x01 val:0x786d
kworker/0:2-106 [000] .... 214.651531: mdio_access: 2188000.ethernet-1 read phy:0x01 reg:0x05 val:0x0080
kworker/0:2-106 [000] .... 214.651712: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 214.651815: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 214.651915: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 214.652014: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 214.652692: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 214.652840: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 214.652936: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 214.653030: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 214.653697: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 214.653831: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 214.653932: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 214.654596: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 214.654736: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 214.654836: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 214.655587: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 214.655715: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 214.655820: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 214.656492: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 214.656628: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 214.656723: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 214.657325: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 214.657462: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 214.657559: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 214.657711: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 214.658284: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 214.658425: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 214.658520: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 214.658682: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 214.658915: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 214.659011: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 214.659662: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 214.659802: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 214.732556: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 214.732681: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 214.732785: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 214.732882: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x203e
kworker/0:1-14 [000] .... 214.732994: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 214.733089: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 214.733700: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 214.733841: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 214.733945: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 214.734539: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 214.734675: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 214.734842: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 214.734944: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 214.735080: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 214.735211: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 214.735341: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 214.735479: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 214.735613: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 214.735742: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 214.735871: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 214.735999: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 214.736123: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 214.736245: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 214.736363: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 214.736488: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 214.736611: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 214.736733: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 214.736859: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 214.736953: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 214.737074: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x203e
kworker/0:1-14 [000] .... 214.737194: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 214.737313: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
mii-389 [000] .... 214.750875: mdio_access: 2188000.ethernet-1 write phy:0x22 reg:0x00 val:0x9b60
mii-390 [000] .... 214.759035: mdio_access: 2188000.ethernet-1 read phy:0x22 reg:0x01 val:0xc801
mii-391 [000] .... 215.302713: mdio_access: 2188000.ethernet-1 write phy:0x22 reg:0x00 val:0x9b60
mii-392 [000] .... 215.315237: mdio_access: 2188000.ethernet-1 read phy:0x22 reg:0x01 val:0xc801
kworker/0:2-106 [000] .... 215.691372: mdio_access: 2188000.ethernet-1 read phy:0x01 reg:0x01 val:0x786d
kworker/0:2-106 [000] .... 215.691498: mdio_access: 2188000.ethernet-1 read phy:0x01 reg:0x05 val:0x0080
kworker/0:2-106 [000] .... 215.691688: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1b60
kworker/0:2-106 [000] .... 215.691794: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 215.691894: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 215.692061: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 215.692174: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 215.692270: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 215.692370: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 215.692465: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 215.692566: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 215.692658: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 215.693346: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 215.693481: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 215.693575: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 215.694168: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 215.694319: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 215.694422: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 215.695026: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 215.695158: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 215.695253: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 215.695344: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 215.695940: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 215.696074: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 215.696172: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 215.696775: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 215.696920: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 215.697017: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 215.697617: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 215.697752: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 215.697849: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 215.697943: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 215.698180: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 215.698865: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 215.772572: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 215.772693: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 215.772790: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 215.772891: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x203e
kworker/0:1-14 [000] .... 215.772985: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 215.773078: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 215.773684: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 215.773818: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 215.773931: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 215.774524: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 215.774661: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 215.774752: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 215.775351: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 215.775483: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 215.775578: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 215.776174: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 215.776318: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 215.776417: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 215.776567: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 215.776704: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 215.776831: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 215.776971: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 215.777070: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 215.777199: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 215.777335: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 215.777469: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 215.777589: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 215.777707: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 215.777888: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 215.780209: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x203e
kworker/0:1-14 [000] .... 215.780334: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 215.780433: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
mii-393 [000] .... 215.855952: mdio_access: 2188000.ethernet-1 write phy:0x22 reg:0x00 val:0x9b60
mii-394 [000] .... 215.867854: mdio_access: 2188000.ethernet-1 read phy:0x22 reg:0x01 val:0xc801
kworker/0:2-106 [000] .... 216.731386: mdio_access: 2188000.ethernet-1 read phy:0x01 reg:0x01 val:0x786d
kworker/0:2-106 [000] .... 216.731518: mdio_access: 2188000.ethernet-1 read phy:0x01 reg:0x05 val:0x0080
kworker/0:2-106 [000] .... 216.731706: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1b60
kworker/0:2-106 [000] .... 216.731808: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 216.731907: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 216.731999: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 216.732681: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 216.732829: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 216.732929: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 216.733598: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 216.733739: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 216.733835: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 216.734495: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 216.734633: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 216.734737: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 216.735400: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 216.735544: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 216.735645: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 216.736310: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 216.736443: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 216.736539: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 216.736633: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 216.737223: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 216.737355: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 216.737448: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 216.737610: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 216.737712: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 216.738280: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:2-106 [000] .... 216.738415: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 216.738508: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 216.738679: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:2-106 [000] .... 216.738867: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 216.738965: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:2-106 [000] .... 216.739532: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 216.812558: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 216.812673: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 216.812778: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 216.812874: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x203e
kworker/0:1-14 [000] .... 216.812968: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 216.813583: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 216.813732: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 216.813835: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 216.814444: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 216.814574: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 216.814685: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 216.815288: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 216.815424: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 216.815526: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 216.816115: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 216.816258: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 216.816365: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 216.816958: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 216.817089: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 216.817184: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 216.817282: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 216.817437: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 216.817569: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 216.817694: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 216.817977: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 216.820294: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:1-14 [000] .... 216.820419: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 216.820565: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 216.820670: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:1-14 [000] .... 216.820761: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x203e
kworker/0:1-14 [000] .... 216.820867: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:1-14 [000] .... 216.821018: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 217.771340: mdio_access: 2188000.ethernet-1 read phy:0x01 reg:0x01 val:0x786d
kworker/0:1-14 [000] .... 217.771464: mdio_access: 2188000.ethernet-1 read phy:0x01 reg:0x05 val:0x0080
kworker/0:1-14 [000] .... 217.771642: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:1-14 [000] .... 217.771744: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:1-14 [000] .... 217.771850: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:1-14 [000] .... 217.771959: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x203e
kworker/0:1-14 [000] .... 217.772051: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:1-14 [000] .... 217.772149: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 217.772247: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:1-14 [000] .... 217.772337: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 217.772451: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 217.772546: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:1-14 [000] .... 217.772649: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:1-14 [000] .... 217.772749: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 217.772857: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:1-14 [000] .... 217.772958: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 217.773048: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:1-14 [000] .... 217.773135: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 217.773235: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 217.773925: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:1-14 [000] .... 217.774074: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:1-14 [000] .... 217.774171: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 217.774845: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:1-14 [000] .... 217.774981: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 217.775080: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:1-14 [000] .... 217.775739: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 217.775901: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:1-14 [000] .... 217.776010: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9921
kworker/0:1-14 [000] .... 217.776669: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:1-14 [000] .... 217.776814: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:1-14 [000] .... 217.776918: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1921
kworker/0:1-14 [000] .... 217.777513: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x203e
kworker/0:1-14 [000] .... 217.777651: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9521
kworker/0:1-14 [000] .... 217.778251: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 217.852560: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1521
kworker/0:2-106 [000] .... 217.852675: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:2-106 [000] .... 217.852775: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:2-106 [000] .... 217.852869: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 217.852964: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:2-106 [000] .... 217.853577: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 217.853724: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:2-106 [000] .... 217.853823: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 217.854427: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 217.854565: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:2-106 [000] .... 217.854665: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:2-106 [000] .... 217.855252: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 217.855394: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:2-106 [000] .... 217.855494: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 217.856084: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:2-106 [000] .... 217.856218: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 217.856318: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 217.856480: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:2-106 [000] .... 217.856585: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:2-106 [000] .... 217.856717: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 217.856852: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:2-106 [000] .... 217.856943: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 217.857070: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:2-106 [000] .... 217.857196: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 217.857325: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
kworker/0:2-106 [000] .... 217.857449: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9941
kworker/0:2-106 [000] .... 217.857573: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:2-106 [000] .... 217.857693: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x01 val:0x201e
kworker/0:2-106 [000] .... 217.857874: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1941
kworker/0:2-106 [000] .... 217.860193: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x01 val:0x203e
kworker/0:2-106 [000] .... 217.860306: mdio_access: 2188000.ethernet-1 write phy:0x02 reg:0x00 val:0x9541
kworker/0:2-106 [000] .... 217.860451: mdio_access: 2188000.ethernet-1 read phy:0x02 reg:0x00 val:0x1541
Cheers,
Benjamin
^ permalink raw reply
* Re: [PATCH v5 rdma-next 1/6] RDMA/core: Create mmap database and cookie helper functions
From: Gal Pressman @ 2019-07-08 13:47 UTC (permalink / raw)
To: Michal Kalderon, ariel.elior, jgg, dledford; +Cc: linux-rdma, davem, netdev
In-Reply-To: <20190708091503.14723-2-michal.kalderon@marvell.com>
On 08/07/2019 12:14, Michal Kalderon wrote:
> diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
> index 8a6ccb936dfe..a830c2c5d691 100644
> --- a/drivers/infiniband/core/device.c
> +++ b/drivers/infiniband/core/device.c
> @@ -2521,6 +2521,7 @@ void ib_set_device_ops(struct ib_device *dev, const struct ib_device_ops *ops)
> SET_DEVICE_OP(dev_ops, map_mr_sg_pi);
> SET_DEVICE_OP(dev_ops, map_phys_fmr);
> SET_DEVICE_OP(dev_ops, mmap);
> + SET_DEVICE_OP(dev_ops, mmap_free);
> SET_DEVICE_OP(dev_ops, modify_ah);
> SET_DEVICE_OP(dev_ops, modify_cq);
> SET_DEVICE_OP(dev_ops, modify_device);
> diff --git a/drivers/infiniband/core/rdma_core.c b/drivers/infiniband/core/rdma_core.c
> index ccf4d069c25c..7166741834c8 100644
> --- a/drivers/infiniband/core/rdma_core.c
> +++ b/drivers/infiniband/core/rdma_core.c
> @@ -817,6 +817,7 @@ static void ufile_destroy_ucontext(struct ib_uverbs_file *ufile,
> rdma_restrack_del(&ucontext->res);
>
> ib_dev->ops.dealloc_ucontext(ucontext);
> + rdma_user_mmap_entries_remove_free(ucontext);
This should happen before dealloc_ucontext.
> +struct rdma_user_mmap_entry *
> +rdma_user_mmap_entry_get(struct ib_ucontext *ucontext, u64 key, u64 len)
> +{
> + struct rdma_user_mmap_entry *entry;
> + u64 mmap_page;
> +
> + mmap_page = key >> PAGE_SHIFT;
> + if (mmap_page > U32_MAX)
> + return NULL;
> +
> + entry = xa_load(&ucontext->mmap_xa, mmap_page);
> + if (!entry || rdma_user_mmap_get_key(entry) != key ||
I wonder if the 'rdma_user_mmap_get_key(entry) != key' check is still needed.
> +/*
> + * This is only called when the ucontext is destroyed and there can be no
> + * concurrent query via mmap or allocate on the xarray, thus we can be sure no
> + * other thread is using the entry pointer. We also know that all the BAR
> + * pages have either been zap'd or munmaped at this point. Normal pages are
> + * refcounted and will be freed at the proper time.
> + */
> +void rdma_user_mmap_entries_remove_free(struct ib_ucontext *ucontext)
> +{
> + struct rdma_user_mmap_entry *entry;
> + unsigned long mmap_page;
> +
> + xa_for_each(&ucontext->mmap_xa, mmap_page, entry) {
> + xa_erase(&ucontext->mmap_xa, mmap_page);
> +
> + ibdev_dbg(ucontext->device,
> + "mmap: obj[0x%p] key[%#llx] addr[%#llx] len[%#llx] removed\n",
> + entry->obj, rdma_user_mmap_get_key(entry),
> + entry->address, entry->length);
> + if (ucontext->device->ops.mmap_free)
> + ucontext->device->ops.mmap_free(entry->address,
> + entry->length,
> + entry->mmap_flag);
Pass entry instead?
> + kfree(entry);
> + }
> +}
> +
> void uverbs_user_mmap_disassociate(struct ib_uverbs_file *ufile)
> {
> struct rdma_umap_priv *priv, *next_priv;
> diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
> index 26e9c2594913..54ce3fdae180 100644
> --- a/include/rdma/ib_verbs.h
> +++ b/include/rdma/ib_verbs.h
> @@ -1425,6 +1425,8 @@ struct ib_ucontext {
> * Implementation details of the RDMA core, don't use in drivers:
> */
> struct rdma_restrack_entry res;
> + struct xarray mmap_xa;
> + u32 mmap_xa_page;
> };
>
> struct ib_uobject {
> @@ -2311,6 +2313,7 @@ struct ib_device_ops {
> struct ib_udata *udata);
> void (*dealloc_ucontext)(struct ib_ucontext *context);
> int (*mmap)(struct ib_ucontext *context, struct vm_area_struct *vma);
> + void (*mmap_free)(u64 address, u64 length, u8 mmap_flag);
I feel like this callback needs some documentation.
> void (*disassociate_ucontext)(struct ib_ucontext *ibcontext);
> int (*alloc_pd)(struct ib_pd *pd, struct ib_udata *udata);
> void (*dealloc_pd)(struct ib_pd *pd, struct ib_udata *udata);
> @@ -2706,9 +2709,23 @@ void ib_set_client_data(struct ib_device *device, struct ib_client *client,
> void ib_set_device_ops(struct ib_device *device,
> const struct ib_device_ops *ops);
>
> +#define RDMA_USER_MMAP_INVALID U64_MAX
> +struct rdma_user_mmap_entry {
> + void *obj;
I know EFA is the culprit here, but please remove the extra space :).
> + u64 address;
> + u64 length;
> + u32 mmap_page;
> + u8 mmap_flag;
> +};
> +
^ permalink raw reply
* Re: [PATCH net-next v5 1/4] net/sched: Introduce action ct
From: Marcelo Ricardo Leitner @ 2019-07-08 13:42 UTC (permalink / raw)
To: Paul Blakey
Cc: Jiri Pirko, Roi Dayan, Yossi Kuperman, Oz Shlomo, netdev,
David Miller, Aaron Conole, Zhike Wang, Rony Efraim, nst-kernel,
John Hurley, Simon Horman, Justin Pettit
In-Reply-To: <1562575880-30891-2-git-send-email-paulb@mellanox.com>
On Mon, Jul 08, 2019 at 11:51:17AM +0300, Paul Blakey wrote:
..
> +static int tcf_ct_handle_fragments(struct net *net, struct sk_buff *skb,
> + u8 family, u16 zone)
> +{
> + enum ip_conntrack_info ctinfo;
> + struct nf_conn *ct;
> + int err = 0;
> + bool frag;
> +
> + /* Previously seen (loopback)? Ignore. */
> + ct = nf_ct_get(skb, &ctinfo);
> + if ((ct && !nf_ct_is_template(ct)) || ctinfo == IP_CT_UNTRACKED)
> + return 0;
> +
> + if (family == NFPROTO_IPV4)
> + err = tcf_ct_ipv4_is_fragment(skb, &frag);
> + else
> + err = tcf_ct_ipv6_is_fragment(skb, &frag);
> + if (err || !frag)
> + return err;
> +
> + skb_get(skb);
> +
> + if (family == NFPROTO_IPV4) {
> + enum ip_defrag_users user = IP_DEFRAG_CONNTRACK_IN + zone;
> +
> + memset(IPCB(skb), 0, sizeof(struct inet_skb_parm));
> + local_bh_disable();
> + err = ip_defrag(net, skb, user);
> + local_bh_enable();
> + if (err && err != -EINPROGRESS)
> + goto out_free;
> + } else { /* NFPROTO_IPV6 */
> + enum ip6_defrag_users user = IP6_DEFRAG_CONNTRACK_IN + zone;
> +
> + memset(IP6CB(skb), 0, sizeof(struct inet6_skb_parm));
> + err = nf_ct_frag6_gather(net, skb, user);
This doesn't build without IPv6 enabled.
ERROR: "nf_ct_frag6_gather" [net/sched/act_ct.ko] undefined!
We need to (copy and pasted):
@@ -179,7 +179,9 @@ static int tcf_ct_handle_fragments(struct net *net, struct sk_buff *skb,
local_bh_enable();
if (err && err != -EINPROGRESS)
goto out_free;
- } else { /* NFPROTO_IPV6 */
+ }
+#if IS_ENABLED(IPV6)
+ else { /* NFPROTO_IPV6 */
enum ip6_defrag_users user = IP6_DEFRAG_CONNTRACK_IN + zone;
memset(IP6CB(skb), 0, sizeof(struct inet6_skb_parm));
@@ -187,6 +189,7 @@ static int tcf_ct_handle_fragments(struct net *net, struct sk_buff *skb,
if (err && err != -EINPROGRESS)
goto out_free;
}
+#endif
skb_clear_hash(skb);
skb->ignore_df = 1;
> + if (err && err != -EINPROGRESS)
> + goto out_free;
> + }
> +
> + skb_clear_hash(skb);
> + skb->ignore_df = 1;
> + return err;
> +
> +out_free:
> + kfree_skb(skb);
> + return err;
> +}
^ permalink raw reply
* Re: [PATCH net-next 09/16] net/mlx5e: Extend tx reporter diagnostics output
From: Jiri Pirko @ 2019-07-08 13:39 UTC (permalink / raw)
To: Tariq Toukan
Cc: David S. Miller, netdev, Eran Ben Elisha, ayal, jiri,
Saeed Mahameed, moshe
In-Reply-To: <1562500388-16847-10-git-send-email-tariqt@mellanox.com>
Sun, Jul 07, 2019 at 01:53:01PM CEST, tariqt@mellanox.com wrote:
[...]
>+ err = devlink_fmsg_arr_pair_nest_start(fmsg, "Common config");
Are the values in this section "configurable"? If not, I wouldn't call
it "config"
[...]
^ permalink raw reply
* Re: [PATCH net-next 00/11] Add drop monitor for offloaded data paths
From: Ido Schimmel @ 2019-07-08 13:19 UTC (permalink / raw)
To: David Miller
Cc: netdev, jiri, mlxsw, dsahern, roopa, nikolay, andy, pablo,
jakub.kicinski, pieter.jansenvanvuuren, andrew, f.fainelli,
vivien.didelot, idosch
In-Reply-To: <20190707.124541.451040901050013496.davem@davemloft.net>
On Sun, Jul 07, 2019 at 12:45:41PM -0700, David Miller wrote:
> From: Ido Schimmel <idosch@idosch.org>
> Date: Sun, 7 Jul 2019 10:58:17 +0300
>
> > Users have several ways to debug the kernel and understand why a packet
> > was dropped. For example, using "drop monitor" and "perf". Both
> > utilities trace kfree_skb(), which is the function called when a packet
> > is freed as part of a failure. The information provided by these tools
> > is invaluable when trying to understand the cause of a packet loss.
> >
> > In recent years, large portions of the kernel data path were offloaded
> > to capable devices. Today, it is possible to perform L2 and L3
> > forwarding in hardware, as well as tunneling (IP-in-IP and VXLAN).
> > Different TC classifiers and actions are also offloaded to capable
> > devices, at both ingress and egress.
> >
> > However, when the data path is offloaded it is not possible to achieve
> > the same level of introspection as tools such "perf" and "drop monitor"
> > become irrelevant.
> >
> > This patchset aims to solve this by allowing users to monitor packets
> > that the underlying device decided to drop along with relevant metadata
> > such as the drop reason and ingress port.
>
> We are now going to have 5 or so ways to capture packets passing through
> the system, this is nonsense.
>
> AF_PACKET, kfree_skb drop monitor, perf, XDP perf events, and now this
> devlink thing.
>
> This is insanity, too many ways to do the same thing and therefore the
> worst possible user experience.
>
> Pick _ONE_ method to trap packets and forward normal kfree_skb events,
> XDP perf events, and these taps there too.
>
> I mean really, think about it from the average user's perspective. To
> see all drops/pkts I have to attach a kfree_skb tracepoint, and not just
> listen on devlink but configure a special tap thing beforehand and then
> if someone is using XDP I gotta setup another perf event buffer capture
> thing too.
Let me try to explain again because I probably wasn't clear enough. The
devlink-trap mechanism is not doing the same thing as other solutions.
The packets we are capturing in this patchset are packets that the
kernel (the CPU) never saw up until now - they were silently dropped by
the underlying device performing the packet forwarding instead of the
CPU.
For each such packet we get valuable metadata from the underlying device
such as the drop reason and the ingress port. With time, even more
reasons and metadata could be provided (e.g., egress port, traffic
class). Netlink provides a structured and extensible way to report the
packet along with the metadata to interested users. The tc-sample action
uses a similar concept.
I would like to emphasize that these dropped packets are not injected to
the kernel's receive path and therefore not subject to kfree_skb() and
related infrastructure. There is no need to waste CPU cycles on packets
we already know were dropped (and why). Further, hardware tail/early
drops will not be dropped by the kernel, given its qdiscs are probably
empty.
Regarding the use of devlink, current ASICs can forward packets at
6.4Tb/s. We do not want to overwhelm the CPU with dropped packets and
therefore we give users the ability to control - via devlink - the
trapping of certain packets to the CPU and their reporting to user
space. In the future, devlink-trap can be extended to support the
configuration of the hardware policers of each trap.
^ permalink raw reply
* Re: [PATCH] [RFC] Revert "bpf: Fix ORC unwinding in non-JIT BPF code"
From: Arnd Bergmann @ 2019-07-08 13:17 UTC (permalink / raw)
To: Josh Poimboeuf
Cc: Alexei Starovoitov, Daniel Borkmann, Martin KaFai Lau, Networking,
bpf, Linux Kernel Mailing List
In-Reply-To: <20190708130010.pnxlzi5vptuyppxz@treble>
On Mon, Jul 8, 2019 at 3:11 PM Josh Poimboeuf <jpoimboe@redhat.com> wrote:
>
> On Mon, Jul 08, 2019 at 02:45:23PM +0200, Arnd Bergmann wrote:
> > Apparently this was a bit premature, at least I still get this
> > warning with gcc-8.1:
> >
> > kernel/bpf/core.o: warning: objtool: ___bpf_prog_run()+0x44d2: sibling call from callable instruction with modified stack frame
> >
> > This reverts commit b22cf36c189f31883ad0238a69ccf82aa1f3b16b.
> >
> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>
> Yes, I have been working on a fix.
>
> The impact is that ORC unwinding is broken in this function for
> CONFIG_RETPOLINE=n.
>
> I don't think we want to revert this patch though, because that will
> broaden the impact to the CONFIG_RETPOLINE=y case. Anyway I hope to
> have fixes soon.
Ok, sounds good. Thanks,
Arnd
^ permalink raw reply
* Re: [PATCH] [RFC] Revert "bpf: Fix ORC unwinding in non-JIT BPF code"
From: Josh Poimboeuf @ 2019-07-08 13:11 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Alexei Starovoitov, Daniel Borkmann, Martin KaFai Lau, netdev,
bpf, linux-kernel
In-Reply-To: <20190708124547.3515538-1-arnd@arndb.de>
On Mon, Jul 08, 2019 at 02:45:23PM +0200, Arnd Bergmann wrote:
> Apparently this was a bit premature, at least I still get this
> warning with gcc-8.1:
>
> kernel/bpf/core.o: warning: objtool: ___bpf_prog_run()+0x44d2: sibling call from callable instruction with modified stack frame
>
> This reverts commit b22cf36c189f31883ad0238a69ccf82aa1f3b16b.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Yes, I have been working on a fix.
The impact is that ORC unwinding is broken in this function for
CONFIG_RETPOLINE=n.
I don't think we want to revert this patch though, because that will
broaden the impact to the CONFIG_RETPOLINE=y case. Anyway I hope to
have fixes soon.
--
Josh
^ permalink raw reply
* [PATCH bpf-next] tools: bpftool: add completion for bpftool prog "loadall"
From: Quentin Monnet @ 2019-07-08 13:05 UTC (permalink / raw)
To: Alexei Starovoitov, Daniel Borkmann
Cc: bpf, netdev, oss-drivers, Quentin Monnet
Bash completion for proposing the "loadall" subcommand is missing. Let's
add it to the completion script.
Add a specific case to propose "load" and "loadall" for completing:
$ bpftool prog load
^ cursor is here
Otherwise, completion considers that $command is in load|loadall and
starts making related completions (file or directory names, as the
number of words on the command line is below 6), when the only suggested
keywords should be "load" and "loadall" until one has been picked and a
space entered after that to move to the next word.
Signed-off-by: Quentin Monnet <quentin.monnet@netronome.com>
Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
---
tools/bpf/bpftool/bash-completion/bpftool | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/tools/bpf/bpftool/bash-completion/bpftool b/tools/bpf/bpftool/bash-completion/bpftool
index 965a8658cca3..c8f42e1fcbc9 100644
--- a/tools/bpf/bpftool/bash-completion/bpftool
+++ b/tools/bpf/bpftool/bash-completion/bpftool
@@ -342,6 +342,13 @@ _bpftool()
load|loadall)
local obj
+ # Propose "load/loadall" to complete "bpftool prog load",
+ # or bash tries to complete "load" as a filename below.
+ if [[ ${#words[@]} -eq 3 ]]; then
+ COMPREPLY=( $( compgen -W "load loadall" -- "$cur" ) )
+ return 0
+ fi
+
if [[ ${#words[@]} -lt 6 ]]; then
_filedir
return 0
@@ -435,7 +442,7 @@ _bpftool()
*)
[[ $prev == $object ]] && \
COMPREPLY=( $( compgen -W 'dump help pin attach detach \
- load show list tracelog run' -- "$cur" ) )
+ load loadall show list tracelog run' -- "$cur" ) )
;;
esac
;;
--
2.17.1
^ permalink raw reply related
* Re: [PATCH net-next 10/16] net/mlx5e: Add cq info to tx reporter diagnose
From: Jiri Pirko @ 2019-07-08 13:00 UTC (permalink / raw)
To: Tariq Toukan
Cc: David S. Miller, netdev, Eran Ben Elisha, ayal, jiri,
Saeed Mahameed, moshe
In-Reply-To: <1562500388-16847-11-git-send-email-tariqt@mellanox.com>
Sun, Jul 07, 2019 at 01:53:02PM CEST, tariqt@mellanox.com wrote:
>From: Aya Levin <ayal@mellanox.com>
>
>Add cq information to general diagnose output: CQ size and stride size.
>Per SQ add information about the related CQ: cqn and CQ's HW status.
>
>$ devlink health diagnose pci/0000:00:0b.0 reporter tx
>Common config:
> SQ: stride size: 64 size: 1024
> CQ: stride size: 64 size: 1024
> SQs:
> channel ix: 0 sqn: 4283 HW state: 1 stopped: false cc: 0 pc: 0 CQ: cqn: 1030 HW status: 0
The nesting of "cqn" and "HW status" is not visible there. I know it is
comment to iproute2 patch, but still. Should be corrected in this patch
description too.
Other than this, the patch looks good.
> channel ix: 1 sqn: 4288 HW state: 1 stopped: false cc: 0 pc: 0 CQ: cqn: 1034 HW status: 0
> channel ix: 2 sqn: 4293 HW state: 1 stopped: false cc: 0 pc: 0 CQ: cqn: 1038 HW status: 0
> channel ix: 3 sqn: 4298 HW state: 1 stopped: false cc: 0 pc: 0 CQ: cqn: 1042 HW status: 0
>
>$ devlink health diagnose pci/0000:00:0b.0 reporter tx -jp
>{
> "Common config": [
> "SQ": {
> "stride size": 64,
> "size": 1024
> },
> "CQ": {
> "stride size": 64,
> "size": 1024
> } ],
> "SQs": [ {
> "channel ix": 0,
> "sqn": 4283,
> "HW state": 1,
> "stopped": false,
> "cc": 0,
> "pc": 0,
> "CQ": {
> "cqn": 1030,
> "HW status": 0
> }
> },{
> "channel ix": 1,
> "sqn": 4288,
> "HW state": 1,
> "stopped": false,
> "cc": 0,
> "pc": 0,
> "CQ": {
> "cqn": 1034,
> "HW status": 0
> }
> },{
> "channel ix": 2,
> "sqn": 4293,
> "HW state": 1,
> "stopped": false,
> "cc": 0,
> "pc": 0,
> "CQ": {
> "cqn": 1038,
> "HW status": 0
> }
> },{
> "channel ix": 3,
> "sqn": 4298,
> "HW state": 1,
> "stopped": false,
> "cc": 0,
> "pc": 0,
> "CQ": {
> "cqn": 1042,
> "HW status": 0
> }
> } ]
>}
>
>Signed-off-by: Aya Levin <ayal@mellanox.com>
>Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
[...]
^ permalink raw reply
* [PATCH net-next 2/2] bpf: avoid unused variable warning in tcp_bpf_rtt()
From: Arnd Bergmann @ 2019-07-08 12:57 UTC (permalink / raw)
To: Eric Dumazet, David S. Miller, Alexei Starovoitov,
Daniel Borkmann
Cc: Arnd Bergmann, Priyaranjan Jha, Yuchung Cheng,
Soheil Hassas Yeganeh, Stanislav Fomichev, Martin KaFai Lau,
Song Liu, Yonghong Song, Neal Cardwell, Jason Baron, Yafang Shao,
Ard Biesheuvel, netdev, linux-kernel, bpf
In-Reply-To: <20190708125733.3944836-1-arnd@arndb.de>
When CONFIG_BPF is disabled, we get a warning for an unused
variable:
In file included from drivers/target/target_core_device.c:26:
include/net/tcp.h:2226:19: error: unused variable 'tp' [-Werror,-Wunused-variable]
struct tcp_sock *tp = tcp_sk(sk);
The variable is only used in one place, so it can be
replaced with its value there to avoid the warning.
Fixes: 23729ff23186 ("bpf: add BPF_CGROUP_SOCK_OPS callback that is executed on every RTT")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
include/net/tcp.h | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/include/net/tcp.h b/include/net/tcp.h
index e16d8a3fd3b4..cca3c59b98bf 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -2223,9 +2223,7 @@ static inline bool tcp_bpf_ca_needs_ecn(struct sock *sk)
static inline void tcp_bpf_rtt(struct sock *sk)
{
- struct tcp_sock *tp = tcp_sk(sk);
-
- if (BPF_SOCK_OPS_TEST_FLAG(tp, BPF_SOCK_OPS_RTT_CB_FLAG))
+ if (BPF_SOCK_OPS_TEST_FLAG(tcp_sk(sk), BPF_SOCK_OPS_RTT_CB_FLAG))
tcp_call_bpf(sk, BPF_SOCK_OPS_RTT_CB, 0, NULL);
}
--
2.20.0
^ permalink raw reply related
* [PATCH net-next 1/2] bpf: skip sockopt hooks without CONFIG_NET
From: Arnd Bergmann @ 2019-07-08 12:57 UTC (permalink / raw)
To: Alexei Starovoitov, Daniel Borkmann
Cc: Arnd Bergmann, Andrii Nakryiko, Martin Lau, Stanislav Fomichev,
Song Liu, Yonghong Song, Mauricio Vasquez B, Roman Gushchin,
Matt Mullins, Willem de Bruijn, Andrey Ignatov, netdev, bpf,
linux-kernel
When CONFIG_NET is disabled, we get a link error:
kernel/bpf/cgroup.o: In function `__cgroup_bpf_run_filter_setsockopt':
cgroup.c:(.text+0x3010): undefined reference to `lock_sock_nested'
cgroup.c:(.text+0x3258): undefined reference to `release_sock'
kernel/bpf/cgroup.o: In function `__cgroup_bpf_run_filter_getsockopt':
cgroup.c:(.text+0x3568): undefined reference to `lock_sock_nested'
cgroup.c:(.text+0x3870): undefined reference to `release_sock'
kernel/bpf/cgroup.o: In function `cg_sockopt_func_proto':
cgroup.c:(.text+0x41d8): undefined reference to `bpf_sk_storage_delete_proto'
None of this code is useful in this configuration anyway, so we can
simply hide it in an appropriate #ifdef.
Fixes: 0d01da6afc54 ("bpf: implement getsockopt and setsockopt hooks")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
include/linux/bpf_types.h | 2 ++
kernel/bpf/cgroup.c | 6 ++++++
2 files changed, 8 insertions(+)
diff --git a/include/linux/bpf_types.h b/include/linux/bpf_types.h
index eec5aeeeaf92..3c7222b2db96 100644
--- a/include/linux/bpf_types.h
+++ b/include/linux/bpf_types.h
@@ -30,8 +30,10 @@ BPF_PROG_TYPE(BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE, raw_tracepoint_writable)
#ifdef CONFIG_CGROUP_BPF
BPF_PROG_TYPE(BPF_PROG_TYPE_CGROUP_DEVICE, cg_dev)
BPF_PROG_TYPE(BPF_PROG_TYPE_CGROUP_SYSCTL, cg_sysctl)
+#ifdef CONFIG_NET
BPF_PROG_TYPE(BPF_PROG_TYPE_CGROUP_SOCKOPT, cg_sockopt)
#endif
+#endif
#ifdef CONFIG_BPF_LIRC_MODE2
BPF_PROG_TYPE(BPF_PROG_TYPE_LIRC_MODE2, lirc_mode2)
#endif
diff --git a/kernel/bpf/cgroup.c b/kernel/bpf/cgroup.c
index 76fa0076f20d..7be44460bd93 100644
--- a/kernel/bpf/cgroup.c
+++ b/kernel/bpf/cgroup.c
@@ -590,6 +590,7 @@ int cgroup_bpf_prog_query(const union bpf_attr *attr,
return ret;
}
+#ifdef CONFIG_NET
/**
* __cgroup_bpf_run_filter_skb() - Run a program for packet filtering
* @sk: The socket sending or receiving traffic
@@ -750,6 +751,7 @@ int __cgroup_bpf_run_filter_sock_ops(struct sock *sk,
return ret == 1 ? 0 : -EPERM;
}
EXPORT_SYMBOL(__cgroup_bpf_run_filter_sock_ops);
+#endif
int __cgroup_bpf_check_dev_permission(short dev_type, u32 major, u32 minor,
short access, enum bpf_attach_type type)
@@ -939,6 +941,7 @@ int __cgroup_bpf_run_filter_sysctl(struct ctl_table_header *head,
}
EXPORT_SYMBOL(__cgroup_bpf_run_filter_sysctl);
+#ifdef CONFIG_NET
static bool __cgroup_bpf_prog_array_is_empty(struct cgroup *cgrp,
enum bpf_attach_type attach_type)
{
@@ -1120,6 +1123,7 @@ int __cgroup_bpf_run_filter_getsockopt(struct sock *sk, int level,
return ret;
}
EXPORT_SYMBOL(__cgroup_bpf_run_filter_getsockopt);
+#endif
static ssize_t sysctl_cpy_dir(const struct ctl_dir *dir, char **bufp,
size_t *lenp)
@@ -1382,6 +1386,7 @@ const struct bpf_verifier_ops cg_sysctl_verifier_ops = {
const struct bpf_prog_ops cg_sysctl_prog_ops = {
};
+#ifdef CONFIG_NET
static const struct bpf_func_proto *
cg_sockopt_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
{
@@ -1531,3 +1536,4 @@ const struct bpf_verifier_ops cg_sockopt_verifier_ops = {
const struct bpf_prog_ops cg_sockopt_prog_ops = {
};
+#endif
--
2.20.0
^ permalink raw reply related
* Re: [PATCH 2/6] dt-bindings: can: rcar_can: Complete documentation for RZ/G2[EM]
From: Geert Uytterhoeven @ 2019-07-08 12:56 UTC (permalink / raw)
To: Fabrizio Castro
Cc: Simon Horman, Geert Uytterhoeven, Wolfgang Grandegger,
Marc Kleine-Budde, Rob Herring, Mark Rutland, David S. Miller,
linux-can, netdev,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
Chris Paterson, Biju Das, Linux-Renesas
In-Reply-To: <1560513214-28031-3-git-send-email-fabrizio.castro@bp.renesas.com>
On Fri, Jun 14, 2019 at 1:53 PM Fabrizio Castro
<fabrizio.castro@bp.renesas.com> wrote:
> Add missing RZ/G2[EM] CANFD clock specific documentation.
>
> Fixes: 868b7c0f43e6 ("dt-bindings: can: rcar_can: Add r8a774a1 support")
> Fixes: 0c11e7d0f51c ("dt-bindings: can: rcar_can: Add r8a774c0 support")
> Signed-off-by: Fabrizio Castro <fabrizio.castro@bp.renesas.com>
> Reviewed-by: Chris Paterson <Chris.Paterson2@renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
I.e. applied and queued for v5.4.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply
* [PATCH] [net-next] net/mlx5e: xsk: dynamically allocate mlx5e_channel_param
From: Arnd Bergmann @ 2019-07-08 12:55 UTC (permalink / raw)
To: Saeed Mahameed, Leon Romanovsky, David S. Miller,
Alexei Starovoitov, Daniel Borkmann, Jakub Kicinski,
Jesper Dangaard Brouer, John Fastabend
Cc: Arnd Bergmann, Maxim Mikityanskiy, Tariq Toukan, netdev,
linux-rdma, linux-kernel, xdp-newbies, bpf
The structure is too large to put on the stack, resulting in a
warning on 32-bit ARM:
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c:59:5: error: stack frame size of 1344 bytes in function
'mlx5e_open_xsk' [-Werror,-Wframe-larger-than=]
Use kzalloc() instead.
Fixes: a038e9794541 ("net/mlx5e: Add XSK zero-copy support")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
.../mellanox/mlx5/core/en/xsk/setup.c | 25 ++++++++++++-------
1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c b/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
index aaffa6f68dc0..db9bbec68dbf 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c
@@ -60,24 +60,28 @@ int mlx5e_open_xsk(struct mlx5e_priv *priv, struct mlx5e_params *params,
struct mlx5e_xsk_param *xsk, struct xdp_umem *umem,
struct mlx5e_channel *c)
{
- struct mlx5e_channel_param cparam = {};
+ struct mlx5e_channel_param *cparam;
struct dim_cq_moder icocq_moder = {};
int err;
if (!mlx5e_validate_xsk_param(params, xsk, priv->mdev))
return -EINVAL;
- mlx5e_build_xsk_cparam(priv, params, xsk, &cparam);
+ cparam = kzalloc(sizeof(*cparam), GFP_KERNEL);
+ if (!cparam)
+ return -ENOMEM;
- err = mlx5e_open_cq(c, params->rx_cq_moderation, &cparam.rx_cq, &c->xskrq.cq);
+ mlx5e_build_xsk_cparam(priv, params, xsk, cparam);
+
+ err = mlx5e_open_cq(c, params->rx_cq_moderation, &cparam->rx_cq, &c->xskrq.cq);
if (unlikely(err))
- return err;
+ goto err_kfree_cparam;
- err = mlx5e_open_rq(c, params, &cparam.rq, xsk, umem, &c->xskrq);
+ err = mlx5e_open_rq(c, params, &cparam->rq, xsk, umem, &c->xskrq);
if (unlikely(err))
goto err_close_rx_cq;
- err = mlx5e_open_cq(c, params->tx_cq_moderation, &cparam.tx_cq, &c->xsksq.cq);
+ err = mlx5e_open_cq(c, params->tx_cq_moderation, &cparam->tx_cq, &c->xsksq.cq);
if (unlikely(err))
goto err_close_rq;
@@ -87,18 +91,18 @@ int mlx5e_open_xsk(struct mlx5e_priv *priv, struct mlx5e_params *params,
* is disabled and then reenabled, but the SQ continues receiving CQEs
* from the old UMEM.
*/
- err = mlx5e_open_xdpsq(c, params, &cparam.xdp_sq, umem, &c->xsksq, true);
+ err = mlx5e_open_xdpsq(c, params, &cparam->xdp_sq, umem, &c->xsksq, true);
if (unlikely(err))
goto err_close_tx_cq;
- err = mlx5e_open_cq(c, icocq_moder, &cparam.icosq_cq, &c->xskicosq.cq);
+ err = mlx5e_open_cq(c, icocq_moder, &cparam->icosq_cq, &c->xskicosq.cq);
if (unlikely(err))
goto err_close_sq;
/* Create a dedicated SQ for posting NOPs whenever we need an IRQ to be
* triggered and NAPI to be called on the correct CPU.
*/
- err = mlx5e_open_icosq(c, params, &cparam.icosq, &c->xskicosq);
+ err = mlx5e_open_icosq(c, params, &cparam->icosq, &c->xskicosq);
if (unlikely(err))
goto err_close_icocq;
@@ -123,6 +127,9 @@ int mlx5e_open_xsk(struct mlx5e_priv *priv, struct mlx5e_params *params,
err_close_rx_cq:
mlx5e_close_cq(&c->xskrq.cq);
+err_kfree_cparam:
+ kfree(cparam);
+
return err;
}
--
2.20.0
^ permalink raw reply related
* Re: [PATCH net-next 09/16] net/mlx5e: Extend tx reporter diagnostics output
From: Jiri Pirko @ 2019-07-08 12:55 UTC (permalink / raw)
To: Tariq Toukan
Cc: David S. Miller, netdev, Eran Ben Elisha, ayal, jiri,
Saeed Mahameed, moshe
In-Reply-To: <1562500388-16847-10-git-send-email-tariqt@mellanox.com>
Sun, Jul 07, 2019 at 01:53:01PM CEST, tariqt@mellanox.com wrote:
>From: Aya Levin <ayal@mellanox.com>
>
>Enhance tx reporter's diagnostics output to include: information common
>to all SQs: SQ size, SQ stride size.
>In addition add channel ix, cc and pc.
>
>$ devlink health diagnose pci/0000:00:0b.0 reporter tx
>Common config:
> SQ: stride size: 64 size: 1024
> SQs:
> channel ix: 0 sqn: 4283 HW state: 1 stopped: false cc: 0 pc: 0
> channel ix: 1 sqn: 4288 HW state: 1 stopped: false cc: 0 pc: 0
> channel ix: 2 sqn: 4293 HW state: 1 stopped: false cc: 0 pc: 0
> channel ix: 3 sqn: 4298 HW state: 1 stopped: false cc: 0 pc: 0
>
>$ devlink health diagnose pci/0000:00:0b.0 reporter tx -jp
>{
> "Common config": [
> "SQ": {
> "stride size": 64,
> "size": 1024
> } ],
> "SQs": [ {
> "channel ix": 0,
> "sqn": 4283,
> "HW state": 1,
> "stopped": false,
> "cc": 0,
> "pc": 0
> },{
> "channel ix": 1,
> "sqn": 4288,
> "HW state": 1,
> "stopped": false,
> "cc": 0,
> "pc": 0
> },{
> "channel ix": 2,
> "sqn": 4293,
> "HW state": 1,
> "stopped": false,
> "cc": 0,
> "pc": 0
> },{
> "channel ix": 3,
> "sqn": 4298,
> "HW state": 1,
> "stopped": false,
> "cc": 0,
> "pc": 0
> } ]
>}
>
>Signed-off-by: Aya Levin <ayal@mellanox.com>
>Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
>---
> .../net/ethernet/mellanox/mlx5/core/en/health.c | 30 ++++++++++++++++
> .../net/ethernet/mellanox/mlx5/core/en/health.h | 3 ++
> .../ethernet/mellanox/mlx5/core/en/reporter_tx.c | 42 ++++++++++++++++++++++
> 3 files changed, 75 insertions(+)
>
>diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/health.c b/drivers/net/ethernet/mellanox/mlx5/core/en/health.c
>index 60166e5432ae..0d44b081259f 100644
>--- a/drivers/net/ethernet/mellanox/mlx5/core/en/health.c
>+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/health.c
>@@ -4,6 +4,36 @@
> #include "health.h"
> #include "lib/eq.h"
>
>+int mlx5e_reporter_named_obj_nest_start(struct devlink_fmsg *fmsg, char *name)
>+{
>+ int err;
>+
>+ err = devlink_fmsg_pair_nest_start(fmsg, name);
>+ if (err)
>+ return err;
>+
>+ err = devlink_fmsg_obj_nest_start(fmsg);
>+ if (err)
>+ return err;
>+
>+ return 0;
>+}
>+
>+int mlx5e_reporter_named_obj_nest_end(struct devlink_fmsg *fmsg)
>+{
>+ int err;
>+
>+ err = devlink_fmsg_pair_nest_end(fmsg);
You should end the obj nest first.
>+ if (err)
>+ return err;
>+
>+ err = devlink_fmsg_obj_nest_end(fmsg);
>+ if (err)
>+ return err;
>+
>+ return 0;
>+}
>+
> int mlx5e_health_sq_to_ready(struct mlx5e_channel *channel, u32 sqn)
> {
> struct mlx5_core_dev *mdev = channel->mdev;
>diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/health.h b/drivers/net/ethernet/mellanox/mlx5/core/en/health.h
>index 960aa18c425d..0fecad63135c 100644
>--- a/drivers/net/ethernet/mellanox/mlx5/core/en/health.h
>+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/health.h
>@@ -11,6 +11,9 @@
> void mlx5e_reporter_tx_err_cqe(struct mlx5e_txqsq *sq);
> int mlx5e_reporter_tx_timeout(struct mlx5e_txqsq *sq);
>
>+int mlx5e_reporter_named_obj_nest_start(struct devlink_fmsg *fmsg, char *name);
>+int mlx5e_reporter_named_obj_nest_end(struct devlink_fmsg *fmsg);
>+
> #define MLX5E_REPORTER_PER_Q_MAX_LEN 256
>
> struct mlx5e_err_ctx {
>diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c b/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c
>index dd6417930461..c481f7142a12 100644
>--- a/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c
>+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c
>@@ -153,6 +153,10 @@ static int mlx5e_tx_reporter_recover(struct devlink_health_reporter *reporter,
> if (err)
> return err;
>
>+ err = devlink_fmsg_u32_pair_put(fmsg, "channel ix", sq->channel->ix);
"ix" is an attribute of the channel. I think it should be nested under
"channel" here.
>+ if (err)
>+ return err;
>+
> err = devlink_fmsg_u32_pair_put(fmsg, "sqn", sq->sqn);
> if (err)
> return err;
>@@ -165,6 +169,14 @@ static int mlx5e_tx_reporter_recover(struct devlink_health_reporter *reporter,
> if (err)
> return err;
>
>+ err = devlink_fmsg_u32_pair_put(fmsg, "cc", sq->cc);
>+ if (err)
>+ return err;
>+
>+ err = devlink_fmsg_u32_pair_put(fmsg, "pc", sq->pc);
>+ if (err)
>+ return err;
>+
> err = devlink_fmsg_obj_nest_end(fmsg);
> if (err)
> return err;
>@@ -176,6 +188,9 @@ static int mlx5e_tx_reporter_diagnose(struct devlink_health_reporter *reporter,
> struct devlink_fmsg *fmsg)
> {
> struct mlx5e_priv *priv = devlink_health_reporter_priv(reporter);
>+ struct mlx5e_txqsq *generic_sq = priv->txq2sq[0];
>+ u32 sq_stride, sq_sz;
>+
> int i, err = 0;
>
> mutex_lock(&priv->state_lock);
>@@ -183,6 +198,33 @@ static int mlx5e_tx_reporter_diagnose(struct devlink_health_reporter *reporter,
> if (!test_bit(MLX5E_STATE_OPENED, &priv->state))
> goto unlock;
>
>+ sq_sz = mlx5_wq_cyc_get_size(&generic_sq->wq);
>+ sq_stride = MLX5_SEND_WQE_BB;
>+
>+ err = devlink_fmsg_arr_pair_nest_start(fmsg, "Common config");
>+ if (err)
>+ goto unlock;
>+
>+ err = mlx5e_reporter_named_obj_nest_start(fmsg, "SQ");
>+ if (err)
>+ goto unlock;
>+
>+ err = devlink_fmsg_u64_pair_put(fmsg, "stride size", sq_stride);
>+ if (err)
>+ goto unlock;
>+
>+ err = devlink_fmsg_u32_pair_put(fmsg, "size", sq_sz);
>+ if (err)
>+ goto unlock;
>+
>+ err = devlink_fmsg_arr_pair_nest_end(fmsg);
Which nest is this supposed to end? Looks like it is extra and
should not be here...
>+ if (err)
>+ goto unlock;
>+
>+ err = mlx5e_reporter_named_obj_nest_end(fmsg);
>+ if (err)
>+ goto unlock;
>+
> err = devlink_fmsg_arr_pair_nest_start(fmsg, "SQs");
> if (err)
> goto unlock;
>--
>1.8.3.1
>
^ permalink raw reply
* Re: [PATCH 1/6] dt-bindings: can: rcar_canfd: document r8a774a1 support
From: Geert Uytterhoeven @ 2019-07-08 12:55 UTC (permalink / raw)
To: Simon Horman
Cc: Fabrizio Castro, David S. Miller, Geert Uytterhoeven,
Wolfgang Grandegger, Marc Kleine-Budde, Rob Herring, Mark Rutland,
linux-can, netdev,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
Chris Paterson, Biju Das, Linux-Renesas
In-Reply-To: <20190617093023.nhvrvujg52gcglko@verge.net.au>
On Mon, Jun 17, 2019 at 11:30 AM Simon Horman <horms@verge.net.au> wrote:
> On Fri, Jun 14, 2019 at 12:53:29PM +0100, Fabrizio Castro wrote:
> > Document the support for rcar_canfd on R8A774A1 SoC devices.
> >
> > Signed-off-by: Fabrizio Castro <fabrizio.castro@bp.renesas.com>
> > Reviewed-by: Chris Paterson <Chris.Paterson2@renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
> > ---
> > Hello Simon,
> >
> > I think it would make more sense if this patch went through you as it
> > sits on series:
> > https://lkml.org/lkml/2019/5/9/941
> >
> > Do you think that's doable?
>
> That seems reasonable to me.
>
> Dave are you happy with me taking this, and 2/6, through
> the renesas tree?
As the previous change to this file was acked by Dave, and went in through
the Renesas tree, have I applied this patch and patch 2/6, and queued
it for v5.4.
Thanks!
> > Documentation/devicetree/bindings/net/can/rcar_canfd.txt | 9 +++++----
> > 1 file changed, 5 insertions(+), 4 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/net/can/rcar_canfd.txt b/Documentation/devicetree/bindings/net/can/rcar_canfd.txt
> > index 32f051f..00afaff 100644
> > --- a/Documentation/devicetree/bindings/net/can/rcar_canfd.txt
> > +++ b/Documentation/devicetree/bindings/net/can/rcar_canfd.txt
> > @@ -4,6 +4,7 @@ Renesas R-Car CAN FD controller Device Tree Bindings
> > Required properties:
> > - compatible: Must contain one or more of the following:
> > - "renesas,rcar-gen3-canfd" for R-Car Gen3 and RZ/G2 compatible controllers.
> > + - "renesas,r8a774a1-canfd" for R8A774A1 (RZ/G2M) compatible controller.
> > - "renesas,r8a774c0-canfd" for R8A774C0 (RZ/G2E) compatible controller.
> > - "renesas,r8a7795-canfd" for R8A7795 (R-Car H3) compatible controller.
> > - "renesas,r8a7796-canfd" for R8A7796 (R-Car M3-W) compatible controller.
> > @@ -32,10 +33,10 @@ enable/disable the respective channel.
> > Required properties for "renesas,r8a774c0-canfd", "renesas,r8a7795-canfd",
> > "renesas,r8a7796-canfd", "renesas,r8a77965-canfd", and "renesas,r8a77990-canfd"
> > compatible:
> > -In R8A774C0, R8A7795, R8A7796, R8A77965, and R8A77990 SoCs, canfd clock is a
> > -div6 clock and can be used by both CAN and CAN FD controller at the same time.
> > -It needs to be scaled to maximum frequency if any of these controllers use it.
> > -This is done using the below properties:
> > +In R8A774A1, R8A774C0, R8A7795, R8A7796, R8A77965, and R8A77990 SoCs, canfd
> > +clock is a div6 clock and can be used by both CAN and CAN FD controller at the
> > +same time. It needs to be scaled to maximum frequency if any of these
> > +controllers use it. This is done using the below properties:
> >
> > - assigned-clocks: phandle of canfd clock.
> > - assigned-clock-rates: maximum frequency of this clock.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply
* [PATCH] ath10k: work around uninitialized vht_pfr variable
From: Arnd Bergmann @ 2019-07-08 12:50 UTC (permalink / raw)
To: Kalle Valo
Cc: Arnd Bergmann, Miaoqing Pan, David S. Miller, Rakesh Pillai,
Brian Norris, Balaji Pothunoori, Wen Gong, Pradeep kumar Chitrapu,
Sriram R, ath10k, linux-wireless, netdev, linux-kernel,
clang-built-linux
As clang points out, the vht_pfr is assigned to a struct member
without being initialized in one case:
drivers/net/wireless/ath/ath10k/mac.c:7528:7: error: variable 'vht_pfr' is used uninitialized whenever 'if' condition
is false [-Werror,-Wsometimes-uninitialized]
if (!ath10k_mac_can_set_bitrate_mask(ar, band, mask,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath10k/mac.c:7551:20: note: uninitialized use occurs here
arvif->vht_pfr = vht_pfr;
^~~~~~~
drivers/net/wireless/ath/ath10k/mac.c:7528:3: note: remove the 'if' if its condition is always true
if (!ath10k_mac_can_set_bitrate_mask(ar, band, mask,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath10k/mac.c:7483:12: note: initialize the variable 'vht_pfr' to silence this warning
u8 vht_pfr;
Add an explicit but probably incorrect initialization here.
I suspect we want a better fix here, but chose this approach to
illustrate the issue.
Fixes: 8b97b055dc9d ("ath10k: fix failure to set multiple fixed rate")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
drivers/net/wireless/ath/ath10k/mac.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index e43a566eef77..0606416dc971 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -7541,6 +7541,8 @@ static int ath10k_mac_op_set_bitrate_mask(struct ieee80211_hw *hw,
&vht_nss,
true);
update_bitrate_mask = false;
+ } else {
+ vht_pfr = 0;
}
mutex_lock(&ar->conf_mutex);
--
2.20.0
^ permalink raw reply related
* [PATCH] [net-next] macb: fix build warning for !CONFIG_OF
From: Arnd Bergmann @ 2019-07-08 12:48 UTC (permalink / raw)
To: Nicolas Ferre, David S. Miller, Palmer Dabbelt, Paul Walmsley
Cc: Arnd Bergmann, Yash Shah, Harini Katakam, Claudiu Beznea, netdev,
linux-kernel, linux-riscv
When CONFIG_OF is disabled, we get a harmless warning about the
newly added variable:
drivers/net/ethernet/cadence/macb_main.c:48:39: error: 'mgmt' defined but not used [-Werror=unused-variable]
static struct sifive_fu540_macb_mgmt *mgmt;
Move the variable closer to its use inside of the #ifdef.
Fixes: c218ad559020 ("macb: Add support for SiFive FU540-C000")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
drivers/net/ethernet/cadence/macb_main.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
index a27d32f69de9..5ca17e62dc3e 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
@@ -45,8 +45,6 @@ struct sifive_fu540_macb_mgmt {
struct clk_hw hw;
};
-static struct sifive_fu540_macb_mgmt *mgmt;
-
#define MACB_RX_BUFFER_SIZE 128
#define RX_BUFFER_MULTIPLE 64 /* bytes */
@@ -3628,6 +3626,8 @@ static int macb_init(struct platform_device *pdev)
/* max number of receive buffers */
#define AT91ETHER_MAX_RX_DESCR 9
+static struct sifive_fu540_macb_mgmt *mgmt;
+
/* Initialize and start the Receiver and Transmit subsystems */
static int at91ether_start(struct net_device *dev)
{
--
2.20.0
^ permalink raw reply related
* [PATCH] [RFC] Revert "bpf: Fix ORC unwinding in non-JIT BPF code"
From: Arnd Bergmann @ 2019-07-08 12:45 UTC (permalink / raw)
To: Alexei Starovoitov, Daniel Borkmann
Cc: Josh Poimboeuf, Arnd Bergmann, Martin KaFai Lau, netdev, bpf,
linux-kernel
Apparently this was a bit premature, at least I still get this
warning with gcc-8.1:
kernel/bpf/core.o: warning: objtool: ___bpf_prog_run()+0x44d2: sibling call from callable instruction with modified stack frame
This reverts commit b22cf36c189f31883ad0238a69ccf82aa1f3b16b.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
kernel/bpf/core.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c
index 7e98f36a14e2..16079550db6d 100644
--- a/kernel/bpf/core.c
+++ b/kernel/bpf/core.c
@@ -1299,7 +1299,7 @@ static u64 ___bpf_prog_run(u64 *regs, const struct bpf_insn *insn, u64 *stack)
{
#define BPF_INSN_2_LBL(x, y) [BPF_##x | BPF_##y] = &&x##_##y
#define BPF_INSN_3_LBL(x, y, z) [BPF_##x | BPF_##y | BPF_##z] = &&x##_##y##_##z
- static const void * const jumptable[256] __annotate_jump_table = {
+ static const void *jumptable[256] = {
[0 ... 255] = &&default_label,
/* Now overwrite non-defaults ... */
BPF_INSN_MAP(BPF_INSN_2_LBL, BPF_INSN_3_LBL),
@@ -1558,6 +1558,7 @@ static u64 ___bpf_prog_run(u64 *regs, const struct bpf_insn *insn, u64 *stack)
BUG_ON(1);
return 0;
}
+STACK_FRAME_NON_STANDARD(___bpf_prog_run); /* jump table */
#define PROG_NAME(stack_size) __bpf_prog_run##stack_size
#define DEFINE_BPF_PROG_RUN(stack_size) \
--
2.20.0
^ permalink raw reply related
* [PATCH] [net-next] gve: fix unused variable/label warnings
From: Arnd Bergmann @ 2019-07-08 12:43 UTC (permalink / raw)
To: Catherine Sullivan, David S. Miller
Cc: Arnd Bergmann, Sagi Shahar, Jon Olson, Willem de Bruijn,
Luigi Rizzo, netdev, linux-kernel
On unusual page sizes, we get harmless warnings:
drivers/net/ethernet/google/gve/gve_rx.c:283:6: error: unused variable 'pagecount' [-Werror,-Wunused-variable]
drivers/net/ethernet/google/gve/gve_rx.c:336:1: error: unused label 'have_skb' [-Werror,-Wunused-label]
Change the preprocessor #if to regular if() to avoid this.
Fixes: f5cedc84a30d ("gve: Add transmit and receive support")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
drivers/net/ethernet/google/gve/gve_rx.c | 66 ++++++++++++------------
1 file changed, 33 insertions(+), 33 deletions(-)
diff --git a/drivers/net/ethernet/google/gve/gve_rx.c b/drivers/net/ethernet/google/gve/gve_rx.c
index 84e0ecce14c4..c1aeabd1c594 100644
--- a/drivers/net/ethernet/google/gve/gve_rx.c
+++ b/drivers/net/ethernet/google/gve/gve_rx.c
@@ -297,41 +297,41 @@ static bool gve_rx(struct gve_rx_ring *rx, struct gve_rx_desc *rx_desc,
* it so that we can return it to the device.
*/
-#if PAGE_SIZE == 4096
- if (len <= priv->rx_copybreak) {
- /* Just copy small packets */
- skb = gve_rx_copy(dev, napi, page_info, len);
- goto have_skb;
- }
- if (unlikely(!gve_can_recycle_pages(dev))) {
- skb = gve_rx_copy(dev, napi, page_info, len);
- goto have_skb;
- }
- pagecount = page_count(page_info->page);
- if (pagecount == 1) {
- /* No part of this page is used by any SKBs; we attach
- * the page fragment to a new SKB and pass it up the
- * stack.
- */
- skb = gve_rx_add_frags(dev, napi, page_info, len);
- if (!skb)
- return true;
- /* Make sure the kernel stack can't release the page */
- get_page(page_info->page);
- /* "flip" to other packet buffer on this page */
- gve_rx_flip_buff(page_info, &rx->data.data_ring[idx]);
- } else if (pagecount >= 2) {
- /* We have previously passed the other half of this
- * page up the stack, but it has not yet been freed.
- */
- skb = gve_rx_copy(dev, napi, page_info, len);
+ if (PAGE_SIZE == 4096) {
+ if (len <= priv->rx_copybreak) {
+ /* Just copy small packets */
+ skb = gve_rx_copy(dev, napi, page_info, len);
+ goto have_skb;
+ }
+ if (unlikely(!gve_can_recycle_pages(dev))) {
+ skb = gve_rx_copy(dev, napi, page_info, len);
+ goto have_skb;
+ }
+ pagecount = page_count(page_info->page);
+ if (pagecount == 1) {
+ /* No part of this page is used by any SKBs; we attach
+ * the page fragment to a new SKB and pass it up the
+ * stack.
+ */
+ skb = gve_rx_add_frags(dev, napi, page_info, len);
+ if (!skb)
+ return true;
+ /* Make sure the kernel stack can't release the page */
+ get_page(page_info->page);
+ /* "flip" to other packet buffer on this page */
+ gve_rx_flip_buff(page_info, &rx->data.data_ring[idx]);
+ } else if (pagecount >= 2) {
+ /* We have previously passed the other half of this
+ * page up the stack, but it has not yet been freed.
+ */
+ skb = gve_rx_copy(dev, napi, page_info, len);
+ } else {
+ WARN(pagecount < 1, "Pagecount should never be < 1");
+ return false;
+ }
} else {
- WARN(pagecount < 1, "Pagecount should never be < 1");
- return false;
+ skb = gve_rx_copy(dev, napi, page_info, len);
}
-#else
- skb = gve_rx_copy(dev, napi, page_info, len);
-#endif
have_skb:
/* We didn't manage to allocate an skb but we haven't had any
--
2.20.0
^ permalink raw reply related
* Re: [PATCH net-next 08/16] net/mlx5e: Extend tx diagnose function
From: Jiri Pirko @ 2019-07-08 12:43 UTC (permalink / raw)
To: Tariq Toukan
Cc: David S. Miller, netdev, Eran Ben Elisha, ayal, jiri,
Saeed Mahameed, moshe
In-Reply-To: <1562500388-16847-9-git-send-email-tariqt@mellanox.com>
Sun, Jul 07, 2019 at 01:53:00PM CEST, tariqt@mellanox.com wrote:
>From: Aya Levin <ayal@mellanox.com>
>
>The following patches in the set enhance the diagnostics info of tx
>reporter. Therefore, it is better to pass a pointer to the SQ for
>further data extraction.
>
>Signed-off-by: Aya Levin <ayal@mellanox.com>
>Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
^ permalink raw reply
* Re: [PATCH net-next 07/16] net/mlx5e: Generalize tx reporter's functionality
From: Jiri Pirko @ 2019-07-08 12:42 UTC (permalink / raw)
To: Tariq Toukan
Cc: David S. Miller, netdev, Eran Ben Elisha, ayal, jiri,
Saeed Mahameed, moshe
In-Reply-To: <1562500388-16847-8-git-send-email-tariqt@mellanox.com>
Sun, Jul 07, 2019 at 01:52:59PM CEST, tariqt@mellanox.com wrote:
>From: Aya Levin <ayal@mellanox.com>
>
>Prepare for code sharing with rx reporter, which is added in the
>following patches in the set. Introduce a generic error_ctx for
>agnostic recovery despatch.
>
>Signed-off-by: Aya Levin <ayal@mellanox.com>
>Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
>---
> drivers/net/ethernet/mellanox/mlx5/core/Makefile | 5 +-
> .../net/ethernet/mellanox/mlx5/core/en/health.c | 82 ++++++++++++++
> .../net/ethernet/mellanox/mlx5/core/en/health.h | 15 ++-
> .../ethernet/mellanox/mlx5/core/en/reporter_tx.c | 126 ++++-----------------
> 4 files changed, 124 insertions(+), 104 deletions(-)
> create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/health.c
>
>diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Makefile b/drivers/net/ethernet/mellanox/mlx5/core/Makefile
>index 57d2cc666fe3..23d566a45a30 100644
>--- a/drivers/net/ethernet/mellanox/mlx5/core/Makefile
>+++ b/drivers/net/ethernet/mellanox/mlx5/core/Makefile
>@@ -23,8 +23,9 @@ mlx5_core-y := main.o cmd.o debugfs.o fw.o eq.o uar.o pagealloc.o \
> #
> mlx5_core-$(CONFIG_MLX5_CORE_EN) += en_main.o en_common.o en_fs.o en_ethtool.o \
> en_tx.o en_rx.o en_dim.o en_txrx.o en/xdp.o en_stats.o \
>- en_selftest.o en/port.o en/monitor_stats.o en/reporter_tx.o \
>- en/params.o en/xsk/umem.o en/xsk/setup.o en/xsk/rx.o en/xsk/tx.o
>+ en_selftest.o en/port.o en/monitor_stats.o en/health.o \
>+ en/reporter_tx.o en/params.o en/xsk/umem.o en/xsk/setup.o \
>+ en/xsk/rx.o en/xsk/tx.o
>
> #
> # Netdev extra
>diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/health.c b/drivers/net/ethernet/mellanox/mlx5/core/en/health.c
>new file mode 100644
>index 000000000000..60166e5432ae
>--- /dev/null
>+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/health.c
>@@ -0,0 +1,82 @@
>+// SPDX-License-Identifier: GPL-2.0
>+// Copyright (c) 2019 Mellanox Technologies.
>+
>+#include "health.h"
>+#include "lib/eq.h"
>+
>+int mlx5e_health_sq_to_ready(struct mlx5e_channel *channel, u32 sqn)
>+{
>+ struct mlx5_core_dev *mdev = channel->mdev;
>+ struct net_device *dev = channel->netdev;
>+ struct mlx5e_modify_sq_param msp = {0};
>+ int err;
>+
>+ msp.curr_state = MLX5_SQC_STATE_ERR;
>+ msp.next_state = MLX5_SQC_STATE_RST;
>+
>+ err = mlx5e_modify_sq(mdev, sqn, &msp);
>+ if (err) {
>+ netdev_err(dev, "Failed to move sq 0x%x to reset\n", sqn);
>+ return err;
>+ }
>+
>+ memset(&msp, 0, sizeof(msp));
>+ msp.curr_state = MLX5_SQC_STATE_RST;
>+ msp.next_state = MLX5_SQC_STATE_RDY;
>+
>+ err = mlx5e_modify_sq(mdev, sqn, &msp);
>+ if (err) {
>+ netdev_err(dev, "Failed to move sq 0x%x to ready\n", sqn);
>+ return err;
>+ }
>+
>+ return 0;
>+}
>+
>+int mlx5e_health_recover_channels(struct mlx5e_priv *priv)
>+{
>+ int err = 0;
>+
>+ rtnl_lock();
>+ mutex_lock(&priv->state_lock);
>+
>+ if (!test_bit(MLX5E_STATE_OPENED, &priv->state))
>+ goto out;
>+
>+ err = mlx5e_safe_reopen_channels(priv);
>+
>+out:
>+ mutex_unlock(&priv->state_lock);
>+ rtnl_unlock();
>+
>+ return err;
>+}
>+
>+int mlx5e_health_channel_eq_recover(struct mlx5_eq_comp *eq, struct mlx5e_channel *channel)
>+{
>+ u32 eqe_count;
>+
>+ netdev_err(channel->netdev, "EQ 0x%x: Cons = 0x%x, irqn = 0x%x\n",
>+ eq->core.eqn, eq->core.cons_index, eq->core.irqn);
>+
>+ eqe_count = mlx5_eq_poll_irq_disabled(eq);
>+ if (!eqe_count)
>+ return -EIO;
>+
>+ netdev_err(channel->netdev, "Recovered %d eqes on EQ 0x%x\n",
>+ eqe_count, eq->core.eqn);
>+
>+ channel->stats->eq_rearm++;
>+ return 0;
>+}
>+
>+int mlx5e_health_report(struct mlx5e_priv *priv,
>+ struct devlink_health_reporter *reporter, char *err_str,
>+ struct mlx5e_err_ctx *err_ctx)
>+{
>+ if (!reporter) {
>+ netdev_err(priv->netdev, err_str);
>+ return err_ctx->recover(&err_ctx->ctx);
>+ }
>+ return devlink_health_report(reporter, err_str, err_ctx);
>+}
>diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/health.h b/drivers/net/ethernet/mellanox/mlx5/core/en/health.h
>index e3a3bcee89e7..960aa18c425d 100644
>--- a/drivers/net/ethernet/mellanox/mlx5/core/en/health.h
>+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/health.h
>@@ -4,7 +4,6 @@
> #ifndef __MLX5E_EN_REPORTER_H
> #define __MLX5E_EN_REPORTER_H
>
>-#include <linux/mlx5/driver.h>
How is this related to the rest of the patch?
> #include "en.h"
>
> int mlx5e_reporter_tx_create(struct mlx5e_priv *priv);
>@@ -12,4 +11,18 @@
> void mlx5e_reporter_tx_err_cqe(struct mlx5e_txqsq *sq);
> int mlx5e_reporter_tx_timeout(struct mlx5e_txqsq *sq);
>
>+#define MLX5E_REPORTER_PER_Q_MAX_LEN 256
>+
>+struct mlx5e_err_ctx {
>+ int (*recover)(void *ctx);
>+ void *ctx;
>+};
>+
>+int mlx5e_health_sq_to_ready(struct mlx5e_channel *channel, u32 sqn);
>+int mlx5e_health_channel_eq_recover(struct mlx5_eq_comp *eq, struct mlx5e_channel *channel);
>+int mlx5e_health_recover_channels(struct mlx5e_priv *priv);
>+int mlx5e_health_report(struct mlx5e_priv *priv,
>+ struct devlink_health_reporter *reporter, char *err_str,
>+ struct mlx5e_err_ctx *err_ctx);
>+
> #endif
>diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c b/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c
>index d5ecfcfe5d52..3e03a1ac8e5a 100644
>--- a/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c
>+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c
>@@ -2,14 +2,6 @@
> /* Copyright (c) 2019 Mellanox Technologies. */
>
> #include "health.h"
>-#include "lib/eq.h"
>-
>-#define MLX5E_TX_REPORTER_PER_SQ_MAX_LEN 256
>-
>-struct mlx5e_tx_err_ctx {
>- int (*recover)(struct mlx5e_txqsq *sq);
>- struct mlx5e_txqsq *sq;
>-};
>
> static int mlx5e_wait_for_sq_flush(struct mlx5e_txqsq *sq)
> {
>@@ -39,37 +31,9 @@ static void mlx5e_reset_txqsq_cc_pc(struct mlx5e_txqsq *sq)
> sq->pc = 0;
> }
>
>-static int mlx5e_sq_to_ready(struct mlx5e_txqsq *sq, int curr_state)
>-{
>- struct mlx5_core_dev *mdev = sq->channel->mdev;
>- struct net_device *dev = sq->channel->netdev;
>- struct mlx5e_modify_sq_param msp = {0};
>- int err;
>-
>- msp.curr_state = curr_state;
>- msp.next_state = MLX5_SQC_STATE_RST;
>-
>- err = mlx5e_modify_sq(mdev, sq->sqn, &msp);
>- if (err) {
>- netdev_err(dev, "Failed to move sq 0x%x to reset\n", sq->sqn);
>- return err;
>- }
>-
>- memset(&msp, 0, sizeof(msp));
>- msp.curr_state = MLX5_SQC_STATE_RST;
>- msp.next_state = MLX5_SQC_STATE_RDY;
>-
>- err = mlx5e_modify_sq(mdev, sq->sqn, &msp);
>- if (err) {
>- netdev_err(dev, "Failed to move sq 0x%x to ready\n", sq->sqn);
>- return err;
>- }
>-
>- return 0;
>-}
>-
>-static int mlx5e_tx_reporter_err_cqe_recover(struct mlx5e_txqsq *sq)
>+static int mlx5e_tx_reporter_err_cqe_recover(void *ctx)
> {
>+ struct mlx5e_txqsq *sq = (struct mlx5e_txqsq *)ctx;
No need to cast from void *
> struct mlx5_core_dev *mdev = sq->channel->mdev;
> struct net_device *dev = sq->channel->netdev;
> u8 state;
>@@ -101,7 +65,7 @@ static int mlx5e_tx_reporter_err_cqe_recover(struct mlx5e_txqsq *sq)
> * pending WQEs. SQ can safely reset the SQ.
> */
>
>- err = mlx5e_sq_to_ready(sq, state);
>+ err = mlx5e_health_sq_to_ready(sq->channel, sq->sqn);
> if (err)
> return err;
>
>@@ -112,104 +76,64 @@ static int mlx5e_tx_reporter_err_cqe_recover(struct mlx5e_txqsq *sq)
> return 0;
> }
>
>-static int mlx5_tx_health_report(struct devlink_health_reporter *tx_reporter,
>- char *err_str,
>- struct mlx5e_tx_err_ctx *err_ctx)
>-{
>- if (!tx_reporter) {
>- netdev_err(err_ctx->sq->channel->netdev, err_str);
>- return err_ctx->recover(err_ctx->sq);
>- }
>-
>- return devlink_health_report(tx_reporter, err_str, err_ctx);
>-}
>-
> void mlx5e_reporter_tx_err_cqe(struct mlx5e_txqsq *sq)
> {
>- char err_str[MLX5E_TX_REPORTER_PER_SQ_MAX_LEN];
>- struct mlx5e_tx_err_ctx err_ctx = {0};
>+ struct mlx5e_priv *priv = sq->channel->priv;
>+ char err_str[MLX5E_REPORTER_PER_Q_MAX_LEN];
>+ struct mlx5e_err_ctx err_ctx = {0};
>
>- err_ctx.sq = sq;
>- err_ctx.recover = mlx5e_tx_reporter_err_cqe_recover;
>+ err_ctx.ctx = sq;
>+ err_ctx.recover = mlx5e_tx_reporter_err_cqe_recover;
> sprintf(err_str, "ERR CQE on SQ: 0x%x", sq->sqn);
>
>- mlx5_tx_health_report(sq->channel->priv->tx_reporter, err_str,
>- &err_ctx);
>+ mlx5e_health_report(priv, priv->tx_reporter, err_str, &err_ctx);
> }
>
>-static int mlx5e_tx_reporter_timeout_recover(struct mlx5e_txqsq *sq)
>+static int mlx5e_tx_reporter_timeout_recover(void *ctx)
> {
>+ struct mlx5e_txqsq *sq = (struct mlx5e_txqsq *)ctx;
No need to cast from void *
> struct mlx5_eq_comp *eq = sq->cq.mcq.eq;
>- u32 eqe_count;
>- int ret;
>-
>- netdev_err(sq->channel->netdev, "EQ 0x%x: Cons = 0x%x, irqn = 0x%x\n",
>- eq->core.eqn, eq->core.cons_index, eq->core.irqn);
>+ int err;
>
>- eqe_count = mlx5_eq_poll_irq_disabled(eq);
>- ret = eqe_count ? false : true;
>- if (!eqe_count) {
>+ err = mlx5e_health_channel_eq_recover(eq, sq->channel);
>+ if (err)
> clear_bit(MLX5E_SQ_STATE_ENABLED, &sq->state);
>- return ret;
>- }
>
>- netdev_err(sq->channel->netdev, "Recover %d eqes on EQ 0x%x\n",
>- eqe_count, eq->core.eqn);
>- sq->channel->stats->eq_rearm++;
>- return ret;
>+ return err;
> }
>
> int mlx5e_reporter_tx_timeout(struct mlx5e_txqsq *sq)
> {
>- char err_str[MLX5E_TX_REPORTER_PER_SQ_MAX_LEN];
>- struct mlx5e_tx_err_ctx err_ctx;
>+ struct mlx5e_priv *priv = sq->channel->priv;
>+ char err_str[MLX5E_REPORTER_PER_Q_MAX_LEN];
>+ struct mlx5e_err_ctx err_ctx;
>
>- err_ctx.sq = sq;
>- err_ctx.recover = mlx5e_tx_reporter_timeout_recover;
>+ err_ctx.ctx = sq;
>+ err_ctx.recover = mlx5e_tx_reporter_timeout_recover;
> sprintf(err_str,
> "TX timeout on queue: %d, SQ: 0x%x, CQ: 0x%x, SQ Cons: 0x%x SQ Prod: 0x%x, usecs since last trans: %u\n",
> sq->channel->ix, sq->sqn, sq->cq.mcq.cqn, sq->cc, sq->pc,
> jiffies_to_usecs(jiffies - sq->txq->trans_start));
>
>- return mlx5_tx_health_report(sq->channel->priv->tx_reporter, err_str,
>- &err_ctx);
>+ return mlx5e_health_report(priv, priv->tx_reporter, err_str, &err_ctx);
> }
>
> /* state lock cannot be grabbed within this function.
> * It can cause a dead lock or a read-after-free.
> */
>-static int mlx5e_tx_reporter_recover_from_ctx(struct mlx5e_tx_err_ctx *err_ctx)
>+static int mlx5e_tx_reporter_recover_from_ctx(struct mlx5e_err_ctx *err_ctx)
> {
>- return err_ctx->recover(err_ctx->sq);
>-}
>-
>-static int mlx5e_tx_reporter_recover_all(struct mlx5e_priv *priv)
>-{
>- int err = 0;
>-
>- rtnl_lock();
>- mutex_lock(&priv->state_lock);
>-
>- if (!test_bit(MLX5E_STATE_OPENED, &priv->state))
>- goto out;
>-
>- err = mlx5e_safe_reopen_channels(priv);
>-
>-out:
>- mutex_unlock(&priv->state_lock);
>- rtnl_unlock();
>-
>- return err;
>+ return err_ctx->recover(err_ctx->ctx);
> }
>
> static int mlx5e_tx_reporter_recover(struct devlink_health_reporter *reporter,
> void *context)
> {
> struct mlx5e_priv *priv = devlink_health_reporter_priv(reporter);
>- struct mlx5e_tx_err_ctx *err_ctx = context;
>+ struct mlx5e_err_ctx *err_ctx = context;
>
> return err_ctx ? mlx5e_tx_reporter_recover_from_ctx(err_ctx) :
>- mlx5e_tx_reporter_recover_all(priv);
>+ mlx5e_health_recover_channels(priv);
> }
>
> static int
>--
>1.8.3.1
>
^ permalink raw reply
* [PATCH 14/14] net: phy: Make use of linkmode_mod_bit helper
From: Fuqian Huang @ 2019-07-08 12:34 UTC (permalink / raw)
Cc: Andrew Lunn, Florian Fainelli, Heiner Kallweit, David S . Miller,
netdev, linux-kernel, Fuqian Huang
linkmode_mod_bit is introduced as a helper function to set/clear
bits in a linkmode.
Replace the if else code structure with a call to the helper
linkmode_mod_bit.
Signed-off-by: Fuqian Huang <huangfq.daxian@gmail.com>
---
drivers/net/phy/phy.c | 16 ++++------------
1 file changed, 4 insertions(+), 12 deletions(-)
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index e8885429293a..75b8e5aff747 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -297,12 +297,8 @@ int phy_ethtool_sset(struct phy_device *phydev, struct ethtool_cmd *cmd)
linkmode_copy(phydev->advertising, advertising);
- if (AUTONEG_ENABLE == cmd->autoneg)
- linkmode_set_bit(ETHTOOL_LINK_MODE_Autoneg_BIT,
- phydev->advertising);
- else
- linkmode_clear_bit(ETHTOOL_LINK_MODE_Autoneg_BIT,
- phydev->advertising);
+ linkmode_mod_bit(ETHTOOL_LINK_MODE_Autoneg_BIT,
+ phydev->advertising, AUTONEG_ENABLE == cmd->autoneg);
phydev->duplex = cmd->duplex;
@@ -352,12 +348,8 @@ int phy_ethtool_ksettings_set(struct phy_device *phydev,
linkmode_copy(phydev->advertising, advertising);
- if (autoneg == AUTONEG_ENABLE)
- linkmode_set_bit(ETHTOOL_LINK_MODE_Autoneg_BIT,
- phydev->advertising);
- else
- linkmode_clear_bit(ETHTOOL_LINK_MODE_Autoneg_BIT,
- phydev->advertising);
+ linkmode_mod_bit(ETHTOOL_LINK_MODE_Autoneg_BIT,
+ phydev->advertising, autoneg == AUTONEG_ENABLE);
phydev->duplex = duplex;
--
2.11.0
^ permalink raw reply related
* [PATCH net] net: stmmac: Re-work the queue selection for TSO packets
From: Jose Abreu @ 2019-07-08 12:26 UTC (permalink / raw)
To: netdev
Cc: Joao Pinto, Jose Abreu, Giuseppe Cavallaro, Alexandre Torgue,
David S. Miller, Maxime Coquelin, linux-stm32, linux-arm-kernel,
linux-kernel, Ben Hutchings
Ben Hutchings says:
"This is the wrong place to change the queue mapping.
stmmac_xmit() is called with a specific TX queue locked,
and accessing a different TX queue results in a data race
for all of that queue's state.
I think this commit should be reverted upstream and in all
stable branches. Instead, the driver should implement the
ndo_select_queue operation and override the queue mapping there."
Fixes: c5acdbee22a1 ("net: stmmac: Send TSO packets always from Queue 0")
Suggested-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Jose Abreu <joabreu@synopsys.com>
---
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Cc: Jose Abreu <joabreu@synopsys.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: netdev@vger.kernel.org
Cc: linux-stm32@st-md-mailman.stormreply.com
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Cc: Ben Hutchings <ben@decadent.org.uk>
---
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 28 +++++++++++++++--------
1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 06358fe5b245..11b6feb33b54 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -3045,17 +3045,8 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)
/* Manage oversized TCP frames for GMAC4 device */
if (skb_is_gso(skb) && priv->tso) {
- if (skb_shinfo(skb)->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6)) {
- /*
- * There is no way to determine the number of TSO
- * capable Queues. Let's use always the Queue 0
- * because if TSO is supported then at least this
- * one will be capable.
- */
- skb_set_queue_mapping(skb, 0);
-
+ if (skb_shinfo(skb)->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6))
return stmmac_tso_xmit(skb, dev);
- }
}
if (unlikely(stmmac_tx_avail(priv, queue) < nfrags + 1)) {
@@ -3872,6 +3863,22 @@ static int stmmac_setup_tc(struct net_device *ndev, enum tc_setup_type type,
}
}
+static u16 stmmac_select_queue(struct net_device *dev, struct sk_buff *skb,
+ struct net_device *sb_dev)
+{
+ if (skb_shinfo(skb)->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6)) {
+ /*
+ * There is no way to determine the number of TSO
+ * capable Queues. Let's use always the Queue 0
+ * because if TSO is supported then at least this
+ * one will be capable.
+ */
+ return 0;
+ }
+
+ return netdev_pick_tx(dev, skb, NULL) % dev->real_num_tx_queues;
+}
+
static int stmmac_set_mac_address(struct net_device *ndev, void *addr)
{
struct stmmac_priv *priv = netdev_priv(ndev);
@@ -4088,6 +4095,7 @@ static const struct net_device_ops stmmac_netdev_ops = {
.ndo_tx_timeout = stmmac_tx_timeout,
.ndo_do_ioctl = stmmac_ioctl,
.ndo_setup_tc = stmmac_setup_tc,
+ .ndo_select_queue = stmmac_select_queue,
#ifdef CONFIG_NET_POLL_CONTROLLER
.ndo_poll_controller = stmmac_poll_controller,
#endif
--
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