nexmon – Rev 1

Subversion Repositories:
Rev:
diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_80211_tx.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_80211_tx.c
--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_80211_tx.c   2006-09-21 01:26:27.000000000 -0400
+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_80211_tx.c     2006-09-21 01:30:18.000000000 -0400
@@ -69,6 +69,9 @@
        iface = netdev_priv(dev);
        local = iface->local;
 
+       if (local->iw_mode == IW_MODE_MONITOR)
+               goto xmit;
+
        if (skb->len < ETH_HLEN) {
                printk(KERN_DEBUG "%s: hostap_data_start_xmit: short skb "
                       "(len=%d)\n", dev->name, skb->len);
@@ -234,6 +237,7 @@
                memcpy(skb_put(skb, ETH_ALEN), &hdr.addr4, ETH_ALEN);
        }
 
+xmit:
        iface->stats.tx_packets++;
        iface->stats.tx_bytes += skb->len;
 
@@ -404,8 +408,6 @@
        }
 
        if (skb->len < 24) {
-               printk(KERN_DEBUG "%s: hostap_master_start_xmit: short skb "
-                      "(len=%d)\n", dev->name, skb->len);
                ret = 0;
                iface->stats.tx_dropped++;
                goto fail;
Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_cs.c.orig
Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_cs.c.rej
diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_hw.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_hw.c
--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_hw.c 2006-09-21 01:26:27.000000000 -0400
+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_hw.c   2006-09-21 01:30:18.000000000 -0400
@@ -1005,6 +1005,35 @@
        return fid;
 }
 
+static int prism2_monitor_enable(struct net_device *dev)
+{
+       if (hostap_set_word(dev, HFA384X_RID_CNFPORTTYPE, 5)) {
+               printk(KERN_DEBUG "Port type setting for monitor mode "
+                       "failed\n");
+               return -EOPNOTSUPP;
+       }
+
+       if (hfa384x_cmd(dev, HFA384X_CMDCODE_TEST | (0x0a << 8),
+                            0, NULL, NULL)) {
+               printk(KERN_DEBUG "Could not enter testmode 0x0a\n");
+               return -EOPNOTSUPP;
+       }
+
+       if (hostap_set_word(dev, HFA384X_RID_CNFWEPFLAGS,
+                           HFA384X_WEPFLAGS_PRIVACYINVOKED |
+                           HFA384X_WEPFLAGS_HOSTENCRYPT |
+                           HFA384X_WEPFLAGS_HOSTDECRYPT)) {
+               printk(KERN_DEBUG "WEP flags setting failed\n");
+               return -EOPNOTSUPP;
+       }
+
+       if (hostap_set_word(dev, HFA384X_RID_PROMISCUOUSMODE, 1)) {
+               printk(KERN_DEBUG "Could not set promiscuous mode\n");
+               return -EOPNOTSUPP;
+       }
+
+       return 0;
+}
 
 static int prism2_reset_port(struct net_device *dev)
 {
@@ -1031,6 +1060,10 @@
                               "port\n", dev->name);
        }
 
+       if (local->iw_mode == IW_MODE_MONITOR)
+               /* force mode 0x0a after port 0 reset */
+               return prism2_monitor_enable(dev);
+
        /* It looks like at least some STA firmware versions reset
         * fragmentation threshold back to 2346 after enable command. Restore
         * the configured value, if it differs from this default. */
@@ -1466,6 +1499,10 @@
                return 1;
        }
 
+       if (local->iw_mode == IW_MODE_MONITOR)
+               /* force mode 0x0a after port 0 reset */
+               prism2_monitor_enable(dev);
+
        local->hw_ready = 1;
        local->hw_reset_tries = 0;
        local->hw_resetting = 0;
@@ -3156,6 +3193,7 @@
        local->func->hw_config = prism2_hw_config;
        local->func->hw_reset = prism2_hw_reset;
        local->func->hw_shutdown = prism2_hw_shutdown;
+       local->func->monitor_enable = prism2_monitor_enable;
        local->func->reset_port = prism2_reset_port;
        local->func->schedule_reset = prism2_schedule_reset;
 #ifdef PRISM2_DOWNLOAD_SUPPORT
Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_hw.c.orig
diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_ioctl.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_ioctl.c
--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_ioctl.c      2006-09-21 01:26:27.000000000 -0400
+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_ioctl.c        2006-09-21 01:30:18.000000000 -0400
@@ -1104,33 +1104,7 @@
 
        printk(KERN_DEBUG "Enabling monitor mode\n");
        hostap_monitor_set_type(local);
