From 4026ce8d3bc00f7c0bdbb97b224b5584523bddc0 Mon Sep 17 00:00:00 2001 From: tanner Date: Mon, 17 May 2010 07:58:09 +0200 Subject: [PATCH] v29 --- kernel-power-2.6.28/debian/28.diff | 30 +++ kernel-power-2.6.28/debian/changelog | 7 + kernel-power-2.6.28/debian/patches/series | 1 + kernel-power-2.6.28/debian/patches/usbhost2.diff | 30 +++ .../debian/patches/wl1251-monitor-mode.diff | 163 +----------- .../debian/patches/wl1251-monitor-mode2.diff | 265 ++++++++++++++++++++ kernel-power-2.6.28/debian/rx51power_defconfig | 21 +- 7 files changed, 349 insertions(+), 168 deletions(-) create mode 100644 kernel-power-2.6.28/debian/28.diff create mode 100644 kernel-power-2.6.28/debian/patches/usbhost2.diff create mode 100644 kernel-power-2.6.28/debian/patches/wl1251-monitor-mode2.diff diff --git a/kernel-power-2.6.28/debian/28.diff b/kernel-power-2.6.28/debian/28.diff new file mode 100644 index 0000000..d5a88f5 --- /dev/null +++ b/kernel-power-2.6.28/debian/28.diff @@ -0,0 +1,30 @@ +--- rx51power_defconfig 2010-05-17 07:47:34.000000000 +0200 ++++ rx51power_defconfig.d 2010-05-16 22:42:40.000000000 +0200 +@@ -403,8 +403,8 @@ + CONFIG_ASK_IP_FIB_HASH=y + # CONFIG_IP_FIB_TRIE is not set + CONFIG_IP_FIB_HASH=y +-# CONFIG_IP_MULTIPLE_TABLES is not set +-# CONFIG_IP_ROUTE_MULTIPATH is not set ++CONFIG_IP_MULTIPLE_TABLES=y ++CONFIG_IP_ROUTE_MULTIPATH=y + # CONFIG_IP_ROUTE_VERBOSE is not set + CONFIG_IP_PNP=y + CONFIG_IP_PNP_DHCP=y +@@ -677,6 +677,7 @@ + CONFIG_BT_HCIH4P=m + # CONFIG_BT_HCIVHCI is not set + # CONFIG_AF_RXRPC is not set ++CONFIG_FIB_RULES=y + CONFIG_WIRELESS=y + CONFIG_CFG80211=y + CONFIG_NL80211=y +@@ -1816,7 +1823,7 @@ + # MMC/SD/SDIO Card Drivers + # + CONFIG_MMC_BLOCK=m +-# CONFIG_MMC_BLOCK_BOUNCE is not set ++CONFIG_MMC_BLOCK_BOUNCE=y + # CONFIG_SDIO_UART is not set + # CONFIG_MMC_TEST is not set + diff --git a/kernel-power-2.6.28/debian/changelog b/kernel-power-2.6.28/debian/changelog index 9034057..beab9de 100644 --- a/kernel-power-2.6.28/debian/changelog +++ b/kernel-power-2.6.28/debian/changelog @@ -1,3 +1,10 @@ +kernel-power (2.6.28-maemo29) fremantle; urgency=low + + * revert most changes to v27: disabled more QoS modules, IP multiple table+multipath, + MMC block bouncing, old wlan-monitor patch, remove USB OHCI,EHCI + + -- Thomas Tanner Mon, 17 May 2010 07:45:30 +0200 + kernel-power (2.6.28-maemo28) fremantle; urgency=low * enabled more QoS modules, IP multiple table+multipath, diff --git a/kernel-power-2.6.28/debian/patches/series b/kernel-power-2.6.28/debian/patches/series index 9d7b438..0add089 100644 --- a/kernel-power-2.6.28/debian/patches/series +++ b/kernel-power-2.6.28/debian/patches/series @@ -25,3 +25,4 @@ ondemand-avoid.diff overclock.diff #usbhost_egoshin.diff #nootg.diff +#usbhost2.diff diff --git a/kernel-power-2.6.28/debian/patches/usbhost2.diff b/kernel-power-2.6.28/debian/patches/usbhost2.diff new file mode 100644 index 0000000..6a593ce --- /dev/null +++ b/kernel-power-2.6.28/debian/patches/usbhost2.diff @@ -0,0 +1,30 @@ +--- kernel-power-2.6.28.orig/arch/arm/mach-omap2/prcm.c ++++ kernel-power-2.6.28/arch/arm/mach-omap2/prcm.c +@@ -131,7 +131,7 @@ + * HACK for RX51 boards previous to B3 which + * doesn't have a reset line to isp1707 transceiver + */ +-extern void musb_emergency_stop(void); ++/*extern void musb_emergency_stop(void);*/ + + /* Resets clock rates and reboots the system. Only called from system.h */ + void omap_prcm_arch_reset(char mode) +@@ -156,7 +156,7 @@ + * HACK for RX51 boards previous to B3 which + * doesn't have a reset line to isp1707 transceiver + */ +- musb_emergency_stop(); ++ /*musb_emergency_stop();*/ + + prm_set_mod_reg_bits(OMAP_RST_GS, prcm_offs, RM_RSTCTRL); + } +--- kernel-power-2.6.28.orig/drivers/i2c/chips/twl4030-poweroff.c ++++ kernel-power-2.6.28/drivers/i2c/chips/twl4030-poweroff.c +@@ -39,6 +39,7 @@ + { + twl4030_usb_suspended = suspended; + } ++EXPORT_SYMBOL(twl4030_upd_usb_suspended); + + static void twl4030_poweroff(void) + { diff --git a/kernel-power-2.6.28/debian/patches/wl1251-monitor-mode.diff b/kernel-power-2.6.28/debian/patches/wl1251-monitor-mode.diff index 183e2f8..2673445 100644 --- a/kernel-power-2.6.28/debian/patches/wl1251-monitor-mode.diff +++ b/kernel-power-2.6.28/debian/patches/wl1251-monitor-mode.diff @@ -1,7 +1,5 @@ -Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.c -=================================================================== ---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_cmd.c 2010-05-14 23:59:06.832141497 +0200 -+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.c 2010-05-14 23:59:07.524273985 +0200 +--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_cmd.c ++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.c @@ -204,11 +204,11 @@ return 0; } @@ -61,10 +59,8 @@ Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.c ret = wl1251_cmd_send(wl, cmd_tx, cmd, sizeof(*cmd)); if (ret < 0) { wl1251_error("tx %s cmd for channel %d failed", -Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.h -=================================================================== ---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_cmd.h 2010-05-14 23:59:06.832141497 +0200 -+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.h 2010-05-14 23:59:07.524273985 +0200 +--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_cmd.h ++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.h @@ -35,7 +35,8 @@ int wl1251_cmd_configure(struct wl1251 *wl, u16 id, void *buf, size_t len); int wl1251_cmd_vbm(struct wl1251 *wl, u8 identity, @@ -75,19 +71,8 @@ Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.h int wl1251_cmd_join(struct wl1251 *wl, u8 bss_type, u8 channel, u16 beacon_interval, u8 dtim_interval); int wl1251_cmd_ps_mode(struct wl1251 *wl, u8 ps_mode); -Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_init.c -=================================================================== ---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_init.c 2010-05-14 23:59:07.063992150 +0200 -+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_init.c 2010-05-15 00:46:16.884045939 +0200 -@@ -35,7 +35,7 @@ - { - int ret; - -- ret = wl1251_acx_feature_cfg(wl); -+ ret = wl1251_acx_feature_cfg(wl, DF_SNIFF_MODE_ENABLE); - if (ret < 0) { - wl1251_warning("couldn't set feature config"); - return ret; +--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_init.c ++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_init.c @@ -399,8 +399,13 @@ if (ret < 0) goto out_free_data_path; @@ -104,10 +89,8 @@ Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_init.c if (ret < 0) goto out_free_data_path; -Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_main.c -=================================================================== ---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_main.c 2010-05-14 23:59:07.063992150 +0200 -+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_main.c 2010-05-15 03:33:55.871890108 +0200 +--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_main.c ++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_main.c @@ -667,7 +667,11 @@ if (ret < 0) return ret; @@ -121,40 +104,7 @@ Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_main.c if (ret < 0) return ret; -@@ -967,6 +971,12 @@ - goto out; - } - -+ ret = wl1251_acx_feature_cfg(wl, 0); -+ if (ret < 0) { -+ wl1251_warning("couldn't set feature config"); -+ goto out; -+ } -+ - wl->vif = conf->vif; - - switch (conf->type) { -@@ -998,10 +1008,19 @@ - struct ieee80211_if_init_conf *conf) - { - struct wl1251 *wl = hw->priv; -+ int ret = 0; - - mutex_lock(&wl->mutex); -+ - wl1251_debug(DEBUG_MAC80211, "mac80211 remove interface"); -+ - wl->vif = NULL; -+ -+ ret = wl1251_acx_feature_cfg(wl, DF_SNIFF_MODE_ENABLE); -+ if (ret < 0) { -+ wl1251_warning("couldn't set feature config"); -+ } -+ - mutex_unlock(&wl->mutex); - } - -@@ -1180,6 +1199,13 @@ +@@ -1180,6 +1184,13 @@ if (ret < 0) goto out; @@ -168,98 +118,3 @@ Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_main.c wl->channel = channel; if (conf->flags & IEEE80211_CONF_PS && !wl->psm_requested) { -Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_acx.c -=================================================================== ---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_acx.c 2010-05-15 00:00:22.995807778 +0200 -+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_acx.c 2010-05-15 00:14:02.111891358 +0200 -@@ -212,7 +212,7 @@ - return ret; - } - --int wl1251_acx_feature_cfg(struct wl1251 *wl) -+int wl1251_acx_feature_cfg(struct wl1251 *wl, u32 data_flow_options) - { - struct acx_feature_config *feature; - int ret; -@@ -226,7 +226,7 @@ - } - - /* DF_ENCRYPTION_DISABLE and DF_SNIFF_MODE_ENABLE are disabled */ -- feature->data_flow_options = 0; -+ feature->data_flow_options = data_flow_options; - feature->options = 0; - - ret = wl1251_cmd_configure(wl, ACX_FEATURE_CFG, -Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_acx.h -=================================================================== ---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_acx.h 2010-05-15 00:01:16.660049057 +0200 -+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_acx.h 2010-05-15 00:14:27.776191658 +0200 -@@ -1454,7 +1454,7 @@ - int wl1251_acx_sleep_auth(struct wl1251 *wl, u8 sleep_auth); - int wl1251_acx_fw_version(struct wl1251 *wl, char *buf, size_t len); - int wl1251_acx_tx_power(struct wl1251 *wl, int power); --int wl1251_acx_feature_cfg(struct wl1251 *wl); -+int wl1251_acx_feature_cfg(struct wl1251 *wl, u32 data_flow_options); - int wl1251_acx_mem_map(struct wl1251 *wl, - struct acx_header *mem_map, size_t len); - int wl1251_acx_data_path_params(struct wl1251 *wl, -Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_rx.c -=================================================================== ---- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_rx.c 2010-05-16 15:04:08.279402004 +0200 -+++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_rx.c 2010-05-16 18:56:57.075800531 +0200 -@@ -100,7 +100,54 @@ - status->flag |= RX_FLAG_FAILED_FCS_CRC; - - -- /* FIXME: set status->rate_idx */ -+ switch (desc->rate) { -+ /* skip 1 and 12 Mbps because they have same value 0x0a */ -+ case RATE_2MBPS: -+ status->rate_idx = 1; -+ break; -+ case RATE_5_5MBPS: -+ status->rate_idx = 2; -+ break; -+ case RATE_11MBPS: -+ status->rate_idx = 3; -+ break; -+ case RATE_6MBPS: -+ status->rate_idx = 4; -+ break; -+ case RATE_9MBPS: -+ status->rate_idx = 5; -+ break; -+ case RATE_18MBPS: -+ status->rate_idx = 7; -+ break; -+ case RATE_24MBPS: -+ status->rate_idx = 8; -+ break; -+ case RATE_36MBPS: -+ status->rate_idx = 9; -+ break; -+ case RATE_48MBPS: -+ status->rate_idx = 10; -+ break; -+ case RATE_54MBPS: -+ status->rate_idx = 11; -+ break; -+ } -+ -+ /* for 1 and 12 Mbps we have to check the modulation */ -+ if (desc->rate == RATE_1MBPS) { -+ if ((desc->mod_pre & OFDM_RATE_BIT) == 0) { -+ /* CCK -> RATE_1MBPS*/ -+ status->rate_idx = 0; -+ } else { -+ /* OFDM -> RATE_12MBPS */ -+ status->rate_idx = 6; -+ } -+ } -+ -+ if ((desc->mod_pre & SHORT_PREAMBLE_BIT) != 0) { -+ status->flag |= RX_FLAG_SHORTPRE; -+ } - } - - static void wl1251_rx_body(struct wl1251 *wl, diff --git a/kernel-power-2.6.28/debian/patches/wl1251-monitor-mode2.diff b/kernel-power-2.6.28/debian/patches/wl1251-monitor-mode2.diff new file mode 100644 index 0000000..183e2f8 --- /dev/null +++ b/kernel-power-2.6.28/debian/patches/wl1251-monitor-mode2.diff @@ -0,0 +1,265 @@ +Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.c +=================================================================== +--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_cmd.c 2010-05-14 23:59:06.832141497 +0200 ++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.c 2010-05-14 23:59:07.524273985 +0200 +@@ -204,11 +204,11 @@ + return 0; + } + +-int wl1251_cmd_data_path(struct wl1251 *wl, u8 channel, bool enable) ++int wl1251_cmd_data_path_rx(struct wl1251 *wl, u8 channel, bool enable) + { + struct cmd_enabledisable_path *cmd; + int ret; +- u16 cmd_rx, cmd_tx; ++ u16 cmd_rx; + + wl1251_debug(DEBUG_CMD, "cmd data path"); + +@@ -222,10 +222,8 @@ + + if (enable) { + cmd_rx = CMD_ENABLE_RX; +- cmd_tx = CMD_ENABLE_TX; + } else { + cmd_rx = CMD_DISABLE_RX; +- cmd_tx = CMD_DISABLE_TX; + } + + ret = wl1251_cmd_send(wl, cmd_rx, cmd, sizeof(*cmd)); +@@ -238,6 +236,33 @@ + wl1251_debug(DEBUG_BOOT, "rx %s cmd channel %d", + enable ? "start" : "stop", channel); + ++out: ++ kfree(cmd); ++ return ret; ++} ++ ++int wl1251_cmd_data_path_tx(struct wl1251 *wl, u8 channel, bool enable) ++{ ++ struct cmd_enabledisable_path *cmd; ++ int ret; ++ u16 cmd_tx; ++ ++ wl1251_debug(DEBUG_CMD, "cmd data path"); ++ ++ cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); ++ if (!cmd) { ++ ret = -ENOMEM; ++ goto out; ++ } ++ ++ cmd->channel = channel; ++ ++ if (enable) { ++ cmd_tx = CMD_ENABLE_TX; ++ } else { ++ cmd_tx = CMD_DISABLE_TX; ++ } ++ + ret = wl1251_cmd_send(wl, cmd_tx, cmd, sizeof(*cmd)); + if (ret < 0) { + wl1251_error("tx %s cmd for channel %d failed", +Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.h +=================================================================== +--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_cmd.h 2010-05-14 23:59:06.832141497 +0200 ++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.h 2010-05-14 23:59:07.524273985 +0200 +@@ -35,7 +35,8 @@ + int wl1251_cmd_configure(struct wl1251 *wl, u16 id, void *buf, size_t len); + int wl1251_cmd_vbm(struct wl1251 *wl, u8 identity, + void *bitmap, u16 bitmap_len, u8 bitmap_control); +-int wl1251_cmd_data_path(struct wl1251 *wl, u8 channel, bool enable); ++int wl1251_cmd_data_path_rx(struct wl1251 *wl, u8 channel, bool enable); ++int wl1251_cmd_data_path_tx(struct wl1251 *wl, u8 channel, bool enable); + int wl1251_cmd_join(struct wl1251 *wl, u8 bss_type, u8 channel, + u16 beacon_interval, u8 dtim_interval); + int wl1251_cmd_ps_mode(struct wl1251 *wl, u8 ps_mode); +Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_init.c +=================================================================== +--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_init.c 2010-05-14 23:59:07.063992150 +0200 ++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_init.c 2010-05-15 00:46:16.884045939 +0200 +@@ -35,7 +35,7 @@ + { + int ret; + +- ret = wl1251_acx_feature_cfg(wl); ++ ret = wl1251_acx_feature_cfg(wl, DF_SNIFF_MODE_ENABLE); + if (ret < 0) { + wl1251_warning("couldn't set feature config"); + return ret; +@@ -399,8 +399,13 @@ + if (ret < 0) + goto out_free_data_path; + +- /* Enable data path */ +- ret = wl1251_cmd_data_path(wl, wl->channel, 1); ++ /* Enable rx data path */ ++ ret = wl1251_cmd_data_path_rx(wl, wl->channel, 1); ++ if (ret < 0) ++ goto out_free_data_path; ++ ++ /* Enable tx data path */ ++ ret = wl1251_cmd_data_path_tx(wl, wl->channel, 1); + if (ret < 0) + goto out_free_data_path; + +Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_main.c +=================================================================== +--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_main.c 2010-05-14 23:59:07.063992150 +0200 ++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_main.c 2010-05-15 03:33:55.871890108 +0200 +@@ -667,7 +667,11 @@ + if (ret < 0) + return ret; + +- ret = wl1251_cmd_data_path(wl, wl->channel, 1); ++ ret = wl1251_cmd_data_path_rx(wl, wl->channel, 1); ++ if (ret < 0) ++ return ret; ++ ++ ret = wl1251_cmd_data_path_tx(wl, wl->channel, 1); + if (ret < 0) + return ret; + +@@ -967,6 +971,12 @@ + goto out; + } + ++ ret = wl1251_acx_feature_cfg(wl, 0); ++ if (ret < 0) { ++ wl1251_warning("couldn't set feature config"); ++ goto out; ++ } ++ + wl->vif = conf->vif; + + switch (conf->type) { +@@ -998,10 +1008,19 @@ + struct ieee80211_if_init_conf *conf) + { + struct wl1251 *wl = hw->priv; ++ int ret = 0; + + mutex_lock(&wl->mutex); ++ + wl1251_debug(DEBUG_MAC80211, "mac80211 remove interface"); ++ + wl->vif = NULL; ++ ++ ret = wl1251_acx_feature_cfg(wl, DF_SNIFF_MODE_ENABLE); ++ if (ret < 0) { ++ wl1251_warning("couldn't set feature config"); ++ } ++ + mutex_unlock(&wl->mutex); + } + +@@ -1180,6 +1199,13 @@ + if (ret < 0) + goto out; + ++ /* Monitor mode */ ++ if (wl->vif == NULL && wl->channel != channel) { ++ ret = wl1251_cmd_data_path_rx(wl, channel, 1); ++ if (ret < 0) ++ goto out_sleep; ++ } ++ + wl->channel = channel; + + if (conf->flags & IEEE80211_CONF_PS && !wl->psm_requested) { +Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_acx.c +=================================================================== +--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_acx.c 2010-05-15 00:00:22.995807778 +0200 ++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_acx.c 2010-05-15 00:14:02.111891358 +0200 +@@ -212,7 +212,7 @@ + return ret; + } + +-int wl1251_acx_feature_cfg(struct wl1251 *wl) ++int wl1251_acx_feature_cfg(struct wl1251 *wl, u32 data_flow_options) + { + struct acx_feature_config *feature; + int ret; +@@ -226,7 +226,7 @@ + } + + /* DF_ENCRYPTION_DISABLE and DF_SNIFF_MODE_ENABLE are disabled */ +- feature->data_flow_options = 0; ++ feature->data_flow_options = data_flow_options; + feature->options = 0; + + ret = wl1251_cmd_configure(wl, ACX_FEATURE_CFG, +Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_acx.h +=================================================================== +--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_acx.h 2010-05-15 00:01:16.660049057 +0200 ++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_acx.h 2010-05-15 00:14:27.776191658 +0200 +@@ -1454,7 +1454,7 @@ + int wl1251_acx_sleep_auth(struct wl1251 *wl, u8 sleep_auth); + int wl1251_acx_fw_version(struct wl1251 *wl, char *buf, size_t len); + int wl1251_acx_tx_power(struct wl1251 *wl, int power); +-int wl1251_acx_feature_cfg(struct wl1251 *wl); ++int wl1251_acx_feature_cfg(struct wl1251 *wl, u32 data_flow_options); + int wl1251_acx_mem_map(struct wl1251 *wl, + struct acx_header *mem_map, size_t len); + int wl1251_acx_data_path_params(struct wl1251 *wl, +Index: kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_rx.c +=================================================================== +--- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_rx.c 2010-05-16 15:04:08.279402004 +0200 ++++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_rx.c 2010-05-16 18:56:57.075800531 +0200 +@@ -100,7 +100,54 @@ + status->flag |= RX_FLAG_FAILED_FCS_CRC; + + +- /* FIXME: set status->rate_idx */ ++ switch (desc->rate) { ++ /* skip 1 and 12 Mbps because they have same value 0x0a */ ++ case RATE_2MBPS: ++ status->rate_idx = 1; ++ break; ++ case RATE_5_5MBPS: ++ status->rate_idx = 2; ++ break; ++ case RATE_11MBPS: ++ status->rate_idx = 3; ++ break; ++ case RATE_6MBPS: ++ status->rate_idx = 4; ++ break; ++ case RATE_9MBPS: ++ status->rate_idx = 5; ++ break; ++ case RATE_18MBPS: ++ status->rate_idx = 7; ++ break; ++ case RATE_24MBPS: ++ status->rate_idx = 8; ++ break; ++ case RATE_36MBPS: ++ status->rate_idx = 9; ++ break; ++ case RATE_48MBPS: ++ status->rate_idx = 10; ++ break; ++ case RATE_54MBPS: ++ status->rate_idx = 11; ++ break; ++ } ++ ++ /* for 1 and 12 Mbps we have to check the modulation */ ++ if (desc->rate == RATE_1MBPS) { ++ if ((desc->mod_pre & OFDM_RATE_BIT) == 0) { ++ /* CCK -> RATE_1MBPS*/ ++ status->rate_idx = 0; ++ } else { ++ /* OFDM -> RATE_12MBPS */ ++ status->rate_idx = 6; ++ } ++ } ++ ++ if ((desc->mod_pre & SHORT_PREAMBLE_BIT) != 0) { ++ status->flag |= RX_FLAG_SHORTPRE; ++ } + } + + static void wl1251_rx_body(struct wl1251 *wl, diff --git a/kernel-power-2.6.28/debian/rx51power_defconfig b/kernel-power-2.6.28/debian/rx51power_defconfig index 5b2e6dd..5fed9ee 100644 --- a/kernel-power-2.6.28/debian/rx51power_defconfig +++ b/kernel-power-2.6.28/debian/rx51power_defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.28.10power-omap1 -# Sun May 16 14:27:26 2010 +# Mon May 17 07:47:34 2010 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -403,8 +403,8 @@ CONFIG_IP_ADVANCED_ROUTER=y CONFIG_ASK_IP_FIB_HASH=y # CONFIG_IP_FIB_TRIE is not set CONFIG_IP_FIB_HASH=y -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_MULTIPATH=y +# CONFIG_IP_MULTIPLE_TABLES is not set +# CONFIG_IP_ROUTE_MULTIPATH is not set # CONFIG_IP_ROUTE_VERBOSE is not set CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y @@ -677,7 +677,6 @@ CONFIG_BT_HIDP=m CONFIG_BT_HCIH4P=m # CONFIG_BT_HCIVHCI is not set # CONFIG_AF_RXRPC is not set -CONFIG_FIB_RULES=y CONFIG_WIRELESS=y CONFIG_CFG80211=y CONFIG_NL80211=y @@ -1631,16 +1630,11 @@ CONFIG_USB_MON=y # USB Host Controller Drivers # # CONFIG_USB_C67X00_HCD is not set -CONFIG_USB_EHCI_HCD=m -CONFIG_OMAP_EHCI_PHY_MODE=y +# CONFIG_USB_EHCI_HCD is not set +# CONFIG_OMAP_EHCI_PHY_MODE is not set # CONFIG_OMAP_EHCI_TLL_MODE is not set -# CONFIG_USB_EHCI_ROOT_HUB_TT is not set -# CONFIG_USB_EHCI_TT_NEWSCHED is not set # CONFIG_USB_ISP116X_HCD is not set -CONFIG_USB_OHCI_HCD=m -# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set -# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set -CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_OHCI_HCD is not set # CONFIG_USB_SL811_HCD is not set # CONFIG_USB_R8A66597_HCD is not set # CONFIG_USB_HWA_HCD is not set @@ -1763,7 +1757,6 @@ CONFIG_USB_SERIAL_FTDI_SIO=m # CONFIG_USB_IDMOUSE is not set # CONFIG_USB_FTDI_ELAN is not set # CONFIG_USB_APPLEDISPLAY is not set -# CONFIG_USB_SISUSBVGA is not set # CONFIG_USB_LD is not set # CONFIG_USB_TRANCEVIBRATOR is not set # CONFIG_USB_IOWARRIOR is not set @@ -1823,7 +1816,7 @@ CONFIG_MMC_UNSAFE_RESUME=y # MMC/SD/SDIO Card Drivers # CONFIG_MMC_BLOCK=m -CONFIG_MMC_BLOCK_BOUNCE=y +# CONFIG_MMC_BLOCK_BOUNCE is not set # CONFIG_SDIO_UART is not set # CONFIG_MMC_TEST is not set -- 1.7.9.5