Hey,

I wanted to modify iw to support NL80211_CMD_SET_TX_BITRATE_MASK and thus
wanted to be clear about the expected input from the user-space. I see that
the function rateset_to_mask converts an array of u8 received from userspace
via netlink to a u32 mask for legacy rate.

It uses following lines of code to achieve that:

*for (i = 0; i < rates_len; i++) {
               int rate = (rates[i] & 0x7f) * 5;
               int ridx;
               for (ridx = 0; ridx < sband->n_bitrates; ridx++) {
                       struct ieee80211_rate *srate =
                               &sband->bitrates[ridx];
                       if (rate == srate->bitrate) {
                               mask |= 1 << ridx;
                               break;
                       }
               }
               if (ridx == sband->n_bitrates)
                       return 0; /* rate not found */
       }*


What I don't understand is the line              *  int rate = (rates[i] &
0x7f) * 5;*
*
*
I am working with ath9k driver and the sband->bitrates array contains
following values in that case:

*2         RATE(10, 0x1b, 0),*
*4         RATE(20, 0x1a, IEEE80211_RATE_SHORT_PREAMBLE),*
*11        RATE(55, 0x19, IEEE80211_RATE_SHORT_PREAMBLE),*
*22        RATE(110, 0x18, IEEE80211_RATE_SHORT_PREAMBLE),*
*12        RATE(60, 0x0b, 0),*
*18        RATE(90, 0x0f, 0),*
*24        RATE(120, 0x0a, 0),*
*36        RATE(180, 0x0e, 0),*
*48        RATE(240, 0x09, 0),*
*72        RATE(360, 0x0d, 0),*
*96        RATE(480, 0x08, 0),*
*108       RATE(540, 0x0c, 0),*

But what beats me is that *why are we multiplying the incoming rate numbers
by 5*?

A prompt reply shall be highly appreciated.

--
Rakesh
_______________________________________________
ath9k-devel mailing list
[email protected]
https://lists.ath9k.org/mailman/listinfo/ath9k-devel

Reply via email to