final updates for v28
authortanner <tanner@mach.kyb.local>
Sun, 16 May 2010 17:43:18 +0000 (19:43 +0200)
committertanner <tanner@mach.kyb.local>
Sun, 16 May 2010 17:43:18 +0000 (19:43 +0200)
kernel-power-2.6.28/debian/changelog
kernel-power-2.6.28/debian/patches/wl1251-monitor-mode.diff
kernel-power-2.6.28/debian/rules

index e2cd7b3..9034057 100644 (file)
@@ -2,10 +2,11 @@ kernel-power (2.6.28-maemo28) fremantle; urgency=low
 
   * enabled more QoS modules, IP multiple table+multipath,
     MMC block bouncing, OABI support
+  * updated wlan-monitor patch
   * kernel-power-modules: fix preinit MODULE_PATH to always load current kernel modules
   * kernel-power-deinstall: improved script, msg boxes, error checking
 
- -- Thomas Tanner <maemo@tannerlab.com>  Sun, 16 May 2010 13:46:47 +0200
+ -- Thomas Tanner <maemo@tannerlab.com>  Sun, 16 May 2010 18:46:47 +0200
 
 kernel-power (2.6.28-maemo27) fremantle; urgency=low
 
index 2673445..183e2f8 100644 (file)
@@ -1,5 +1,7 @@
---- 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
+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;
  }
        ret = wl1251_cmd_send(wl, cmd_tx, cmd, sizeof(*cmd));
        if (ret < 0) {
                wl1251_error("tx %s cmd for channel %d failed",
---- 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
+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,
  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);
---- 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
+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;
        if (ret < 0)
                goto out_free_data_path;
  
---- 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
+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;
        if (ret < 0)
                return ret;
  
-@@ -1180,6 +1184,13 @@
+@@ -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;
  
        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 81e822d..5b5f558 100644 (file)
@@ -42,8 +42,8 @@ endif
 
 configure-stamp:
        dh_testdir
+       #$(MAKE) mrproper KBUILD_OUTPUT=$(CURDIR)
        mkdir -p $(BUILDTMP)
-       $(MAKE) mrproper KBUILD_OUTPUT=$(CURDIR)
        $(MAKE) clean
        QUILT_PATCHES=debian/patches quilt push -a -q || test $$? = 2
        cp debian/$(DEFCONFIG) arch/arm/configs/