Наткнулся на баг в rt-n mips32r1. Если попытаться прокачать трафик с wifi на ethernet больший, чем позволяет пропускная способность последнего, в консоли подключенной к UART сыпятся ошибки. В обратную сторону et->wl ошибок нет. Ошибки такие:
Code:
/ # swapper: page allocation failure. order:3, mode:0x4020
Call Trace:
[<802a3ac4>] dump_stack+0x8/0x34
[<80061248>] __alloc_pages+0x2e4/0x35c
[<80082eb4>] __slab_alloc.isra.42+0x11c/0x578
[<800845dc>] __kmalloc_track_caller+0x154/0x1b0
[<801b2c78>] __alloc_skb+0x74/0x148
[<802aa8d0>] osl_pktget+0x2c/0xfc
[<802aa54c>] _dma_rxfill+0x98/0x3f0
[<c0382d28>] wlc_dpc+0x540/0xb98 [wl]
[<c0372e38>] wl_intrson+0x228/0x3bc [wl]
Mem-info:
Normal per-cpu:
CPU 0: Hot: hi: 0, btch: 1 usd: 0 Cold: hi: 0, btch: 1 usd: 0
Active:572 inactive:1285 dirty:0 writeback:0 unstable:0
free:167 slab_reclaimable:130 slab_unreclaimable:3654
mapped:219 pagetables:29 bounce:0
Normal free:668kB min:720kB low:900kB high:1080kB active:2288kB inactive:5140kB present:32512kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0
Normal: 45*4kB 27*8kB 15*16kB 1*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 668kB
Swap cache: add 0, delete 0, find 0/0, race 0+0
Free swap = 0kB
Total swap = 0kB
Free swap: 0kB
8192 pages of RAM
0 pages of HIGHMEM
923 reserved pages
1054 pages shared
0 pages swap cached
swapper: page allocation failure. order:3, mode:0x4020
Call Trace:
[<802a3ac4>] dump_stack+0x8/0x34
[<80061248>] __alloc_pages+0x2e4/0x35c
[<80082eb4>] __slab_alloc.isra.42+0x11c/0x578
[<800845dc>] __kmalloc_track_caller+0x154/0x1b0
[<801b2c78>] __alloc_skb+0x74/0x148
[<802aa8d0>] osl_pktget+0x2c/0xfc
[<802aa54c>] _dma_rxfill+0x98/0x3f0
[<c0382d28>] wlc_dpc+0x540/0xb98 [wl]
[<c0372e38>] wl_intrson+0x228/0x3bc [wl]
Mem-info:
Normal per-cpu:
CPU 0: Hot: hi: 0, btch: 1 usd: 0 Cold: hi: 0, btch: 1 usd: 0
Active:573 inactive:1224 dirty:0 writeback:0 unstable:0
free:226 slab_reclaimable:130 slab_unreclaimable:3654
mapped:219 pagetables:29 bounce:0
Normal free:904kB min:720kB low:900kB high:1080kB active:2292kB inactive:4896kB present:32512kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0
Normal: 58*4kB 38*8kB 21*16kB 1*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 904kB
Swap cache: add 0, delete 0, find 0/0, race 0+0
Free swap = 0kB
Total swap = 0kB
Free swap: 0kB
8192 pages of RAM
0 pages of HIGHMEM
923 reserved pages
1029 pages shared
0 pages swap cached
swapper: page allocation failure. order:3, mode:0x4020
Call Trace:
[<802a3ac4>] dump_stack+0x8/0x34
[<80061248>] __alloc_pages+0x2e4/0x35c
[<80082eb4>] __slab_alloc.isra.42+0x11c/0x578
[<800845dc>] __kmalloc_track_caller+0x154/0x1b0
[<801b2c78>] __alloc_skb+0x74/0x148
[<802aa8d0>] osl_pktget+0x2c/0xfc
[<802aa54c>] _dma_rxfill+0x98/0x3f0
[<c0382d28>] wlc_dpc+0x540/0xb98 [wl]
[<c0372e38>] wl_intrson+0x228/0x3bc [wl]
Mem-info:
Normal per-cpu:
CPU 0: Hot: hi: 0, btch: 1 usd: 0 Cold: hi: 0, btch: 1 usd: 0
Active:568 inactive:1117 dirty:0 writeback:0 unstable:0
free:325 slab_reclaimable:125 slab_unreclaimable:3671
mapped:219 pagetables:29 bounce:0
Normal free:1300kB min:720kB low:900kB high:1080kB active:2272kB inactive:4468kB present:32512kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0
Normal: 91*4kB 51*8kB 31*16kB 1*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 1300kB
Swap cache: add 0, delete 0, find 0/0, race 0+0
Free swap = 0kB
Total swap = 0kB
Free swap: 0kB
8192 pages of RAM
0 pages of HIGHMEM
923 reserved pages
990 pages shared
0 pages swap cached
swapper: page allocation failure. order:3, mode:0x4020
Call Trace:
[<802a3ac4>] dump_stack+0x8/0x34
[<80061248>] __alloc_pages+0x2e4/0x35c
[<80082eb4>] __slab_alloc.isra.42+0x11c/0x578
[<800845dc>] __kmalloc_track_caller+0x154/0x1b0
[<801b2c78>] __alloc_skb+0x74/0x148
[<802aa8d0>] osl_pktget+0x2c/0xfc
[<802aa54c>] _dma_rxfill+0x98/0x3f0
[<c0382d28>] wlc_dpc+0x540/0xb98 [wl]
[<c0372e38>] wl_intrson+0x228/0x3bc [wl]
Mem-info:
Normal per-cpu:
CPU 0: Hot: hi: 0, btch: 1 usd: 0 Cold: hi: 0, btch: 1 usd: 0
Active:568 inactive:1117 dirty:0 writeback:0 unstable:0
free:323 slab_reclaimable:125 slab_unreclaimable:3671
mapped:219 pagetables:29 bounce:0
Normal free:1292kB min:720kB low:900kB high:1080kB active:2272kB inactive:4468kB present:32512kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0
Normal: 87*4kB 52*8kB 31*16kB 1*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 1292kB
Swap cache: add 0, delete 0, find 0/0, race 0+0
Free swap = 0kB
Total swap = 0kB
Free swap: 0kB
8192 pages of RAM
0 pages of HIGHMEM
923 reserved pages
991 pages shared
0 pages swap cached
swapper: page allocation failure. order:3, mode:0x4020
Call Trace:
[<802a3ac4>] dump_stack+0x8/0x34
[<80061248>] __alloc_pages+0x2e4/0x35c
[<80082eb4>] __slab_alloc.isra.42+0x11c/0x578
[<800845dc>] __kmalloc_track_caller+0x154/0x1b0
[<801b2c78>] __alloc_skb+0x74/0x148
[<802aa8d0>] osl_pktget+0x2c/0xfc
[<802aa54c>] _dma_rxfill+0x98/0x3f0
[<c0382d28>] wlc_dpc+0x540/0xb98 [wl]
[<c0372e38>] wl_intrson+0x228/0x3bc [wl]
Mem-info:
Normal per-cpu:
CPU swapper: page allocation failure. order:3, mode:0x4020
Call Trace:
[<802nce8kB hig4kB u8swapper: page allocation failure. order:3, mode:0x4020
Call Trace:
[<802a3ac4>] dump_stack+0x8/0x34
[<80061248>] __alloc_pages+0x2e4/0x35c
[<80082eb4>] __slab_alloc.isra.42+0x11c/0xsyslogd: page allocation failure. order:3, mode:0x4020
lWARNING: at mm/slub.c:2570 kfree()
Call Trace:
[<802a3ac4>] dump_stack+0x8/0x34
[<8008370c>] kfree+0x154/0x15c
[<801b1b9c>] __kfree_skb+0x14/0x1c4
[<802aaa70>] osl_pktfree+0xd0/0x144
[<c037d058>] wlc_recv+0x150/0x2118 [wl]
[<c0382dc8>] wlc_dpc+0x5e0/0xb98 [wl]
[<c0372e38>] wl_intrson+0x228/0x3bc [wl]
WARNING: at mm/slub.c:2570 kfree()
Call Trace:
[<802a3ac4>] dump_stack+0x8/0x34
[<8008370c>] kfree+0x154/0x15c
[<801b1b9c>] __kfree_skb+0x14/0x1c4
[<802aaa70>] osl_pktfree+0xd0/0x144
[<802a9ce8>] dma32_txreclaim+0x34/0x60
[<c00f7d88>] adm_enable_device+0x3604/0x437c [et]
WARNING: at mm/slub.c:2570 kfree()
Call Trace:
[<802a3ac4>] dump_stack+0x8/0x34
[<8008370c>] kfree+0x154/0x15c
[<801b1b9c>] __kfree_skb+0x14/0x1c4
[<802aaa70>] osl_pktfree+0xd0/0x144
[<802a9ce8>] dma32_txreclaim+0x34/0x60
[<c00f7d88>] adm_enable_device+0x3604/0x437c [et]
WARNING: at mm/slub.c:2570 kfree()
Call Trace:
[<802a3ac4>] dump_stack+0x8/0x34
[<8008370c>] kfree+0x154/0x15c
[<801b1b9c>] __kfree_skb+0x14/0x1c4
[<802aaa70>] osl_pktfree+0xd0/0x144
[<802a9ce8>] dma32_txreclaim+0x34/0x60
[<c00f7d88>] adm_enable_device+0x3604/0x437c [et]
WARNING: at mm/slub.c:2570 kfree()
Call Trace:
[<802a3ac4>] dump_stack+0x8/0x34
[<8008370c>] kfree+0x154/0x15c
[<801b1b9c>] __kfree_skb+0x14/0x1c4
[<802aaa70>] osl_pktfree+0xd0/0x144
[<802a9ce8>] dma32_txreclaim+0x34/0x60
[<c00f7d88>] adm_enable_device+0x3604/0x437c [et]
WARNING: at mm/slub.c:2570 kfree()
Call Trace:
[<802a3ac4>] dump_stack+0x8/0x34
[<8008370c>] kfree+0x154/0x15c
[<801b1b9c>] __kfree_skb+0x14/0x1c4
[<802aaa70>] osl_pktfree+0xd0/0x144
[<802a9ce8>] dma32_txreclaim+0x34/0x60
[<c00f7d88>] adm_enable_device+0x3604/0x437c [et]
WARNING: at mm/slub.c:2570 kfree()
Call Trace:
[<802a3ac4>] dump_stack+0x8/0x34
[<8008370c>] kfree+0x154/0x15c
[<801b1b9c>] __kfree_skb+0x14/0x1c4
[<802aaa70>] osl_pktfree+0xd0/0x144
[<802a9ce8>] dma32_txreclaim+0x34/0x60
[<c00f7d88>] adm_enable_device+0x3604/0x437c [et]
WARNING: at mm/slub.c:2570 kfree()
Call Trace:
[<802a3ac4>] dump_stack+0x8/0x34
[<8008370c>] kfree+0x154/0x15c
[<801b1b9c>] __kfree_skb+0x14/0x1c4
[<802aaa70>] osl_pktfree+0xd0/0x144
[<802a9ce8>] dma32_txreclaim+0x34/0x60
[<c00f7d88>] adm_enable_device+0x3604/0x437c [et]
и т.д. и т.п.
Это актуально для wl-500gpv1 c картой wifi BRCM43222 (WL500W-1.9.2.7-rtn-r5397M_BRCM_43222_T4.6.3.trx) и вероятно для wl-500w
Также можно это воспроизвести и на оригинальном wl-500gpv1 ограничив скорость свича. (WL500gp-1.9.2.7-rtn-r5422.trx)
Воспроизвести можно так:
Переключаем в режим точки доступа: System setup - Operation Mode - Access Point
Настраиваем wifi на максимальное быстродействие.
Для оригинального wl-500gpv1 ограничиваем скорость свича - robocfg port 0 media 10FD
На хосте (192.168.1.5) подключенном по ethernet запускаем сервер iperf в режиме udp: iperf -s -u -p1001
На хосте висящем на wifi запускаем клиента iperf: iperf -c 192.168.1.5 -u -P 1 -i 1 -p 1001 -l 1470 -f m -b 102M -t 300 -T 1
(для оригинального wl-500gpv1 bandwidth можно поставить меньше -b 21M)
И через какое-то время наблюдаем на консоли вышеуказанные ошибки. Что это - баг в et ?