[Make-wifi-fast] [PATCH v7] mac80211: Move reorder-sensitive TX handlers to after TXQ dequeue.

Toke Høiland-Jørgensen toke at toke.dk
Mon Sep 5 16:45:24 EDT 2016


Dave Taht <dave.taht at gmail.com> writes:

> Toke
>
> Alright, I got your build running on one of the new uap ac lites. Your
> patchset includes
> 348-mac80211-Use-more-standard-codel-and-fq_codel-defaul.patch which
> reverts the fq quantum to 1514, and the codel target to 5ms.
>
> (still not clear to me what the actual max packet size is in this layer)
>
> There's no kernel repo in what you put up, so the ath10k firmware and
> kernel modules are AWOL. So I tested mcs1, msc4, and minstrel. I had
> babel
> enabled (to blow up multicast), also.
>
> It basically survived many tests, with generally half the latency of
> what I got from lede mainline, under various loads (from 40ms median
> to below 20ms median) I did not test crypto, just pounded it flat from
> a mac. Bandwidth was slightly lower at the peak in ht20 mode vs lede
> mainine but my circumstances are not very repeatable yet - I hadn't
> had babel enabled on the previous test run, I tested a channel that is
> probably busy during the day vs not at night, I'd moved both the AP
> and the test station, and so on. I'll be getting towards repeatability
> soon, and
> I'm happy the new APs seem to be working great. At 65Mbit I'd see
> about 12% sirq.

Yay, sounds promising :)

