2009/11/7 Clyde McPherson <[email protected]>:
> I'm using some 4318CF (PCMCIA) cards in some X86, ARM, and ATOM
> platforms. When the card is put into monitor mode, the CF Card will lock
> up when there is a high concentration of very active access points. What
> I have found is that the problem lies with the receiving of the frame,
> and is receiving multiple B43_PIO8_RXCTL_DATARDY's, instead of the
> normal B43_PIO8_RXCTL_FRAMERDY sequence. In order to get the card
> working for my customers, I added the below if statement in the function
> pio_rx_frame(), see code fragment below:
>
>       /* Check if we have data and wait for it to get ready. */
>        if (q->rev >= 8) {
>                u32 ctl;
>
>                ctl = b43_piorx_read32(q, B43_PIO8_RXCTL);
>
>                if (ctl & B43_PIO8_RXCTL_DATARDY)     <-----  This is
> what I added, also in the associated else
>                        goto data_ready;
> <-----  This is what I added, also in the associated else
>
>                if (!(ctl & B43_PIO8_RXCTL_FRAMERDY))
>                        return 0;
>                b43_piorx_write32(q, B43_PIO8_RXCTL,
>                                  B43_PIO8_RXCTL_FRAMERDY);
>                for (i = 0; i < 10; i++) {
>                        ctl = b43_piorx_read32(q, B43_PIO8_RXCTL);
>                        if (ctl & B43_PIO8_RXCTL_DATARDY)
>                                goto data_ready;
>                        udelay(10);
>                }
>
> The above addition allows the CF card to work properly and causes no
> card hangs.  I have been able to run tests in the lab for over 24 hours
> now and the card seems to be stable, where before the CF card would hang
> within an hour of testing.  I guess the code could be changed to
> (according to the specs @ sipsolutions): If ctl & B43_PIO8_RXCTL_DATARDY
> then set err_msg and goto rx_error? Even modify the line if (!(ctl &
> B43_PIO8_RXCTL_FRAMERDY)) to set err_msg to NULL and goto rx_error
> instead of returning 0?  Any suggestions? BTW: I haven't tried the other
> code options.

Interesting. Does anyone know if that can be related to instability of
4318 as AP? AFAIR it was related to high traffic.

-- 
Rafał
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to