2013/8/8 Florian Fainelli <[email protected]>:
> - you are CPU bound; the hardware might be moving packet faster but software
> cannot keep up
> - the NAPI implementation (if existing in the driver) might need some
> tweaking, in particular I see no likely(__napi_schedule_prep) for instance
I tried hacking bgmac.
1) TX
I removed all error handling from bgmac_dma_tx_add and
bgmac_dma_tx_free. Just for sure (not trusting compiler) I replaced
variables with some inlining, added "(un)likely" where possible, for
example:
if (unlikely(++ring->end >= BGMAC_TX_RING_SLOTS))
2) RX
As you suggested I replaced
napi_schedule(&bgmac->napi);
with
if (likely(napi_schedule_prep(&bgmac->napi)))
__napi_schedule(&bgmac->napi);
Well, it didn't help :| I still get
1) 87Mb/s for LAN -> router
2) 155 to 165Mb/s for router -> LAN
When running "iperf -s" I noticed some new "__lock_text_end":
7498 total 0.0029
1778 __lock_text_end 0.4759
1778 *unknown*
495 __copy_user_common 0.7112
492 __do_softirq 1.1284
267 csum_partial 0.1870
173 tcp_transmit_skb 0.0685
169 dev_hard_start_xmit 0.1033
155 r4k_dma_cache_wback_inv 0.7176
122 process_backlog 0.2652
109 tcp_sendmsg 0.0274
106 ___pskb_trim 0.1767
105 ip_finish_output 0.0969
105 __bzero 0.2949
not sure if that matters...
--
Rafał
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel