This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Wireless reports connection Bit Rate=0 kb/s in 802.11a band

Other Parts Discussed in Thread: WL1837, WL1271

Hi,

I am facing an issue ,when connected to 802.11a band Access Point.

When connecting to 802.11a band AP ,it shows the connection Bit rate as zero.But i can able to ping with that AP. When connecting  to  access point with all other bands b/g/n  we are correctly getting the rate.

I am using wl1837 module . please find below the output

~# iwconfig
wlan0     IEEE 802.11abgn  ESSID:"TestA" 
          Mode:Managed  Frequency:5.2 GHz  Access Point: C8:B3:73:0D:A0:3E  
          Bit Rate=0 kb/s   Tx-Power=20 dBm  
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on
          Link Quality=43/70  Signal level=-67 dBm 
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

:~# iw wlan0 link
Connected to c8:b3:73:0d:a0:3e (on wlan0)
        SSID: TestA
        freq: 5200
        RX: 1438 bytes (12 packets)
        TX: 8613 bytes (33 packets)
        signal: -70 dBm
        tx bitrate:

        bss flags:      short-slot-time
        dtim period:    1
        beacon int:     100


~# iwlist wlan0 rate
wlan0     unknown bit-rate information.
          Current Bit Rate=0 kb/s

I am getting data rate correctly when connecting to 5.2GHz n band AP.

~# iwconfig
wlan0     IEEE 802.11abgn  ESSID:"TestN" 
          Mode:Managed  Frequency:5.2 GHz  Access Point: C8:B3:73:0D:A0:3E  
          Bit Rate=72.2 Mb/s   Tx-Power=20 dBm  
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on
          Link Quality=40/70  Signal level=-70 dBm 
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Is anything needed to be done particularly for a band for getting the data rate?

Regards,

Jisha

  • Hi Jisha,

    I will check this and get back to you... Can you please tell me which wl18xx driver/firmware version you are using?

    Regards,
    Gigi Joseph.

  • Hi Gigi,

    Please find below the driver and firmware version.

    # strings /lib/firmware/ti-connectivity/wl18xx-fw-2.bin | grep Rev
    FRev 8.6.0.0.20
    FRev 8.2.0.0.179


    # dmesg | grep wl18
    wlcore: wl18xx driver version: ol_r8.a6.02

    Regards,

    Jisha

  • Hi Jisha,

    Thanks for the information... Can you check the same scenario with another 802.11a band Access Point?
    I am suspecting whether the AP is sending the supported rates in the probe response, and the IE in the Beacon frame got over written because of this...

    Is it possible to get a wireshark trace for this?

    Regards,
    Gigi Joseph.

  • Hi,

    For finding the reason for occurrence of 0 bitrate when the Client device(TI WL1837) is placed near the “a” band router, we have debugged the TI driver. In the TI driver we have found that the bitrate values are initialized in an array of structure and the bitrate for a particular band is calculated using the array index value. We assume that the array index is directly read from the wl1271 pointer, which will be updated every time after the transmission of data. The array index value we obtained for "a" band and "g" band, which we have taken for comparison since a and g band supports same bitrate values, is as follows.

    BAND    HBox-AP DIST    BITRATE      ArrayIndex
        a              1 feet                 0Kb\s               11
        a              40 feet               54Mb/s             7

        g              1 feet                 54Mb/s            11
        g              40 feet               18Mbps            7


    ie, For 5GHz band and 2GHz band same index value is used. But TI driver uses 2 separate structures wl1271_rates and wl1271_rates_5ghz

                             

     

    static struct ieee80211_rate wl1271_rates_5ghz[] = {

            { .bitrate = 60,

              .hw_value =   CONF_HW_BIT_RATE_6MBPS,

              .hw_value_short =   CONF_HW_BIT_RATE_6MBPS, },

            { .bitrate = 90,

              .hw_value =   CONF_HW_BIT_RATE_9MBPS,

              .hw_value_short =   CONF_HW_BIT_RATE_9MBPS, },

            { .bitrate = 120,

              .hw_value =   CONF_HW_BIT_RATE_12MBPS,

              .hw_value_short =   CONF_HW_BIT_RATE_12MBPS, },

            { .bitrate = 180,

              .hw_value =   CONF_HW_BIT_RATE_18MBPS,

              .hw_value_short =   CONF_HW_BIT_RATE_18MBPS, },

            { .bitrate = 240,

              .hw_value =   CONF_HW_BIT_RATE_24MBPS,

              .hw_value_short =   CONF_HW_BIT_RATE_24MBPS, },

            { .bitrate = 360,

             .hw_value =   CONF_HW_BIT_RATE_36MBPS,

             .hw_value_short =   CONF_HW_BIT_RATE_36MBPS, },

            { .bitrate = 480,

              .hw_value =   CONF_HW_BIT_RATE_48MBPS,

              .hw_value_short =   CONF_HW_BIT_RATE_48MBPS, },

            { .bitrate = 540,

              .hw_value =   CONF_HW_BIT_RATE_54MBPS,

              .hw_value_short =   CONF_HW_BIT_RATE_54MBPS, },

    };

     

    Location: src/kernel/drivers/net/wireless/ti/wlcore/main.c

    From the hardware layer driver we are getting   rate->idx = 11, Band= 5 GHz  when the Client device (TI WL1837) is placed near the “a” band  router. Here we are expecting 54 Mb/s (Bitrate).  Since it is pointing to unknown memory location its reporting  0 kb/s.

     

    static

    void   wl18xx_get_last_tx_rate(struct wl1271 *wl, struct ieee80211_vif *vif,

                                 struct   ieee80211_tx_rate *rate)

    {

            struct wl12xx_vif *wlvif =   wl12xx_vif_to_data(vif);

            u8 fw_rate = wl->fw_status_2->counters.tx_last_rate; 

            if (fw_rate >   CONF_HW_RATE_INDEX_MAX) {

                    wl1271_error("last Tx   rate invalid: %d", fw_rate);

                    rate->idx = 0;

                    rate->flags = 0;

                    return;

            } 

            if (fw_rate <=   CONF_HW_RATE_INDEX_54MBPS) {

                     rate->idx = fw_rate;

                    if (IEEE80211_BAND_5GHZ ==   wlvif->band)

                    {

                            if(fw_rate > 3)

                                    rate->idx   -= 4;

                    }

                    rate->flags = 0;

            }

    Location: src/kernel/drivers/net/wireless/ti/wl18xx/tx.c

    We modified tx.c file (rate-> idx -= 4; ) and tested , now its reporting  54 Mb/s. Since it is pointing to array index 7, let me know is it possible to make above changes. Suggest a remedy for this issue.

  • Hi Jisha,

    This indeed looks like a bug... We will integrate a fix to this in our next release.

    Regards,
    Gigi Joseph.