* Your images 24
From: Joanna @ 2018-10-04 10:58 UTC (permalink / raw)
To: netdev
Have photos for cutting out or retouching?
We are one image team and we do editing for your the e-commerce photos,
industry photos or portrait photo.
If you need test editing then let me know.
Waiting for your reply and the photo work.
Thanks,
Joanna
^ permalink raw reply
* Your images 24
From: Joanna @ 2018-10-04 11:02 UTC (permalink / raw)
To: netdev
Have photos for cutting out or retouching?
We are one image team and we do editing for your the e-commerce photos,
industry photos or portrait photo.
If you need test editing then let me know.
Waiting for your reply and the photo work.
Thanks,
Joanna
^ permalink raw reply
* Your images 24
From: Joanna @ 2018-10-04 12:53 UTC (permalink / raw)
To: netdev
Have photos for cutting out or retouching?
We are one image team and we do editing for your the e-commerce photos,
industry photos or portrait photo.
If you need test editing then let me know.
Waiting for your reply and the photo work.
Thanks,
Joanna
^ permalink raw reply
* Re: [PATCH v2 0/5] Introducing ixgbe AF_XDP ZC support
From: Jesper Dangaard Brouer @ 2018-10-04 21:18 UTC (permalink / raw)
To: Björn Töpel
Cc: jeffrey.t.kirsher, intel-wired-lan, Björn Töpel,
magnus.karlsson, magnus.karlsson, ast, daniel, netdev, u9012063,
tuc, jakub.kicinski, brouer
In-Reply-To: <20181002080034.11754-1-bjorn.topel@gmail.com>
On Tue, 2 Oct 2018 10:00:29 +0200
Björn Töpel <bjorn.topel@gmail.com> wrote:
> From: Björn Töpel <bjorn.topel@intel.com>
>
> Jeff: Please remove the v1 patches from your dev-queue!
>
> This patch set introduces zero-copy AF_XDP support for Intel's ixgbe
> driver.
>
> The ixgbe zero-copy code is located in its own file ixgbe_xsk.[ch],
> analogous to the i40e ZC support. Again, as in i40e, code paths have
> been copied from the XDP path to the zero-copy path. Going forward we
> will try to generalize more code between the AF_XDP ZC drivers, and
> also reduce the heavy C&P.
>
> We have run some benchmarks on a dual socket system with two Broadwell
> E5 2660 @ 2.0 GHz with hyperthreading turned off. Each socket has 14
> cores which gives a total of 28, but only two cores are used in these
> experiments. One for TR/RX and one for the user space application. The
> memory is DDR4 @ 2133 MT/s (1067 MHz) and the size of each DIMM is
> 8192MB and with 8 of those DIMMs in the system we have 64 GB of total
> memory. The compiler used is GCC 7.3.0. The NIC is Intel
> 82599ES/X520-2 10Gbit/s using the ixgbe driver.
>
> Below are the results in Mpps of the 82599ES/X520-2 NIC benchmark runs
> for 64B and 1500B packets, generated by a commercial packet generator
> HW blasting packets at full 10Gbit/s line rate. The results are with
> retpoline and all other spectre and meltdown fixes.
>
> AF_XDP performance 64B packets:
> Benchmark XDP_DRV with zerocopy
> rxdrop 14.7
> txpush 14.6
I see similar performance numbers, but my system can crash with 'txonly'.
See full crash log and my analysis, below.
> l2fwd 11.1
Got l2fwd 13.2 Mpps.
>
> AF_XDP performance 1500B packets:
> Benchmark XDP_DRV with zerocopy
> rxdrop 0.8
> l2fwd 0.8
>
> XDP performance on our system as a base line.
>
> 64B packets:
> XDP stats CPU Mpps issue-pps
> XDP-RX CPU 16 14.7 0
>
> 1500B packets:
> XDP stats CPU Mpps issue-pps
> XDP-RX CPU 16 0.8 0
>
> The structure of the patch set is as follows:
>
> Patch 1: Introduce Rx/Tx ring enable/disable functionality
> Patch 2: Preparatory patche to ixgbe driver code for RX
> Patch 3: ixgbe zero-copy support for RX
> Patch 4: Preparatory patch to ixgbe driver code for TX
> Patch 5: ixgbe zero-copy support for TX
>
> Changes since v1:
>
> * Removed redundant AF_XDP precondition checks, pointed out by
> Jakub. Now, the preconditions are only checked at XDP enable time.
> * Fixed a crash in the egress path, due to incorrect usage of
> ixgbe_ring queue_index member. In v2 a ring_idx back reference is
> introduced, and used in favor of queue_index. William reported the
> crash, and helped me smoke out the issue. Kudos!
> * In ixgbe_xsk_async_xmit, validate qid against num_xdp_queues,
> instead of num_rx_queues.
>
> Cheers!
> Björn
>
> Björn Töpel (5):
> ixgbe: added Rx/Tx ring disable/enable functions
> ixgbe: move common Rx functions to ixgbe_txrx_common.h
> ixgbe: add AF_XDP zero-copy Rx support
> ixgbe: move common Tx functions to ixgbe_txrx_common.h
> ixgbe: add AF_XDP zero-copy Tx support
>
> drivers/net/ethernet/intel/ixgbe/Makefile | 3 +-
> drivers/net/ethernet/intel/ixgbe/ixgbe.h | 28 +-
> drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c | 17 +-
> drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 291 ++++++-
> .../ethernet/intel/ixgbe/ixgbe_txrx_common.h | 50 ++
> drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 803 ++++++++++++++++++
> 6 files changed, 1146 insertions(+), 46 deletions(-)
> create mode 100644 drivers/net/ethernet/intel/ixgbe/ixgbe_txrx_common.h
> create mode 100644 drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c
sock0@ixgbe2:0 rxdrop
pps pkts 1.00
rx 14,572,284 36,093,496
tx 0 0
sock0@ixgbe2:0 l2fwd
pps pkts 1.00
rx 13,287,830 108,616,192
tx 13,287,830 108,616,284
Notice, the crash only happens some times (on the second invocation):
$ sudo ./xdpsock --interface ixgbe2 --txonly --zero
samples/bpf/xdpsock_user.c:kick_tx:749: Assertion failed: 0: errno: 100/"Network is down"
sock0@ixgbe2:0 txonly
pps pkts 0.05
rx 0 0
tx 33,763 1,709
$ sudo ./xdpsock --interface ixgbe2 --txonly --zero
sock0@ixgbe2:0 txonly
pps pkts 1.00
rx 0 0
tx 14,730,354 14,733,404
$ sudo ./xdpsock --interface ixgbe2 --txonly --zero
samples/bpf/xdpsock_user.c:kick_tx:749: Assertion failed: 0: errno: 100/"Network is down"
sock0@ixgbe2:0 txonly
pps pkts 0.26
rx 0 0
tx 2,054,927 524,680
$ sudo ./xdpsock --interface ixgbe2 --txonly --zero
[ 249.953547] ixgbe 0000:01:00.1 ixgbe2: detected SFP+: 4
[ 250.204158] ixgbe 0000:01:00.1 ixgbe2: NIC Link is Up 10 Gbps, Flow Control: None
[ 257.217496] ixgbe 0000:01:00.1: removed PHC on ixgbe2
[ 257.279328] ixgbe 0000:01:00.1: Multiqueue Disabled: Rx Queue count = 1, Tx Queue count = 1 XDP Queue count = 6
[ 257.308463] ixgbe 0000:01:00.1: registered PHC device on ixgbe2
[ 257.489166] ixgbe 0000:01:00.1 ixgbe2: detected SFP+: 4
[ 257.494923] ixgbe 0000:01:00.1 ixgbe2: initiating reset to clear Tx work after link loss
[ 257.716190] ixgbe 0000:01:00.1 ixgbe2: Reset adapter
[ 257.968552] ixgbe 0000:01:00.1 ixgbe2: detected SFP+: 4
[ 258.185273] ixgbe 0000:01:00.1 ixgbe2: NIC Link is Up 10 Gbps, Flow Control: None
[ 260.836196] BUG: unable to handle kernel NULL pointer dereference at 0000000000000040
[ 260.844652] PGD 0 P4D 0
[ 260.847527] Oops: 0002 [#1] PREEMPT SMP PTI
[ 260.852042] CPU: 1 PID: 18 Comm: ksoftirqd/1 Not tainted 4.19.0-rc5-bpf-next-xdp-ixgbe-ZC+ #66
[ 260.861269] Hardware name: Supermicro Super Server/X10SRi-F, BIOS 2.0a 08/01/2016
[ 260.869381] RIP: 0010:xsk_umem_consume_tx+0xc9/0x180
[ 260.874682] Code: 24 75 be 48 8b 86 08 03 00 00 48 8d b0 f8 fc ff ff 48 39 c7 75 96 e8 26 bd 8a ff 5b 31 c0 41 5a 41 5c 41 5d 5d 49 8d 62 f8 c3 <89> 41 40 8b 4a 24 8b 42 1c 29 c8 75 0b 48 8b 42 28 8b 00 89 42 1c
[ 260.894317] RSP: 0018:ffffc9000323bd00 EFLAGS: 00010246
[ 260.899873] RAX: 0000000000000000 RBX: ffffc9000323bd68 RCX: 0000000000000000
[ 260.907339] RDX: ffff8808553e1c00 RSI: ffff880826e43000 RDI: ffff880854940818
[ 260.914801] RBP: ffffc9000323bd20 R08: 0000000000000010 R09: 0000000000000000
[ 260.922263] R10: ffffc9000323bd40 R11: 0000000000000000 R12: ffffc9000323bd64
[ 260.929726] R13: ffff880854940780 R14: 0000000000000000 R15: 0000000000000000
[ 260.937189] FS: 0000000000000000(0000) GS:ffff88085c640000(0000) knlGS:0000000000000000
[ 260.945871] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 260.951943] CR2: 0000000000000040 CR3: 000000087f20a006 CR4: 00000000003606e0
[ 260.959409] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 260.966872] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 260.974333] Call Trace:
[ 260.977115] ? ixgbe_clean_xdp_tx_irq+0x19d/0x2e0 [ixgbe]
[ 260.982843] ixgbe_clean_xdp_tx_irq+0x19d/0x2e0 [ixgbe]
[ 260.988426] ixgbe_poll+0x5a/0x700 [ixgbe]
[ 260.992850] net_rx_action+0x141/0x3f0
[ 260.996931] ? sort_range+0x20/0x20
[ 261.000743] __do_softirq+0xe3/0x2f7
[ 261.004656] ? sort_range+0x20/0x20
[ 261.008490] run_ksoftirqd+0x26/0x30
[ 261.012420] smpboot_thread_fn+0x114/0x1d0
[ 261.016848] kthread+0x111/0x130
[ 261.020423] ? kthread_create_worker_on_cpu+0x50/0x50
[ 261.025802] ret_from_fork+0x1f/0x30
[ 261.029707] Modules linked in: ip6table_filter ip6_tables iptable_filter ip_tables x_tables tun nfnetlink bridge nf_defrag_ipv6 nf_defrag_ipv4 bpfilter sunrpc coretemp intel_cstate intel_uncore intel_rapl_perf pcspkr i2c_i801 wmi ipmi_si ipmi_devintf ipmi_msghandler acpi_pad pcc_cpufreq sch_fq_codel ixgbe mdio mlx5_core i40e igb nfp ptp i2c_algo_bit devlink i2c_core pps_core hid_generic [last unloaded: x_tables]
[ 261.067878] CR2: 0000000000000040
[ 261.071526] ---[ end trace f0011e17c3744ee4 ]---
[ 261.077903] RIP: 0010:xsk_umem_consume_tx+0xc9/0x180
[ 261.083191] Code: 24 75 be 48 8b 86 08 03 00 00 48 8d b0 f8 fc ff ff 48 39 c7 75 96 e8 26 bd 8a ff 5b 31 c0 41 5a 41 5c 41 5d 5d 49 8d 62 f8 c3 <89> 41 40 8b 4a 24 8b 42 1c 29 c8 75 0b 48 8b 42 28 8b 00 89 42 1c
[ 261.102852] RSP: 0018:ffffc9000323bd00 EFLAGS: 00010246
[ 261.108423] RAX: 0000000000000000 RBX: ffffc9000323bd68 RCX: 0000000000000000
[ 261.115889] RDX: ffff8808553e1c00 RSI: ffff880826e43000 RDI: ffff880854940818
[ 261.123382] RBP: ffffc9000323bd20 R08: 0000000000000010 R09: 0000000000000000
[ 261.130847] R10: ffffc9000323bd40 R11: 0000000000000000 R12: ffffc9000323bd64
[ 261.138325] R13: ffff880854940780 R14: 0000000000000000 R15: 0000000000000000
[ 261.145788] FS: 0000000000000000(0000) GS:ffff88085c640000(0000) knlGS:0000000000000000
[ 261.154503] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 261.160594] CR2: 0000000000000040 CR3: 000000087f20a006 CR4: 00000000003606e0
[ 261.168070] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 261.175547] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 261.183012] Kernel panic - not syncing: Fatal exception in interrupt
[ 261.189743] Kernel Offset: disabled
[ 261.194954] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---
[ 261.203123] ------------[ cut here ]------------
[ 261.208071] sched: Unexpected reschedule of offline CPU#0!
[ 261.213885] WARNING: CPU: 1 PID: 18 at arch/x86/kernel/smp.c:128 native_smp_send_reschedule+0x31/0x40
[ 261.223698] Modules linked in: ip6table_filter ip6_tables iptable_filter ip_tables x_tables tun nfnetlink bridge nf_defrag_ipv6 nf_defrag_ipv4 bpfilter sunrpc coretemp intel_cstate intel_uncore intel_rapl_perf pcspkr i2c_i801 wmi ipmi_si ipmi_devintf ipmi_msghandler acpi_pad pcc_cpufreq sch_fq_codel ixgbe mdio mlx5_core i40e igb nfp ptp i2c_algo_bit devlink i2c_core pps_core hid_generic [last unloaded: x_tables]
[ 261.261869] CPU: 1 PID: 18 Comm: ksoftirqd/1 Tainted: G D 4.19.0-rc5-bpf-next-xdp-ixgbe-ZC+ #66
[ 261.272468] Hardware name: Supermicro Super Server/X10SRi-F, BIOS 2.0a 08/01/2016
[ 261.280549] RIP: 0010:native_smp_send_reschedule+0x31/0x40
[ 261.286361] Code: 48 0f a3 05 91 c7 3d 01 73 12 48 8b 05 e8 11 0c 01 be fd 00 00 00 48 8b 40 30 ff e0 89 fe 48 c7 c7 b8 36 09 82 e8 ff 7d 02 00 <0f> 0b c3 66 90 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 53 48
[ 261.306001] RSP: 0018:ffff88085c643cc0 EFLAGS: 00010082
[ 261.311553] RAX: 000000000000002e RBX: ffff88085c6213c0 RCX: 0000000000000006
[ 261.319023] RDX: 0000000000000007 RSI: 0000000000000092 RDI: ffff88085c6555e0
[ 261.326483] RBP: ffff88085306a0d4 R08: 0000000000000000 R09: 0000000000000478
[ 261.333943] R10: ffff88085c643bf8 R11: ffffffff82acfbad R12: ffff880853069640
[ 261.341407] R13: ffff88085c643d10 R14: 0000000000000086 R15: 00000000000213c0
[ 261.348869] FS: 0000000000000000(0000) GS:ffff88085c640000(0000) knlGS:0000000000000000
[ 261.357555] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 261.363624] CR2: 0000000000000040 CR3: 000000087f20a006 CR4: 00000000003606e0
[ 261.371090] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 261.378554] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 261.386014] Call Trace:
[ 261.388788] <IRQ>
[ 261.391128] check_preempt_curr+0x6f/0x80
[ 261.395466] ttwu_do_wakeup+0x19/0x150
[ 261.399548] try_to_wake_up+0x19c/0x450
[ 261.403715] ? enqueue_entity+0xad/0x2c0
[ 261.407964] __wake_up_common+0x71/0x170
[ 261.412220] ep_poll_callback+0xb5/0x2a0
[ 261.416474] __wake_up_common+0x71/0x170
[ 261.420729] __wake_up_common_lock+0x6c/0x90
[ 261.425335] ? tick_sched_do_timer+0x60/0x60
[ 261.429935] irq_work_run_list+0x47/0x70
[ 261.434190] update_process_times+0x3b/0x50
[ 261.438705] tick_sched_handle+0x21/0x70
[ 261.442959] ? tick_sched_do_timer+0x50/0x60
[ 261.447554] tick_sched_timer+0x37/0x70
[ 261.451719] __hrtimer_run_queues+0xf8/0x2a0
[ 261.456317] hrtimer_interrupt+0xe5/0x240
[ 261.460657] ? sched_clock+0x5/0x10
[ 261.464478] smp_apic_timer_interrupt+0x5e/0x140
[ 261.469420] apic_timer_interrupt+0xf/0x20
[ 261.473847] </IRQ>
[ 261.476271] RIP: 0010:panic+0x1e3/0x232
[ 261.480433] Code: eb ac 83 3d 30 07 a0 01 00 74 05 e8 39 36 02 00 48 c7 c6 a0 8b ac 82 48 c7 c7 10 af 09 82 e8 84 6a 05 00 fb 66 0f 1f 44 00 00 <31> db e8 f8 22 0b 00 4c 39 eb 7c 17 41 83 f4 01 44 89 e7 ff 15 d6
[ 261.500066] RSP: 0018:ffffc9000323baf8 EFLAGS: 00000292 ORIG_RAX: ffffffffffffff13
[ 261.508234] RAX: 0000000000000046 RBX: 0000000000000000 RCX: 0000000000000006
[ 261.515696] RDX: 0000000000000007 RSI: 0000000000000082 RDI: ffff88085c6555e0
[ 261.523160] RBP: ffffc9000323bb68 R08: 0000000000000000 R09: 0000000000000476
[ 261.530620] R10: 0000000000000008 R11: ffffffff82acfbad R12: 0000000000000000
[ 261.538084] R13: 0000000000000000 R14: 0000000000000009 R15: 0000000000000001
[ 261.545546] ? panic+0x1dc/0x232
[ 261.549101] oops_end+0xb9/0xd0
[ 261.552569] no_context+0x156/0x3a0
[ 261.556392] ? cpumask_next_and+0x1a/0x20
[ 261.560730] ? find_busiest_group+0x112/0xa80
[ 261.565413] __do_page_fault+0xd5/0x500
[ 261.569579] page_fault+0x1e/0x30
[ 261.573220] RIP: 0010:xsk_umem_consume_tx+0xc9/0x180
[ 261.578508] Code: 24 75 be 48 8b 86 08 03 00 00 48 8d b0 f8 fc ff ff 48 39 c7 75 96 e8 26 bd 8a ff 5b 31 c0 41 5a 41 5c 41 5d 5d 49 8d 62 f8 c3 <89> 41 40 8b 4a 24 8b 42 1c 29 c8 75 0b 48 8b 42 28 8b 00 89 42 1c
[ 261.598148] RSP: 0018:ffffc9000323bd00 EFLAGS: 00010246
[ 261.603703] RAX: 0000000000000000 RBX: ffffc9000323bd68 RCX: 0000000000000000
[ 261.611169] RDX: ffff8808553e1c00 RSI: ffff880826e43000 RDI: ffff880854940818
[ 261.618631] RBP: ffffc9000323bd20 R08: 0000000000000010 R09: 0000000000000000
[ 261.626094] R10: ffffc9000323bd40 R11: 0000000000000000 R12: ffffc9000323bd64
[ 261.633557] R13: ffff880854940780 R14: 0000000000000000 R15: 0000000000000000
[ 261.641021] ? ixgbe_clean_xdp_tx_irq+0x19d/0x2e0 [ixgbe]
[ 261.646755] ixgbe_clean_xdp_tx_irq+0x19d/0x2e0 [ixgbe]
[ 261.652308] ixgbe_poll+0x5a/0x700 [ixgbe]
[ 261.656735] net_rx_action+0x141/0x3f0
[ 261.660814] ? sort_range+0x20/0x20
[ 261.664627] __do_softirq+0xe3/0x2f7
[ 261.668530] ? sort_range+0x20/0x20
[ 261.672351] run_ksoftirqd+0x26/0x30
[ 261.676250] smpboot_thread_fn+0x114/0x1d0
[ 261.680671] kthread+0x111/0x130
[ 261.684223] ? kthread_create_worker_on_cpu+0x50/0x50
[ 261.689603] ret_from_fork+0x1f/0x30
[ 261.701291] ---[ end trace f0011e17c3744ee5 ]---
(gdb) list *(xsk_umem_consume_tx)+0xc9
0xffffffff81883fe9 is in xsk_umem_consume_tx (./include/linux/compiler.h:214).
209 static __always_inline void __write_once_size(volatile void *p, void *res, int size)
210 {
211 switch (size) {
212 case 1: *(volatile __u8 *)p = *(__u8 *)res; break;
213 case 2: *(volatile __u16 *)p = *(__u16 *)res; break;
214 case 4: *(volatile __u32 *)p = *(__u32 *)res; break;
215 case 8: *(volatile __u64 *)p = *(__u64 *)res; break;
216 default:
217 barrier();
218 __builtin_memcpy((void *)p, (const void *)res, size);
I think the bug occurs in the WRITE_ONCE in xskq_peek_desc() and
it correspond to q->ring == NULL (as ring have offset 40)
static inline struct xdp_desc *xskq_peek_desc(struct xsk_queue *q,
struct xdp_desc *desc)
{
if (q->cons_tail == q->cons_head) {
WRITE_ONCE(q->ring->consumer, q->cons_tail);
q->cons_head = q->cons_tail + xskq_nb_avail(q, RX_BATCH_SIZE);
/* Order consumer and data */
smp_rmb();
}
return xskq_validate_desc(q, desc);
}
$ pahole -C xsk_queue vmlinux
struct xsk_queue {
u64 chunk_mask; /* 0 8 */
u64 size; /* 8 8 */
u32 ring_mask; /* 16 4 */
u32 nentries; /* 20 4 */
u32 prod_head; /* 24 4 */
u32 prod_tail; /* 28 4 */
u32 cons_head; /* 32 4 */
u32 cons_tail; /* 36 4 */
struct xdp_ring * ring; /* 40 8 */
u64 invalid_descs; /* 48 8 */
/* size: 56, cachelines: 1, members: 10 */
/* last cacheline: 56 bytes */
};
--
Best regards,
Jesper Dangaard Brouer
MSc.CS, Principal Kernel Engineer at Red Hat
LinkedIn: http://www.linkedin.com/in/brouer
^ permalink raw reply
* Re: [PATCH net] team: Forbid enslaving team device to itself
From: David Miller @ 2018-10-04 20:56 UTC (permalink / raw)
To: idosch; +Cc: netdev, jiri
In-Reply-To: <20181001092159.24775-1-idosch@mellanox.com>
From: Ido Schimmel <idosch@mellanox.com>
Date: Mon, 1 Oct 2018 12:21:59 +0300
> team's ndo_add_slave() acquires 'team->lock' and later tries to open the
> newly enslaved device via dev_open(). This emits a 'NETDEV_UP' event
> that causes the VLAN driver to add VLAN 0 on the team device. team's
> ndo_vlan_rx_add_vid() will also try to acquire 'team->lock' and
> deadlock.
>
> Fix this by checking early at the enslavement function that a team
> device is not being enslaved to itself.
>
> A similar check was added to the bond driver in commit 09a89c219baf
> ("bonding: disallow enslaving a bond to itself").
...
> Fixes: 87002b03baab ("net: introduce vlan_vid_[add/del] and use them instead of direct [add/kill]_vid ndo calls")
> Signed-off-by: Ido Schimmel <idosch@mellanox.com>
> Reported-and-tested-by: syzbot+bd051aba086537515cdb@syzkaller.appspotmail.com
Applied and queued up for -stable.
^ permalink raw reply
* Re: [PATCHv2 net-next] geneve: allow to clear ttl inherit
From: David Miller @ 2018-10-04 20:55 UTC (permalink / raw)
To: liuhangbin; +Cc: netdev, phil, mkubecek
In-Reply-To: <1538233589-13899-1-git-send-email-liuhangbin@gmail.com>
From: Hangbin Liu <liuhangbin@gmail.com>
Date: Sat, 29 Sep 2018 23:06:29 +0800
> As Michal remaind, we should allow to clear ttl inherit. Then we will
> have three states:
>
> 1. set the flag, and do ttl inherit.
> 2. do not set the flag, use configured ttl value, or default ttl (0) if
> not set.
> 3. disable ttl inherit, use previous configured ttl value, or default ttl (0).
>
> Fixes: 52d0d404d39dd ("geneve: add ttl inherit support")
> CC: Michal Kubecek <mkubecek@suse.cz>
> Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Applied.
^ permalink raw reply
* Your images 30
From: Joanna @ 2018-10-04 11:25 UTC (permalink / raw)
To: netdev
Have photos for cutting out or retouching?
We are one image team and we do editing for your the e-commerce photos,
industry photos or portrait photo.
If you need test editing then let me know.
Waiting for your reply and the photo work.
Thanks,
Joanna
^ permalink raw reply
* Re: [PATCH net-next v1 1/1] tc: Add support for configuring the taprio scheduler
From: David Miller @ 2018-10-04 20:52 UTC (permalink / raw)
To: vinicius.gomes
Cc: netdev, jesus.sanchez-palencia, henrik, richardcochran, jhs,
xiyou.wangcong, jiri, ilias.apalodimas, simon.fok
In-Reply-To: <20180929005943.12928-2-vinicius.gomes@intel.com>
From: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Date: Fri, 28 Sep 2018 17:59:43 -0700
> This traffic scheduler allows traffic classes states (transmission
> allowed/not allowed, in the simplest case) to be scheduled, according
> to a pre-generated time sequence. This is the basis of the IEEE
> 802.1Qbv specification.
>
> Example configuration:
>
> tc qdisc replace dev enp3s0 parent root handle 100 taprio \
> num_tc 3 \
> map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 \
> queues 1@0 1@1 2@2 \
> base-time 1528743495910289987 \
> sched-entry S 01 300000 \
> sched-entry S 02 300000 \
> sched-entry S 04 300000 \
> clockid CLOCK_TAI
>
> The configuration format is similar to mqprio. The main difference is
> the presence of a schedule, built by multiple "sched-entry"
> definitions, each entry has the following format:
>
> sched-entry <CMD> <GATE MASK> <INTERVAL>
>
> The only supported <CMD> is "S", which means "SetGateStates",
> following the IEEE 802.1Qbv-2015 definition (Table 8-6). <GATE MASK>
> is a bitmask where each bit is a associated with a traffic class, so
> bit 0 (the least significant bit) being "on" means that traffic class
> 0 is "active" for that schedule entry. <INTERVAL> is a time duration
> in nanoseconds that specifies for how long that state defined by <CMD>
> and <GATE MASK> should be held before moving to the next entry.
>
> This schedule is circular, that is, after the last entry is executed
> it starts from the first one, indefinitely.
>
> The other parameters can be defined as follows:
>
> - base-time: specifies the instant when the schedule starts, if
> 'base-time' is a time in the past, the schedule will start at
>
> base-time + (N * cycle-time)
>
> where N is the smallest integer so the resulting time is greater
> than "now", and "cycle-time" is the sum of all the intervals of the
> entries in the schedule;
>
> - clockid: specifies the reference clock to be used;
>
> The parameters should be similar to what the IEEE 802.1Q family of
> specification defines.
>
> Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Applied.
^ permalink raw reply
* Re: [PATCH v4 net-next 0/9] bnxt_en: devlink param updates
From: David Miller @ 2018-10-04 20:50 UTC (permalink / raw)
To: jiri
Cc: vasundhara-v.volam, gerlitz.or, michael.chan, netdev, jiri,
jakub.kicinski
In-Reply-To: <20181004103940.GE2222@nanopsycho>
From: Jiri Pirko <jiri@resnulli.us>
Date: Thu, 4 Oct 2018 12:39:40 +0200
> Thu, Oct 04, 2018 at 07:43:43AM CEST, vasundhara-v.volam@broadcom.com wrote:
>>This patchset adds support for 3 generic and 1 driver-specific devlink
>>parameters. Add documentation for these configuration parameters.
>>
>>Also, this patchset adds support to return proper error code if
>>HWRM_NVM_GET/SET_VARIABLE commands return error code
>>HWRM_ERR_CODE_RESOURCE_ACCESS_DENIED.
>>
>>v3->v4:
>>-Remove extra definition of NVM_OFF_HW_TC_OFFLOAD from bnxt_devlink.h
>>-Remove type information for generic parameters from
>>devlink-params-bnxt.txt
>>
>>v2->v3:
>>-Remove description of generic parameters from devlink-params-bnxt.txt
>>
>>v1->v2:
>>-Remove hw_tc_offload parameter.
>>-Update all patches with Cc of MAINTAINERS.
>>-Add more description in commit message for device specific parameter.
>>-Add a new Documentation/networking/devlink-params.txt with some
>>generic devlink parameters information.
>>-Add a new Documentation/networking/devlink-params-bnxt.txt with devlink
>>parameters information that are supported by bnxt_en driver.
>>
>>Vasundhara Volam (9):
>> devlink: Add generic parameter ignore_ari
>> devlink: Add generic parameter msix_vec_per_pf_max
>> devlink: Add generic parameter msix_vec_per_pf_min
>> bnxt_en: Use ignore_ari devlink parameter
>> bnxt_en: return proper error when FW returns
>> HWRM_ERR_CODE_RESOURCE_ACCESS_DENIED
>> bnxt_en: Use msix_vec_per_pf_max and msix_vec_per_pf_min devlink
>> params.
>> bnxt_en: Add a driver specific gre_ver_check devlink parameter.
>> devlink: Add Documentation/networking/devlink-params.txt
>> devlink: Add Documentation/networking/devlink-params-bnxt.txt
>
> Looks good to me. For the whole set:
> Acked-by: Jiri Pirko <jiri@mellanox.com>
Series applied, thanks.
^ permalink raw reply
* Re: [PATCH net-next,v2] IPv6 ifstats separation
From: Eric Dumazet @ 2018-10-04 20:42 UTC (permalink / raw)
To: Stephen Suryaputra, netdev
In-Reply-To: <20181004190828.26536-1-ssuryaextr@gmail.com>
On 10/04/2018 12:08 PM, Stephen Suryaputra wrote:
> Separate IPv6 ifstats into the ones that are hit on fast path and
> the ones that aren't. The ones that are not can be removed as needed
> using sysctls.
>
> The separation minimizes percpu data. It reduces from 288 bytes per cpu to 56
> bytes. When the other stats are disabled, then it adds 4144 bytes saving per
> netdev.
>
> The stats that are hit on fast path are percpu and the existing macro that
> increments them is added with a constant check that should be optimized by the
> preprocessor.
>
> This is done based on some feedbacks in the past to make IPv6 stats optional.
> It doesn't fully accomplish that but it enables all but 6 counters be optional.
> Those optional counters however are still enabled by default to preserve the
> current behavior.
>
How have you decided some counters can be 'slow' and other 'fast' ?
I can tell you I see many ultra-fast candidates in your 'slow' list :/
Also think about DDOS.
After your patch, all these 'wrong packets' will incur an expensive
operation on a shared and highly contented cache line,
effectively making the attack easier to conduct.
+static const struct snmp_mib snmp6_ipstats_device_list[] = {
+ SNMP_MIB_ITEM("Ip6InHdrErrors", IPSTATS_MIB_INHDRERRORS),
+ SNMP_MIB_ITEM("Ip6InTooBigErrors", IPSTATS_MIB_INTOOBIGERRORS),
+ SNMP_MIB_ITEM("Ip6InNoRoutes", IPSTATS_MIB_INNOROUTES),
+ SNMP_MIB_ITEM("Ip6InAddrErrors", IPSTATS_MIB_INADDRERRORS),
+ SNMP_MIB_ITEM("Ip6InUnknownProtos", IPSTATS_MIB_INUNKNOWNPROTOS),
+ SNMP_MIB_ITEM("Ip6InTruncatedPkts", IPSTATS_MIB_INTRUNCATEDPKTS),
+ SNMP_MIB_ITEM("Ip6InDiscards", IPSTATS_MIB_INDISCARDS),
+ SNMP_MIB_ITEM("Ip6OutDiscards", IPSTATS_MIB_OUTDISCARDS),
+ SNMP_MIB_ITEM("Ip6OutNoRoutes", IPSTATS_MIB_OUTNOROUTES),
+ SNMP_MIB_ITEM("Ip6ReasmTimeout", IPSTATS_MIB_REASMTIMEOUT),
+ SNMP_MIB_ITEM("Ip6ReasmReqds", IPSTATS_MIB_REASMREQDS),
+ SNMP_MIB_ITEM("Ip6ReasmOKs", IPSTATS_MIB_REASMOKS),
+ SNMP_MIB_ITEM("Ip6ReasmFails", IPSTATS_MIB_REASMFAILS),
+ SNMP_MIB_ITEM("Ip6FragOKs", IPSTATS_MIB_FRAGOKS),
+ SNMP_MIB_ITEM("Ip6FragFails", IPSTATS_MIB_FRAGFAILS),
+ SNMP_MIB_ITEM("Ip6FragCreates", IPSTATS_MIB_FRAGCREATES),
+ SNMP_MIB_ITEM("Ip6InMcastPkts", IPSTATS_MIB_INMCASTPKTS),
+ SNMP_MIB_ITEM("Ip6OutMcastPkts", IPSTATS_MIB_OUTMCASTPKTS),
+ SNMP_MIB_ITEM("Ip6InMcastOctets", IPSTATS_MIB_INMCASTOCTETS),
+ SNMP_MIB_ITEM("Ip6OutMcastOctets", IPSTATS_MIB_OUTMCASTOCTETS),
+ SNMP_MIB_ITEM("Ip6InBcastOctets", IPSTATS_MIB_INBCASTOCTETS),
+ SNMP_MIB_ITEM("Ip6OutBcastOctets", IPSTATS_MIB_OUTBCASTOCTETS),
+ /* IPSTATS_MIB_CSUMERRORS is not relevant in IPv6 (no checksum) */
+ SNMP_MIB_ITEM("Ip6InNoECTPkts", IPSTATS_MIB_NOECTPKTS),
+ SNMP_MIB_ITEM("Ip6InECT1Pkts", IPSTATS_MIB_ECT1PKTS),
+ SNMP_MIB_ITEM("Ip6InECT0Pkts", IPSTATS_MIB_ECT0PKTS),
+ SNMP_MIB_ITEM("Ip6InCEPkts", IPSTATS_MIB_CEPKTS),
+ SNMP_MIB_SENTINEL
+};
+
^ permalink raw reply
* Re: [PATCH v2 net-next] rtnetlink: fix rtnl_fdb_dump() for ndmsg header
From: David Ahern @ 2018-10-04 20:34 UTC (permalink / raw)
To: Mauricio Faria de Oliveira, netdev; +Cc: davem
In-Reply-To: <20181002014640.688-1-mfo@canonical.com>
On 10/1/18 7:46 PM, Mauricio Faria de Oliveira wrote:
> Currently, rtnl_fdb_dump() assumes the family header is 'struct ifinfomsg',
> which is not always true -- 'struct ndmsg' is used by iproute2 ('ip neigh').
>
> The problem is, the function bails out early if nlmsg_parse() fails, which
> does occur for iproute2 usage of 'struct ndmsg' because the payload length
> is shorter than the family header alone (as 'struct ifinfomsg' is assumed).
>
> This breaks backward compatibility with userspace -- nothing is sent back.
>
...
>
> Fixes: 0ff50e83b512 ("net: rtnetlink: bail out from rtnl_fdb_dump() on parse error")
> Fixes: 5e6d24358799 ("bridge: netlink dump interface at par with brctl")
> Reported-by: Aidan Obley <aobley@pivotal.io>
> Signed-off-by: Mauricio Faria de Oliveira <mfo@canonical.com>
>
> ---
> v2: Change logic to check msg size for ndmsg with optional attribute.
> Thanks: David Ahern <dsahern@gmail.com>
>
> net/core/rtnetlink.c | 29 ++++++++++++++++++++---------
> 1 file changed, 20 insertions(+), 9 deletions(-)
>
Seems reasonable for 4.19 and back
Reviewed-by: David Ahern <dsahern@gmail.com>
^ permalink raw reply
* Re: [PATCH bpf-next] bpf: emit audit messages upon successful prog load and unload
From: Jesper Dangaard Brouer @ 2018-10-04 20:22 UTC (permalink / raw)
To: Daniel Borkmann; +Cc: Alexei Starovoitov, ast, netdev, Jiri Olsa, acme, brouer
In-Reply-To: <36266cde-3aa0-aeb4-9888-5e3f0e4d1911@iogearbox.net>
On Thu, 4 Oct 2018 21:41:17 +0200 Daniel Borkmann <daniel@iogearbox.net> wrote:
> On 10/04/2018 08:39 PM, Jesper Dangaard Brouer wrote:
> > On Thu, 4 Oct 2018 10:11:43 -0700 Alexei Starovoitov <alexei.starovoitov@gmail.com> wrote:
> >> On Thu, Oct 04, 2018 at 03:50:38PM +0200, Daniel Borkmann wrote:
[...]
> >>
> >> If the purpose of the patch is to give user space visibility into
> >> bpf prog load/unload as a notification, then I completely agree that
> >> some notification mechanism is necessary.
>
> Yeah, I did only regard it as only that, nothing more. Some means
> of timeline and notification that can be kept in a record in user
> space and later retrieved e.g. for introspection on what has been
> loaded.
>
> >> I've started working on such mechanism via perf ring buffer which is
> >> the fastest mechanism we have in the kernel so far.
> >> See long discussion here: https://patchwork.ozlabs.org/patch/971970/
>
> That one is definitely needed in any case to resolve the kallsyms
> limitations, and it does have overlap in that in either case we
> want to look at past BPF programs that have been unloaded in the
> meantime, so I don't have a strong preference either way, and the
> former is needed in any case. Though thought was that audit might
> be an option for those not running profiling daemons 24/7, but
> presumably bpftool could be extended to record these events as
> well if we don't want to reuse audit infra.
Yes, exactly, I don't want to run a profiling daemon 24/7 to record
these events. I do acknowledge that this perf event is relevant,
especially for catching the kernel symbols (I need that myself), but it
does not cover my use-case.
My use-case is to 24/7 collect and keep records in userspace, and have a
timeline of these notifications, for later retrieval. The idea is that
our support engineers can look at these records when troubleshooting
the system. And the plan is also to collect these records as part of
our sosreport tool, which is part of the support case.
--
Best regards,
Jesper Dangaard Brouer
MSc.CS, Principal Kernel Engineer at Red Hat
LinkedIn: http://www.linkedin.com/in/brouer
^ permalink raw reply
* Re: [PATCH ethtool v2] ethtool: Fix uninitialized variable use at qsfp dump
From: John W. Linville @ 2018-10-04 19:40 UTC (permalink / raw)
To: Eran Ben Elisha
Cc: netdev, Chris Preimesberger, Andrew Lunn, Neil Horman,
Vidya Sagar Ravipati
In-Reply-To: <1538465059-24645-1-git-send-email-eranbe@mellanox.com>
On Tue, Oct 02, 2018 at 10:24:19AM +0300, Eran Ben Elisha wrote:
> Struct sff_diags can be used uninitialized at sff8636_show_dom, this
> caused the tool to show unreported fields (supports_alarms) by the lower
> level driver.
>
> In addition, make sure the same struct is being initialized at
> sff8472_parse_eeprom function, to avoid the same issue here.
>
> Fixes: a5e73bb05ee4 ("ethtool:QSFP Plus/QSFP28 Diagnostics Information Support")
> Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
OK, queued for next release...
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply
* Re: [RFC PATCH ethtool] ethtool: better syntax for combinations of FEC modes
From: John W. Linville @ 2018-10-04 19:41 UTC (permalink / raw)
To: Edward Cree; +Cc: Michal Kubecek, netdev
In-Reply-To: <046b3295-e634-f29e-5d3f-537d80cb3c30@solarflare.com>
On Thu, Oct 04, 2018 at 05:06:29PM +0100, Edward Cree wrote:
> On 04/10/18 15:08, John W. Linville wrote:
> > Ping?
> >
> > On Mon, Oct 01, 2018 at 02:59:10PM -0400, John W. Linville wrote:
> >> Is this patch still RFC?
> Feel free to de-RFC and apply it.
Great -- queued for next release.
John
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply
* pull-request: mac80211 2018-10-04
From: Johannes Berg @ 2018-10-04 19:43 UTC (permalink / raw)
To: David Miller; +Cc: netdev, linux-wireless
Hi Dave,
I got three more fixes submitted, and am sending those to you
now in the hope of still getting them in, although all of the
bugs are actually older than the current cycle.
If there's a release on Sunday then I guess I won't care, but
if not then I'd appreciate if you could pull net into net-next
as I have at least one patch there that otherwise doesn't apply
(at least the result wouldn't compile). Not sure if you've seen
anything from Greg indicating either way.
Anyway, for now these fixes look good to me, so please pull or
let me know if there's any problem.
Thanks,
johannes
The following changes since commit 43955a45dc0b4f3be7f0c3afc0e080ed59bb5280:
netlink: fix typo in nla_parse_nested() comment (2018-09-29 11:48:26 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git tags/mac80211-for-davem-2018-10-04
for you to fetch changes up to 1db58529454742f67ebd96e3588315e880b72837:
cfg80211: fix use-after-free in reg_process_hint() (2018-10-01 09:14:03 +0200)
----------------------------------------------------------------
Just three small fixes:
* fix use-after-free in regulatory code
* fix rx-mgmt key flag in AP mode (mac80211)
* fix wireless extensions compat code memory leak
----------------------------------------------------------------
Felix Fietkau (1):
mac80211: fix setting IEEE80211_KEY_FLAG_RX_MGMT for AP mode keys
Stefan Seyfried (1):
cfg80211: fix wext-compat memory leak
Yu Zhao (1):
cfg80211: fix use-after-free in reg_process_hint()
net/mac80211/cfg.c | 2 +-
net/wireless/reg.c | 7 ++++---
net/wireless/wext-compat.c | 14 ++++++++++----
3 files changed, 15 insertions(+), 8 deletions(-)
^ permalink raw reply
* Re: [PATCH bpf-next] bpf: emit audit messages upon successful prog load and unload
From: Daniel Borkmann @ 2018-10-04 19:41 UTC (permalink / raw)
To: Jesper Dangaard Brouer, Alexei Starovoitov; +Cc: ast, netdev, Jiri Olsa, acme
In-Reply-To: <20181004203949.388e9a38@redhat.com>
On 10/04/2018 08:39 PM, Jesper Dangaard Brouer wrote:
> On Thu, 4 Oct 2018 10:11:43 -0700
> Alexei Starovoitov <alexei.starovoitov@gmail.com> wrote:
>> On Thu, Oct 04, 2018 at 03:50:38PM +0200, Daniel Borkmann wrote:
>>> Allow for audit messages to be emitted upon BPF program load and
>>> unload for having a timeline of events. The load itself is in
>>> syscall context, so additional info about the process initiating
>>> the BPF prog creation can be logged and later directly correlated
>>> to the unload event.
>>>
>>> The only info really needed from BPF side is the globally unique
>>> prog ID where then audit user space tooling can query / dump all
>>> info needed about the specific BPF program right upon load event
>>> and enrich the record, thus these changes needed here can be kept
>>> small and non-intrusive to the core.
>>
>> The above description is correct, but the commit log doesn't explain
>> _why_ this audit logging is needed and _why_ for load/unload.
>> My understanding of audit subsystem that it's very heavy weight
>> and absolutely not suitable for high frequency events.
>> Audit suppose to log the events that alter security of the system.
>> I don't see how loading/unloading bpf program influences security
>> at the time of the load.
>> The actions that program may take later (like dropping a packet
>> in XDP due to firewalling reasons) can be considered security
>> related, but not at the time of prog load.
>
> I actually consider loading (well attaching) an XDP program as a
> security event. With XDP you can bypass any kernel firewall and you are
> invisible to tcpdump. And without an audit event, you leave no record
> of your actions.
>
> This is not a thought up attack angle. The NorthSec CTF hacker event,
> had an XDP challenge that did just this.
>
> Code: https://github.com/jdesfossez/nsec17-xdpbpf
> Blog: https://suchakra.wordpress.com/2017/05/23/an-entertaining-ebpf-xdp-adventure/
Well, I don't think this argument is valid. First of all it is a
perfectly valid use case that XDP itself /is/ your firewall, and I
would presume it may even be the case or part of it in majority of
users of XDP, so saying bypassing any kernel firewall is not true.
Second, it offers all the introspection needed from iproute2 and
bpftool side to check what it is doing, and aside from that adding
to tc ingress is not a "security" event either that would need an
audit event.
>> Classic bpf for sockets and seccomp has been around for long time,
>> but seccomp audit messages don't trigger on bpf load/unload,
>> but rather on events like killing a process due to seccomp bpf return value.
>>
>> If the purpose of the patch is to give user space visibility into
>> bpf prog load/unload as a notification, then I completely agree that
>> some notification mechanism is necessary.
Yeah, I did only regard it as only that, nothing more. Some means
of timeline and notification that can be kept in a record in user
space and later retrieved e.g. for introspection on what has been
loaded.
>> I've started working on such mechanism via perf ring buffer which is
>> the fastest mechanism we have in the kernel so far.
>> See long discussion here: https://patchwork.ozlabs.org/patch/971970/
That one is definitely needed in any case to resolve the kallsyms
limitations, and it does have overlap in that in either case we
want to look at past BPF programs that have been unloaded in the
meantime, so I don't have a strong preference either way, and the
former is needed in any case. Though thought was that audit might
be an option for those not running profiling daemons 24/7, but
presumably bpftool could be extended to record these events as
well if we don't want to reuse audit infra.
>> Essentially we need perf binary to see bpf prog load/unload events with
>> single argument bpf_prog_id to be able to do its job.
>>
>> I think from bpf kernel side there should be only one mechanism for user space
>> notifications and perf ring buffer fits the best, since amount
>> of load/unload in the system can be very large.
>> Anything but ring buffer will likely choke under volume of events.
>
> I don't really buy the volume argument. Will the BPF-verifier not be
> the bottleneck for the amount/volume of bpf_load events that can be
> generated?
^ permalink raw reply
* Re: icmp6_send() is too expensive
From: David Miller @ 2018-10-04 19:33 UTC (permalink / raw)
To: 0xeffeff; +Cc: netdev
In-Reply-To: <CAL6e_pfLT9Q+Sz+e9L4DyzwatZAWmv+Kz_+HFPK3BOrpbua=wQ@mail.gmail.com>
From: Jeff Barnhill <0xeffeff@gmail.com>
Date: Thu, 4 Oct 2018 15:02:39 -0400
> As mentioned here:
> https://www.spinics.net/lists/netdev/msg505054.html
>
> icmp6_send() can be expensive when there are a lot of devices and
> anycast addresses. One solution I've prototyped is adding a global
> hash table to store and allow more efficient searches for anycast
> addresses. This works and prevents the long delays I've seen when
> many neighbors are invalidated in large numbers.
>
> A colleague mentioned that another alternative may be to do something
> like an rt6_lookup on the address and check for the RTF_ANYCAST flag.
> This is much simpler, and I'm in the process of testing it now.
>
> Is there any preference or recommendation as to which way to proceed
> before I submit a patch?
Generally speaking, using existing tables and infrastructure is
preferrable to adding new stuff.
^ permalink raw reply
* [PATCH v3] rtw88: Add firmware file for driver rtw88
From: Larry Finger @ 2018-10-04 19:31 UTC (permalink / raw)
To: linux-firmware; +Cc: linux-wireless, Larry Finger, netdev, Yan-Hsuan Chuang
This file contains the firmware for the new driver rtw88 for Realtek
RTL8822BE and RTL8822CE devices. It was provided by the Realtek
developer.
Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
---
v2 - removed redundant information from subject
v3 - drivers are for 802.11ac, not 802.11n
added firmware for RL8822CE
---
WHENCE | 10 ++++++++++
rtw88/rtw8822b_fw.bin | Bin 0 -> 150984 bytes
rtw88/rtw8822c_fw.bin | Bin 0 -> 162064 bytes
3 files changed, 10 insertions(+)
create mode 100644 rtw88/rtw8822b_fw.bin
create mode 100644 rtw88/rtw8822c_fw.bin
diff --git a/WHENCE b/WHENCE
index 3e18e48..5737a13 100644
--- a/WHENCE
+++ b/WHENCE
@@ -2671,6 +2671,16 @@ Licence: Redistributable. See LICENCE.rtlwifi_firmware.txt for details.
--------------------------------------------------------------------------
+Driver: rtw88 - Realtek 802.11ac WLAN driver for RTL8822BE and RTL8822CE
+
+Info: Sent to Larry Finger by Realtek engineer Yan-Hsuan Chuang <yhchuang@realtek.com>
+File: rtw88/rtw8822b_fw.bin
+File: rtw88/rtw8822c_fw.bin
+
+Licence: Redistributable. See LICENCE.rtlwifi_firmware.txt for details.
+
+--------------------------------------------------------------------------
+
Driver: rtl8192ee - Realtek 802.11n WLAN driver for RTL8192EE
Info: Initial version taken from Realtek version
diff --git a/rtw88/rtw8822b_fw.bin b/rtw88/rtw8822b_fw.bin
new file mode 100644
index 0000000000000000000000000000000000000000..0934ffcc77a327285569d135f55b58e8902511b1
GIT binary patch
literal 150984
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
literal 0
HcmV?d00001
diff --git a/rtw88/rtw8822c_fw.bin b/rtw88/rtw8822c_fw.bin
new file mode 100644
index 0000000000000000000000000000000000000000..8513a639c384fda9191d95d7467fc5b6ede8f74a
GIT binary patch
literal 162064
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
literal 0
HcmV?d00001
--
2.19.0
^ permalink raw reply related
* Re: [PATCH RFC,net-next 0/3] ip_tunnel: specify tunnel type via template
From: Jakub Kicinski @ 2018-10-04 19:13 UTC (permalink / raw)
To: Pablo Neira Ayuso; +Cc: netdev, netfilter-devel, roopa, amir, pshelar, u9012063
In-Reply-To: <20181004000345.2380-1-pablo@netfilter.org>
On Thu, 4 Oct 2018 02:03:42 +0200, Pablo Neira Ayuso wrote:
> Hi,
>
> The following patchset adds a new field to the tunnel metadata template
> to restrict the configuration to a given tunnel driver. Currently, a
> misconfiguration may result in packets going to the wrong tunnel driver.
>
> Although we have the tunnel option flags, they are not mandatory for
> some tunnel drivers, eg. vxlan, which may use it or not; and gre which
> does not use them.
Option flags are necessary because interpretation of option blob is
entirely protocol-specific.
> This patch updates tc's tunnel action and netfilter's tunnel extension
> to use this new field. OVS netlink interface has been left unset, although they
> could be updated to use this.
>
> By extending the existing tc action to support the IP_TUNNEL_INFO_BRIDGE
> mode, I think it should be possible to expose IP_TUNNEL_TYPE_VLAN too,
> although this patchset doesn't address this scenario.
>
> The field is initialized to zero, which maps to IP_TUNNEL_TYPE_UNSPEC to
> retain the existing behaviour, so the existing flexibility is still in
> place while this new feature is added.
>
> Cc'ing people that git annotate show as dealing with these bits more
> recently.
What practical scenario are you trying to address here? Have you seen
https://www.mail-archive.com/netdev@vger.kernel.org/msg250705.html
?
^ permalink raw reply
* Re: [PATCH net-next] udp: Add tracepoints to monitor skbs going in and out of a UDP socket
From: Alexei Starovoitov @ 2018-10-05 2:03 UTC (permalink / raw)
To: David Howells; +Cc: David Ahern, netdev, linux-afs, linux-kernel
In-Reply-To: <5213.1538695482@warthog.procyon.org.uk>
On Fri, Oct 05, 2018 at 12:24:42AM +0100, David Howells wrote:
>
> As for kprobes: spots, plural. Using kprobes involves installing breakpoint
> instructions and taking traps and would seem to require using printk for the
> output, which would affect the timings and potentially affect the situation,
> especially given the sheer amount of traces produced. Note that one of these
> was in an interrupt handler, which is possibly not the best place to be taking
> an illegal instruction trap.
>
> Using kprobes gets worse too. In my case, the source code and the build tree
> aren't on the test machine, which I understand would be a requirement - and
there is quite a bit of misunderstanding in the above two paragraphs about kprobes.
Sounds like it influences odd design choices with tracepoints.
- kprobes at the top of the function don't use traps and they've been
optimized over the years to have very low overhead
- trace_printk is using the same mechanism as tracepoint prints
- both trace_printk and tracepoints can affect timing
- kprobes and trace_printk work well out of irq handler. They work out of NMI too
- build tree doesn't need to be present to use kprobes
perf, bcc and others tools have user friendly (arguable of course) interfaces
for kprobes.
^ permalink raw reply
* [PATCH net-next,v2] IPv6 ifstats separation
From: Stephen Suryaputra @ 2018-10-04 19:08 UTC (permalink / raw)
To: netdev; +Cc: Stephen Suryaputra
Separate IPv6 ifstats into the ones that are hit on fast path and
the ones that aren't. The ones that are not can be removed as needed
using sysctls.
The separation minimizes percpu data. It reduces from 288 bytes per cpu to 56
bytes. When the other stats are disabled, then it adds 4144 bytes saving per
netdev.
The stats that are hit on fast path are percpu and the existing macro that
increments them is added with a constant check that should be optimized by the
preprocessor.
This is done based on some feedbacks in the past to make IPv6 stats optional.
It doesn't fully accomplish that but it enables all but 6 counters be optional.
Those optional counters however are still enabled by default to preserve the
current behavior.
Changes from v1:
- More elaborate changelog (per Eric Dumazet)
Signed-off-by: Stephen Suryaputra <ssuryaextr@gmail.com>
---
include/linux/ipv6.h | 3 +
include/net/if_inet6.h | 3 +-
include/net/ipv6.h | 28 ++-
include/net/snmp.h | 22 +++
include/uapi/linux/ipv6.h | 3 +
include/uapi/linux/snmp.h | 3 +-
net/ipv6/addrconf.c | 380 +++++++++++++++++++++++++++++++++++---
net/ipv6/addrconf_core.c | 3 +-
net/ipv6/proc.c | 57 +++++-
9 files changed, 462 insertions(+), 40 deletions(-)
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h
index 495e834c1367..c477960d57c2 100644
--- a/include/linux/ipv6.h
+++ b/include/linux/ipv6.h
@@ -74,6 +74,9 @@ struct ipv6_devconf {
__u32 addr_gen_mode;
__s32 disable_policy;
__s32 ndisc_tclass;
+ __s32 extended_ipstats;
+ __s32 icmpstats;
+ __s32 icmpmsgstats;
struct ctl_table_header *sysctl_header;
};
diff --git a/include/net/if_inet6.h b/include/net/if_inet6.h
index d7578cf49c3a..62757829a992 100644
--- a/include/net/if_inet6.h
+++ b/include/net/if_inet6.h
@@ -158,7 +158,8 @@ struct ifacaddr6 {
struct ipv6_devstat {
struct proc_dir_entry *proc_dir_entry;
- DEFINE_SNMP_STAT(struct ipstats_mib, ipv6);
+ DEFINE_SNMP_STAT(struct ipstats_mib_device_fast, ipv6dev_fast);
+ DEFINE_SNMP_STAT_ATOMIC(struct ipstats_mib_device, ipv6dev);
DEFINE_SNMP_STAT_ATOMIC(struct icmpv6_mib_device, icmpv6dev);
DEFINE_SNMP_STAT_ATOMIC(struct icmpv6msg_mib_device, icmpv6msgdev);
};
diff --git a/include/net/ipv6.h b/include/net/ipv6.h
index ff33f498c137..4064d88d7b9d 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -166,8 +166,12 @@ extern int sysctl_mld_qrv;
#define _DEVINC(net, statname, mod, idev, field) \
({ \
struct inet6_dev *_idev = (idev); \
- if (likely(_idev != NULL)) \
- mod##SNMP_INC_STATS64((_idev)->stats.statname, (field));\
+ if (likely(_idev != NULL)) { \
+ if (field < __IPSTATS_MIB_FAST_MAX) \
+ mod##SNMP_INC_STATS64((_idev)->stats.statname##dev_fast, (field)); \
+ else if (likely((_idev)->stats.statname##dev != NULL)) \
+ SNMP_INC_STATS_ATOMIC_LONG((_idev)->stats.statname##dev, (field)); \
+ } \
mod##SNMP_INC_STATS64((net)->mib.statname##_statistics, (field));\
})
@@ -175,7 +179,7 @@ extern int sysctl_mld_qrv;
#define _DEVINCATOMIC(net, statname, mod, idev, field) \
({ \
struct inet6_dev *_idev = (idev); \
- if (likely(_idev != NULL)) \
+ if (likely(_idev != NULL && (_idev)->stats.statname##dev != NULL)) \
SNMP_INC_STATS_ATOMIC_LONG((_idev)->stats.statname##dev, (field)); \
mod##SNMP_INC_STATS((net)->mib.statname##_statistics, (field));\
})
@@ -184,7 +188,7 @@ extern int sysctl_mld_qrv;
#define _DEVINC_ATOMIC_ATOMIC(net, statname, idev, field) \
({ \
struct inet6_dev *_idev = (idev); \
- if (likely(_idev != NULL)) \
+ if (likely(_idev != NULL && (_idev)->stats.statname##dev != NULL)) \
SNMP_INC_STATS_ATOMIC_LONG((_idev)->stats.statname##dev, (field)); \
SNMP_INC_STATS_ATOMIC_LONG((net)->mib.statname##_statistics, (field));\
})
@@ -192,16 +196,24 @@ extern int sysctl_mld_qrv;
#define _DEVADD(net, statname, mod, idev, field, val) \
({ \
struct inet6_dev *_idev = (idev); \
- if (likely(_idev != NULL)) \
- mod##SNMP_ADD_STATS((_idev)->stats.statname, (field), (val)); \
+ if (likely(_idev != NULL)) { \
+ if (field < __IPSTATS_MIB_FAST_MAX) \
+ mod##SNMP_ADD_STATS((_idev)->stats.statname##dev_fast, (field), (val)); \
+ else if (likely((_idev)->stats.statname##dev != NULL)) \
+ SNMP_ADD_STATS_ATOMIC_LONG((_idev)->stats.statname##dev, (field), (val)); \
+ } \
mod##SNMP_ADD_STATS((net)->mib.statname##_statistics, (field), (val));\
})
#define _DEVUPD(net, statname, mod, idev, field, val) \
({ \
struct inet6_dev *_idev = (idev); \
- if (likely(_idev != NULL)) \
- mod##SNMP_UPD_PO_STATS((_idev)->stats.statname, field, (val)); \
+ if (likely(_idev != NULL)) { \
+ if (field##PKTS < __IPSTATS_MIB_FAST_MAX) \
+ mod##SNMP_UPD_PO_STATS((_idev)->stats.statname##dev_fast, field, (val)); \
+ else if (likely((_idev)->stats.statname##dev != NULL)) \
+ SNMP_UPD_PO_STATS_ATOMIC_LONG((_idev)->stats.statname##dev, field, (val)); \
+ } \
mod##SNMP_UPD_PO_STATS((net)->mib.statname##_statistics, field, (val));\
})
diff --git a/include/net/snmp.h b/include/net/snmp.h
index c9228ad7ee91..0b85ccdc493d 100644
--- a/include/net/snmp.h
+++ b/include/net/snmp.h
@@ -53,12 +53,25 @@ struct snmp_mib {
/* IPstats */
#define IPSTATS_MIB_MAX __IPSTATS_MIB_MAX
+#define IPSTATS_MIB_FAST_MAX __IPSTATS_MIB_FAST_MAX
struct ipstats_mib {
/* mibs[] must be first field of struct ipstats_mib */
u64 mibs[IPSTATS_MIB_MAX];
struct u64_stats_sync syncp;
};
+/* Fast per device IPstats */
+struct ipstats_mib_device_fast {
+ /* mibs[] must be first field of struct ipstats_mib_device_fast */
+ u64 mibs[IPSTATS_MIB_FAST_MAX];
+ struct u64_stats_sync syncp;
+};
+
+/* Slow per device IPstats */
+struct ipstats_mib_device {
+ atomic_long_t mibs[IPSTATS_MIB_MAX];
+};
+
/* ICMP */
#define ICMP_MIB_MAX __ICMP_MIB_MAX
struct icmp_mib {
@@ -140,6 +153,10 @@ struct linux_xfrm_mib {
#define SNMP_ADD_STATS(mib, field, addend) \
this_cpu_add(mib->mibs[field], addend)
+
+#define SNMP_ADD_STATS_ATOMIC_LONG(mib, field, addend) \
+ atomic_long_add(addend, &mib->mibs[field])
+
#define SNMP_UPD_PO_STATS(mib, basefield, addend) \
do { \
__typeof__((mib->mibs) + 0) ptr = mib->mibs; \
@@ -152,6 +169,11 @@ struct linux_xfrm_mib {
__this_cpu_inc(ptr[basefield##PKTS]); \
__this_cpu_add(ptr[basefield##OCTETS], addend); \
} while (0)
+#define SNMP_UPD_PO_STATS_ATOMIC_LONG(mib, basefield, addend) \
+ do { \
+ atomic_long_inc(&mib->mibs[basefield##PKTS]); \
+ atomic_long_add(addend, &mib->mibs[basefield##OCTETS]); \
+ } while (0)
#if BITS_PER_LONG==32
diff --git a/include/uapi/linux/ipv6.h b/include/uapi/linux/ipv6.h
index 9c0f4a92bcff..5864f4c8afbd 100644
--- a/include/uapi/linux/ipv6.h
+++ b/include/uapi/linux/ipv6.h
@@ -187,6 +187,9 @@ enum {
DEVCONF_DISABLE_POLICY,
DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN,
DEVCONF_NDISC_TCLASS,
+ DEVCONF_EXTENDED_IPSTATS,
+ DEVCONF_ICMPSTATS,
+ DEVCONF_ICMPMSGSTATS,
DEVCONF_MAX
};
diff --git a/include/uapi/linux/snmp.h b/include/uapi/linux/snmp.h
index f80135e5feaa..eb689ecf21a6 100644
--- a/include/uapi/linux/snmp.h
+++ b/include/uapi/linux/snmp.h
@@ -26,8 +26,9 @@ enum
IPSTATS_MIB_OUTFORWDATAGRAMS, /* OutForwDatagrams */
IPSTATS_MIB_OUTPKTS, /* OutRequests */
IPSTATS_MIB_OUTOCTETS, /* OutOctets */
+ __IPSTATS_MIB_FAST_MAX,
/* other fields */
- IPSTATS_MIB_INHDRERRORS, /* InHdrErrors */
+ IPSTATS_MIB_INHDRERRORS = __IPSTATS_MIB_FAST_MAX, /* InHdrErrors */
IPSTATS_MIB_INTOOBIGERRORS, /* InTooBigErrors */
IPSTATS_MIB_INNOROUTES, /* InNoRoutes */
IPSTATS_MIB_INADDRERRORS, /* InAddrErrors */
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index a9a317322388..d8c15c713224 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -239,6 +239,9 @@ static struct ipv6_devconf ipv6_devconf __read_mostly = {
.enhanced_dad = 1,
.addr_gen_mode = IN6_ADDR_GEN_MODE_EUI64,
.disable_policy = 0,
+ .extended_ipstats = 1,
+ .icmpstats = 1,
+ .icmpmsgstats = 1,
};
static struct ipv6_devconf ipv6_devconf_dflt __read_mostly = {
@@ -293,6 +296,9 @@ static struct ipv6_devconf ipv6_devconf_dflt __read_mostly = {
.enhanced_dad = 1,
.addr_gen_mode = IN6_ADDR_GEN_MODE_EUI64,
.disable_policy = 0,
+ .extended_ipstats = 1,
+ .icmpstats = 1,
+ .icmpmsgstats = 1,
};
/* Check if link is ready: is it up and is a valid qdisc available */
@@ -333,33 +339,45 @@ static int snmp6_alloc_dev(struct inet6_dev *idev)
{
int i;
- idev->stats.ipv6 = alloc_percpu(struct ipstats_mib);
- if (!idev->stats.ipv6)
- goto err_ip;
+ idev->stats.ipv6dev_fast = alloc_percpu(struct ipstats_mib_device_fast);
+ if (!idev->stats.ipv6dev_fast)
+ goto err_ip_fast;
for_each_possible_cpu(i) {
- struct ipstats_mib *addrconf_stats;
- addrconf_stats = per_cpu_ptr(idev->stats.ipv6, i);
+ struct ipstats_mib_device_fast *addrconf_stats;
+ addrconf_stats = per_cpu_ptr(idev->stats.ipv6dev_fast, i);
u64_stats_init(&addrconf_stats->syncp);
}
- idev->stats.icmpv6dev = kzalloc(sizeof(struct icmpv6_mib_device),
- GFP_KERNEL);
- if (!idev->stats.icmpv6dev)
- goto err_icmp;
- idev->stats.icmpv6msgdev = kzalloc(sizeof(struct icmpv6msg_mib_device),
- GFP_KERNEL);
- if (!idev->stats.icmpv6msgdev)
- goto err_icmpmsg;
+ if (idev->cnf.extended_ipstats) {
+ idev->stats.ipv6dev = kzalloc(sizeof(struct ipstats_mib_device),
+ GFP_KERNEL);
+ if (!idev->stats.ipv6dev)
+ goto err_ip;
+ }
+ if (idev->cnf.icmpstats) {
+ idev->stats.icmpv6dev = kzalloc(sizeof(struct icmpv6_mib_device),
+ GFP_KERNEL);
+ if (!idev->stats.icmpv6dev)
+ goto err_icmp;
+ }
+ if (idev->cnf.icmpmsgstats) {
+ idev->stats.icmpv6msgdev = kzalloc(sizeof(struct icmpv6msg_mib_device),
+ GFP_KERNEL);
+ if (!idev->stats.icmpv6msgdev)
+ goto err_icmpmsg;
+ }
return 0;
err_icmpmsg:
kfree(idev->stats.icmpv6dev);
err_icmp:
- free_percpu(idev->stats.ipv6);
+ kfree(idev->stats.ipv6dev);
err_ip:
+ free_percpu(idev->stats.ipv6dev_fast);
+err_ip_fast:
return -ENOMEM;
}
@@ -5263,6 +5281,9 @@ static inline void ipv6_store_devconf(struct ipv6_devconf *cnf,
array[DEVCONF_ADDR_GEN_MODE] = cnf->addr_gen_mode;
array[DEVCONF_DISABLE_POLICY] = cnf->disable_policy;
array[DEVCONF_NDISC_TCLASS] = cnf->ndisc_tclass;
+ array[DEVCONF_EXTENDED_IPSTATS] = cnf->extended_ipstats;
+ array[DEVCONF_ICMPSTATS] = cnf->icmpstats;
+ array[DEVCONF_ICMPMSGSTATS] = cnf->icmpmsgstats;
}
static inline size_t inet6_ifla6_size(void)
@@ -5297,14 +5318,16 @@ static inline void __snmp6_fill_statsdev(u64 *stats, atomic_long_t *mib,
/* Use put_unaligned() because stats may not be aligned for u64. */
put_unaligned(ICMP6_MIB_MAX, &stats[0]);
- for (i = 1; i < ICMP6_MIB_MAX; i++)
- put_unaligned(atomic_long_read(&mib[i]), &stats[i]);
+ if (mib) {
+ for (i = 1; i < ICMP6_MIB_MAX; i++)
+ put_unaligned(atomic_long_read(&mib[i]), &stats[i]);
+ }
memset(&stats[ICMP6_MIB_MAX], 0, pad);
}
-static inline void __snmp6_fill_stats64(u64 *stats, void __percpu *mib,
- int bytes, size_t syncpoff)
+static inline void __snmp6_fill_stats64(u64 *stats, void __percpu *mib_fast,
+ atomic_long_t *mib, int bytes, size_t syncpoff)
{
int i, c;
u64 buff[IPSTATS_MIB_MAX];
@@ -5316,10 +5339,13 @@ static inline void __snmp6_fill_stats64(u64 *stats, void __percpu *mib,
buff[0] = IPSTATS_MIB_MAX;
for_each_possible_cpu(c) {
- for (i = 1; i < IPSTATS_MIB_MAX; i++)
- buff[i] += snmp_get_cpu_field64(mib, c, i, syncpoff);
+ for (i = 1; i < IPSTATS_MIB_FAST_MAX; i++)
+ buff[i] += snmp_get_cpu_field64(mib_fast, c, i, syncpoff);
+ }
+ if (mib) {
+ for (; i < IPSTATS_MIB_MAX; i++)
+ buff[i] = atomic_long_read(&mib[i]);
}
-
memcpy(stats, buff, IPSTATS_MIB_MAX * sizeof(u64));
memset(&stats[IPSTATS_MIB_MAX], 0, pad);
}
@@ -5329,11 +5355,14 @@ static void snmp6_fill_stats(u64 *stats, struct inet6_dev *idev, int attrtype,
{
switch (attrtype) {
case IFLA_INET6_STATS:
- __snmp6_fill_stats64(stats, idev->stats.ipv6, bytes,
- offsetof(struct ipstats_mib, syncp));
+ __snmp6_fill_stats64(stats, idev->stats.ipv6dev_fast,
+ idev->stats.ipv6dev ? idev->stats.ipv6dev->mibs : NULL,
+ bytes, offsetof(struct ipstats_mib_device_fast, syncp));
break;
case IFLA_INET6_ICMP6STATS:
- __snmp6_fill_statsdev(stats, idev->stats.icmpv6dev->mibs, bytes);
+ __snmp6_fill_statsdev(stats,
+ idev->stats.icmpv6dev ? idev->stats.icmpv6dev->mibs : NULL,
+ bytes);
break;
}
}
@@ -6205,6 +6234,288 @@ int addrconf_sysctl_disable_policy(struct ctl_table *ctl, int write,
return ret;
}
+static
+void free_ipv6dev_rcu(struct rcu_head *head)
+{
+ struct inet6_dev *idev = container_of(head, struct inet6_dev, rcu);
+
+ kfree(idev->stats.ipv6dev);
+ idev->stats.ipv6dev = NULL;
+}
+
+static
+int addrconf_extended_ipstats(struct ctl_table *ctl, int *valp, int val)
+{
+ struct inet6_dev *idev;
+ struct net *net;
+
+ if (!rtnl_trylock())
+ return restart_syscall();
+
+ net = (struct net *)ctl->extra2;
+ if (valp == &net->ipv6.devconf_dflt->extended_ipstats) {
+ *valp = val;
+ rtnl_unlock();
+ return 0;
+ }
+
+ if (valp == &net->ipv6.devconf_all->extended_ipstats) {
+ struct net_device *dev;
+ bool undo = 0;
+
+loop:
+ for_each_netdev(net, dev) {
+ idev = __in6_dev_get(dev);
+ if (!idev)
+ continue;
+ if (val && !idev->stats.ipv6dev) {
+ idev->stats.ipv6dev = kzalloc(sizeof(struct ipstats_mib_device),
+ GFP_KERNEL);
+ if (!idev->stats.ipv6dev) {
+ undo = 1;
+ val = 0;
+ goto loop;
+ }
+ } else if (!val && idev->stats.ipv6dev) {
+ call_rcu(&idev->rcu, free_ipv6dev_rcu);
+ }
+ }
+ if (undo) {
+ rtnl_unlock();
+ return -ENOMEM;
+ }
+ } else {
+ idev = (struct inet6_dev *)ctl->extra1;
+ if (val && !idev->stats.ipv6dev) {
+ idev->stats.ipv6dev = kzalloc(sizeof(struct ipstats_mib_device),
+ GFP_KERNEL);
+ if (!idev->stats.ipv6dev) {
+ rtnl_unlock();
+ return -ENOMEM;
+ }
+ } else if (!val && !idev->stats.ipv6dev) {
+ call_rcu(&idev->rcu, free_ipv6dev_rcu);
+ }
+ }
+
+ *valp = val;
+
+ rtnl_unlock();
+ return 0;
+}
+
+static
+int addrconf_sysctl_extended_ipstats(struct ctl_table *ctl, int write,
+ void __user *buffer, size_t *lenp,
+ loff_t *ppos)
+{
+ int *valp = ctl->data;
+ int val = *valp;
+ loff_t pos = *ppos;
+ struct ctl_table lctl;
+ int ret;
+
+ lctl = *ctl;
+ lctl.data = &val;
+ ret = proc_dointvec(&lctl, write, buffer, lenp, ppos);
+
+ if (write && (*valp != val))
+ ret = addrconf_extended_ipstats(ctl, valp, val);
+
+ if (ret)
+ *ppos = pos;
+
+ return ret;
+}
+
+static
+void free_icmpv6dev_rcu(struct rcu_head *head)
+{
+ struct inet6_dev *idev = container_of(head, struct inet6_dev, rcu);
+
+ kfree(idev->stats.icmpv6dev);
+ idev->stats.icmpv6dev = NULL;
+}
+
+static
+int addrconf_icmpstats(struct ctl_table *ctl, int *valp, int val)
+{
+ struct inet6_dev *idev;
+ struct net *net;
+
+ if (!rtnl_trylock())
+ return restart_syscall();
+
+ net = (struct net *)ctl->extra2;
+ if (valp == &net->ipv6.devconf_dflt->icmpstats) {
+ *valp = val;
+ rtnl_unlock();
+ return 0;
+ }
+
+ if (valp == &net->ipv6.devconf_all->icmpstats) {
+ struct net_device *dev;
+ bool undo = 0;
+
+loop:
+ for_each_netdev(net, dev) {
+ idev = __in6_dev_get(dev);
+ if (!idev)
+ continue;
+ if (val && !idev->stats.icmpv6dev) {
+ idev->stats.icmpv6dev = kzalloc(sizeof(struct icmpv6_mib_device),
+ GFP_KERNEL);
+ if (!idev->stats.icmpv6dev) {
+ undo = 1;
+ val = 0;
+ goto loop;
+ }
+ } else if (!val && idev->stats.icmpv6dev) {
+ call_rcu(&idev->rcu, free_icmpv6dev_rcu);
+ }
+ }
+ if (undo) {
+ rtnl_unlock();
+ return -ENOMEM;
+ }
+ } else {
+ idev = (struct inet6_dev *)ctl->extra1;
+ if (val && !idev->stats.icmpv6dev) {
+ idev->stats.icmpv6dev = kzalloc(sizeof(struct icmpv6_mib_device),
+ GFP_KERNEL);
+ if (!idev->stats.icmpv6dev) {
+ rtnl_unlock();
+ return -ENOMEM;
+ }
+ } else if (!val && idev->stats.icmpv6dev) {
+ call_rcu(&idev->rcu, free_icmpv6dev_rcu);
+ }
+ }
+
+ *valp = val;
+
+ rtnl_unlock();
+ return 0;
+}
+
+static
+int addrconf_sysctl_icmpstats(struct ctl_table *ctl, int write,
+ void __user *buffer, size_t *lenp,
+ loff_t *ppos)
+{
+ int *valp = ctl->data;
+ int val = *valp;
+ loff_t pos = *ppos;
+ struct ctl_table lctl;
+ int ret;
+
+ lctl = *ctl;
+ lctl.data = &val;
+ ret = proc_dointvec(&lctl, write, buffer, lenp, ppos);
+
+ if (write && (*valp != val))
+ ret = addrconf_icmpstats(ctl, valp, val);
+
+ if (ret)
+ *ppos = pos;
+
+ return ret;
+}
+
+static
+void free_icmpv6msgdev_rcu(struct rcu_head *head)
+{
+ struct inet6_dev *idev = container_of(head, struct inet6_dev, rcu);
+
+ kfree(idev->stats.icmpv6msgdev);
+ idev->stats.icmpv6msgdev = NULL;
+}
+
+static
+int addrconf_icmpmsgstats(struct ctl_table *ctl, int *valp, int val)
+{
+ struct inet6_dev *idev;
+ struct net *net;
+
+ if (!rtnl_trylock())
+ return restart_syscall();
+
+ net = (struct net *)ctl->extra2;
+ if (valp == &net->ipv6.devconf_dflt->icmpmsgstats) {
+ *valp = val;
+ rtnl_unlock();
+ return 0;
+ }
+
+ if (valp == &net->ipv6.devconf_all->icmpmsgstats) {
+ struct net_device *dev;
+ bool undo = 0;
+
+loop:
+ for_each_netdev(net, dev) {
+ idev = __in6_dev_get(dev);
+ if (!idev)
+ continue;
+ if (val && !idev->stats.icmpv6msgdev) {
+ idev->stats.icmpv6msgdev = kzalloc(sizeof(struct icmpv6msg_mib_device),
+ GFP_KERNEL);
+ if (!idev->stats.icmpv6msgdev) {
+ undo = 1;
+ val = 0;
+ goto loop;
+ }
+ } else if (!val && idev->stats.icmpv6msgdev) {
+ call_rcu(&idev->rcu, free_icmpv6msgdev_rcu);
+ }
+ }
+ if (undo) {
+ rtnl_unlock();
+ return -ENOMEM;
+ }
+ } else {
+ idev = (struct inet6_dev *)ctl->extra1;
+ if (val && !idev->stats.icmpv6msgdev) {
+ idev->stats.icmpv6msgdev = kzalloc(sizeof(struct icmpv6msg_mib_device),
+ GFP_KERNEL);
+ if (!idev->stats.icmpv6msgdev) {
+ rtnl_unlock();
+ return -ENOMEM;
+ }
+ } else if (!val && idev->stats.icmpv6msgdev) {
+ call_rcu(&idev->rcu, free_icmpv6msgdev_rcu);
+ }
+ }
+
+ *valp = val;
+
+ rtnl_unlock();
+ return 0;
+}
+
+static
+int addrconf_sysctl_icmpmsgstats(struct ctl_table *ctl, int write,
+ void __user *buffer, size_t *lenp,
+ loff_t *ppos)
+{
+ int *valp = ctl->data;
+ int val = *valp;
+ loff_t pos = *ppos;
+ struct ctl_table lctl;
+ int ret;
+
+ lctl = *ctl;
+ lctl.data = &val;
+ ret = proc_dointvec(&lctl, write, buffer, lenp, ppos);
+
+ if (write && (*valp != val))
+ ret = addrconf_icmpmsgstats(ctl, valp, val);
+
+ if (ret)
+ *ppos = pos;
+
+ return ret;
+}
+
static int minus_one = -1;
static const int zero = 0;
static const int one = 1;
@@ -6586,6 +6897,27 @@ static const struct ctl_table addrconf_sysctl[] = {
.extra1 = (void *)&zero,
.extra2 = (void *)&two_five_five,
},
+ {
+ .procname = "extended_ipstats",
+ .data = &ipv6_devconf.extended_ipstats,
+ .maxlen = sizeof(int),
+ .mode = 0644,
+ .proc_handler = addrconf_sysctl_extended_ipstats,
+ },
+ {
+ .procname = "icmpstats",
+ .data = &ipv6_devconf.icmpstats,
+ .maxlen = sizeof(int),
+ .mode = 0644,
+ .proc_handler = addrconf_sysctl_icmpstats,
+ },
+ {
+ .procname = "icmpmsgstats",
+ .data = &ipv6_devconf.icmpmsgstats,
+ .maxlen = sizeof(int),
+ .mode = 0644,
+ .proc_handler = addrconf_sysctl_icmpmsgstats,
+ },
{
/* sentinel */
}
diff --git a/net/ipv6/addrconf_core.c b/net/ipv6/addrconf_core.c
index 5cd0029d930e..f143d7e2264c 100644
--- a/net/ipv6/addrconf_core.c
+++ b/net/ipv6/addrconf_core.c
@@ -198,7 +198,8 @@ static void snmp6_free_dev(struct inet6_dev *idev)
{
kfree(idev->stats.icmpv6msgdev);
kfree(idev->stats.icmpv6dev);
- free_percpu(idev->stats.ipv6);
+ kfree(idev->stats.ipv6dev);
+ free_percpu(idev->stats.ipv6dev_fast);
}
static void in6_dev_finish_destroy_rcu(struct rcu_head *head)
diff --git a/net/ipv6/proc.c b/net/ipv6/proc.c
index 2356b4af7309..c641c05af1b3 100644
--- a/net/ipv6/proc.c
+++ b/net/ipv6/proc.c
@@ -91,6 +91,47 @@ static const struct snmp_mib snmp6_ipstats_list[] = {
SNMP_MIB_SENTINEL
};
+static const struct snmp_mib snmp6_ipstats_device_fast_list[] = {
+ SNMP_MIB_ITEM("Ip6InReceives", IPSTATS_MIB_INPKTS),
+ SNMP_MIB_ITEM("Ip6InOctets", IPSTATS_MIB_INOCTETS),
+ SNMP_MIB_ITEM("Ip6InDelivers", IPSTATS_MIB_INDELIVERS),
+ SNMP_MIB_ITEM("Ip6OutForwDatagrams", IPSTATS_MIB_OUTFORWDATAGRAMS),
+ SNMP_MIB_ITEM("Ip6OutRequests", IPSTATS_MIB_OUTPKTS),
+ SNMP_MIB_ITEM("Ip6OutOctets", IPSTATS_MIB_OUTOCTETS),
+ SNMP_MIB_SENTINEL
+};
+
+static const struct snmp_mib snmp6_ipstats_device_list[] = {
+ SNMP_MIB_ITEM("Ip6InHdrErrors", IPSTATS_MIB_INHDRERRORS),
+ SNMP_MIB_ITEM("Ip6InTooBigErrors", IPSTATS_MIB_INTOOBIGERRORS),
+ SNMP_MIB_ITEM("Ip6InNoRoutes", IPSTATS_MIB_INNOROUTES),
+ SNMP_MIB_ITEM("Ip6InAddrErrors", IPSTATS_MIB_INADDRERRORS),
+ SNMP_MIB_ITEM("Ip6InUnknownProtos", IPSTATS_MIB_INUNKNOWNPROTOS),
+ SNMP_MIB_ITEM("Ip6InTruncatedPkts", IPSTATS_MIB_INTRUNCATEDPKTS),
+ SNMP_MIB_ITEM("Ip6InDiscards", IPSTATS_MIB_INDISCARDS),
+ SNMP_MIB_ITEM("Ip6OutDiscards", IPSTATS_MIB_OUTDISCARDS),
+ SNMP_MIB_ITEM("Ip6OutNoRoutes", IPSTATS_MIB_OUTNOROUTES),
+ SNMP_MIB_ITEM("Ip6ReasmTimeout", IPSTATS_MIB_REASMTIMEOUT),
+ SNMP_MIB_ITEM("Ip6ReasmReqds", IPSTATS_MIB_REASMREQDS),
+ SNMP_MIB_ITEM("Ip6ReasmOKs", IPSTATS_MIB_REASMOKS),
+ SNMP_MIB_ITEM("Ip6ReasmFails", IPSTATS_MIB_REASMFAILS),
+ SNMP_MIB_ITEM("Ip6FragOKs", IPSTATS_MIB_FRAGOKS),
+ SNMP_MIB_ITEM("Ip6FragFails", IPSTATS_MIB_FRAGFAILS),
+ SNMP_MIB_ITEM("Ip6FragCreates", IPSTATS_MIB_FRAGCREATES),
+ SNMP_MIB_ITEM("Ip6InMcastPkts", IPSTATS_MIB_INMCASTPKTS),
+ SNMP_MIB_ITEM("Ip6OutMcastPkts", IPSTATS_MIB_OUTMCASTPKTS),
+ SNMP_MIB_ITEM("Ip6InMcastOctets", IPSTATS_MIB_INMCASTOCTETS),
+ SNMP_MIB_ITEM("Ip6OutMcastOctets", IPSTATS_MIB_OUTMCASTOCTETS),
+ SNMP_MIB_ITEM("Ip6InBcastOctets", IPSTATS_MIB_INBCASTOCTETS),
+ SNMP_MIB_ITEM("Ip6OutBcastOctets", IPSTATS_MIB_OUTBCASTOCTETS),
+ /* IPSTATS_MIB_CSUMERRORS is not relevant in IPv6 (no checksum) */
+ SNMP_MIB_ITEM("Ip6InNoECTPkts", IPSTATS_MIB_NOECTPKTS),
+ SNMP_MIB_ITEM("Ip6InECT1Pkts", IPSTATS_MIB_ECT1PKTS),
+ SNMP_MIB_ITEM("Ip6InECT0Pkts", IPSTATS_MIB_ECT0PKTS),
+ SNMP_MIB_ITEM("Ip6InCEPkts", IPSTATS_MIB_CEPKTS),
+ SNMP_MIB_SENTINEL
+};
+
static const struct snmp_mib snmp6_icmp6_list[] = {
/* icmpv6 mib according to RFC 2466 */
SNMP_MIB_ITEM("Icmp6InMsgs", ICMP6_MIB_INMSGS),
@@ -235,11 +276,17 @@ static int snmp6_dev_seq_show(struct seq_file *seq, void *v)
struct inet6_dev *idev = (struct inet6_dev *)seq->private;
seq_printf(seq, "%-32s\t%u\n", "ifIndex", idev->dev->ifindex);
- snmp6_seq_show_item64(seq, idev->stats.ipv6,
- snmp6_ipstats_list, offsetof(struct ipstats_mib, syncp));
- snmp6_seq_show_item(seq, NULL, idev->stats.icmpv6dev->mibs,
- snmp6_icmp6_list);
- snmp6_seq_show_icmpv6msg(seq, idev->stats.icmpv6msgdev->mibs);
+ snmp6_seq_show_item64(seq, idev->stats.ipv6dev_fast,
+ snmp6_ipstats_device_fast_list,
+ offsetof(struct ipstats_mib_device_fast, syncp));
+ if (idev->stats.ipv6dev)
+ snmp6_seq_show_item(seq, NULL, idev->stats.ipv6dev->mibs,
+ snmp6_ipstats_device_list);
+ if (idev->stats.icmpv6dev)
+ snmp6_seq_show_item(seq, NULL, idev->stats.icmpv6dev->mibs,
+ snmp6_icmp6_list);
+ if (idev->stats.icmpv6msgdev)
+ snmp6_seq_show_icmpv6msg(seq, idev->stats.icmpv6msgdev->mibs);
return 0;
}
--
2.17.1
^ permalink raw reply related
* icmp6_send() is too expensive
From: Jeff Barnhill @ 2018-10-04 19:02 UTC (permalink / raw)
To: netdev
As mentioned here:
https://www.spinics.net/lists/netdev/msg505054.html
icmp6_send() can be expensive when there are a lot of devices and
anycast addresses. One solution I've prototyped is adding a global
hash table to store and allow more efficient searches for anycast
addresses. This works and prevents the long delays I've seen when
many neighbors are invalidated in large numbers.
A colleague mentioned that another alternative may be to do something
like an rt6_lookup on the address and check for the RTF_ANYCAST flag.
This is much simpler, and I'm in the process of testing it now.
Is there any preference or recommendation as to which way to proceed
before I submit a patch?
Thanks,
Jeff
^ permalink raw reply
* Re: [PATCH net-next] inet: do not set backlog if listen fails
From: Yafang Shao @ 2018-10-05 1:54 UTC (permalink / raw)
To: Eric Dumazet; +Cc: Eric Dumazet, David Miller, netdev, LKML
In-Reply-To: <9863d8b1-7249-e5ec-0400-4007798e69e2@gmail.com>
On Wed, Oct 3, 2018 at 11:41 PM Eric Dumazet <eric.dumazet@gmail.com> wrote:
>
>
>
> On 10/03/2018 08:07 AM, Yafang Shao wrote:
> > These two backlog members are not necessary set in inet_csk_listen_start().
> > Regarding sk_max_ack_backlog, it will be set in the caller inet_listen
> > and dccp_listen_start.
> > Regraing sk_ack_backlog, it is better to put it together with
> > sk_max_ack_backlog in the same function and only set on success.
> >
> > Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
> > ---
> > net/dccp/proto.c | 1 +
> > net/ipv4/af_inet.c | 1 +
> > net/ipv4/inet_connection_sock.c | 3 ---
> > 3 files changed, 2 insertions(+), 3 deletions(-)
> >
> > diff --git a/net/dccp/proto.c b/net/dccp/proto.c
> > index 875858c..34d48cd 100644
> > --- a/net/dccp/proto.c
> > +++ b/net/dccp/proto.c
> > @@ -959,6 +959,7 @@ int inet_dccp_listen(struct socket *sock, int backlog)
> > err = dccp_listen_start(sk, backlog);
> > if (err)
> > goto out;
> > + sk->sk_ack_backlog = 0;
>
>
> This is racy, remember that dccp and tcp have lockless listeners.
>
> Do not change sk_ack_backlog after a TCP/DCCP socket is ready to accept new flows.
Understood. Thanks for your explanation.
^ permalink raw reply
* Re: [PATCH bpf-next] net: core: Fix build with CONFIG_IPV6=m
From: Daniel Borkmann @ 2018-10-04 18:46 UTC (permalink / raw)
To: Joe Stringer; +Cc: netdev, ast
In-Reply-To: <CAOftzPgLWV8fVJpwYSpcOotDo7r=RgLyh2yQUZXKaC5HVK9SfQ@mail.gmail.com>
On 10/04/2018 08:33 PM, Joe Stringer wrote:
> On Thu, 4 Oct 2018 at 01:48, Daniel Borkmann <daniel@iogearbox.net> wrote:
>>
>> On 10/03/2018 07:32 AM, Joe Stringer wrote:
>>> Stephen Rothwell reports the following link failure with IPv6 as module:
>>>
>>> x86_64-linux-gnu-ld: net/core/filter.o: in function `sk_lookup':
>>> (.text+0x19219): undefined reference to `__udp6_lib_lookup'
>>>
>>> Fix the build by only enabling the IPv6 socket lookup if IPv6 support is
>>> compiled into the kernel.
>>>
>>> Signed-off-by: Joe Stringer <joe@wand.net.nz>
>>> ---
>>> net/core/filter.c | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/net/core/filter.c b/net/core/filter.c
>>> index 591c698bc517..30c6b2d3ef16 100644
>>> --- a/net/core/filter.c
>>> +++ b/net/core/filter.c
>>> @@ -4838,7 +4838,7 @@ struct sock *sk_lookup(struct net *net, struct bpf_sock_tuple *tuple,
>>> sk = __udp4_lib_lookup(net, src4, tuple->ipv4.sport,
>>> dst4, tuple->ipv4.dport,
>>> dif, sdif, &udp_table, skb);
>>> -#if IS_ENABLED(CONFIG_IPV6)
>>> +#if IS_REACHABLE(CONFIG_IPV6)
>>> } else {
>>> struct in6_addr *src6 = (struct in6_addr *)&tuple->ipv6.saddr;
>>> struct in6_addr *dst6 = (struct in6_addr *)&tuple->ipv6.daddr;
>>>
>>
>> Applied as a quick fix, thanks Joe, but ideally this should also work when ipv6
>> is compiled as a module. There's the ipv6_bpf_stub, which does that job for other
>> helpers that would call into v6 code out of the builtin filter.c, so I think we
>> should follow the same approach here as well. See commit d74bad4e74ee ("bpf:
>> Hooks for sys_connect").
>
> Thanks for the pointers, I'll look into that.
>
> To confirm my understanding, is it possible to unload the IPv6 module?
> I don't see any code that uninitializes "ipv6_bpf_stub". Seems like a
> simple conditional check on that variable should be enough to gate its
> usage from packet paths where sk_lookup could be invoked (Given that
> the system could receive any packets, including IPv6 when the module
> is not loaded).
No unload, this has been removed via 8ce440610357 ("ipv6: do not allow
ipv6 module to be removed").
Thanks,
Daniel
^ permalink raw reply
* Re: [PATCH bpf-next] bpf: emit audit messages upon successful prog load and unload
From: Jesper Dangaard Brouer @ 2018-10-04 18:39 UTC (permalink / raw)
To: Alexei Starovoitov; +Cc: Daniel Borkmann, ast, netdev, Jiri Olsa, acme, brouer
In-Reply-To: <20181004171141.tsggdqnh65x2si4d@ast-mbp.dhcp.thefacebook.com>
On Thu, 4 Oct 2018 10:11:43 -0700
Alexei Starovoitov <alexei.starovoitov@gmail.com> wrote:
> On Thu, Oct 04, 2018 at 03:50:38PM +0200, Daniel Borkmann wrote:
> > Allow for audit messages to be emitted upon BPF program load and
> > unload for having a timeline of events. The load itself is in
> > syscall context, so additional info about the process initiating
> > the BPF prog creation can be logged and later directly correlated
> > to the unload event.
> >
> > The only info really needed from BPF side is the globally unique
> > prog ID where then audit user space tooling can query / dump all
> > info needed about the specific BPF program right upon load event
> > and enrich the record, thus these changes needed here can be kept
> > small and non-intrusive to the core.
>
> The above description is correct, but the commit log doesn't explain
> _why_ this audit logging is needed and _why_ for load/unload.
> My understanding of audit subsystem that it's very heavy weight
> and absolutely not suitable for high frequency events.
> Audit suppose to log the events that alter security of the system.
> I don't see how loading/unloading bpf program influences security
> at the time of the load.
> The actions that program may take later (like dropping a packet
> in XDP due to firewalling reasons) can be considered security
> related, but not at the time of prog load.
I actually consider loading (well attaching) an XDP program as a
security event. With XDP you can bypass any kernel firewall and you are
invisible to tcpdump. And without an audit event, you leave no record
of your actions.
This is not a thought up attack angle. The NorthSec CTF hacker event,
had an XDP challenge that did just this.
Code: https://github.com/jdesfossez/nsec17-xdpbpf
Blog: https://suchakra.wordpress.com/2017/05/23/an-entertaining-ebpf-xdp-adventure/
> Classic bpf for sockets and seccomp has been around for long time,
> but seccomp audit messages don't trigger on bpf load/unload,
> but rather on events like killing a process due to seccomp bpf return value.
>
> If the purpose of the patch is to give user space visibility into
> bpf prog load/unload as a notification, then I completely agree that
> some notification mechanism is necessary.
> I've started working on such mechanism via perf ring buffer which is
> the fastest mechanism we have in the kernel so far.
> See long discussion here: https://patchwork.ozlabs.org/patch/971970/
>
> Essentially we need perf binary to see bpf prog load/unload events with
> single argument bpf_prog_id to be able to do its job.
>
> I think from bpf kernel side there should be only one mechanism for user space
> notifications and perf ring buffer fits the best, since amount
> of load/unload in the system can be very large.
> Anything but ring buffer will likely choke under volume of events.
I don't really buy the volume argument. Will the BPF-verifier not be
the bottleneck for the amount/volume of bpf_load events that can be
generated?
--
Best regards,
Jesper Dangaard Brouer
MSc.CS, Principal Kernel Engineer at Red Hat
LinkedIn: http://www.linkedin.com/in/brouer
^ 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