[Make-wifi-fast] a bit of profiling on the archer

Eric Dumazet eric.dumazet at gmail.com
Fri Nov 18 09:13:53 EST 2016


On Fri, 2016-11-18 at 08:55 +0100, Jesper Dangaard Brouer wrote:

> Be careful you don't fool yourself. In your output you have the
> "children" mode on, so everything being called "under" net_rx_action is
> summed up.  It could be it goes all the way through to the wifi TX
> parts and that is part of the sum.  Even the memory allocations gets
> summed into this 66% number.

Yes, I really do not see how ag71xx would be to blame ;)

Although.... looking at 

https://aachen.uni-dsl.de/svn/unidsl_firmware/backfire/trunk/backfire/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c


I do see a bug :


if (rx_done < limit) {
		if (status & RX_STATUS_PR)
			goto more;

		status = ag71xx_rr(ag, AG71XX_REG_TX_STATUS);
		if (status & TX_STATUS_PS)
			goto more;

		DBG("%s: disable polling mode, rx=%d, tx=%d,limit=%d\n",
			dev->name, rx_done, tx_done, limit);

		napi_complete(napi);
Hint: 
	napi_complete_done(napi, rx_done);

		/* enable interrupts */
		spin_lock_irqsave(&ag->lock, flags);
		ag71xx_int_enable(ag, AG71XX_INT_POLL);
		spin_unlock_irqrestore(&ag->lock, flags);
		return rx_done;
	}

 more:
	DBG("%s: stay in polling mode, rx=%d, tx=%d, limit=%d\n",
			dev->name, rx_done, tx_done, limit);
	return rx_done;

This last statement should be : "return limit;"





More information about the Make-wifi-fast mailing list