-
-       if (hostap_set_word(dev, HFA384X_RID_CNFPORTTYPE,
-                           HFA384X_PORTTYPE_PSEUDO_IBSS)) {
-               printk(KERN_DEBUG "Port type setting for monitor mode "
-                      "failed\n");
-               return -EOPNOTSUPP;
-       }
-
-       /* Host decrypt is needed to get the IV and ICV fields;
-        * however, monitor mode seems to remove WEP flag from frame
-        * control field */
-       if (hostap_set_word(dev, HFA384X_RID_CNFWEPFLAGS,
-                           HFA384X_WEPFLAGS_HOSTENCRYPT |
-                           HFA384X_WEPFLAGS_HOSTDECRYPT)) {
-               printk(KERN_DEBUG "WEP flags setting failed\n");
-               return -EOPNOTSUPP;
-       }
-
-       if (local->func->reset_port(dev) ||
-           local->func->cmd(dev, HFA384X_CMDCODE_TEST |
-                            (HFA384X_TEST_MONITOR << 8),
-                            0, NULL, NULL)) {
-               printk(KERN_DEBUG "Setting monitor mode failed\n");
-               return -EOPNOTSUPP;
-       }
-
-       return 0;
+       return local->func->reset_port(dev);
 }
 
 
@@ -1199,7 +1173,7 @@
        local->iw_mode = *mode;
 
        if (local->iw_mode == IW_MODE_MONITOR)
-               hostap_monitor_mode_enable(local);
+               return hostap_monitor_mode_enable(local);
        else if (local->iw_mode == IW_MODE_MASTER && !local->host_encrypt &&
                 !local->fw_encrypt_ok) {
                printk(KERN_DEBUG "%s: defaulting to host-based encryption as "
diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_main.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_main.c
--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_main.c       2006-09-21 01:26:27.000000000 -0400
+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_main.c 2006-09-21 01:30:18.000000000 -0400
@@ -331,7 +331,7 @@
        if (local->iw_mode == IW_MODE_REPEAT)
                return HFA384X_PORTTYPE_WDS;
        if (local->iw_mode == IW_MODE_MONITOR)
-               return HFA384X_PORTTYPE_PSEUDO_IBSS;
+               return 5; /*HFA384X_PORTTYPE_PSEUDO_IBSS;*/
        return HFA384X_PORTTYPE_HOSTAP;
 }
 
Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_main.c.orig
diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_pci.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_pci.c
--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_pci.c        2006-09-21 01:26:27.000000000 -0400
+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_pci.c  2006-09-21 01:30:18.000000000 -0400
@@ -48,6 +48,8 @@
        { 0x1260, 0x3873, PCI_ANY_ID, PCI_ANY_ID },
        /* Samsung MagicLAN SWL-2210P */
        { 0x167d, 0xa000, PCI_ANY_ID, PCI_ANY_ID },
+       /* NETGEAR MA311 */
+       { 0x1385, 0x3872, PCI_ANY_ID, PCI_ANY_ID },
        { 0 }
 };
 
Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_pci.c.orig
diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_plx.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_plx.c
--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_plx.c        2006-09-21 01:26:27.000000000 -0400
+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_plx.c  2006-09-21 01:30:18.000000000 -0400
@@ -101,6 +101,7 @@
        { 0xc250, 0x0002 } /* EMTAC A2424i */,
        { 0xd601, 0x0002 } /* Z-Com XI300 */,
        { 0xd601, 0x0005 } /* Zcomax XI-325H 200mW */,
+       { 0xd601, 0x0010 } /* Zcomax XI-325H 100mW */,
        { 0, 0}
 };
 
Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_plx.c.orig
diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_wlan.h linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_wlan.h
--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_wlan.h       2006-09-21 01:26:27.000000000 -0400
+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_wlan.h 2006-09-21 01:30:18.000000000 -0400
@@ -575,6 +575,7 @@
        int (*hw_config)(struct net_device *dev, int initial);
        void (*hw_reset)(struct net_device *dev);
        void (*hw_shutdown)(struct net_device *dev, int no_disable);
+       int (*monitor_enable)(struct net_device *dev);
        int (*reset_port)(struct net_device *dev);
        void (*schedule_reset)(local_info_t *local);
        int (*download)(local_info_t *local,