Please note: This project is no longer active. The website is kept online for historic purposes only.
If you´re looking for a Linux driver for your Atheros WLAN device, you should continue here .

Ticket #1432: findrate-errors.diff

File findrate-errors.diff, 1.4 kB (added by georg@boerde.de, 15 years ago)

Check if findrate() has set correct rate values.

  • ath/if_ath.c

    old new  
    68086808                         */ 
    68096809                        try0 = ATH_TXMAXTRY; 
    68106810                } else { 
     6811                        /* XXX: set invalid values so we can check 
     6812                         * if findrate succeeded. 
     6813                         */ 
     6814#define INVALID_RIX 0xff 
     6815#define INVALID_TRY0 0xffffffffU 
     6816#define INVALID_TXRATE 0xff 
     6817 
     6818                        rix = INVALID_RIX; 
     6819                        try0 = INVALID_TRY0; 
     6820                        txrate = INVALID_TXRATE; 
     6821 
    68116822                        /* 
    68126823                         * Data frames; consult the rate control module. 
    68136824                         */ 
     
    68156826                                &rix, &try0, &txrate); 
    68166827 
    68176828                        /* Ratecontrol sometimes returns invalid rate index */ 
    6818                         if (rix != 0xff) 
    6819                                 an->an_prevdatarix = rix; 
    6820                         else 
    6821                                 rix = an->an_prevdatarix; 
     6829                        if (rix == INVALID_RIX) { 
     6830                                rix = sc->sc_minrateix; 
     6831                                printk(KERN_ERR "%s: rate module returned no rate idx!\n", 
     6832                                        DEV_NAME(dev)); 
     6833                        } 
     6834                        if (try0 == INVALID_TRY0) { 
     6835                                try0 = ATH_TXMAXTRY; 
     6836                                printk(KERN_ERR "%s: rate module returned no retry count!\n", 
     6837                                        DEV_NAME(dev)); 
     6838                        } 
     6839                        if (txrate == INVALID_TXRATE) { 
     6840                                txrate = rt->info[rix].rateCode; 
     6841                                printk(KERN_ERR "%s: rate module returned no TX rate!\n", 
     6842                                        DEV_NAME(dev)); 
     6843                        } 
     6844#undef INVALID_RIX 
     6845#undef INVALID_TRY0 
     6846#undef INVALID_TXRATE 
     6847                        an->an_prevdatarix = rix; 
    68226848                } 
    68236849 
    68246850                if (M_FLAG_GET(skb, M_UAPSD)) {