|
@@ -1637,39 +1637,6 @@ static int parse_station_flags(struct genl_info *info,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static u16 nl80211_calculate_bitrate(struct rate_info *rate)
|
|
|
-{
|
|
|
- int modulation, streams, bitrate;
|
|
|
-
|
|
|
- if (!(rate->flags & RATE_INFO_FLAGS_MCS))
|
|
|
- return rate->legacy;
|
|
|
-
|
|
|
- /* the formula below does only work for MCS values smaller than 32 */
|
|
|
- if (rate->mcs >= 32)
|
|
|
- return 0;
|
|
|
-
|
|
|
- modulation = rate->mcs & 7;
|
|
|
- streams = (rate->mcs >> 3) + 1;
|
|
|
-
|
|
|
- bitrate = (rate->flags & RATE_INFO_FLAGS_40_MHZ_WIDTH) ?
|
|
|
- 13500000 : 6500000;
|
|
|
-
|
|
|
- if (modulation < 4)
|
|
|
- bitrate *= (modulation + 1);
|
|
|
- else if (modulation == 4)
|
|
|
- bitrate *= (modulation + 2);
|
|
|
- else
|
|
|
- bitrate *= (modulation + 3);
|
|
|
-
|
|
|
- bitrate *= streams;
|
|
|
-
|
|
|
- if (rate->flags & RATE_INFO_FLAGS_SHORT_GI)
|
|
|
- bitrate = (bitrate / 9) * 10;
|
|
|
-
|
|
|
- /* do NOT round down here */
|
|
|
- return (bitrate + 50000) / 100000;
|
|
|
-}
|
|
|
-
|
|
|
static int nl80211_send_station(struct sk_buff *msg, u32 pid, u32 seq,
|
|
|
int flags, struct net_device *dev,
|
|
|
u8 *mac_addr, struct station_info *sinfo)
|
|
@@ -1716,8 +1683,8 @@ static int nl80211_send_station(struct sk_buff *msg, u32 pid, u32 seq,
|
|
|
if (!txrate)
|
|
|
goto nla_put_failure;
|
|
|
|
|
|
- /* nl80211_calculate_bitrate will return 0 for mcs >= 32 */
|
|
|
- bitrate = nl80211_calculate_bitrate(&sinfo->txrate);
|
|
|
+ /* cfg80211_calculate_bitrate will return 0 for mcs >= 32 */
|
|
|
+ bitrate = cfg80211_calculate_bitrate(&sinfo->txrate);
|
|
|
if (bitrate > 0)
|
|
|
NLA_PUT_U16(msg, NL80211_RATE_INFO_BITRATE, bitrate);
|
|
|
|