rpms/kernel/F-12 linux-2.6-wireless_-report-reasonable-bitrate-for-MCS-rates-through-wext.patch, NONE, 1.1 kernel.spec, 1.1989, 1.1990
John W. Linville
linville at fedoraproject.org
Thu Jan 21 18:50:55 UTC 2010
Author: linville
Update of /cvs/pkgs/rpms/kernel/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv1719
Modified Files:
kernel.spec
Added Files:
linux-2.6-wireless_-report-reasonable-bitrate-for-MCS-rates-through-wext.patch
Log Message:
Report meaningful values for MCS rates through wireless extensions
linux-2.6-wireless_-report-reasonable-bitrate-for-MCS-rates-through-wext.patch:
core.h | 2 ++
nl80211.c | 37 ++-----------------------------------
util.c | 33 +++++++++++++++++++++++++++++++++
wext-compat.c | 5 +----
4 files changed, 38 insertions(+), 39 deletions(-)
--- NEW FILE linux-2.6-wireless_-report-reasonable-bitrate-for-MCS-rates-through-wext.patch ---
commit 254416aae70ab2e6b57fd79782c8a67196234d02
Author: John W. Linville <linville at tuxdriver.com>
Date: Wed Dec 9 16:43:52 2009 -0500
wireless: report reasonable bitrate for MCS rates through wext
Previously, cfg80211 had reported "0" for MCS (i.e. 802.11n) bitrates
through the wireless extensions interface. However, nl80211 was
converting MCS rates into a reasonable bitrate number. This patch moves
the nl80211 code to cfg80211 where it is now shared between both the
nl80211 interface and the wireless extensions interface.
Signed-off-by: John W. Linville <linville at tuxdriver.com>
diff --git a/net/wireless/core.h b/net/wireless/core.h
index 4ef3efc..35b7121 100644
--- a/net/wireless/core.h
+++ b/net/wireless/core.h
@@ -378,6 +378,8 @@ int rdev_set_freq(struct cfg80211_registered_device *rdev,
struct wireless_dev *for_wdev,
int freq, enum nl80211_channel_type channel_type);
+u16 cfg80211_calculate_bitrate(struct rate_info *rate);
+
#ifdef CONFIG_CFG80211_DEVELOPER_WARNINGS
#define CFG80211_DEV_WARN_ON(cond) WARN_ON(cond)
#else
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index a602843..7cb0d64 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -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);
diff --git a/net/wireless/util.c b/net/wireless/util.c
index 59361fd..a3c841a 100644
--- a/net/wireless/util.c
+++ b/net/wireless/util.c
@@ -720,3 +720,36 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
return err;
}
+
+u16 cfg80211_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;
+}
diff --git a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c
index 584eb48..2fa8de1 100644
--- a/net/wireless/wext-compat.c
+++ b/net/wireless/wext-compat.c
@@ -1256,10 +1256,7 @@ int cfg80211_wext_giwrate(struct net_device *dev,
if (!(sinfo.filled & STATION_INFO_TX_BITRATE))
return -EOPNOTSUPP;
- rate->value = 0;
-
- if (!(sinfo.txrate.flags & RATE_INFO_FLAGS_MCS))
- rate->value = 100000 * sinfo.txrate.legacy;
+ rate->value = 100000 * cfg80211_calculate_bitrate(&sinfo.txrate);
return 0;
}
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-12/kernel.spec,v
retrieving revision 1.1989
retrieving revision 1.1990
diff -u -p -r1.1989 -r1.1990
--- kernel.spec 20 Jan 2010 15:50:31 -0000 1.1989
+++ kernel.spec 21 Jan 2010 18:50:54 -0000 1.1990
@@ -667,8 +667,7 @@ Patch610: hda_intel-prealloc-4mb-dmabuff
Patch670: linux-2.6-ata-quirk.patch
-Patch680: linux-2.6-rt2x00-asus-leds.patch
-Patch681: linux-2.6-mac80211-age-scan-results-on-resume.patch
+Patch680: linux-2.6-wireless_-report-reasonable-bitrate-for-MCS-rates-through-wext.patch
Patch700: linux-2.6.31-nx-data.patch
Patch701: linux-2.6.31-modules-ro-nx.patch
@@ -1301,11 +1300,8 @@ ApplyPatch linux-2.6-silence-fbcon-logo.
# ia64 ata quirk
ApplyPatch linux-2.6-ata-quirk.patch
-# rt2x00: back-port activity LED init patches
-#ApplyPatch linux-2.6-rt2x00-asus-leds.patch
-
-# back-port scan result aging patches
-#ApplyPatch linux-2.6-mac80211-age-scan-results-on-resume.patch
+# Report meaningful values for MCS rates through wireless extensions
+ApplyPatch linux-2.6-wireless_-report-reasonable-bitrate-for-MCS-rates-through-wext.patch
# Mark kernel data as NX
#ApplyPatch linux-2.6.31-nx-data.patch
@@ -2031,7 +2027,10 @@ fi
# and build.
%changelog
-* Wed Jan 21 2010 Kyle McMartin <kyle at redhat.com> 2.6.32.4-29
+* Thu Jan 21 2010 John W. Linville <linville at redhat.com> 2.6.32.4-30
+- Report meaningful values for MCS rates through wireless extensions
+
+* Wed Jan 20 2010 Kyle McMartin <kyle at redhat.com> 2.6.32.4-29
- add appleir usb driver
* Mon Jan 18 2010 Kyle McMartin <kyle at redhat.com> 2.6.32.4-28
More information about the scm-commits
mailing list