AR6000 netif_queue_stop non stop, Bug?
Ivan Petrov
ivan_p at hotbox.ru
Fri Mar 27 15:56:55 CET 2009
Hi Werner,
----- Original Message -----
From: "Werner Almesberger"
To: "Ivan Petrov"
Cc: <openmoko-kernel at lists.openmoko.org>
Sent: Friday, March 27, 2009 5:04 PM
Subject: Re: AR6000 netif_queue_stop non stop, Bug?
>
> Ivan Petrov wrote:
>> Changed: prevent rescheduling network queue at interface
>> opened/connected.
>
> Why is this a problem ?
This is no problem, simle i think it not right start Queue and call
rescheduling, when Queue not have actual data. If I not right, always
posible remove it.
>> Removed: wake network queue at transmit complete.
>> Added: wake network queue at packet queue limit not reached.
>
> Thanks a lot ! The logic of your patch looks quite good and I like
> it that you eliminated the redundant arNetQueueStopped mechanism.
> What I haven't quite understood yet is why the old logic didn't work.
> Or was the problem you hit a race condition ?
http://lists.openmoko.org/pipermail/openmoko-kernel/2009-March/009643.html
I put this post yesterday, why it not in thread, i not know.
On old logic I have problems, netif_queue_stop realy not stop tx_queue. I
make stress test for transmit, multiply UDP packets 32k size.
Btw, on my original sources, queue length reducted to 1, and all load lay on
Kerner queue. But I remove it from patch, becouse not know how it will work
on control endpoint.
> Also,
>
> +static void ar6000_tx_queue_avail(void *Context, HTC_ENDPOINT_ID
> Endpoint)
> [...]
> + if (((ar->arConnected == TRUE) || (bypasswmi))
> + && netif_queue_stopped (ar->arNetDev)) {
> + netif_wake_queue (ar->arNetDev);
> + }
>
> Why not simply
>
> if ((ar->arConnected == TRUE) || (bypasswmi))
> netif_wake_queue(ar->arNetDev);
>
> ? (Minus the Pascalian parentheses, of course.)
Soryy, not fully read Kernel source :) of course rescheduling not will call
on waked queue, you are right
>> I have transfer speed limit, from Dev board APP to network,
>> 760-800kbytes/sec (6.0 - 6.4 mbit/sec) on AT91SAM9260, and can't
>> understand - it limit of card, driver, or it limit of AT91SAM9260...
>
> That's roughly what I got as well. My test framework is described
> here:
>
> http://lists.openmoko.org/pipermail/openmoko-kernel/2009-March/009549.html
>
> Does your SDIO driver support the SDIO interrupt or does it fall back
> to polling ? The latter may limit performance. (However, let me add
> that also Samuel's driver for the original Atheros SDIO stack that
> does SDIO interrupts and even DMA is only marginally faster than what
> we have now.)
Driver stop interrupt retriving after multi-block transfer :-(
I alpply patch for AT91 host contorller, now it depended at clockwork.
==================
diff -urN linux-2.6.28.8.orig/drivers/mmc/host/at91_mci.c
linux-2.6.28.8/drivers/mmc/host/at91_mci.c
--- linux-2.6.28.8.orig/drivers/mmc/host/at91_mci.c 2009-03-17
03:50:03.000000000 +0300
+++ linux-2.6.28.8/drivers/mmc/host/at91_mci.c 2009-03-22 01:08:53.000000000
+0300
@@ -1007,7 +1007,7 @@
mmc->f_min = 375000;
mmc->f_max = 25000000;
mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
- mmc->caps = MMC_CAP_SDIO_IRQ;
+ mmc->caps = 0; // MMC_CAP_SDIO_IRQ;
mmc->max_blk_size = 4095;
mmc->max_blk_count = mmc->max_req_size;
==================
--
Regards, Ivan.
More information about the openmoko-kernel
mailing list