> I'll put up some pics later, try to test powersave, try higher rates,
> and various forms of crypto - still yurtlab-building here!
>
> However - probably triggered by the rrul test, I did get 3 kernel
> panics. the symptoms were that the osx box would stay associated but
> no longer pass traffic.
>
> [ 3149.554217] ------------[ cut here ]------------
> [ 3149.559260] WARNING: CPU: 0 PID: 0 at
> compat-wireless-2016-06-20/net/mac80211/tx.c:1514
> ieee80211_tx_dequeue+0x17c/0x968 [mac80211]()
> [ 3149.571663] Modules linked in: ath9k ath9k_common iptable_nat
> ath9k_hw ath nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 mac80211
> ipt_REJECT ipt_MASQUERADE ebtable_nat ebtable_filter ebtable_broute
> cfg80211 xt_time xt_tcpudp xt_tcpmss xt_statistic xt_state xt_recent
> xt_nat xt_multiport xt_mark xt_mac xt_limit xt_length xt_id xt_hl
> xt_helper xt_ecn xt_dscp xt_conntrack xt_connmark xt_connlimit
> xt_connbytes xt_comment xt_TCPMSS xt_REDIRECT xt_LOG xt_IPMARK xt_HL
> xt_DSCP xt_CT xt_CLASSIFY nf_reject_ipv4 nf_nat_redirect
> nf_nat_masquerade_ipv4 nf_nat nf_log_ipv4 nf_defrag_ipv6
> nf_defrag_ipv4 nf_conntrack_rtcache nf_conntrack_netlink nf_conntrack
> iptable_raw iptable_mangle iptable_filter ipt_ECN ip_tables ebtables
> ebt_vlan ebt_stp ebt_snat ebt_redirect ebt_pkttype ebt_mark_m ebt_mark
> ebt_limit ebt_ip6 ebt_ip ebt_dnat ebt_arpreply ebt_arp ebt_among
> ebt_802_3 crc_ccitt compat_xtables compat br_netfilter arptable_filter
> arpt_mangle arp_tables sch_cake em_nbyte sch_htb sch_prio sch_dsmark
> sch_pie sch_gred em_meta sch_teql cls_basic act_ipt sch_red em_text
> sch_tbf act_police sch_codel sch_sfq em_cmp sch_fq act_skbedit
> act_mirred em_u32 cls_u32 cls_tcindex cls_flow cls_route cls_fw
> sch_hfsc sch_ingress leds_wndr3700_usb ledtrig_usbdev xt_set
> ip_set_list_set ip_set_hash_netiface ip_set_hash_netport
> ip_set_hash_netnet ip_set_hash_net ip_set_hash_netportnet
> ip_set_hash_mac ip_set_hash_ipportnet ip_set_hash_ipportip
> ip_set_hash_ipport ip_set_hash_ipmark ip_set_hash_ip
> ip_set_bitmap_port ip_set_bitmap_ipmac ip_set_bitmap_ip ip_set
> nfnetlink ip6t_rt ip6t_frag ip6t_hbh ip6t_eui64 ip6t_mh ip6t_ah
> ip6t_ipv6header ip6t_REJECT nf_reject_ipv6 nf_log_ipv6 nf_log_common
> ip6table_raw ip6table_mangle ip6table_filter ip6_tables x_tables ifb
> sit tunnel4 ip_tunnel tun ohci_platform ohci_hcd ehci_platform
> ehci_hcd gpio_button_hotplug usbcore nls_base usb_common
> [ 3149.740660] CPU: 0 PID: 0 Comm: swapper Tainted: G        W       4.4.19 #0
> [ 3149.747856] Stack : 804205e4 00000000 00000001 80480000 8046f058
> 8046ece3 803f9bd0 00000000
> [ 3149.747856]       804f37e0 b75381f8 87011000 87011008 871c3bd0
> 800ada74 80400a84 80460000
> [ 3149.747856]       00000003 b75381f8 803fea6c 8046597c 871c3bd0
> 800ab9a0 00000002 00000000
> [ 3149.747856]       8046b1a0 80231300 00000000 00000000 00000000
> 00000000 00000000 00000000
> [ 3149.747856]       00000000 00000000 00000000 00000000 00000000
> 00000000 00000000 00000000
> [ 3149.747856]       ...
> [ 3149.784879] Call Trace:
> [ 3149.787417] [<80072378>] show_stack+0x50/0x84
> [ 3149.791925] [<80084240>] warn_slowpath_common+0xa4/0xd4
> [ 3149.797333] [<800842f8>] warn_slowpath_null+0x18/0x24
> [ 3149.802826] [<8712cf2c>] ieee80211_tx_dequeue+0x17c/0x968 [mac80211]
> [ 3149.809726] [<870ea900>] ath_tid_dequeue+0x98/0x13c [ath9k]
> [ 3149.815532] [<870ea9f8>] ath_tx_get_tid_subframe+0x54/0x1ec [ath9k]
> [ 3149.822026] [<870eb354>] ath_txq_schedule+0x540/0x650 [ath9k]
> [ 3149.827993] [<870ec018>] ath_tx_process_buffer+0x9d0/0xa18 [ath9k]
> [ 3149.834413] [<870ecd6c>] ath_tx_edma_tasklet+0x2d0/0x324 [ath9k]
> [ 3149.840634] [<870e4fa0>] ath9k_tasklet+0x24c/0x2b0 [ath9k]
> [ 3149.846332] [<80087634>] tasklet_action+0x80/0xc8
> [ 3149.851189] [<80086f68>] __do_softirq+0x26c/0x32c
> [ 3149.856070] [<8006a908>] plat_irq_dispatch+0xd4/0x10c
> [ 3149.861287] [<80060830>] ret_from_irq+0x0/0x4
> [ 3149.865803] [<8006ec00>] r4k_wait_irqoff+0x18/0x20
> [ 3149.870757] [<800a87ac>] cpu_startup_entry+0xf8/0x184
> [ 3149.875994] [<8049cbec>] start_kernel+0x488/0x4a8
> [ 3149.880851]
> [ 3149.882392] ---[ end trace 103165cc10a64d96 ]---

Ah, no, those are not panics, those are warnings being triggered by the
fast_tx pointer going while the packet was queued. Now, the
xmit_fast_finish() function doesn't actually use that for anything other
than crypto key configuration, so it would probably be feasible to get
rid of that check in the dequeue path.

How many of those warnings do you see? And what do you have to do to get
traffic to flow again? The warning should just cause the packet to be
dropped; subsequent packets shouldn't be affected (ha!).

-Toke


More information about the Make-wifi-fast mailing list