v29
authortanner <tanner@mach.kyb.local>
Mon, 17 May 2010 05:58:09 +0000 (07:58 +0200)
committertanner <tanner@mach.kyb.local>
Mon, 17 May 2010 05:58:09 +0000 (07:58 +0200)
kernel-power-2.6.28/debian/28.diff [new file with mode: 0644]
kernel-power-2.6.28/debian/changelog
kernel-power-2.6.28/debian/patches/series
kernel-power-2.6.28/debian/patches/usbhost2.diff [new file with mode: 0644]
kernel-power-2.6.28/debian/patches/wl1251-monitor-mode.diff
kernel-power-2.6.28/debian/patches/wl1251-monitor-mode2.diff [new file with mode: 0644]
kernel-power-2.6.28/debian/rx51power_defconfig

diff --git a/kernel-power-2.6.28/debian/28.diff b/kernel-power-2.6.28/debian/28.diff
new file mode 100644 (file)
index 0000000..d5a88f5
--- /dev/null
@@ -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
index 9034057..beab9de 100644 (file)
@@ -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 <maemo@tannerlab.com>  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,
index 9d7b438..0add089 100644 (file)
@@ -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 (file)
index 0000000..6a593ce
--- /dev/null
@@ -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)
+ {
index 183e2f8..2673445 100644 (file)
@@ -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 (file)
index 0000000..183e2f8
--- /dev/null
@@ -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,
index 5b2e6dd..5fed9ee 100644 (file)
@@ -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