* Re: [PATCH iproute2 3/3] bridge: request vlans along with link information
From: Roopa Prabhu @ 2017-09-10 5:26 UTC (permalink / raw)
To: Jamal Hadi Salim
Cc: Roman Mashak, stephen@networkplumber.org, netdev@vger.kernel.org
In-Reply-To: <5706e1ba-6b85-4f32-a858-b5d87b17eb51@mojatatu.com>
On Sat, Sep 9, 2017 at 10:23 AM, Jamal Hadi Salim <jhs@mojatatu.com> wrote:
> On 17-09-09 12:24 PM, Roopa Prabhu wrote:
>>
>> On Fri, Sep 8, 2017 at 2:52 PM, Roman Mashak <mrv@mojatatu.com> wrote:
>>>
>>> Signed-off-by: Roman Mashak <mrv@mojatatu.com>
>>> ---
>>> bridge/link.c | 16 +++++++++++++---
>>> 1 file changed, 13 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/bridge/link.c b/bridge/link.c
>>> index 60200f1..9e4206f 100644
>>> --- a/bridge/link.c
>>> +++ b/bridge/link.c
>>> @@ -461,9 +461,19 @@ static int brlink_show(int argc, char **argv)
>>> }
>>> }
>>>
>>> - if (rtnl_wilddump_request(&rth, PF_BRIDGE, RTM_GETLINK) < 0) {
>>> - perror("Cannon send dump request");
>>> - exit(1);
>>> + if (show_details) {
>>> + if (rtnl_wilddump_req_filter(&rth, PF_BRIDGE,
>>> RTM_GETLINK,
>>> + (compress_vlans ?
>>> +
>>> RTEXT_FILTER_BRVLAN_COMPRESSED :
>>> + RTEXT_FILTER_BRVLAN)) < 0)
>>> {
>>> + perror("Cannon send dump request");
>>> + exit(1);
>>> + }
>>
>>
>> vlan information is already available with `bridge vlan show`. any
>> specific reason why you want it in
>> the link dump output ?
>>
>>
>>
>> The problem is this might just make the link dump larger and also add
>> too much clutter into the regular link dump output. iproute2 detailed
>> dump is already a bit hard to interpret. And without compression by
>> default, vlan info can just take over the link dump output. It will be
>> hard to look for other link attributes after that :). We deploy with
>> thousands of vlans and without compression even bridge vlan default
>> output is already hard to interpret.
>>
>
> Agree we should be turning on this stuff by default. i.e default stays
> compressed; otherwise it a huge dump.
>
> Having said that there is a lot of mess with this stuff.
> The bridge link events _already send this IFLA_AF_SPCE info_
> so not much choice there but to print it.
> At minimal we need that part because unfortunately there is no
> vlanfilter event in existence which will send us summaries of just
> vlans added to a port i.e both use XXXLINK.
> In general, the XXXLINK interface with these master devices (bridge,
> bond etc) continues to get messy. Recently started seeing events with
> devices claiming to be of KIND_slave etc on the bridge and bond devices;
yes, its a bit messy and redundant.
> yet at the same time my wireless card events are also showing up on the
> bridge link even though it is not enslaved there..
that is strange. It should not.
^ permalink raw reply
* Re: [PATCH iproute2 3/3] bridge: request vlans along with link information
From: Roopa Prabhu @ 2017-09-10 5:28 UTC (permalink / raw)
To: Nikolay Aleksandrov
Cc: Jamal Hadi Salim, Roman Mashak, stephen@networkplumber.org,
netdev@vger.kernel.org
In-Reply-To: <1bde7c3e-1571-a2a2-3308-b42906fbb3d2@cumulusnetworks.com>
On Sat, Sep 9, 2017 at 11:15 AM, Nikolay Aleksandrov
<nikolay@cumulusnetworks.com> wrote:
> On 09/09/17 20:23, Jamal Hadi Salim wrote:
>> On 17-09-09 12:24 PM, Roopa Prabhu wrote:
>>> On Fri, Sep 8, 2017 at 2:52 PM, Roman Mashak <mrv@mojatatu.com> wrote:
>>>> Signed-off-by: Roman Mashak <mrv@mojatatu.com>
>>>> ---
>
[snip]
>>>
>>> vlan information is already available with `bridge vlan show`. any
>>> specific reason why you want it in
>>> the link dump output ?
>>>
>>>
>>> The problem is this might just make the link dump larger and also add
>>> too much clutter into the regular link dump output. iproute2 detailed
>>> dump is already a bit hard to interpret. And without compression by
>>> default, vlan info can just take over the link dump output. It will be
>>> hard to look for other link attributes after that :). We deploy with
>>> thousands of vlans and without compression even bridge vlan default
>>> output is already hard to interpret.
>>>
>>
>> Agree we should be turning on this stuff by default. i.e default stays
>> compressed; otherwise it a huge dump.
>
> I think this should be dumped with the getlink request only on some additional
> flag. The getlink does not include these by default.
>
>>
>> Having said that there is a lot of mess with this stuff.
>> The bridge link events _already send this IFLA_AF_SPCE info_
>> so not much choice there but to print it.
>
> Right, on NEWLINK per port notification you'll get the compressed vlan info.
>
>> At minimal we need that part because unfortunately there is no
>> vlanfilter event in existence which will send us summaries of just
>> vlans added to a port i.e both use XXXLINK.
>
> But let's either add a new flag or use -compressvlans to print it when monitoring/showing
> link otherwise people who are monitoring only the port flags will start getting lists
> with vlans. Even compressed these can still be quite long and confusing, especially
> when monitoring.
yes agree. It will add too much clutter to the monitor output too.
^ permalink raw reply
* Re: [RFC PATCH] net: Introduce a socket option to enable picking tx queue based on rx queue.
From: Tom Herbert @ 2017-09-10 5:32 UTC (permalink / raw)
To: Sridhar Samudrala; +Cc: Alexander Duyck, Linux Kernel Network Developers
In-Reply-To: <1504222032-6337-1-git-send-email-sridhar.samudrala@intel.com>
On Thu, Aug 31, 2017 at 4:27 PM, Sridhar Samudrala
<sridhar.samudrala@intel.com> wrote:
> This patch introduces a new socket option SO_SYMMETRIC_QUEUES that can be used
> to enable symmetric tx and rx queues on a socket.
>
> This option is specifically useful for epoll based multi threaded workloads
> where each thread handles packets received on a single RX queue . In this model,
> we have noticed that it helps to send the packets on the same TX queue
> corresponding to the queue-pair associated with the RX queue specifically when
> busy poll is enabled with epoll().
>
Please provide more details, test results on exactly how this helps.
Why would this better than than optimized XPS?
Thanks,
Tom
> Two new fields are added to struct sock_common to cache the last rx ifindex and
> the rx queue in the receive path of an SKB. __netdev_pick_tx() returns the cached
> rx queue when this option is enabled and the TX is happening on the same device.
>
> Signed-off-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
> ---
> include/net/request_sock.h | 1 +
> include/net/sock.h | 17 +++++++++++++++++
> include/uapi/asm-generic/socket.h | 2 ++
> net/core/dev.c | 8 +++++++-
> net/core/sock.c | 10 ++++++++++
> net/ipv4/tcp_input.c | 1 +
> net/ipv4/tcp_ipv4.c | 1 +
> net/ipv4/tcp_minisocks.c | 1 +
> 8 files changed, 40 insertions(+), 1 deletion(-)
>
> diff --git a/include/net/request_sock.h b/include/net/request_sock.h
> index 23e2205..c3bc12e 100644
> --- a/include/net/request_sock.h
> +++ b/include/net/request_sock.h
> @@ -100,6 +100,7 @@ static inline struct sock *req_to_sk(struct request_sock *req)
> req_to_sk(req)->sk_prot = sk_listener->sk_prot;
> sk_node_init(&req_to_sk(req)->sk_node);
> sk_tx_queue_clear(req_to_sk(req));
> + req_to_sk(req)->sk_symmetric_queues = sk_listener->sk_symmetric_queues;
> req->saved_syn = NULL;
> refcount_set(&req->rsk_refcnt, 0);
>
> diff --git a/include/net/sock.h b/include/net/sock.h
> index 03a3625..3421809 100644
> --- a/include/net/sock.h
> +++ b/include/net/sock.h
> @@ -138,11 +138,14 @@ void SOCK_DEBUG(const struct sock *sk, const char *msg, ...)
> * @skc_node: main hash linkage for various protocol lookup tables
> * @skc_nulls_node: main hash linkage for TCP/UDP/UDP-Lite protocol
> * @skc_tx_queue_mapping: tx queue number for this connection
> + * @skc_rx_queue_mapping: rx queue number for this connection
> + * @skc_rx_ifindex: rx ifindex for this connection
> * @skc_flags: place holder for sk_flags
> * %SO_LINGER (l_onoff), %SO_BROADCAST, %SO_KEEPALIVE,
> * %SO_OOBINLINE settings, %SO_TIMESTAMPING settings
> * @skc_incoming_cpu: record/match cpu processing incoming packets
> * @skc_refcnt: reference count
> + * @skc_symmetric_queues: symmetric tx/rx queues
> *
> * This is the minimal network layer representation of sockets, the header
> * for struct sock and struct inet_timewait_sock.
> @@ -177,6 +180,7 @@ struct sock_common {
> unsigned char skc_reuseport:1;
> unsigned char skc_ipv6only:1;
> unsigned char skc_net_refcnt:1;
> + unsigned char skc_symmetric_queues:1;
> int skc_bound_dev_if;
> union {
> struct hlist_node skc_bind_node;
> @@ -214,6 +218,8 @@ struct sock_common {
> struct hlist_nulls_node skc_nulls_node;
> };
> int skc_tx_queue_mapping;
> + int skc_rx_queue_mapping;
> + int skc_rx_ifindex;
> union {
> int skc_incoming_cpu;
> u32 skc_rcv_wnd;
> @@ -324,6 +330,8 @@ struct sock {
> #define sk_nulls_node __sk_common.skc_nulls_node
> #define sk_refcnt __sk_common.skc_refcnt
> #define sk_tx_queue_mapping __sk_common.skc_tx_queue_mapping
> +#define sk_rx_queue_mapping __sk_common.skc_rx_queue_mapping
> +#define sk_rx_ifindex __sk_common.skc_rx_ifindex
>
> #define sk_dontcopy_begin __sk_common.skc_dontcopy_begin
> #define sk_dontcopy_end __sk_common.skc_dontcopy_end
> @@ -340,6 +348,7 @@ struct sock {
> #define sk_reuseport __sk_common.skc_reuseport
> #define sk_ipv6only __sk_common.skc_ipv6only
> #define sk_net_refcnt __sk_common.skc_net_refcnt
> +#define sk_symmetric_queues __sk_common.skc_symmetric_queues
> #define sk_bound_dev_if __sk_common.skc_bound_dev_if
> #define sk_bind_node __sk_common.skc_bind_node
> #define sk_prot __sk_common.skc_prot
> @@ -1676,6 +1685,14 @@ static inline int sk_tx_queue_get(const struct sock *sk)
> return sk ? sk->sk_tx_queue_mapping : -1;
> }
>
> +static inline void sk_mark_rx_queue(struct sock *sk, struct sk_buff *skb)
> +{
> + if (sk->sk_symmetric_queues) {
> + sk->sk_rx_ifindex = skb->skb_iif;
> + sk->sk_rx_queue_mapping = skb_get_rx_queue(skb);
> + }
> +}
> +
> static inline void sk_set_socket(struct sock *sk, struct socket *sock)
> {
> sk_tx_queue_clear(sk);
> diff --git a/include/uapi/asm-generic/socket.h b/include/uapi/asm-generic/socket.h
> index e47c9e4..f6b416e 100644
> --- a/include/uapi/asm-generic/socket.h
> +++ b/include/uapi/asm-generic/socket.h
> @@ -106,4 +106,6 @@
>
> #define SO_ZEROCOPY 60
>
> +#define SO_SYMMETRIC_QUEUES 61
> +
> #endif /* __ASM_GENERIC_SOCKET_H */
> diff --git a/net/core/dev.c b/net/core/dev.c
> index 270b547..d96cda8 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -3322,7 +3322,13 @@ static u16 __netdev_pick_tx(struct net_device *dev, struct sk_buff *skb)
>
> if (queue_index < 0 || skb->ooo_okay ||
> queue_index >= dev->real_num_tx_queues) {
> - int new_index = get_xps_queue(dev, skb);
> + int new_index = -1;
> +
> + if (sk && sk->sk_symmetric_queues && dev->ifindex == sk->sk_rx_ifindex)
> + new_index = sk->sk_rx_queue_mapping;
> +
> + if (new_index < 0 || new_index >= dev->real_num_tx_queues)
> + new_index = get_xps_queue(dev, skb);
>
> if (new_index < 0)
> new_index = skb_tx_hash(dev, skb);
> diff --git a/net/core/sock.c b/net/core/sock.c
> index 9b7b6bb..3876cce 100644
> --- a/net/core/sock.c
> +++ b/net/core/sock.c
> @@ -1059,6 +1059,10 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
> sock_valbool_flag(sk, SOCK_ZEROCOPY, valbool);
> break;
>
> + case SO_SYMMETRIC_QUEUES:
> + sk->sk_symmetric_queues = valbool;
> + break;
> +
> default:
> ret = -ENOPROTOOPT;
> break;
> @@ -1391,6 +1395,10 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
> v.val = sock_flag(sk, SOCK_ZEROCOPY);
> break;
>
> + case SO_SYMMETRIC_QUEUES:
> + v.val = sk->sk_symmetric_queues;
> + break;
> +
> default:
> /* We implement the SO_SNDLOWAT etc to not be settable
> * (1003.1g 7).
> @@ -2738,6 +2746,8 @@ void sock_init_data(struct socket *sock, struct sock *sk)
> sk->sk_max_pacing_rate = ~0U;
> sk->sk_pacing_rate = ~0U;
> sk->sk_incoming_cpu = -1;
> + sk->sk_rx_ifindex = -1;
> + sk->sk_rx_queue_mapping = -1;
> /*
> * Before updating sk_refcnt, we must commit prior changes to memory
> * (Documentation/RCU/rculist_nulls.txt for details)
> diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
> index c5d7656..12381e0 100644
> --- a/net/ipv4/tcp_input.c
> +++ b/net/ipv4/tcp_input.c
> @@ -6356,6 +6356,7 @@ int tcp_conn_request(struct request_sock_ops *rsk_ops,
> tcp_rsk(req)->snt_isn = isn;
> tcp_rsk(req)->txhash = net_tx_rndhash();
> tcp_openreq_init_rwin(req, sk, dst);
> + sk_mark_rx_queue(req_to_sk(req), skb);
> if (!want_cookie) {
> tcp_reqsk_record_syn(sk, req, skb);
> fastopen_sk = tcp_try_fastopen(sk, skb, req, &foc);
> diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
> index a63486a..82f9af4 100644
> --- a/net/ipv4/tcp_ipv4.c
> +++ b/net/ipv4/tcp_ipv4.c
> @@ -1450,6 +1450,7 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
>
> sock_rps_save_rxhash(sk, skb);
> sk_mark_napi_id(sk, skb);
> + sk_mark_rx_queue(sk, skb);
> if (dst) {
> if (inet_sk(sk)->rx_dst_ifindex != skb->skb_iif ||
> !dst->ops->check(dst, 0)) {
> diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
> index 188a6f3..2b5efd5 100644
> --- a/net/ipv4/tcp_minisocks.c
> +++ b/net/ipv4/tcp_minisocks.c
> @@ -809,6 +809,7 @@ int tcp_child_process(struct sock *parent, struct sock *child,
>
> /* record NAPI ID of child */
> sk_mark_napi_id(child, skb);
> + sk_mark_rx_queue(child, skb);
>
> tcp_segs_in(tcp_sk(child), skb);
> if (!sock_owned_by_user(child)) {
> --
> 1.8.3.1
>
^ permalink raw reply
* [V3 PATCH net] xdp: implement xdp_redirect_map for generic XDP
From: Jesper Dangaard Brouer @ 2017-09-10 7:47 UTC (permalink / raw)
To: netdev, David S. Miller
Cc: John Fastabend, Andy Gospodarek, Jesper Dangaard Brouer
In-Reply-To: <20170908.205426.624386613610674398.davem@davemloft.net>
Using bpf_redirect_map is allowed for generic XDP programs, but the
appropriate map lookup was never performed in xdp_do_generic_redirect().
Instead the map-index is directly used as the ifindex. For the
xdp_redirect_map sample in SKB-mode '-S', this resulted in trying
sending on ifindex 0 which isn't valid, resulting in getting SKB
packets dropped. Thus, the reported performance numbers are wrong in
commit 24251c264798 ("samples/bpf: add option for native and skb mode
for redirect apps") for the 'xdp_redirect_map -S' case.
Before commit 109980b894e9 ("bpf: don't select potentially stale
ri->map from buggy xdp progs") it could crash the kernel. Like this
commit also check that the map_owner owner is correct before
dereferencing the map pointer. But make sure that this API misusage
can be caught by a tracepoint. Thus, allowing userspace via
tracepoints to detect misbehaving bpf_progs.
Fixes: 6103aa96ec07 ("net: implement XDP_REDIRECT for xdp generic")
Fixes: 24251c264798 ("samples/bpf: add option for native and skb mode for redirect apps")
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
---
include/trace/events/xdp.h | 4 ++--
net/core/filter.c | 38 ++++++++++++++++++++++++++------------
2 files changed, 28 insertions(+), 14 deletions(-)
diff --git a/include/trace/events/xdp.h b/include/trace/events/xdp.h
index 862575ac8da9..4e16c43fba10 100644
--- a/include/trace/events/xdp.h
+++ b/include/trace/events/xdp.h
@@ -138,11 +138,11 @@ DEFINE_EVENT_PRINT(xdp_redirect_template, xdp_redirect_map_err,
#define _trace_xdp_redirect_map(dev, xdp, fwd, map, idx) \
trace_xdp_redirect_map(dev, xdp, fwd ? fwd->ifindex : 0, \
- 0, map, idx);
+ 0, map, idx)
#define _trace_xdp_redirect_map_err(dev, xdp, fwd, map, idx, err) \
trace_xdp_redirect_map_err(dev, xdp, fwd ? fwd->ifindex : 0, \
- err, map, idx);
+ err, map, idx)
#endif /* _TRACE_XDP_H */
diff --git a/net/core/filter.c b/net/core/filter.c
index 3a50a9b021e2..24dd33dd9f04 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -2506,21 +2506,19 @@ static int xdp_do_redirect_map(struct net_device *dev, struct xdp_buff *xdp,
struct redirect_info *ri = this_cpu_ptr(&redirect_info);
const struct bpf_prog *map_owner = ri->map_owner;
struct bpf_map *map = ri->map;
+ struct net_device *fwd = NULL;
u32 index = ri->ifindex;
- struct net_device *fwd;
int err;
ri->ifindex = 0;
ri->map = NULL;
ri->map_owner = NULL;
- /* This is really only caused by a deliberately crappy
- * BPF program, normally we would never hit that case,
- * so no need to inform someone via tracepoints either,
- * just bail out.
- */
- if (unlikely(map_owner != xdp_prog))
- return -EINVAL;
+ if (unlikely(map_owner != xdp_prog)) {
+ err = -EFAULT;
+ map = NULL;
+ goto err;
+ }
fwd = __dev_map_lookup_elem(map, index);
if (!fwd) {
@@ -2576,13 +2574,27 @@ int xdp_do_generic_redirect(struct net_device *dev, struct sk_buff *skb,
struct bpf_prog *xdp_prog)
{
struct redirect_info *ri = this_cpu_ptr(&redirect_info);
+ const struct bpf_prog *map_owner = ri->map_owner;
+ struct bpf_map *map = ri->map;
+ struct net_device *fwd = NULL;
u32 index = ri->ifindex;
- struct net_device *fwd;
unsigned int len;
int err = 0;
- fwd = dev_get_by_index_rcu(dev_net(dev), index);
ri->ifindex = 0;
+ ri->map = NULL;
+ ri->map_owner = NULL;
+
+ if (map) {
+ if (unlikely(map_owner != xdp_prog)) {
+ err = -EFAULT;
+ map = NULL;
+ goto err;
+ }
+ fwd = __dev_map_lookup_elem(map, index);
+ } else {
+ fwd = dev_get_by_index_rcu(dev_net(dev), index);
+ }
if (unlikely(!fwd)) {
err = -EINVAL;
goto err;
@@ -2600,10 +2612,12 @@ int xdp_do_generic_redirect(struct net_device *dev, struct sk_buff *skb,
}
skb->dev = fwd;
- _trace_xdp_redirect(dev, xdp_prog, index);
+ map ? _trace_xdp_redirect_map(dev, xdp_prog, fwd, map, index)
+ : _trace_xdp_redirect(dev, xdp_prog, index);
return 0;
err:
- _trace_xdp_redirect_err(dev, xdp_prog, index, err);
+ map ? _trace_xdp_redirect_map_err(dev, xdp_prog, fwd, map, index, err)
+ : _trace_xdp_redirect_err(dev, xdp_prog, index, err);
return err;
}
EXPORT_SYMBOL_GPL(xdp_do_generic_redirect);
^ permalink raw reply related
* [SUSPECTED SPAM] Can you be our Supplier
From: mackenzie @ 2017-09-10 9:40 UTC (permalink / raw)
Dear Sir/Madam,
I am Becca MacKenzie, We are interested in your products and want to make you and your company our major suppliers but first we would like your to send us your best price list and Catalog if possible.
We will be ordering in large quantity so we are looking forward in making a good relationship with you and your company.
My contact email: becca.mackenzie100@outlook.com
Regards
Becca MacKenzie
^ permalink raw reply
* Re: [PATCH iproute2 3/3] bridge: request vlans along with link information
From: Nikolay Aleksandrov @ 2017-09-10 10:24 UTC (permalink / raw)
To: Jamal Hadi Salim, Roopa Prabhu, Roman Mashak
Cc: stephen@networkplumber.org, netdev@vger.kernel.org
In-Reply-To: <5706e1ba-6b85-4f32-a858-b5d87b17eb51@mojatatu.com>
On 09/09/17 20:23, Jamal Hadi Salim wrote:
> On 17-09-09 12:24 PM, Roopa Prabhu wrote:
>> On Fri, Sep 8, 2017 at 2:52 PM, Roman Mashak <mrv@mojatatu.com> wrote:
[snip]
>
> Agree we should be turning on this stuff by default. i.e default stays
> compressed; otherwise it a huge dump.
>
> Having said that there is a lot of mess with this stuff.
> The bridge link events _already send this IFLA_AF_SPCE info_
> so not much choice there but to print it.
> At minimal we need that part because unfortunately there is no
> vlanfilter event in existence which will send us summaries of just
> vlans added to a port i.e both use XXXLINK.
> In general, the XXXLINK interface with these master devices (bridge,
> bond etc) continues to get messy. Recently started seeing events with
> devices claiming to be of KIND_slave etc on the bridge and bond devices;
> yet at the same time my wireless card events are also showing up on the
> bridge link even though it is not enslaved there..
Out of curiousity about this one, do you see the wifi card when doing bridge monitor ?
Or are you specifically watching AF_BRIDGE events, because bridge monitor link also can
include AF_UNSPEC ?
>
> cheers,
> jamal
>
^ permalink raw reply
* Division by zero on UP (was: Re: netfilter: nat: use keyed locks)
From: Geert Uytterhoeven @ 2017-09-10 11:08 UTC (permalink / raw)
To: Florian Westphal, Pablo Neira Ayuso
Cc: Linux Kernel Mailing List, netdev@vger.kernel.org,
David S. Miller, Arnd Bergmann
Hi Florian, Pablo,
On Sat, Sep 9, 2017 at 9:21 PM, Linux Kernel Mailing List
<linux-kernel@vger.kernel.org> wrote:
> Web: https://git.kernel.org/torvalds/c/8073e960a03bf7b5d5ebfc5ff18ac475e1688f46
> Commit: 8073e960a03bf7b5d5ebfc5ff18ac475e1688f46
> Parent: e1bf1687740ce1a3598a1c5e452b852ff2190682
> Refname: refs/heads/master
> Author: Florian Westphal <fw@strlen.de>
> AuthorDate: Wed Sep 6 14:39:52 2017 +0200
> Committer: Pablo Neira Ayuso <pablo@netfilter.org>
> CommitDate: Fri Sep 8 18:55:52 2017 +0200
>
> netfilter: nat: use keyed locks
>
> no need to serialize on a single lock, we can partition the table and
> add/delete in parallel to different slots.
> This restores one of the advantages that got lost with the rhlist
> revert.
>
> Cc: Ivan Babrou <ibobrik@gmail.com>
> Signed-off-by: Florian Westphal <fw@strlen.de>
> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
> ---
> net/netfilter/nf_nat_core.c | 36 ++++++++++++++++++++++++------------
> 1 file changed, 24 insertions(+), 12 deletions(-)
>
> diff --git a/net/netfilter/nf_nat_core.c b/net/netfilter/nf_nat_core.c
> index f090419f5f97..f393a7086025 100644
> --- a/net/netfilter/nf_nat_core.c
> +++ b/net/netfilter/nf_nat_core.c
> @@ -30,7 +30,7 @@
> #include <net/netfilter/nf_conntrack_zones.h>
> #include <linux/netfilter/nf_nat.h>
>
> -static DEFINE_SPINLOCK(nf_nat_lock);
> +static spinlock_t nf_nat_locks[CONNTRACK_LOCKS];
>
> static DEFINE_MUTEX(nf_nat_proto_mutex);
> static const struct nf_nat_l3proto __rcu *nf_nat_l3protos[NFPROTO_NUMPROTO]
> @@ -425,13 +425,15 @@ nf_nat_setup_info(struct nf_conn *ct,
>
> if (maniptype == NF_NAT_MANIP_SRC) {
> unsigned int srchash;
> + spinlock_t *lock;
>
> srchash = hash_by_src(net,
> &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
> - spin_lock_bh(&nf_nat_lock);
> + lock = &nf_nat_locks[srchash % ARRAY_SIZE(nf_nat_locks)];
> + spin_lock_bh(lock);
If no spinlock debugging options (CONFIG_GENERIC_LOCKBREAK,
CONFIG_DEBUG_SPINLOCK, CONFIG_DEBUG_LOCK_ALLOC) are enabled on a UP platform
(e.g. m68k defconfig), arch_spinlock_t is an empty struct, and thus
ARRAY_SIZE(nf_nat_locks)] is zero, leading to:
net/netfilter/nf_nat_core.c: In function ‘nf_nat_setup_info’:
net/netfilter/nf_nat_core.c:432: warning: division by zero
net/netfilter/nf_nat_core.c: In function ‘__nf_nat_cleanup_conntrack’:
net/netfilter/nf_nat_core.c:535: warning: division by zero
net/netfilter/nf_nat_core.c:537: warning: division by zero
net/netfilter/nf_nat_core.c: In function ‘nf_nat_init’:
net/netfilter/nf_nat_core.c:810: warning: division by zero
net/netfilter/nf_nat_core.c:811: warning: division by zero
net/netfilter/nf_nat_core.c:824: warning: division by zero
Gr{oetje,eeting}s,
Geert
^ permalink raw reply
* [SUSPECTED SPAM] I am a Buyer
From: mackenzie @ 2017-09-10 11:19 UTC (permalink / raw)
Dear Sir/Madam,
I am Becca MacKenzie, We are interested in your products and want to make you and your company our major suppliers but first we would like your to send us your best price list and Catalog if possible.
We will be ordering in large quantity so we are looking forward in making a good relationship with you and your company.
For my quick response write only to my contact email: becca.mackenzie100@outlook.com
Regards
Becca MacKenzie
^ permalink raw reply
* Re: Division by zero on UP (was: Re: netfilter: nat: use keyed locks)
From: Florian Westphal @ 2017-09-10 11:21 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Florian Westphal, Pablo Neira Ayuso, Linux Kernel Mailing List,
netdev@vger.kernel.org, David S. Miller, Arnd Bergmann
In-Reply-To: <CAMuHMdVwp1njkMYo-y8FZHWNWW6wtN2LYVC=9-mbcF-omDaztw@mail.gmail.com>
Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> > srchash = hash_by_src(net,
> > &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
> > - spin_lock_bh(&nf_nat_lock);
> > + lock = &nf_nat_locks[srchash % ARRAY_SIZE(nf_nat_locks)];
> > + spin_lock_bh(lock);
>
> If no spinlock debugging options (CONFIG_GENERIC_LOCKBREAK,
> CONFIG_DEBUG_SPINLOCK, CONFIG_DEBUG_LOCK_ALLOC) are enabled on a UP platform
> (e.g. m68k defconfig), arch_spinlock_t is an empty struct, and thus
> ARRAY_SIZE(nf_nat_locks)] is zero, leading to:
>
> net/netfilter/nf_nat_core.c: In function ‘nf_nat_setup_info’:
> net/netfilter/nf_nat_core.c:432: warning: division by zero
Gah. Sorry. This is the 2nd time I add such a bug :(
Can you send a patch? It should be enough to use CONNTRACK_LOCKS
instead of ARRAY_SIZE(nf_nat_locks) to avoid this problem.
Otherwise I will take care of this next thing monday morning.
^ permalink raw reply
* Re: Division by zero on UP (was: Re: netfilter: nat: use keyed locks)
From: Geert Uytterhoeven @ 2017-09-10 11:34 UTC (permalink / raw)
To: Florian Westphal
Cc: Pablo Neira Ayuso, Linux Kernel Mailing List,
netdev@vger.kernel.org, David S. Miller, Arnd Bergmann
In-Reply-To: <20170910112126.GB25977@breakpoint.cc>
Hi Florian,
On Sun, Sep 10, 2017 at 1:21 PM, Florian Westphal <fw@strlen.de> wrote:
> Geert Uytterhoeven <geert@linux-m68k.org> wrote:
>> > srchash = hash_by_src(net,
>> > &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
>> > - spin_lock_bh(&nf_nat_lock);
>> > + lock = &nf_nat_locks[srchash % ARRAY_SIZE(nf_nat_locks)];
>> > + spin_lock_bh(lock);
>>
>> If no spinlock debugging options (CONFIG_GENERIC_LOCKBREAK,
>> CONFIG_DEBUG_SPINLOCK, CONFIG_DEBUG_LOCK_ALLOC) are enabled on a UP platform
>> (e.g. m68k defconfig), arch_spinlock_t is an empty struct, and thus
>> ARRAY_SIZE(nf_nat_locks)] is zero, leading to:
>>
>> net/netfilter/nf_nat_core.c: In function ‘nf_nat_setup_info’:
>> net/netfilter/nf_nat_core.c:432: warning: division by zero
>
> Gah. Sorry. This is the 2nd time I add such a bug :(
>
> Can you send a patch? It should be enough to use CONNTRACK_LOCKS
> instead of ARRAY_SIZE(nf_nat_locks) to avoid this problem.
>
> Otherwise I will take care of this next thing monday morning.
Thanks for the suggestion, will send a patch RSN.
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] netfilter: nat: Do not use ARRAY_SIZE() on spinlocks to fix zero div
From: Geert Uytterhoeven @ 2017-09-10 11:41 UTC (permalink / raw)
To: Pablo Neira Ayuso, Jozsef Kadlecsik, Florian Westphal,
David S . Miller
Cc: Arnd Bergmann, netfilter-devel, coreteam, netdev, linux-kernel,
Geert Uytterhoeven
If no spinlock debugging options (CONFIG_GENERIC_LOCKBREAK,
CONFIG_DEBUG_SPINLOCK, CONFIG_DEBUG_LOCK_ALLOC) are enabled on a UP
platform (e.g. m68k defconfig), arch_spinlock_t is an empty struct,
hence using ARRAY_SIZE(nf_nat_locks) causes a division by zero:
net/netfilter/nf_nat_core.c: In function ‘nf_nat_setup_info’:
net/netfilter/nf_nat_core.c:432: warning: division by zero
net/netfilter/nf_nat_core.c: In function ‘__nf_nat_cleanup_conntrack’:
net/netfilter/nf_nat_core.c:535: warning: division by zero
net/netfilter/nf_nat_core.c:537: warning: division by zero
net/netfilter/nf_nat_core.c: In function ‘nf_nat_init’:
net/netfilter/nf_nat_core.c:810: warning: division by zero
net/netfilter/nf_nat_core.c:811: warning: division by zero
net/netfilter/nf_nat_core.c:824: warning: division by zero
Fix this by using the CONNTRACK_LOCKS definition instead.
Suggested-by: Florian Westphal <fw@strlen.de>
Fixes: 8073e960a03bf7b5 ("netfilter: nat: use keyed locks")
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
net/netfilter/nf_nat_core.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/net/netfilter/nf_nat_core.c b/net/netfilter/nf_nat_core.c
index f393a7086025f6c5..af8345fc4fbde30a 100644
--- a/net/netfilter/nf_nat_core.c
+++ b/net/netfilter/nf_nat_core.c
@@ -429,7 +429,7 @@ nf_nat_setup_info(struct nf_conn *ct,
srchash = hash_by_src(net,
&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
- lock = &nf_nat_locks[srchash % ARRAY_SIZE(nf_nat_locks)];
+ lock = &nf_nat_locks[srchash % CONNTRACK_LOCKS];
spin_lock_bh(lock);
hlist_add_head_rcu(&ct->nat_bysource,
&nf_nat_bysource[srchash]);
@@ -532,9 +532,9 @@ static void __nf_nat_cleanup_conntrack(struct nf_conn *ct)
unsigned int h;
h = hash_by_src(nf_ct_net(ct), &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
- spin_lock_bh(&nf_nat_locks[h % ARRAY_SIZE(nf_nat_locks)]);
+ spin_lock_bh(&nf_nat_locks[h % CONNTRACK_LOCKS]);
hlist_del_rcu(&ct->nat_bysource);
- spin_unlock_bh(&nf_nat_locks[h % ARRAY_SIZE(nf_nat_locks)]);
+ spin_unlock_bh(&nf_nat_locks[h % CONNTRACK_LOCKS]);
}
static int nf_nat_proto_clean(struct nf_conn *ct, void *data)
@@ -807,8 +807,8 @@ static int __init nf_nat_init(void)
/* Leave them the same for the moment. */
nf_nat_htable_size = nf_conntrack_htable_size;
- if (nf_nat_htable_size < ARRAY_SIZE(nf_nat_locks))
- nf_nat_htable_size = ARRAY_SIZE(nf_nat_locks);
+ if (nf_nat_htable_size < CONNTRACK_LOCKS)
+ nf_nat_htable_size = CONNTRACK_LOCKS;
nf_nat_bysource = nf_ct_alloc_hashtable(&nf_nat_htable_size, 0);
if (!nf_nat_bysource)
@@ -821,7 +821,7 @@ static int __init nf_nat_init(void)
return ret;
}
- for (i = 0; i < ARRAY_SIZE(nf_nat_locks); i++)
+ for (i = 0; i < CONNTRACK_LOCKS; i++)
spin_lock_init(&nf_nat_locks[i]);
nf_ct_helper_expectfn_register(&follow_master_nat);
--
2.7.4
^ permalink raw reply related
* Re: [PATCH net] netlink: access nlk groups safely in netlink bind and getname
From: Xin Long @ 2017-09-10 11:45 UTC (permalink / raw)
To: Cong Wang; +Cc: network dev, David Miller, Florian Westphal
In-Reply-To: <CAM_iQpXA7q9_WADayWiHgqsz=VfhNqZr42TL0F+N2XK+toEEOQ@mail.gmail.com>
On Sat, Sep 9, 2017 at 7:35 AM, Cong Wang <xiyou.wangcong@gmail.com> wrote:
> On Tue, Sep 5, 2017 at 8:53 PM, Xin Long <lucien.xin@gmail.com> wrote:
>> Now there is no lock protecting nlk ngroups/groups' accessing in
>> netlink bind and getname. It's safe from nlk groups' setting in
>> netlink_release, but not from netlink_realloc_groups called by
>> netlink_setsockopt.
>>
>> netlink_lock_table is needed in both netlink bind and getname when
>> accessing nlk groups.
>
> This looks very odd.
>
> netlink_lock_table() should be protecting nl_table, why
> it also protects nlk->groups?? For me it looks like you
> need lock_sock() instead.
I believe netlink_lock_table might be only used to protect nl_table
at the beginning and surely lock_sock is better here. Thanks.
But can you explain why netlink_lock_table() was also used in
netlink_getsockopt NETLINK_LIST_MEMBERSHIPS ? or it
was just a mistake ?
^ permalink raw reply
* Re: [PATCH net] netlink: fix an use-after-free issue for nlk groups
From: Xin Long @ 2017-09-10 12:02 UTC (permalink / raw)
To: Cong Wang
Cc: network dev, David Miller, Florian Westphal, chunwang, syzkaller
In-Reply-To: <CAM_iQpU_ve5fRGeYmBFfYc5DgDPk0sngku=3y1dOc8py4PDAfw@mail.gmail.com>
On Sat, Sep 9, 2017 at 9:56 AM, Cong Wang <xiyou.wangcong@gmail.com> wrote:
> On Tue, Sep 5, 2017 at 8:47 PM, Xin Long <lucien.xin@gmail.com> wrote:
>> ChunYu found a netlink use-after-free issue by syzkaller:
>>
>> [28448.842981] BUG: KASAN: use-after-free in __nla_put+0x37/0x40 at addr ffff8807185e2378
>> [28448.969918] Call Trace:
>> [...]
>> [28449.117207] __nla_put+0x37/0x40
>> [28449.132027] nla_put+0xf5/0x130
>> [28449.146261] sk_diag_fill.isra.4.constprop.5+0x5a0/0x750 [netlink_diag]
>> [28449.176608] __netlink_diag_dump+0x25a/0x700 [netlink_diag]
>> [28449.202215] netlink_diag_dump+0x176/0x240 [netlink_diag]
>> [28449.226834] netlink_dump+0x488/0xbb0
>> [28449.298014] __netlink_dump_start+0x4e8/0x760
>> [28449.317924] netlink_diag_handler_dump+0x261/0x340 [netlink_diag]
>> [28449.413414] sock_diag_rcv_msg+0x207/0x390
>> [28449.432409] netlink_rcv_skb+0x149/0x380
>> [28449.467647] sock_diag_rcv+0x2d/0x40
>> [28449.484362] netlink_unicast+0x562/0x7b0
>> [28449.564790] netlink_sendmsg+0xaa8/0xe60
>> [28449.661510] sock_sendmsg+0xcf/0x110
>> [28449.865631] __sys_sendmsg+0xf3/0x240
>> [28450.000964] SyS_sendmsg+0x32/0x50
>> [28450.016969] do_syscall_64+0x25c/0x6c0
>> [28450.154439] entry_SYSCALL64_slow_path+0x25/0x25
>>
>> It was caused by no protection between nlk groups' free in netlink_release
>> and nlk groups' accessing in sk_diag_dump_groups. The similar issue also
>> exists in netlink_seq_show().
>>
>> This patch is to defer nlk groups' free in deferred_put_nlk_sk.
>
> This looks odd too, at least not complete.
>
> The netlink sock itself is protected by RCU to speed up
> the lookup path, but not necessarily nlk->groups, at least
> I don't see rcu_dereference() in sk_diag_dump_groups().
> And netlink_realloc_groups() needs fix too, right? Otherwise
> krealloc() could reallocate a brand new memory and
> existing readers will crash too?
We knew it's not good, but this one is not so bad as the one in
netlink_release, as krealloc will not alloc new memory when
the new size < old size, so it may not cause crash.
I was planning to fix it as a long term. As you also said, here needs
more work for nlk->groups, including proper RCU api for readers.
I will check more.
Thanks.
>
> I am afraid you need more work to make nlk->groups
> RCU friendly. RCU is not just about call_rcu(), both
> readers and writers need to use proper RCU API.
^ permalink raw reply
* [PATCH net] ipv6: sr: remove duplicate routing header type check
From: David Lebrun @ 2017-09-10 12:45 UTC (permalink / raw)
To: netdev; +Cc: David Lebrun, David Lebrun
From: David Lebrun <dav.lebrun@gmail.com>
From: David Lebrun <dlebrun@google.com>
As seg6_validate_srh() already checks that the Routing Header type is
correct, it is not necessary to do it again in get_srh().
Fixes: 5829d70b ("ipv6: sr: fix get_srh() to comply with IPv6 standard "RFC 8200")
Signed-off-by: David Lebrun <dlebrun@google.com>
---
net/ipv6/seg6_local.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/net/ipv6/seg6_local.c b/net/ipv6/seg6_local.c
index 7ff54db..825b8e0 100644
--- a/net/ipv6/seg6_local.c
+++ b/net/ipv6/seg6_local.c
@@ -72,10 +72,6 @@ static struct ipv6_sr_hdr *get_srh(struct sk_buff *skb)
srh = (struct ipv6_sr_hdr *)(skb->data + srhoff);
- /* make sure it's a Segment Routing header (Routing Type 4) */
- if (srh->type != IPV6_SRCRT_TYPE_4)
- return NULL;
-
len = (srh->hdrlen + 1) << 3;
if (!pskb_may_pull(skb, srhoff + len))
--
2.10.2
^ permalink raw reply related
* WARNING: CPU: 21 PID: 116 at net/sched/sch_generic.c:320 dev_watchdog+0xc5/0x122
From: Paweł Staszewski @ 2017-09-10 13:09 UTC (permalink / raw)
To: Linux Kernel Network Developers
With latest 4.13.0+ kernel
Hardware(Tested HOST where traces catched:
Intel E5-2670
Network controllers
2x 10G Intel 82599
1x 100G Mellanox Connectx-5
Test scenario:
Packet generator -> (RX traffix on Mellanox 100G / 12Mpps UDP random
destination ip / random port ) Tested HOST (TX traffix from Intel 82599
on 20 vlans attached to ethernet) -> Sink
[ 115.676048] NETDEV WATCHDOG: enp6s0f0 (ixgbe): transmit queue 21
timed out
[ 115.676061] ------------[ cut here ]------------
[ 115.676067] WARNING: CPU: 21 PID: 116 at net/sched/sch_generic.c:320
dev_watchdog+0xc5/0x122
[ 115.676067] Modules linked in: ipmi_si x86_pkg_temp_thermal
[ 115.676072] CPU: 21 PID: 116 Comm: ksoftirqd/21 Not tainted 4.13.0+ #3
[ 115.676073] task: ffff88046d40e800 task.stack: ffffc90003640000
[ 115.676074] RIP: 0010:dev_watchdog+0xc5/0x122
[ 115.676075] RSP: 0018:ffffc90003643da0 EFLAGS: 00010286
[ 115.676076] RAX: 000000000000003e RBX: ffff88086d010000 RCX:
0000000000000000
[ 115.676077] RDX: ffff88046fd53310 RSI: ffff88046fd4ca98 RDI:
ffff88046fd4ca98
[ 115.676078] RBP: ffffc90003643db0 R08: 0000000000000000 R09:
0000000000000000
[ 115.676079] R10: ffffc90003643e38 R11: ffffffff81e27ddc R12:
0000000000000015
[ 115.676079] R13: ffffffff8164fdfa R14: ffff88086d010438 R15:
ffff88086d010000
[ 115.676081] FS: 0000000000000000(0000) GS:ffff88046fd40000(0000)
knlGS:0000000000000000
[ 115.676081] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 115.676082] CR2: 00007f225204e8c8 CR3: 000000086a6ff004 CR4:
00000000000606e0
[ 115.676083] Call Trace:
[ 115.676087] call_timer_fn+0x5b/0x123
[ 115.676089] run_timer_softirq+0x13b/0x15e
[ 115.676091] ? pick_next_task_fair+0x1ad/0x2f6
[ 115.676095] __do_softirq+0xe4/0x23a
[ 115.676097] ? sort_range+0x1d/0x1d
[ 115.676101] run_ksoftirqd+0x15/0x2a
[ 115.676102] smpboot_thread_fn+0x128/0x13f
[ 115.676104] kthread+0xf7/0xfc
[ 115.676106] ? __init_completion+0x24/0x24
[ 115.676109] ret_from_fork+0x22/0x30
[ 115.676109] Code: 0f a8 69 00 00 75 38 48 89 df c6 05 03 a8 69 00 01
e8 cb f5 fd ff 44 89 e1 48 89 de 48 c7 c7 0a 9e ae 81 48 89 c2 e8 7a 16
a2 ff <0f> ff eb 10 41 ff c4 48 05 40 01 00 00 41 39 f4 75 9a eb 0d 48
[ 115.676128] ---[ end trace 4d5f38095306e2dd ]---
[ 115.676131] ixgbe 0000:06:00.0 enp6s0f0: initiating reset due to tx
timeout
[ 115.676212] ixgbe 0000:06:00.0 enp6s0f0: Reset adapter
[ 116.068428] ixgbe 0000:06:00.0 enp6s0f0: detected SFP+: 3
[ 116.217023] ixgbe 0000:06:00.0 enp6s0f0: NIC Link is Up 10 Gbps, Flow
Control: RX/TX
[ 120.444122] ixgbe 0000:06:00.0 enp6s0f0: Detected Tx Unit Hang
Tx Queue <20>
TDH, TDT <d7>, <39>
next_to_use <39>
next_to_clean <d7>
tx_buffer_info[next_to_clean]
time_stamp <ffff4ca7>
jiffies <ffff50a8>
[ 120.444127] ixgbe 0000:06:00.0 enp6s0f0: tx hang 5 detected on queue
20, resetting adapter
[ 120.444128] ixgbe 0000:06:00.0 enp6s0f0: initiating reset due to tx
timeout
[ 120.444135] ixgbe 0000:06:00.0 enp6s0f0: Reset adapter
[ 2929.465026] ------------[ cut here ]------------
[ 2929.465035] WARNING: CPU: 5 PID: 35 at kernel/rcu/tree.c:2715
rcu_process_callbacks+0x327/0x36f
[ 2929.465035] Modules linked in: ipmi_si x86_pkg_temp_thermal
[ 2929.465040] CPU: 5 PID: 35 Comm: ksoftirqd/5 Tainted: G W
4.13.0+ #3
[ 2929.465042] task: ffff88046dadb400 task.stack: ffffc900033b8000
[ 2929.465044] RIP: 0010:rcu_process_callbacks+0x327/0x36f
[ 2929.465045] RSP: 0018:ffffc900033bbe00 EFLAGS: 00010002
[ 2929.465047] RAX: 0000000000000246 RBX: ffff88046fb59840 RCX:
ffffffffffffd801
[ 2929.465048] RDX: 0000000000000000 RSI: ffffc900033bbe18 RDI:
ffff88046fb59878
[ 2929.465049] RBP: ffffc900033bbe60 R08: 0000000000000001 R09:
ffffffff81633d20
[ 2929.465050] R10: ffffc900033bbda8 R11: ffffea0011852c80 R12:
ffffffff81c41b00
[ 2929.465051] R13: ffffc900033bbe18 R14: ffff88046fb59878 R15:
ffff88046dadb400
[ 2929.465053] FS: 0000000000000000(0000) GS:ffff88046fb40000(0000)
knlGS:0000000000000000
[ 2929.465054] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 2929.465055] CR2: 00007fca94a07349 CR3: 000000086a6ff000 CR4:
00000000000606e0
[ 2929.465056] Call Trace:
[ 2929.465060] ? net_rx_action+0x21e/0x22d
[ 2929.465064] __do_softirq+0xe4/0x23a
[ 2929.465066] ? sort_range+0x1d/0x1d
[ 2929.465070] run_ksoftirqd+0x15/0x2a
[ 2929.465071] smpboot_thread_fn+0x128/0x13f
[ 2929.465074] kthread+0xf7/0xfc
[ 2929.465075] ? __init_completion+0x24/0x24
[ 2929.465078] ret_from_fork+0x22/0x30
[ 2929.465079] Code: 8b 8b 90 00 00 00 48 2b 0d b7 54 bc 00 48 39 ca 7d
07 48 89 93 90 00 00 00 48 83 7b 38 00 0f 94 c1 48 85 d2 0f 94 c2 38 d1
74 02 <0f> ff 50 9d 4c 89 f7 e8 7e 22 00 00 84 c0 74 09 e8 06 f1 ff ff
[ 2929.465107] ---[ end trace 4d5f38095306e2de ]---
[ 2929.509019] ixgbe 0000:06:00.0 enp6s0f0: NIC Link is Up 10 Gbps, Flow
Control: RX/TX
[ 2929.512261] BUG: Bad page state in process ksoftirqd/21 pfn:45c020
[ 2929.512264] page:ffffea0011700800 count:-1 mapcount:0
mapping: (null) index:0x0
[ 2929.512947] flags: 0x2000000000000000()
[ 2929.513202] raw: 2000000000000000 0000000000000000 0000000000000000
ffffffffffffffff
[ 2929.513204] raw: dead000000000100 dead000000000200 0000000000000000
0000000000000000
[ 2929.513205] page dumped because: nonzero _count
[ 2929.513205] Modules linked in: ipmi_si x86_pkg_temp_thermal
[ 2929.513210] CPU: 21 PID: 116 Comm: ksoftirqd/21 Tainted: G
W 4.13.0+ #3
[ 2929.513210] Call Trace:
[ 2929.513215] dump_stack+0x4d/0x63
[ 2929.513218] bad_page+0xf3/0x10f
[ 2929.513220] check_new_page_bad+0x73/0x75
[ 2929.513222] get_page_from_freelist+0x419/0x63f
[ 2929.513225] __alloc_pages_nodemask+0xef/0x182
[ 2929.513227] page_frag_alloc+0x38/0x10c
[ 2929.513230] __napi_alloc_skb+0x6a/0xbd
[ 2929.513234] mlx5e_handle_rx_cqe_mpwrq+0x91/0x388
[ 2929.513236] mlx5e_poll_rx_cq+0x113/0x171
[ 2929.513238] mlx5e_napi_poll+0x81/0x149
[ 2929.513240] net_rx_action+0xd3/0x22d
[ 2929.513242] __do_softirq+0xe4/0x23a
[ 2929.513244] ? sort_range+0x1d/0x1d
[ 2929.513247] run_ksoftirqd+0x15/0x2a
[ 2929.513248] smpboot_thread_fn+0x128/0x13f
[ 2929.513250] kthread+0xf7/0xfc
[ 2929.513252] ? __init_completion+0x24/0x24
[ 2929.513254] ret_from_fork+0x22/0x30
[ 2929.513255] Disabling lock debugging due to kernel taint
[ 2929.514165] BUG: Bad page state in process ksoftirqd/16 pfn:45d020
[ 2929.514168] page:ffffea0011740800 count:-1 mapcount:0
mapping: (null) index:0x0
[ 2929.514640] flags: 0x2000000000000000()
[ 2929.514898] raw: 2000000000000000 0000000000000000 0000000000000000
ffffffffffffffff
[ 2929.514900] raw: dead000000000100 dead000000000200 0000000000000000
0000000000000000
[ 2929.514901] page dumped because: nonzero _count
[ 2929.514901] Modules linked in: ipmi_si x86_pkg_temp_thermal
[ 2929.514905] CPU: 16 PID: 91 Comm: ksoftirqd/16 Tainted: G B W
4.13.0+ #3
[ 2929.514906] Call Trace:
[ 2929.514910] dump_stack+0x4d/0x63
[ 2929.514913] bad_page+0xf3/0x10f
[ 2929.514915] check_new_page_bad+0x73/0x75
[ 2929.514917] get_page_from_freelist+0x419/0x63f
[ 2929.514919] __alloc_pages_nodemask+0xef/0x182
[ 2929.514922] page_frag_alloc+0x38/0x10c
[ 2929.514924] __napi_alloc_skb+0x6a/0xbd
[ 2929.514927] mlx5e_handle_rx_cqe_mpwrq+0x91/0x388
[ 2929.514930] mlx5e_poll_rx_cq+0x113/0x171
[ 2929.514932] mlx5e_napi_poll+0x81/0x149
[ 2929.514934] net_rx_action+0xd3/0x22d
[ 2929.514936] __do_softirq+0xe4/0x23a
[ 2929.514938] ? sort_range+0x1d/0x1d
[ 2929.514941] run_ksoftirqd+0x15/0x2a
[ 2929.514942] smpboot_thread_fn+0x128/0x13f
[ 2929.514944] kthread+0xf7/0xfc
[ 2929.514946] ? __init_completion+0x24/0x24
[ 2929.514948] ret_from_fork+0x22/0x30
[ 2929.517505] BUG: Bad page state in process ksoftirqd/17 pfn:46a320
[ 2929.517508] page:ffffea0011a8c800 count:-1 mapcount:0
mapping: (null) index:0x0
[ 2929.517985] flags: 0x2000000000000000()
[ 2929.518247] raw: 2000000000000000 0000000000000000 0000000000000000
ffffffffffffffff
[ 2929.518248] raw: dead000000000100 dead000000000200 0000000000000000
0000000000000000
[ 2929.518249] page dumped because: nonzero _count
[ 2929.518250] Modules linked in: ipmi_si x86_pkg_temp_thermal
[ 2929.518254] CPU: 17 PID: 96 Comm: ksoftirqd/17 Tainted: G B W
4.13.0+ #3
[ 2929.518255] Call Trace:
[ 2929.518258] dump_stack+0x4d/0x63
[ 2929.518261] bad_page+0xf3/0x10f
[ 2929.518263] check_new_page_bad+0x73/0x75
[ 2929.518265] get_page_from_freelist+0x419/0x63f
[ 2929.518267] __alloc_pages_nodemask+0xef/0x182
[ 2929.518269] page_frag_alloc+0x38/0x10c
[ 2929.518272] __napi_alloc_skb+0x6a/0xbd
[ 2929.518274] mlx5e_handle_rx_cqe_mpwrq+0x91/0x388
[ 2929.518276] ? skb_release_all+0x1f/0x22
[ 2929.518278] mlx5e_poll_rx_cq+0x113/0x171
[ 2929.518280] mlx5e_napi_poll+0x81/0x149
[ 2929.518282] net_rx_action+0xd3/0x22d
[ 2929.518284] __do_softirq+0xe4/0x23a
[ 2929.518286] ? sort_range+0x1d/0x1d
[ 2929.518289] run_ksoftirqd+0x15/0x2a
[ 2929.518290] smpboot_thread_fn+0x128/0x13f
[ 2929.518292] kthread+0xf7/0xfc
[ 2929.518293] ? __init_completion+0x24/0x24
[ 2929.518295] ret_from_fork+0x22/0x30
Other information about configuration:
ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode
DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state
UP mode DEFAULT group default qlen 1000
link/ether 00:25:90:98:2f:42 brd ff:ff:ff:ff:ff:ff
3: enp2s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state
UP mode DEFAULT group default qlen 1000
link/ether 00:25:90:98:2f:43 brd ff:ff:ff:ff:ff:ff
4: enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state
UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
5: enp6s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state
UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:89 brd ff:ff:ff:ff:ff:ff
6: enp130s0f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode
DEFAULT group default qlen 1000
link/ether ac:1f:6b:2c:18:88 brd ff:ff:ff:ff:ff:ff
7: enp130s0f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode
DEFAULT group default qlen 1000
link/ether ac:1f:6b:2c:18:89 brd ff:ff:ff:ff:ff:ff
8: enp132s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state
UP mode DEFAULT group default
link/ether ec:0d:9a:48:71:f6 brd ff:ff:ff:ff:ff:ff
9: vlan1000@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
10: vlan1001@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
11: vlan1002@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
12: vlan1003@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
13: vlan1004@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
14: vlan1005@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
15: vlan1006@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
16: vlan1007@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
17: vlan1008@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
18: vlan1009@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
19: vlan1010@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
20: vlan1011@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
21: vlan1012@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
22: vlan1013@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
23: vlan1014@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
24: vlan1015@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
25: vlan1016@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
26: vlan1017@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
27: vlan1018@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
28: vlan1019@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
29: vlan1020@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP mode DEFAULT group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp2s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state
UP group default qlen 1000
link/ether 00:25:90:98:2f:42 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.241/24 scope global enp2s0f0
valid_lft forever preferred_lft forever
inet6 fe80::225:90ff:fe98:2f42/64 scope link
valid_lft forever preferred_lft forever
3: enp2s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state
UP group default qlen 1000
link/ether 00:25:90:98:2f:43 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.1/24 scope global enp2s0f1
valid_lft forever preferred_lft forever
inet6 fe80::225:90ff:fe98:2f43/64 scope link
valid_lft forever preferred_lft forever
4: enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state
UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 192.168.5.1/30 scope global enp6s0f0
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
5: enp6s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state
UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:89 brd ff:ff:ff:ff:ff:ff
inet6 fe80::ec4:7aff:febb:1189/64 scope link
valid_lft forever preferred_lft forever
6: enp130s0f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
group default qlen 1000
link/ether ac:1f:6b:2c:18:88 brd ff:ff:ff:ff:ff:ff
7: enp130s0f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
group default qlen 1000
link/ether ac:1f:6b:2c:18:89 brd ff:ff:ff:ff:ff:ff
8: enp132s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state
UP group default
link/ether ec:0d:9a:48:71:f6 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.2/30 scope global enp132s0
valid_lft forever preferred_lft forever
inet6 fe80::ee0d:9aff:fe48:71f6/64 scope link
valid_lft forever preferred_lft forever
9: vlan1000@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.0.1/30 scope global vlan1000
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
10: vlan1001@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.1.1/30 scope global vlan1001
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
11: vlan1002@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.2.1/30 scope global vlan1002
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
12: vlan1003@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.3.1/30 scope global vlan1003
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
13: vlan1004@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.4.1/30 scope global vlan1004
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
14: vlan1005@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.5.1/30 scope global vlan1005
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
15: vlan1006@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.6.1/30 scope global vlan1006
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
16: vlan1007@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.7.1/30 scope global vlan1007
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
17: vlan1008@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.8.1/30 scope global vlan1008
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
18: vlan1009@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.9.1/30 scope global vlan1009
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
19: vlan1010@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.10.1/30 scope global vlan1010
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
20: vlan1011@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.11.1/30 scope global vlan1011
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
21: vlan1012@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.12.1/30 scope global vlan1012
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
22: vlan1013@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.13.1/30 scope global vlan1013
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
23: vlan1014@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.14.1/30 scope global vlan1014
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
24: vlan1015@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.15.1/30 scope global vlan1015
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
25: vlan1016@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.16.1/30 scope global vlan1016
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
26: vlan1017@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.17.1/30 scope global vlan1017
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
27: vlan1018@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.18.1/30 scope global vlan1018
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
28: vlan1019@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.19.1/30 scope global vlan1019
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
29: vlan1020@enp6s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UP group default qlen 1000
link/ether 0c:c4:7a:bb:11:88 brd ff:ff:ff:ff:ff:ff
inet 10.10.20.1/30 scope global vlan1020
valid_lft forever preferred_lft forever
inet6 fe80::ec4:7aff:febb:1188/64 scope link
valid_lft forever preferred_lft forever
tc -s -d qdisc show
qdisc noqueue 0: dev lo root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc mq 0: dev enp2s0f0 root
Sent 272836 bytes 428 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc fq 0: dev enp2s0f0 parent :8 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 3234 bytes 49 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
3 flows (3 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp2s0f0 parent :7 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 54 bytes 1 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
1 flows (1 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp2s0f0 parent :6 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 474 bytes 7 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
2 flows (2 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp2s0f0 parent :5 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 162 bytes 3 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
1 flows (1 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp2s0f0 parent :4 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 2572 bytes 12 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
1 flows (1 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp2s0f0 parent :3 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 900 bytes 10 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 10 highprio, 0 throttled
qdisc fq 0: dev enp2s0f0 parent :2 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 265300 bytes 344 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
3 flows (3 inactive, 0 throttled)
0 gc, 0 highprio, 8 throttled
qdisc fq 0: dev enp2s0f0 parent :1 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 140 bytes 2 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
1 flows (1 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc mq 0: dev enp2s0f1 root
Sent 9664 bytes 88 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc fq 0: dev enp2s0f1 parent :8 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 336 bytes 8 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
1 flows (1 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp2s0f1 parent :7 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp2s0f1 parent :6 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 86 bytes 1 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
1 flows (1 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp2s0f1 parent :5 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp2s0f1 parent :4 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp2s0f1 parent :3 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 522 bytes 3 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
1 flows (1 inactive, 0 throttled)
0 gc, 2 highprio, 0 throttled
qdisc fq 0: dev enp2s0f1 parent :2 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 700 bytes 10 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
1 flows (1 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp2s0f1 parent :1 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 8020 bytes 66 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
1 flows (1 inactive, 0 throttled)
0 gc, 2 highprio, 0 throttled
qdisc mq 0: dev enp6s0f0 root
Sent 2367511859910 bytes 2164463101 pkt (dropped 3496189669,
overlimits 0 requeues 1824881)
backlog 1065112b 18364p requeues 1824881
qdisc fq 0: dev enp6s0f0 parent :20 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 73985309492 bytes 1275608728 pkt (dropped 109204845, overlimits 0
requeues 59714)
backlog 30624b 527p requeues 59714
15 flows (7 inactive, 0 throttled)
0 gc, 224 highprio, 0 throttled, 109204845 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :1f limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74294693608 bytes 1280943004 pkt (dropped 103868838, overlimits 0
requeues 48945)
backlog 36308b 626p requeues 48945
15 flows (7 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled, 103868838 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :1e limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74196009508 bytes 1279241506 pkt (dropped 105591074, overlimits 0
requeues 58799)
backlog 32596b 562p requeues 58799
11 flows (3 inactive, 0 throttled)
0 gc, 128 highprio, 0 throttled, 105591074 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :1d limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74289745674 bytes 1280857685 pkt (dropped 103968042, overlimits 0
requeues 40176)
backlog 34162b 589p requeues 40176
15 flows (7 inactive, 0 throttled)
0 gc, 8 highprio, 0 throttled, 103968042 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :1c limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74241263700 bytes 1280021786 pkt (dropped 104855569, overlimits 0
requeues 40883)
backlog 36308b 625p requeues 40883
15 flows (7 inactive, 0 throttled)
0 gc, 44 highprio, 0 throttled, 104855569 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :1b limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 73894372822 bytes 1274040855 pkt (dropped 110774637, overlimits 0
requeues 34788)
backlog 26332b 454p requeues 34788
16 flows (8 inactive, 0 throttled)
0 gc, 176 highprio, 0 throttled, 110774637 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :1a limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74291190788 bytes 1280882582 pkt (dropped 103996357, overlimits 0
requeues 99005)
backlog 34452b 594p requeues 99005
17 flows (9 inactive, 0 throttled)
0 gc, 24 highprio, 0 throttled, 103996357 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :19 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74240383906 bytes 1280006605 pkt (dropped 104827829, overlimits 0
requeues 45063)
backlog 35322b 609p requeues 45063
13 flows (5 inactive, 0 throttled)
0 gc, 44 highprio, 0 throttled, 104827829 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :18 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74068475782 bytes 1277042607 pkt (dropped 107865924, overlimits 0
requeues 47584)
backlog 30102b 519p requeues 47584
11 flows (3 inactive, 0 throttled)
0 gc, 220 highprio, 0 throttled, 107865924 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :17 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74108686736 bytes 1277735928 pkt (dropped 107143576, overlimits 0
requeues 65061)
backlog 30218b 521p requeues 65061
11 flows (3 inactive, 0 throttled)
0 gc, 176 highprio, 0 throttled, 107143576 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :16 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 73987683040 bytes 1275649660 pkt (dropped 109211947, overlimits 0
requeues 34464)
backlog 31378b 541p requeues 34464
13 flows (5 inactive, 0 throttled)
0 gc, 180 highprio, 0 throttled, 109211947 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :15 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74024925276 bytes 1276291726 pkt (dropped 108624697, overlimits 0
requeues 61577)
backlog 29348b 519p requeues 61577
13 flows (5 inactive, 0 throttled)
0 gc, 264 highprio, 0 throttled, 108624697 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :14 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74237079950 bytes 1279949627 pkt (dropped 104943297, overlimits 0
requeues 35649)
backlog 31958b 586p requeues 35649
9 flows (1 inactive, 0 throttled)
0 gc, 88 highprio, 0 throttled, 104943297 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :13 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 73910586246 bytes 1274320375 pkt (dropped 110512404, overlimits 0
requeues 66803)
backlog 33060b 570p requeues 66803
15 flows (7 inactive, 0 throttled)
0 gc, 308 highprio, 0 throttled, 110512404 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :12 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74017655194 bytes 1276166401 pkt (dropped 108707713, overlimits 0
requeues 44176)
backlog 33118b 571p requeues 44176
12 flows (4 inactive, 0 throttled)
0 gc, 220 highprio, 0 throttled, 108707713 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :11 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 73912894532 bytes 1274360138 pkt (dropped 110472869, overlimits 0
requeues 86617)
backlog 34800b 600p requeues 86617
13 flows (5 inactive, 0 throttled)
0 gc, 352 highprio, 0 throttled, 110472869 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :10 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74231798866 bytes 1279858573 pkt (dropped 104939137, overlimits 0
requeues 71265)
backlog 34916b 602p requeues 71265
13 flows (5 inactive, 0 throttled)
0 gc, 88 highprio, 0 throttled, 104939137 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :f limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74157055860 bytes 1278569914 pkt (dropped 106298021, overlimits 0
requeues 39002)
backlog 31958b 551p requeues 39002
14 flows (6 inactive, 0 throttled)
0 gc, 88 highprio, 0 throttled, 106298021 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :e limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74195739574 bytes 1279236873 pkt (dropped 105591322, overlimits 0
requeues 37559)
backlog 33988b 586p requeues 37559
15 flows (7 inactive, 0 throttled)
0 gc, 92 highprio, 0 throttled, 105591322 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :d limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74193059464 bytes 1279190660 pkt (dropped 105605608, overlimits 0
requeues 53154)
backlog 27318b 471p requeues 53154
12 flows (4 inactive, 0 throttled)
0 gc, 92 highprio, 0 throttled, 105605608 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :c limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74288052080 bytes 1280828472 pkt (dropped 104013919, overlimits 0
requeues 40123)
backlog 37062b 639p requeues 40123
13 flows (5 inactive, 0 throttled)
0 gc, 44 highprio, 0 throttled, 104013919 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :b limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74290311630 bytes 1280867449 pkt (dropped 103944983, overlimits 0
requeues 48055)
backlog 35090b 605p requeues 48055
10 flows (2 inactive, 0 throttled)
0 gc, 4 highprio, 0 throttled, 103944983 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :a limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 72445723110 bytes 1249064151 pkt (dropped 135742937, overlimits 0
requeues 43702)
backlog 32132b 554p requeues 43702
13 flows (5 inactive, 0 throttled)
0 gc, 148 highprio, 0 throttled, 135742937 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :9 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74293028762 bytes 1280914297 pkt (dropped 103917827, overlimits 0
requeues 45858)
backlog 35612b 614p requeues 45858
12 flows (4 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled, 103917827 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :8 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 74111780880 bytes 1277789254 pkt (dropped 107086303, overlimits 0
requeues 71937)
backlog 31726b 547p requeues 71937
11 flows (3 inactive, 0 throttled)
0 gc, 180 highprio, 0 throttled, 107086303 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :7 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 73950504826 bytes 1275008609 pkt (dropped 109836713, overlimits 0
requeues 68498)
backlog 30624b 552p requeues 68498
11 flows (3 inactive, 0 throttled)
0 gc, 264 highprio, 0 throttled, 109836713 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :6 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 73963811772 bytes 1275238070 pkt (dropped 109624357, overlimits 0
requeues 34496)
backlog 32886b 567p requeues 34496
12 flows (4 inactive, 0 throttled)
0 gc, 264 highprio, 0 throttled, 109624357 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :5 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 73836527718 bytes 1273043497 pkt (dropped 111815406, overlimits 0
requeues 44572)
backlog 33988b 586p requeues 44572
11 flows (3 inactive, 0 throttled)
0 gc, 276 highprio, 0 throttled, 111815406 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :4 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 73863703836 bytes 1273512022 pkt (dropped 111275153, overlimits 0
requeues 54611)
backlog 32538b 561p requeues 54611
15 flows (7 inactive, 0 throttled)
0 gc, 396 highprio, 0 throttled, 111275153 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :3 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 73868998162 bytes 1273603341 pkt (dropped 111156286, overlimits 0
requeues 22904)
backlog 36888b 636p requeues 22904
13 flows (5 inactive, 0 throttled)
0 gc, 308 highprio, 0 throttled, 111156286 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :2 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 73273532764 bytes 1263336714 pkt (dropped 121553778, overlimits 0
requeues 37237)
backlog 36076b 622p requeues 37237
14 flows (6 inactive, 0 throttled)
0 gc, 136 highprio, 0 throttled, 121553778 flows_plimit
qdisc fq 0: dev enp6s0f0 parent :1 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 72847319070 bytes 1255988427 pkt (dropped 129218329, overlimits 0
requeues 242604)
backlog 32190b 555p requeues 242604
1024 flows (1016 inactive, 0 throttled)
0 gc, 352 highprio, 0 throttled, 129218329 flows_plimit
qdisc mq 0: dev enp6s0f1 root
Sent 1318 bytes 17 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc fq 0: dev enp6s0f1 parent :20 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :1f limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :1e limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :1d limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :1c limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :1b limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :1a limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :19 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :18 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :17 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :16 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :15 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :14 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :13 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :12 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :11 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :10 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :f limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :e limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :d limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :c limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :b limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :a limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :9 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 172 bytes 2 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
1 flows (1 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :8 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :7 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :6 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :5 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :4 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 1146 bytes 15 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
1 flows (1 inactive, 0 throttled)
0 gc, 4 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :3 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :2 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp6s0f1 parent :1 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc mq 0: dev enp132s0 root
Sent 1416 bytes 18 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc fq 0: dev enp132s0 parent :20 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :1f limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :1e limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :1d limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :1c limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :1b limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :1a limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :19 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :18 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :17 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :16 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :15 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :14 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :13 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :12 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :11 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :10 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :f limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :e limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :d limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :c limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 180 bytes 2 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 2 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :b limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :a limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :9 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :8 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :7 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :6 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :5 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :4 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :3 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 0 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :2 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 1146 bytes 15 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
1 flows (1 inactive, 0 throttled)
0 gc, 4 highprio, 0 throttled
qdisc fq 0: dev enp132s0 parent :1 limit 10000p flow_limit 100p buckets
1024 orphan_mask 1023 quantum 3028 initial_quantum 15140 refill_delay 40.0ms
Sent 90 bytes 1 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
0 flows (0 inactive, 0 throttled)
0 gc, 1 highprio, 0 throttled
qdisc noqueue 0: dev vlan1000 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1001 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1002 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1003 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1004 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1005 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1006 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1007 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1008 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1009 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1010 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1011 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1012 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1013 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1014 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1015 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1016 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1017 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1018 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1019 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc noqueue 0: dev vlan1020 root refcnt 2
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
^ permalink raw reply
* Re: [PATCH net] ipv6: sr: remove duplicate routing header type check
From: David Lebrun @ 2017-09-10 13:18 UTC (permalink / raw)
To: netdev
In-Reply-To: <20170910124539.13808-1-dlebrun@google.com>
Please ignore this one, resending with proper From lines.
David
^ permalink raw reply
* [PATCH net] ipv6: sr: remove duplicate routing header type check
From: David Lebrun @ 2017-09-10 13:22 UTC (permalink / raw)
To: netdev
From: David Lebrun <dlebrun@google.com>
As seg6_validate_srh() already checks that the Routing Header type is
correct, it is not necessary to do it again in get_srh().
Fixes: 5829d70b ("ipv6: sr: fix get_srh() to comply with IPv6 standard "RFC 8200")
Signed-off-by: David Lebrun <dlebrun@google.com>
---
net/ipv6/seg6_local.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/net/ipv6/seg6_local.c b/net/ipv6/seg6_local.c
index 7ff54db..825b8e0 100644
--- a/net/ipv6/seg6_local.c
+++ b/net/ipv6/seg6_local.c
@@ -72,10 +72,6 @@ static struct ipv6_sr_hdr *get_srh(struct sk_buff *skb)
srh = (struct ipv6_sr_hdr *)(skb->data + srhoff);
- /* make sure it's a Segment Routing header (Routing Type 4) */
- if (srh->type != IPV6_SRCRT_TYPE_4)
- return NULL;
-
len = (srh->hdrlen + 1) << 3;
if (!pskb_may_pull(skb, srhoff + len))
--
2.10.2
^ permalink raw reply related
* Re: [PATCH iproute2 3/3] bridge: request vlans along with link information
From: Roman Mashak @ 2017-09-10 13:38 UTC (permalink / raw)
To: Roopa Prabhu
Cc: stephen@networkplumber.org, netdev@vger.kernel.org,
Jamal Hadi Salim
In-Reply-To: <CAJieiUhT75fM3LuhNW32QkbJA9TO5dHwb_G-aRD2H70jF-FG2A@mail.gmail.com>
Roopa Prabhu <roopa@cumulusnetworks.com> writes:
> On Fri, Sep 8, 2017 at 2:52 PM, Roman Mashak <mrv@mojatatu.com> wrote:
>> Signed-off-by: Roman Mashak <mrv@mojatatu.com>
>> ---
>> bridge/link.c | 16 +++++++++++++---
>> 1 file changed, 13 insertions(+), 3 deletions(-)
>>
>> diff --git a/bridge/link.c b/bridge/link.c
>> index 60200f1..9e4206f 100644
>> --- a/bridge/link.c
>> +++ b/bridge/link.c
>> @@ -461,9 +461,19 @@ static int brlink_show(int argc, char **argv)
>> }
>> }
>>
>> - if (rtnl_wilddump_request(&rth, PF_BRIDGE, RTM_GETLINK) < 0) {
>> - perror("Cannon send dump request");
>> - exit(1);
>> + if (show_details) {
>> + if (rtnl_wilddump_req_filter(&rth, PF_BRIDGE, RTM_GETLINK,
>> + (compress_vlans ?
>> + RTEXT_FILTER_BRVLAN_COMPRESSED :
>> + RTEXT_FILTER_BRVLAN)) < 0) {
>> + perror("Cannon send dump request");
>> + exit(1);
>> + }
>
> vlan information is already available with `bridge vlan show`. any
> specific reason why you want it in
> the link dump output ?
Since VLAN info is already in link messages, there is no other option but
dump it in monitor or "bridge link show". Yes, the output may be lengthy
and hard to digest for a human, that is why I put it under "show_details"
kludge - if one is requesting details, he/she should be prepared for
large volumes of data to be shown :)
As Nikolay suggested, it'll make sense to request compressed
output by default, this will be addresses in v2 patch.
[...]
^ permalink raw reply
* Re: [patch net] net: sched: fix memleak for chain zero
From: Jiri Pirko @ 2017-09-10 14:03 UTC (permalink / raw)
To: Cong Wang
Cc: David Miller, Linux Kernel Network Developers, Jamal Hadi Salim,
Jakub Kicinski, mlxsw
In-Reply-To: <CAM_iQpXSjXWPw9QY7VHGnKssLHCBSJq4XnS2KPTheLB7_rBF7g@mail.gmail.com>
Sat, Sep 09, 2017 at 08:46:42PM CEST, xiyou.wangcong@gmail.com wrote:
>On Thu, Sep 7, 2017 at 7:18 PM, David Miller <davem@davemloft.net> wrote:
>>
>> This doesn't apply cleanly any more, please respin.
>>
>
>Sigh, you applied this patch despite of strong objections from me.
>
>I seriously doubt your tastes now, David. Fine, this code does not
>deserve a good taste at all, let bugs stay there.
Actually, the reported bug is resolved by this patch. I like your
approach Cong, we can make it work and follow-up on this patch.
Please stay calm and be patient...
^ permalink raw reply
* Re: [PATCH iproute2 3/3] bridge: request vlans along with link information
From: Nikolay Aleksandrov @ 2017-09-10 14:21 UTC (permalink / raw)
To: Roman Mashak, Roopa Prabhu
Cc: stephen@networkplumber.org, netdev@vger.kernel.org,
Jamal Hadi Salim
In-Reply-To: <85y3pmr7wn.fsf@mojatatu.com>
On 10/09/17 16:38, Roman Mashak wrote:
> Roopa Prabhu <roopa@cumulusnetworks.com> writes:
>
>> On Fri, Sep 8, 2017 at 2:52 PM, Roman Mashak <mrv@mojatatu.com> wrote:
>>> Signed-off-by: Roman Mashak <mrv@mojatatu.com>
>>> ---
>>> bridge/link.c | 16 +++++++++++++---
>>> 1 file changed, 13 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/bridge/link.c b/bridge/link.c
>>> index 60200f1..9e4206f 100644
>>> --- a/bridge/link.c
>>> +++ b/bridge/link.c
>>> @@ -461,9 +461,19 @@ static int brlink_show(int argc, char **argv)
>>> }
>>> }
>>>
>>> - if (rtnl_wilddump_request(&rth, PF_BRIDGE, RTM_GETLINK) < 0) {
>>> - perror("Cannon send dump request");
>>> - exit(1);
>>> + if (show_details) {
>>> + if (rtnl_wilddump_req_filter(&rth, PF_BRIDGE, RTM_GETLINK,
>>> + (compress_vlans ?
>>> + RTEXT_FILTER_BRVLAN_COMPRESSED :
>>> + RTEXT_FILTER_BRVLAN)) < 0) {
>>> + perror("Cannon send dump request");
>>> + exit(1);
>>> + }
>>
>> vlan information is already available with `bridge vlan show`. any
>> specific reason why you want it in
>> the link dump output ?
>
> Since VLAN info is already in link messages, there is no other option but
> dump it in monitor or "bridge link show". Yes, the output may be lengthy
To make sure there's no misunderstanding - on GETLINK the vlan info is _not_
dumped by default (not compressed or otherwise).
It is only dumped compressed on port notifications, that is why I suggested to
use the already present flag (-compressvlans, -c) in order to include that info
when monitoring or dumping link info, so people watching for the port flags
(show_details) would not suddenly start getting a lot more and it makes sense
to dump it only on specific request.
> and hard to digest for a human, that is why I put it under "show_details"
> kludge - if one is requesting details, he/she should be prepared for
> large volumes of data to be shown :)
>
> As Nikolay suggested, it'll make sense to request compressed
> output by default, this will be addresses in v2 patch.
>
> [...]
>
^ permalink raw reply
* Re: [Patch net v2 2/2] net_sched: fix all the madness of tc filter chain
From: Jiri Pirko @ 2017-09-10 14:33 UTC (permalink / raw)
To: Cong Wang; +Cc: Linux Kernel Network Developers, Jakub Kicinski, Jiri Pirko
In-Reply-To: <CAM_iQpUJLfkq0ys3XNchPVXBpF4yoNaBG_L7UjiSMW7_9NyYaQ@mail.gmail.com>
Fri, Sep 08, 2017 at 06:37:55PM CEST, xiyou.wangcong@gmail.com wrote:
>On Thu, Sep 7, 2017 at 1:52 PM, Jiri Pirko <jiri@resnulli.us> wrote:
>> Thu, Sep 07, 2017 at 07:45:49PM CEST, xiyou.wangcong@gmail.com wrote:
>>>Yes it is for chain 0, because block holds a reference to chain 0 during
>>>creation. Non-0 chains are created with refcnt==1 too but paired with
>>>tcf_chain_put() rather than tcf_block_put(). This is what makes chain 0
>>>not special w.r.t. refcnt.
>>
>> So you need to tcf_chain_put only chain 0 here, right? The rest of the
>> chains get destroyed by the previous list_for_each_entry iteration when
>> flush happens and actions destroy happens what decrements recnt to 0
>> there.
>
>
>This is correct. And it should be only chain 0 after flush.
>
>>
>> What do I miss, who would still hold reference for non-0 chains when all
>> tps and all goto_chain actions are gone?
>
>No one. This is totally correct and is exactly what this patch intends to do.
>
>Look, this is why we never need an object with refcnt==0 to exist. ;)
So, I understand that correctly, good. But this is a problem.
When you do:
list_for_each_entry(chain, &block->chain_list, list)
tcf_chain_flush(chain);
The reference may get dropped for chains to 0 (for those that does not
have a goto_chain action holding a ref), and therefore they get freed
within the loop. That is problematic when you do the traversing of the
list. You may use list_for_each_entry_safe, but there is another issue:
As a part of tcf_chain_flush destruction, act goto_chain destruction may
get scheduled by call_rcu. That may be the last reference held for the
chain. So you race between this loop and rcu callback.
Consider following example:
chain0 - has only one rule with goto_chain 22 action
chain22 - no rule (refcnt 1 because of the action mentioned above)
CPU0 CPU1
tcf_chain_flush(0)
-> call_rcu(free_tcf)
free_tcf
->tcf_chain_put(22)
->tcf_chain_destroy(22)
->kfree(22)
tcf_chain_flush(22)...use-after-free
So what I suggest in order to prevent this is to change your code to
something like:
/* To avoid race between getting reference in the next loop and
* rcu callbacks from deleleted actions freeing the chain.
*/
rcu_barrier();
list_for_each_entry(chain, &block->chain_list, list)
if (chain->index) /* we already hold ref to chain 0 */
tcf_chain_hold(chain);
list_for_each_entry(chain, &block->chain_list, list)
tcf_chain_flush(chain);
/* Wait for rcu callbacks from deleleted actions that were
* sheduled as a result of tcf_chain_flush in the previous loop.
* This is not absolutelly necessary, as the chain may live after
* the tcf_chain_put is called in the next iteration and would
* get freed on tcf_chain_put call from rcu callback later on.
*/
rcu_barrier();
/* Now we are sure that we are the only one holding a reference
* to all chains, drop it and let them go.
*/
list_for_each_entry_safe(chain, tmp, &block->chain_list, list)
tcf_chain_put(chain);
kfree(block);
Does this make sense?
Thanks!
Jiri
^ permalink raw reply
* Re: [RFC PATCH] net: Introduce a socket option to enable picking tx queue based on rx queue.
From: Tom Herbert @ 2017-09-10 15:19 UTC (permalink / raw)
To: Sridhar Samudrala; +Cc: Alexander Duyck, Linux Kernel Network Developers
In-Reply-To: <1504222032-6337-1-git-send-email-sridhar.samudrala@intel.com>
On Thu, Aug 31, 2017 at 4:27 PM, Sridhar Samudrala
<sridhar.samudrala@intel.com> wrote:
> This patch introduces a new socket option SO_SYMMETRIC_QUEUES that can be used
> to enable symmetric tx and rx queues on a socket.
>
> This option is specifically useful for epoll based multi threaded workloads
> where each thread handles packets received on a single RX queue . In this model,
> we have noticed that it helps to send the packets on the same TX queue
> corresponding to the queue-pair associated with the RX queue specifically when
> busy poll is enabled with epoll().
>
> Two new fields are added to struct sock_common to cache the last rx ifindex and
> the rx queue in the receive path of an SKB. __netdev_pick_tx() returns the cached
> rx queue when this option is enabled and the TX is happening on the same device.
>
> Signed-off-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
> ---
> include/net/request_sock.h | 1 +
> include/net/sock.h | 17 +++++++++++++++++
> include/uapi/asm-generic/socket.h | 2 ++
> net/core/dev.c | 8 +++++++-
> net/core/sock.c | 10 ++++++++++
> net/ipv4/tcp_input.c | 1 +
> net/ipv4/tcp_ipv4.c | 1 +
> net/ipv4/tcp_minisocks.c | 1 +
> 8 files changed, 40 insertions(+), 1 deletion(-)
>
> diff --git a/include/net/request_sock.h b/include/net/request_sock.h
> index 23e2205..c3bc12e 100644
> --- a/include/net/request_sock.h
> +++ b/include/net/request_sock.h
> @@ -100,6 +100,7 @@ static inline struct sock *req_to_sk(struct request_sock *req)
> req_to_sk(req)->sk_prot = sk_listener->sk_prot;
> sk_node_init(&req_to_sk(req)->sk_node);
> sk_tx_queue_clear(req_to_sk(req));
> + req_to_sk(req)->sk_symmetric_queues = sk_listener->sk_symmetric_queues;
> req->saved_syn = NULL;
> refcount_set(&req->rsk_refcnt, 0);
>
> diff --git a/include/net/sock.h b/include/net/sock.h
> index 03a3625..3421809 100644
> --- a/include/net/sock.h
> +++ b/include/net/sock.h
> @@ -138,11 +138,14 @@ void SOCK_DEBUG(const struct sock *sk, const char *msg, ...)
> * @skc_node: main hash linkage for various protocol lookup tables
> * @skc_nulls_node: main hash linkage for TCP/UDP/UDP-Lite protocol
> * @skc_tx_queue_mapping: tx queue number for this connection
> + * @skc_rx_queue_mapping: rx queue number for this connection
> + * @skc_rx_ifindex: rx ifindex for this connection
> * @skc_flags: place holder for sk_flags
> * %SO_LINGER (l_onoff), %SO_BROADCAST, %SO_KEEPALIVE,
> * %SO_OOBINLINE settings, %SO_TIMESTAMPING settings
> * @skc_incoming_cpu: record/match cpu processing incoming packets
> * @skc_refcnt: reference count
> + * @skc_symmetric_queues: symmetric tx/rx queues
> *
> * This is the minimal network layer representation of sockets, the header
> * for struct sock and struct inet_timewait_sock.
> @@ -177,6 +180,7 @@ struct sock_common {
> unsigned char skc_reuseport:1;
> unsigned char skc_ipv6only:1;
> unsigned char skc_net_refcnt:1;
> + unsigned char skc_symmetric_queues:1;
> int skc_bound_dev_if;
> union {
> struct hlist_node skc_bind_node;
> @@ -214,6 +218,8 @@ struct sock_common {
> struct hlist_nulls_node skc_nulls_node;
> };
> int skc_tx_queue_mapping;
> + int skc_rx_queue_mapping;
> + int skc_rx_ifindex;
> union {
> int skc_incoming_cpu;
> u32 skc_rcv_wnd;
> @@ -324,6 +330,8 @@ struct sock {
> #define sk_nulls_node __sk_common.skc_nulls_node
> #define sk_refcnt __sk_common.skc_refcnt
> #define sk_tx_queue_mapping __sk_common.skc_tx_queue_mapping
> +#define sk_rx_queue_mapping __sk_common.skc_rx_queue_mapping
> +#define sk_rx_ifindex __sk_common.skc_rx_ifindex
>
> #define sk_dontcopy_begin __sk_common.skc_dontcopy_begin
> #define sk_dontcopy_end __sk_common.skc_dontcopy_end
> @@ -340,6 +348,7 @@ struct sock {
> #define sk_reuseport __sk_common.skc_reuseport
> #define sk_ipv6only __sk_common.skc_ipv6only
> #define sk_net_refcnt __sk_common.skc_net_refcnt
> +#define sk_symmetric_queues __sk_common.skc_symmetric_queues
> #define sk_bound_dev_if __sk_common.skc_bound_dev_if
> #define sk_bind_node __sk_common.skc_bind_node
> #define sk_prot __sk_common.skc_prot
> @@ -1676,6 +1685,14 @@ static inline int sk_tx_queue_get(const struct sock *sk)
> return sk ? sk->sk_tx_queue_mapping : -1;
> }
>
> +static inline void sk_mark_rx_queue(struct sock *sk, struct sk_buff *skb)
> +{
> + if (sk->sk_symmetric_queues) {
> + sk->sk_rx_ifindex = skb->skb_iif;
> + sk->sk_rx_queue_mapping = skb_get_rx_queue(skb);
> + }
> +}
> +
> static inline void sk_set_socket(struct sock *sk, struct socket *sock)
> {
> sk_tx_queue_clear(sk);
> diff --git a/include/uapi/asm-generic/socket.h b/include/uapi/asm-generic/socket.h
> index e47c9e4..f6b416e 100644
> --- a/include/uapi/asm-generic/socket.h
> +++ b/include/uapi/asm-generic/socket.h
> @@ -106,4 +106,6 @@
>
> #define SO_ZEROCOPY 60
>
> +#define SO_SYMMETRIC_QUEUES 61
> +
> #endif /* __ASM_GENERIC_SOCKET_H */
> diff --git a/net/core/dev.c b/net/core/dev.c
> index 270b547..d96cda8 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -3322,7 +3322,13 @@ static u16 __netdev_pick_tx(struct net_device *dev, struct sk_buff *skb)
>
> if (queue_index < 0 || skb->ooo_okay ||
> queue_index >= dev->real_num_tx_queues) {
> - int new_index = get_xps_queue(dev, skb);
> + int new_index = -1;
> +
> + if (sk && sk->sk_symmetric_queues && dev->ifindex == sk->sk_rx_ifindex)
> + new_index = sk->sk_rx_queue_mapping;
> +
> + if (new_index < 0 || new_index >= dev->real_num_tx_queues)
> + new_index = get_xps_queue(dev, skb);
This enforces that notion of queue pairs which is not universal
concept to NICs. There are many devices and instances where we
purposely avoid having a 1-1 relationship between rx and tx queues.
An alternative might be to create a rx queue to tx queue map, add the
rx queue argument to get_xps_queue, and then that function can
consider the mapping. The administrator can configure the mapping as
appropriate and can select which rx queues are subject to the mapping.
>
> if (new_index < 0)
> new_index = skb_tx_hash(dev, skb);
> diff --git a/net/core/sock.c b/net/core/sock.c
> index 9b7b6bb..3876cce 100644
> --- a/net/core/sock.c
> +++ b/net/core/sock.c
> @@ -1059,6 +1059,10 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
> sock_valbool_flag(sk, SOCK_ZEROCOPY, valbool);
> break;
>
> + case SO_SYMMETRIC_QUEUES:
> + sk->sk_symmetric_queues = valbool;
> + break;
> +
Allowing users control over this seems problematic to me. The intent
of packet steering is to provide good loading across the whole
systems, not just for individual applications. Exposing this control
makes that mission harder.
> default:
> ret = -ENOPROTOOPT;
> break;
> @@ -1391,6 +1395,10 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
> v.val = sock_flag(sk, SOCK_ZEROCOPY);
> break;
>
> + case SO_SYMMETRIC_QUEUES:
> + v.val = sk->sk_symmetric_queues;
> + break;
> +
> default:
> /* We implement the SO_SNDLOWAT etc to not be settable
> * (1003.1g 7).
> @@ -2738,6 +2746,8 @@ void sock_init_data(struct socket *sock, struct sock *sk)
> sk->sk_max_pacing_rate = ~0U;
> sk->sk_pacing_rate = ~0U;
> sk->sk_incoming_cpu = -1;
> + sk->sk_rx_ifindex = -1;
> + sk->sk_rx_queue_mapping = -1;
> /*
> * Before updating sk_refcnt, we must commit prior changes to memory
> * (Documentation/RCU/rculist_nulls.txt for details)
> diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
> index c5d7656..12381e0 100644
> --- a/net/ipv4/tcp_input.c
> +++ b/net/ipv4/tcp_input.c
> @@ -6356,6 +6356,7 @@ int tcp_conn_request(struct request_sock_ops *rsk_ops,
> tcp_rsk(req)->snt_isn = isn;
> tcp_rsk(req)->txhash = net_tx_rndhash();
> tcp_openreq_init_rwin(req, sk, dst);
> + sk_mark_rx_queue(req_to_sk(req), skb);
> if (!want_cookie) {
> tcp_reqsk_record_syn(sk, req, skb);
> fastopen_sk = tcp_try_fastopen(sk, skb, req, &foc);
> diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
> index a63486a..82f9af4 100644
> --- a/net/ipv4/tcp_ipv4.c
> +++ b/net/ipv4/tcp_ipv4.c
> @@ -1450,6 +1450,7 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
>
> sock_rps_save_rxhash(sk, skb);
> sk_mark_napi_id(sk, skb);
> + sk_mark_rx_queue(sk, skb);
This could be part of sock_rps_save_rxhash instead of new functions in
core receive path. That could be renamed sock_save_rx_info or
something like that. UDP support is also lacking with this patch so
that gets solved by a common function also.
> if (dst) {
> if (inet_sk(sk)->rx_dst_ifindex != skb->skb_iif ||
> !dst->ops->check(dst, 0)) {
> diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
> index 188a6f3..2b5efd5 100644
> --- a/net/ipv4/tcp_minisocks.c
> +++ b/net/ipv4/tcp_minisocks.c
> @@ -809,6 +809,7 @@ int tcp_child_process(struct sock *parent, struct sock *child,
>
> /* record NAPI ID of child */
> sk_mark_napi_id(child, skb);
> + sk_mark_rx_queue(child, skb);
>
> tcp_segs_in(tcp_sk(child), skb);
> if (!sock_owned_by_user(child)) {
> --
> 1.8.3.1
>
^ permalink raw reply
* Fw: [Bug 196889] New: kernel panic net_rx_action+0x21e/0x22d
From: Stephen Hemminger @ 2017-09-10 17:32 UTC (permalink / raw)
To: netdev
Begin forwarded message:
Date: Sun, 10 Sep 2017 12:21:13 +0000
From: bugzilla-daemon@bugzilla.kernel.org
To: stephen@networkplumber.org
Subject: [Bug 196889] New: kernel panic net_rx_action+0x21e/0x22d
https://bugzilla.kernel.org/show_bug.cgi?id=196889
Bug ID: 196889
Summary: kernel panic net_rx_action+0x21e/0x22d
Product: Networking
Version: 2.5
Kernel Version: 4.13.0+
Hardware: Intel
OS: Linux
Tree: Mainline
Status: NEW
Severity: normal
Priority: P1
Component: Other
Assignee: stephen@networkplumber.org
Reporter: pstaszewski@itcare.pl
Regression: No
Created attachment 258289
--> https://bugzilla.kernel.org/attachment.cgi?id=258289&action=edit
kernel panic screenshoot
Hardware:
Intel E5-2670
Network controllers
2x 10G Intel 82599
1x 100G Mellanox Connectx-5
Test scenario:
Packet generator -> (RX traffix on Mellanox 100G / 12Mpps UDP random
destination ip / random port )Tested HOST (TX traffix from Intel 82599 on 20
vlans attached to ethernet) -> Sink
Kernal panic occured after 5 minutes from start to send traffic by packet
generator.
--
You are receiving this mail because:
You are the assignee for the bug.
^ permalink raw reply
* broken vlan support on Realtek RTL8111/8168/8411 rev 9
From: Benoit Panizzon @ 2017-09-10 17:16 UTC (permalink / raw)
To: netdev
Hello
I make a strange observation. I have two machines.
One with a:
Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit
Ethernet Controller (rev 02)
The other one with the same card, but (rev 09).
The rev 02 one works flawlessly.
The rev 09 one does set all vlan tags to zero on rx!
It's not a config error on the switch, I swapped interfaces with the
one the other card is working.
I did try the r8169 kernel module from Realtek stead of the r8168 one,
the problem persists.
I did try to disable vlan offloading:
rx-vlan-offload: on
tx-vlan-offload: on
It's not marked as fixed but:
when I try to turn offloading off I get:
# /sbin/ethtool -K eth0 rx-vlan-offload off
ethtool: bad command line argument(s)
For more information run ethtool -h
Could anyone give me a hint how to further debug the problem or disable
vlan offloading completely?
-Benoit-
^ permalink raw reply
* Re: [PATCH iproute2 3/3] bridge: request vlans along with link information
From: Roman Mashak @ 2017-09-10 18:18 UTC (permalink / raw)
To: Nikolay Aleksandrov
Cc: Roopa Prabhu, stephen@networkplumber.org, netdev@vger.kernel.org,
Jamal Hadi Salim
In-Reply-To: <93aaf641-5063-e5d2-799c-718c85ca60a5@cumulusnetworks.com>
Nikolay Aleksandrov <nikolay@cumulusnetworks.com> writes:
> On 10/09/17 16:38, Roman Mashak wrote:
[...]
>> Since VLAN info is already in link messages, there is no other option but
>> dump it in monitor or "bridge link show". Yes, the output may be lengthy
>
> To make sure there's no misunderstanding - on GETLINK the vlan info is _not_
> dumped by default (not compressed or otherwise).
Yes, I understand it, I was referring to link events in the previous
comment. However, why not to report compressed vlans for GETLINK by
default if show_details is true, this would be consistent with events monitor.
It seems to be more clear and intuitive from the user's perspective, the
same set of command line options for \monitor' or 'show' commands.
> It is only dumped compressed on port notifications, that is why I suggested to
> use the already present flag (-compressvlans, -c) in order to include that info
> when monitoring or dumping link info, so people watching for the port flags
> (show_details) would not suddenly start getting a lot more and it makes sense
> to dump it only on specific request.
>
>> and hard to digest for a human, that is why I put it under "show_details"
>> kludge - if one is requesting details, he/she should be prepared for
>> large volumes of data to be shown :)
>>
>> As Nikolay suggested, it'll make sense to request compressed
>> output by default, this will be addresses in v2 patch.
>>
>> [...]
>>
^ permalink raw reply
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