From 0e97be5b175b44ec78a477aa8a445288aae146f1 Mon Sep 17 00:00:00 2001 From: florian Date: Sun, 31 Aug 2008 11:35:51 +0000 Subject: [PATCH] Correctly set b/g rate tables for mac80211, thanks sn9 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12445 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/002-rate_definitions.patch | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 package/acx-mac80211/patches/002-rate_definitions.patch diff --git a/package/acx-mac80211/patches/002-rate_definitions.patch b/package/acx-mac80211/patches/002-rate_definitions.patch new file mode 100644 index 000000000..458b79a54 --- /dev/null +++ b/package/acx-mac80211/patches/002-rate_definitions.patch @@ -0,0 +1,108 @@ +diff --git a/common.c b/common.c +index c3a288d..9c607de 100644 +--- a/common.c ++++ b/common.c +@@ -1451,60 +1451,66 @@ void acx_free_modes(acx_device_t * adev) + // adev->modes = NULL; + } + +-/* +-#define RATETAB_ENT(_rate, _rateid, _flags) \ +- { \ +- .rate = (_rate), \ +- .val = (_rateid), \ +- .val2 = (_rateid), \ +- .flags = (_flags), \ +- } +-*/ +- + static struct ieee80211_rate acx_rates[] = { + { .bitrate = 10, .hw_value = 0, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, + { .bitrate = 20, .hw_value = 1, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, + { .bitrate = 55, .hw_value = 2, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, + { .bitrate = 110, .hw_value = 3, .flags = IEEE80211_RATE_SHORT_PREAMBLE }, +- { .bitrate = 60, .hw_value = 4, }, +- { .bitrate = 90, .hw_value = 5, }, +- { .bitrate = 120, .hw_value = 6, }, +- { .bitrate = 180, .hw_value = 7, }, +- { .bitrate = 240, .hw_value = 8, }, +- { .bitrate = 360, .hw_value = 9, }, +- { .bitrate = 480, .hw_value = 10, }, +- { .bitrate = 540, .hw_value = 11, }, ++ { .bitrate = 60, .hw_value = 4, .flags = 0 }, ++ { .bitrate = 90, .hw_value = 5, .flags = 0 }, ++ { .bitrate = 120, .hw_value = 6, .flags = 0 }, ++ { .bitrate = 180, .hw_value = 7, .flags = 0 }, ++ { .bitrate = 240, .hw_value = 8, .flags = 0 }, ++ { .bitrate = 360, .hw_value = 9, .flags = 0 }, ++ { .bitrate = 480, .hw_value = 10, .flags = 0 }, ++ { .bitrate = 540, .hw_value = 11, .flags = 0 }, + }; + ++#define CHAN4G(_channel, _freq, _flags) { \ ++ .band = IEEE80211_BAND_2GHZ, \ ++ .center_freq = (_freq), \ ++ .hw_value = (_channel), \ ++ .flags = (_flags), \ ++ .max_antenna_gain = 0, \ ++ .max_power = 30, \ ++} + static struct ieee80211_channel channels[] = { +- { .center_freq = 2412, .hw_value = 1, }, +- { .center_freq = 2417, .hw_value = 2, }, +- { .center_freq = 2422, .hw_value = 3, }, +- { .center_freq = 2427, .hw_value = 4, }, +- { .center_freq = 2432, .hw_value = 5, }, +- { .center_freq = 2437, .hw_value = 6, }, +- { .center_freq = 2442, .hw_value = 7, }, +- { .center_freq = 2447, .hw_value = 8, }, +- { .center_freq = 2452, .hw_value = 9, }, +- { .center_freq = 2457, .hw_value = 10, }, +- { .center_freq = 2462, .hw_value = 11, }, +- { .center_freq = 2467, .hw_value = 12, }, +- { .center_freq = 2472, .hw_value = 13, }, +- { .center_freq = 2484, .hw_value = 14, }, ++ CHAN4G(1, 2412, 0), ++ CHAN4G(2, 2417, 0), ++ CHAN4G(3, 2422, 0), ++ CHAN4G(4, 2427, 0), ++ CHAN4G(5, 2432, 0), ++ CHAN4G(6, 2437, 0), ++ CHAN4G(7, 2442, 0), ++ CHAN4G(8, 2447, 0), ++ CHAN4G(9, 2452, 0), ++ CHAN4G(10, 2457, 0), ++ CHAN4G(11, 2462, 0), ++ CHAN4G(12, 2467, 0), ++ CHAN4G(13, 2472, 0), ++ CHAN4G(14, 2484, 0), + }; ++#undef CHAN4G ++ ++#define acx_b_ratetable (acx_rates + 0) ++#define acx_b_ratetable_size 4 ++#define acx_g_ratetable (acx_rates + 0) ++#define acx_g_ratetable_size 12 + + static struct ieee80211_supported_band g_band_2GHz = { ++ .band = IEEE80211_BAND_2GHZ, + .channels = channels, + .n_channels = ARRAY_SIZE(channels), +- .bitrates = acx_rates, +- .n_bitrates = 12, ++ .bitrates = acx_b_ratetable, ++ .n_bitrates = acx_g_ratetable_size, + }; + + static struct ieee80211_supported_band b_band_2GHz = { ++ .band = IEEE80211_BAND_2GHZ, + .channels = channels, + .n_channels = ARRAY_SIZE(channels), +- .bitrates = acx_rates, +- .n_bitrates = 4, ++ .bitrates = acx_g_ratetable, ++ .n_bitrates = acx_b_ratetable_size, + }; + + int acx_setup_modes(acx_device_t * adev) +