<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.linux.kernel.wireless.general">
    <title>gmane.linux.kernel.wireless.general</title>
    <link>http://blog.gmane.org/gmane.linux.kernel.wireless.general</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24844"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24838"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24828"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24823"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24820"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24815"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24800"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24797"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24785"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24777"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24776"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24772"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24760"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24754"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24747"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24745"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24738"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24733"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24732"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24724"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24844">
    <title>[PATCH v2 0/2] ath9k: few memory fixes</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24844</link>
    <description>This series addresses some memory issues present on ath9k
regarding allocation and not handling failed DMA maps.

  Luis
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA&lt; at &gt;public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Luis R. Rodriguez</dc:creator>
    <dc:date>2008-12-03T03:15:22</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24838">
    <title>[PATCH 0/2] ath9k: few memory fixes</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24838</link>
    <description>This series addresses some memory issues present on ath9k
regarding allocation and not handling failed DMA maps. These
two patches replace the patch titled:

[PATCH] ath9k: Use GFP_ATOMIC when allocating private area

But also adds the failed DMA checks.

I've merged the ath_tx_setup_buffer() failure case into the DMA checks.

  Luis
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA&lt; at &gt;public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Luis R. Rodriguez</dc:creator>
    <dc:date>2008-12-03T02:21:04</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24828">
    <title>[PATCH] wlan: skb_p80211_to_ether() - payload_length is unsigned, check before subtraction</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24828</link>
    <description>payload_length is unsigned, check before subtraction

Signed-off-by: Roel Kluin &lt;roel.kluin-Re5JQEeQqe8AvxtiuMwx3w&lt; at &gt;public.gmane.org&gt;
---
diff --git a/drivers/staging/wlan-ng/p80211conv.c b/drivers/staging/wlan-ng/p80211conv.c
index 68121b9..9dd8b77 100644
--- a/drivers/staging/wlan-ng/p80211conv.c
+++ b/drivers/staging/wlan-ng/p80211conv.c
&lt; at &gt;&lt; at &gt; -333,11 +333,11 &lt; at &gt;&lt; at &gt; int skb_p80211_to_ether( wlandevice_t *wlandev, UINT32 ethconv, struct sk_buff *
 memcpy(saddr, w_hdr-&gt;a3.a2, WLAN_ETHADDR_LEN);
 } else {
 payload_offset = WLAN_HDR_A4_LEN;
-payload_length -= ( WLAN_HDR_A4_LEN - WLAN_HDR_A3_LEN );
-if (payload_length &lt; 0 ) {
+if (payload_length &lt; WLAN_HDR_A4_LEN - WLAN_HDR_A3_LEN) {
 WLAN_LOG_ERROR("A4 frame too short!\n");
 return 1;
 }
+payload_length -= (WLAN_HDR_A4_LEN - WLAN_HDR_A3_LEN);
 memcpy(daddr, w_hdr-&gt;a4.a3, WLAN_ETHADDR_LEN);
 memcpy(saddr, w_hdr-&gt;a4.a4, WLAN_ETHADDR_LEN);
 }

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA&lt; at &gt;public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Roel Kluin</dc:creator>
    <dc:date>2008-12-02T23:06:39</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24823">
    <title>[PATCH] rt2x00: Add RXDONE_CRYPTO_IV/ICV flags</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24823</link>
    <description>Drivers should notify rt2x00lib when they provide
the IV/ICV data. This adds some flexibility to drivers
which can't provide all information.
* rt2500usb provides ICV inside the frame
* rt2800pci doesn't provide IV/ICV
* rt2800usb doesn't provide IV/ICV

Signed-off-by: Ivo van Doorn &lt;IvDoorn-Re5JQEeQqe8AvxtiuMwx3w&lt; at &gt;public.gmane.org&gt;
---
John, this is on top of the merge request from earlier today.
---
 drivers/net/wireless/rt2x00/rt2500usb.c   |    2 ++
 drivers/net/wireless/rt2x00/rt2x00dev.c   |    3 ++-
 drivers/net/wireless/rt2x00/rt2x00queue.h |    4 ++++
 drivers/net/wireless/rt2x00/rt61pci.c     |    3 +++
 drivers/net/wireless/rt2x00/rt73usb.c     |    3 +++
 5 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
index 5f65b7e..d8c48fd 100644
--- a/drivers/net/wireless/rt2x00/rt2500usb.c
+++ b/drivers/net/wireless/rt2x00/rt2500usb.c
&lt; at &gt;&lt; at &gt; -1330,6 +1330,8 &lt; at &gt;&lt; at &gt; static void rt2500usb_fill_rxdone(struct queue_entry *entry,
 if (rxdesc-&gt;cipher != CIPHER_NONE) {
 _rt2x00_desc_read(rxd, 2, &amp;rxdesc-&gt;iv[0]);
 _rt2x00_desc_read(rxd, 3, &amp;rxdesc-&gt;iv[1]);
+rxdesc-&gt;dev_flags |= RXDONE_CRYPTO_IV;
+
 /* ICV is located at the end of frame */
 
 /*
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 7fc1d76..6d92542 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
&lt; at &gt;&lt; at &gt; -636,7 +636,8 &lt; at &gt;&lt; at &gt; void rt2x00lib_rxdone(struct rt2x00_dev *rt2x00dev,
  * provided seperately (through hardware descriptor)
  * in which case we should reinsert the data into the frame.
  */
-if ((rxdesc.flags &amp; RX_FLAG_IV_STRIPPED)) {
+if ((rxdesc.dev_flags &amp; RXDONE_CRYPTO_IV) &amp;&amp;
+    (rxdesc.flags &amp; RX_FLAG_IV_STRIPPED)) {
 rt2x00crypto_rx_insert_iv(entry-&gt;skb, align,
   header_length, &amp;rxdesc);
 } else if (align) {
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.h b/drivers/net/wireless/rt2x00/rt2x00queue.h
index 7889f91..2829371 100644
--- a/drivers/net/wireless/rt2x00/rt2x00queue.h
+++ b/drivers/net/wireless/rt2x00/rt2x00queue.h
&lt; at &gt;&lt; at &gt; -146,11 +146,15 &lt; at &gt;&lt; at &gt; static inline struct skb_frame_desc* get_skb_frame_desc(struct sk_buff *skb)
  * &lt; at &gt;RXDONE_SIGNAL_PLCP: Signal field contains the plcp value.
  * &lt; at &gt;RXDONE_SIGNAL_BITRATE: Signal field contains the bitrate value.
  * &lt; at &gt;RXDONE_MY_BSS: Does this frame originate from device's BSS.
+ * &lt; at &gt;RXDONE_CRYPTO_IV: Driver provided IV/EIV data.
+ * &lt; at &gt;RXDONE_CRYPTO_ICV: Driver provided ICV data.
  */
 enum rxdone_entry_desc_flags {
 RXDONE_SIGNAL_PLCP = 1 &lt;&lt; 0,
 RXDONE_SIGNAL_BITRATE = 1 &lt;&lt; 1,
 RXDONE_MY_BSS = 1 &lt;&lt; 2,
+RXDONE_CRYPTO_IV = 1 &lt;&lt; 3,
+RXDONE_CRYPTO_ICV = 1 &lt;&lt; 4,
 };
 
 /**
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index ce0fde4..3b9015a 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
&lt; at &gt;&lt; at &gt; -1951,7 +1951,10 &lt; at &gt;&lt; at &gt; static void rt61pci_fill_rxdone(struct queue_entry *entry,
 if (rxdesc-&gt;cipher != CIPHER_NONE) {
 _rt2x00_desc_read(entry_priv-&gt;desc, 2, &amp;rxdesc-&gt;iv[0]);
 _rt2x00_desc_read(entry_priv-&gt;desc, 3, &amp;rxdesc-&gt;iv[1]);
+rxdesc-&gt;dev_flags |= RXDONE_CRYPTO_IV;
+
 _rt2x00_desc_read(entry_priv-&gt;desc, 4, &amp;rxdesc-&gt;icv);
+rxdesc-&gt;dev_flags |= RXDONE_CRYPTO_ICV;
 
 /*
  * Hardware has stripped IV/EIV data from 802.11 frame during
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index 79475a8..563be0b 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
&lt; at &gt;&lt; at &gt; -1620,7 +1620,10 &lt; at &gt;&lt; at &gt; static void rt73usb_fill_rxdone(struct queue_entry *entry,
 if (rxdesc-&gt;cipher != CIPHER_NONE) {
 _rt2x00_desc_read(rxd, 2, &amp;rxdesc-&gt;iv[0]);
 _rt2x00_desc_read(rxd, 3, &amp;rxdesc-&gt;iv[1]);
+rxdesc-&gt;dev_flags |= RXDONE_CRYPTO_IV;
+
 _rt2x00_desc_read(rxd, 4, &amp;rxdesc-&gt;icv);
+rxdesc-&gt;dev_flags |= RXDONE_CRYPTO_ICV;
 
 /*
  * Hardware has stripped IV/EIV data from 802.11 frame during
</description>
    <dc:creator>Ivo van Doorn</dc:creator>
    <dc:date>2008-12-02T21:50:33</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24820">
    <title>WARNING: at net/mac80211/mlme.c:2249</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24820</link>
    <description>Hi,

Just played around with 2.6.28-rc7 and this warning showed up right after
connecting to my AP. It's a MacBook Pro with an Atheros AR5008. Hope that means
something to you.

Cheers,

Ortwin

Dec  2 21:49:19 mithril wlan0: direct probe to AP 00:09:5b:69:af:da try 1
Dec  2 21:49:19 mithril wlan0 direct probe responded
Dec  2 21:49:19 mithril wlan0: authenticate with AP 00:09:5b:69:af:da
Dec  2 21:49:19 mithril wlan0: authenticate with AP 00:09:5b:69:af:da
Dec  2 21:49:19 mithril wlan0: authenticated
Dec  2 21:49:19 mithril wlan0: associate with AP 00:09:5b:69:af:da
Dec  2 21:49:19 mithril wlan0: RX AssocResp from 00:09:5b:69:af:da (capab=0x411
status=0 aid=1)
Dec  2 21:49:19 mithril wlan0: associated
Dec  2 21:49:19 mithril ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
Dec  2 20:49:20 mithril avahi-daemon[7430]: Registering new address record for
fe80::217:f2ff:feee:59ce on wlan0.*.
Dec  2 21:49:23 mithril ------------[ cut here ]------------
Dec  2 21:49:23 mithril WARNING: at net/mac80211/mlme.c:2249
ieee80211_sta_work+0xee7/0x1000()
Dec  2 21:49:23 mithril Modules linked in: rfcomm ip6t_LOG nf_conntrack_ipv6
ip6table_filter ip6_tables ipv6 snd_hda_intel ohci1394 uvcvideo compat_ioctl32
videodev v4l1_compat appletouch
Dec  2 21:49:23 mithril Pid: 954, comm: ath9k Not tainted 2.6.28-rc7 #4
Dec  2 21:49:23 mithril Call Trace:
Dec  2 21:49:23 mithril [&lt;c012d8a4&gt;] warn_on_slowpath+0x54/0x70
Dec  2 21:49:23 mithril [&lt;c038f5b0&gt;] ? dev_queue_xmit+0xc0/0x4f0
Dec  2 21:49:23 mithril [&lt;c0136d95&gt;] ? lock_timer_base+0x25/0x50
Dec  2 21:49:23 mithril [&lt;c0136ee2&gt;] ? __mod_timer+0xa2/0xc0
Dec  2 21:49:23 mithril [&lt;c042eac7&gt;] ? _spin_unlock_bh+0x17/0x20
Dec  2 21:49:23 mithril [&lt;c040a65a&gt;] ? ieee80211_rx_bss_get+0x8a/0xa0
Dec  2 21:49:23 mithril [&lt;c040a708&gt;] ? ieee80211_rx_bss_put+0x98/0xb0
Dec  2 21:49:23 mithril [&lt;c040c1c9&gt;] ? ieee80211_privacy_mismatch+0x89/0xb0
Dec  2 21:49:23 mithril [&lt;c0410127&gt;] ieee80211_sta_work+0xee7/0x1000
Dec  2 21:49:23 mithril [&lt;c0232009&gt;] ? __delay+0x9/0x10
Dec  2 21:49:23 mithril [&lt;c011fbf1&gt;] ? update_curr+0x91/0x110
Dec  2 21:49:23 mithril [&lt;c012105e&gt;] ? hrtick_update+0x2e/0x30
Dec  2 21:49:23 mithril [&lt;c012958c&gt;] ? dequeue_task_fair+0x3c/0x50
Dec  2 21:49:23 mithril [&lt;c011f60c&gt;] ? dequeue_task+0xdc/0x140
Dec  2 21:49:23 mithril [&lt;c0124a5d&gt;] ? finish_task_switch+0x2d/0x90
Dec  2 21:49:23 mithril [&lt;c042cbfb&gt;] ? schedule+0x3fb/0x9a0
Dec  2 21:49:23 mithril [&lt;c013d65e&gt;] run_workqueue+0x7e/0x120
Dec  2 21:49:23 mithril [&lt;c040f240&gt;] ? ieee80211_sta_work+0x0/0x1000
Dec  2 21:49:23 mithril [&lt;c013e079&gt;] worker_thread+0x99/0xf0
Dec  2 21:49:23 mithril [&lt;c0140e30&gt;] ? autoremove_wake_function+0x0/0x50
Dec  2 21:49:23 mithril [&lt;c013dfe0&gt;] ? worker_thread+0x0/0xf0
Dec  2 21:49:23 mithril [&lt;c0140b12&gt;] kthread+0x42/0x70
Dec  2 21:49:23 mithril [&lt;c0140ad0&gt;] ? kthread+0x0/0x70
Dec  2 21:49:23 mithril [&lt;c010401f&gt;] kernel_thread_helper+0x7/0x18
Dec  2 21:49:23 mithril ---[ end trace 815970fc36fc4a24 ]---
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA&lt; at &gt;public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Ortwin Glück</dc:creator>
    <dc:date>2008-12-02T20:59:31</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24815">
    <title>[PATCH 0/3] ath9k: several fixes ported to 2.6.27</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24815</link>
    <description>This fixes a few issues seen on MacBook Pros:

http://bugzilla.kernel.org/show_bug.cgi?id=11811

I've ported them to 2.6.27 to help with them being applied sooner.
I've tried to keep them as small as possible. I don't have the
ports for 2.6.28 though I think John will be sending them soon
through his pending-fixes branch.

These are already applied on wireless-testing.

  Luis
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA&lt; at &gt;public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Luis R. Rodriguez</dc:creator>
    <dc:date>2008-12-02T20:51:19</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24800">
    <title>[PATCH 0/11] iwlwifi driver updates</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24800</link>
    <description>This series contains a few cleanups and fixes. The fixes address the
following problems:
- failure of HW crypto in 3945 (patch 3)
- 3945 rate scaling (patch 7)
- significant delay when bringing interface down (patch 8)
- A band association in passive channels (patch 11)

The series also contains a new feature that enables support of older
firmware versions (patches 9 and 10).

[PATCH 01/11] iwlwifi: move host command check function into separate file
[PATCH 02/11] iwlwifi: fix printk size format error
[PATCH 03/11] iwl3945: Select correct sta ID from find_station()
[PATCH 04/11] iwlwifi: move disable/enable interrupts to iwl-core.c
[PATCH 05/11] iwlwifi: move channels sysfs to debugfs
[PATCH 06/11] iwl3945: add debugfs support
[PATCH 07/11] iwl3945: Fix iwl3945 rate scaling.
[PATCH 08/11] iwlwifi: fix DMA channel number in iwl_txq_ctx_stop
[PATCH 09/11] iwlwifi: store ucode version number
[PATCH 10/11] iwlwifi: rely on API version read from firmware
[PATCH 11/11] iwl3945 : Fix a-band association for passive channels


Thank you

Reinette
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA&lt; at &gt;public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Reinette Chatre</dc:creator>
    <dc:date>2008-12-02T20:13:56</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24797">
    <title>[RFC PATCH v4 0/5] mac80211 dynamic power save</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24797</link>
    <description>Here is v4 of my dynamic powersave patches. I have tested them only
with stlc45xx on Nokia N810. I'm also working with iwl3945 and iwlagn
patches based on these patches, but I haven't finished them yet.

These are RFC patches, not yet to be applied.

Patch 3 contains a new flag IEEE80211_HW_NO_DYNAMIC_PS. So all drivers
which firmware doesn't support dynamic power save should use this flag
to enable the feature in mac80211. This is a separate patch just for
easier review. If it's ok, I'll fold it to patch 2.

Patch 4 moves the dynamic_ps_timeout to ieee80211_conf struct. That
way the drivers which have dynamic power save support in firmware can
use the same timeout provided by user space. If this ok I'll fold this
to patch 2.

Patch 5 contains internal interface mac80211 to enable and disable
queues. The original idea and design is from Johannes Berg, I just did
the implementation based on those. All the bugs are mine, of course.

changes in v4:
o add check for station interface to siwpower()
o call hw_config() also for dynamic timeout changes
o add dynamic_ prefix to workqueues
o test for IEEE80211_HW_NO_DYNAMIC_PS in siwpower()
o wrote documentation for IEEE80211_HW_NO_DYNAMIC_PS
o wrote documentation for conf-&gt;dynamic_ps_timeout

changes in v3:
o add a hw flag to notify that driver doesn't support dynamic power save and
  which will enable mac80211 implementation
o delete dynamic_ps_timer and cancel ps_enable_work during
  association, hopefully it's race free now
o provide timeout value to the drivers, for example iwlwifi should use
  it (example patch under works)
o fix a bad bug in testing IEEE80211_STA_ASSOCIATED flag with &amp;&amp; operator

TODO:
o test with iwlwifi (only in-tree driver using IEEE80211_CONF_PS)

Power save related features which I'll implement later:
o disable power save when software scanning
o beacon period (wakeup period) to the drivers, can be set from user
  space but otherwise is bss's DTIM value

---

Kalle Valo (5):
      mac80211: track master queue status
      mac80211: move dynamic_ps_timeout to hw.conf
      mac80211: add IEEE80211_HW_NO_DYNAMIC_PS flag
      mac80211: implement dynamic power save
      mac80211: enable IEEE80211_CONF_PS only when associated


 include/net/mac80211.h     |   10 +++++++
 net/mac80211/ieee80211_i.h |   22 +++++++++++++++-
 net/mac80211/main.c        |    9 +++++++
 net/mac80211/mlme.c        |   60 +++++++++++++++++++++++++++++++++++++++++++-
 net/mac80211/tx.c          |   13 ++++++++++
 net/mac80211/util.c        |   60 ++++++++++++++++++++++++++++++++++++++++----
 net/mac80211/wext.c        |   46 ++++++++++++++++++++++++++++------
 7 files changed, 203 insertions(+), 17 deletions(-)

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA&lt; at &gt;public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Kalle Valo</dc:creator>
    <dc:date>2008-12-02T20:03:51</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24785">
    <title>Please pull 'upstream' branch of rt2x00</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24785</link>
    <description>Hi John,

Here is a new batch of updates for rt2x00.

The first patch (rt2x00: Optimize IV/EIV handling) was send individually
a few days ago, but it is probably easier if you pull it along with the rest
of the patches during this merge.

Small warning which might be important:
The patch "Implement HW encryption (rt2500usb)" adds support for HW crypto
but it does _not_ activate it. The module parameter "nohwcrypt" is set to 1
by default for now. This code has been sleeping in the rt2x00 experimental branch
for quite some time now, and doesn't work completely. I hope to debug this
further when I have time, but I am hoping that with the code in wireless-testing
other people will take a look at it to see what might be going wrong.

Ivo

---
The following changes since commit ca072018d6425a55b3f0e6d8bd3e6217ee509065:
  Winkler, Tomas (1):
        iwlwifi: TX update chicken bits

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/ivd/rt2x00.git/ upstream

Ivo van Doorn (5):
      rt2x00: Optimize IV/EIV handling
      rt2x00: Store retry limit values
      rt2x00: Remove duplicate code
      rt2x00: Implement HW encryption (rt2500usb)
      rt2x00: Release rt2x00 2.2.3

 drivers/net/wireless/rt2x00/Kconfig        |    1 +
 drivers/net/wireless/rt2x00/rt2500usb.c    |  132 ++++++++++++++++++++++++++-
 drivers/net/wireless/rt2x00/rt2500usb.h    |    3 +
 drivers/net/wireless/rt2x00/rt2x00.h       |    9 ++-
 drivers/net/wireless/rt2x00/rt2x00config.c |   39 +++++----
 drivers/net/wireless/rt2x00/rt2x00crypto.c |   56 ++++++------
 drivers/net/wireless/rt2x00/rt2x00lib.h    |    6 ++
 drivers/net/wireless/rt2x00/rt2x00mac.c    |    2 -
 drivers/net/wireless/rt2x00/rt2x00queue.c  |   17 ++--
 drivers/net/wireless/rt2x00/rt2x00queue.h  |   12 +--
 drivers/net/wireless/rt2x00/rt61pci.c      |    8 +-
 drivers/net/wireless/rt2x00/rt73usb.c      |    8 +-
 12 files changed, 211 insertions(+), 82 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA&lt; at &gt;public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Ivo van Doorn</dc:creator>
    <dc:date>2008-12-02T17:19:23</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24777">
    <title>[PATCH] ath9k: Choose correct ANI calibration period</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24777</link>
    <description>ANI can't be turned on/off dynamically yet, but the calculation
of the calibration period is wrong anyway. This patch fixes it.

Reported-by: Johannes Berg &lt;johannes-cdvu00un1VgdHxzADdlk8Q&lt; at &gt;public.gmane.org&gt;
Signed-off-by: Sujith &lt;Sujith.Manoharan-DlyHzToyqoxBDgjK7y7TUQ&lt; at &gt;public.gmane.org&gt;
---
 drivers/net/wireless/ath9k/main.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c
index c590e9d..8b67708 100644
--- a/drivers/net/wireless/ath9k/main.c
+++ b/drivers/net/wireless/ath9k/main.c
&lt; at &gt;&lt; at &gt; -421,8 +421,9 &lt; at &gt;&lt; at &gt; static void ath_ani_calibrate(unsigned long data)
 * The interval must be the shortest necessary to satisfy ANI,
 * short calibration and long calibration.
 */
</description>
    <dc:creator>Sujith</dc:creator>
    <dc:date>2008-12-02T13:07:54</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24776">
    <title>[PATCH] ath9k: Use GFP_ATOMIC when allocating private area</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24776</link>
    <description>Using GFP_KERNEL was wrong and produces a 'scheduling while atomic'
bug. Also, check for proper return values now, in case allocation
fails.

Signed-off-by: Sujith &lt;Sujith.Manoharan-DlyHzToyqoxBDgjK7y7TUQ&lt; at &gt;public.gmane.org&gt;
Signed-off-by: Senthil Balasubramanian &lt;senthilkumar-DlyHzToyqoxBDgjK7y7TUQ&lt; at &gt;public.gmane.org&gt;
---
 drivers/net/wireless/ath9k/xmit.c |   21 ++++++++++++++++-----
 1 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/ath9k/xmit.c b/drivers/net/wireless/ath9k/xmit.c
index fc52f61..021cc56 100644
--- a/drivers/net/wireless/ath9k/xmit.c
+++ b/drivers/net/wireless/ath9k/xmit.c
&lt; at &gt;&lt; at &gt; -1641,9 +1641,9 &lt; at &gt;&lt; at &gt; static void ath_txq_drain_pending_buffers(struct ath_softc *sc,
 }
 }
 
-static void ath_tx_setup_buffer(struct ath_softc *sc, struct ath_buf *bf,
-struct sk_buff *skb,
-struct ath_tx_control *txctl)
+static int ath_tx_setup_buffer(struct ath_softc *sc, struct ath_buf *bf,
+       struct sk_buff *skb,
+       struct ath_tx_control *txctl)
 {
 struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb-&gt;data;
&lt; at &gt;&lt; at &gt; -1651,7 +1651,10 &lt; at &gt;&lt; at &gt; static void ath_tx_setup_buffer(struct ath_softc *sc, struct ath_buf *bf,
 int hdrlen;
 __le16 fc;
 
-tx_info_priv = kzalloc(sizeof(*tx_info_priv), GFP_KERNEL);
+tx_info_priv = kzalloc(sizeof(*tx_info_priv), GFP_ATOMIC);
+if (!tx_info_priv)
+return -ENOMEM;
+
 tx_info-&gt;rate_driver_data[0] = tx_info_priv;
 hdrlen = ieee80211_get_hdrlen_from_skb(skb);
 fc = hdr-&gt;frame_control;
&lt; at &gt;&lt; at &gt; -1703,6 +1706,8 &lt; at &gt;&lt; at &gt; static void ath_tx_setup_buffer(struct ath_softc *sc, struct ath_buf *bf,
 bf-&gt;bf_dmacontext = pci_map_single(sc-&gt;pdev, skb-&gt;data,
    skb-&gt;len, PCI_DMA_TODEVICE);
 bf-&gt;bf_buf_addr = bf-&gt;bf_dmacontext;
+
+return 0;
 }
 
 /* FIXME: tx power */
&lt; at &gt;&lt; at &gt; -1777,6 +1782,7 &lt; at &gt;&lt; at &gt; static void ath_tx_start_dma(struct ath_softc *sc, struct ath_buf *bf,
 int ath_tx_start(struct ath_softc *sc, struct sk_buff *skb,
  struct ath_tx_control *txctl)
 {
+int ret = 0;
 struct ath_buf *bf;
 
 /* Check if a tx buffer is available */
&lt; at &gt;&lt; at &gt; -1787,7 +1793,12 &lt; at &gt;&lt; at &gt; int ath_tx_start(struct ath_softc *sc, struct sk_buff *skb,
 return -1;
 }
 
-ath_tx_setup_buffer(sc, bf, skb, txctl);
+ret = ath_tx_setup_buffer(sc, bf, skb, txctl);
+if (ret) {
+DPRINTF(sc, ATH_DBG_FATAL, "TX mem alloc failure\n");
+return ret;
+}
+
 ath_tx_start_dma(sc, bf, txctl);
 
 return 0;
</description>
    <dc:creator>Sujith</dc:creator>
    <dc:date>2008-12-02T13:06:15</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24772">
    <title>iwl3945 bug-report</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24772</link>
    <description>Hello,

I had just set up Fedora 10 (from scratch) on my laptop and I
experienced strange kernel panics when working from my university.
After I made some research, I realised that the defect most likely
originates from the iwl3945 driver packed with Fedora.

Have a look at my bugreport at the Fedora bugzilla and please see if
you can help me determining the exact source of the error. Please read
all of my comments as they contain vital information. I'm trying to
obfuscate my link as it is

http://bugzilla.redhat.com/show_bug.cgi?id=473507

Thank you very much for your time and efforts.


Regards,

Zoltan Balogh
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA&lt; at &gt;public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Zoltán Balogh</dc:creator>
    <dc:date>2008-12-02T12:38:50</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24760">
    <title>[PATCH 0/5] Support for Intel(r) WiMax/WiFi Link 5050 Series</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24760</link>
    <description>This series adds support for a member of the Intel(r)
 WiMax/WiFi Link 5050 Series.

[PATCH 1/5] iwlwifi: 5150 add support for 5150
[PATCH 2/5] iwlwifi: 5150 enable DC calibration
[PATCH 3/5] iwlwifi: 5150 compute ct kill threshold
[PATCH 4/5] iwlwifi: 5150 parametrize eeprom versions
[PATCH 5/5] iwlwifi: 5150 enable LO, TXIQ and BB calibrations


Thank you

Reinette
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA&lt; at &gt;public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Reinette Chatre</dc:creator>
    <dc:date>2008-12-02T00:32:17</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24754">
    <title>[ANN] CRDA v0.9.5 released -- minor build enhancements</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24754</link>
    <description>We have a shiny new CRDA release, some general build enhancements and fixes the
build for use with openssl. These all come from Diego.

http://wireless.kernel.org/download/crda/crda-0.9.5.tar.bz2

  Luis
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA&lt; at &gt;public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Luis R. Rodriguez</dc:creator>
    <dc:date>2008-12-01T22:50:16</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24747">
    <title>nl80211 not found</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24747</link>
    <description>Hello everyone,

I recently installed command "iw" in order to use mesh capability in my 
wireless card.
iw itself and its required library were installed successfully. But 
whenever I run the command "iw", this message appears "nl80211 not found."

My linux is ubuntu 8.10 Intrepid Ibex with kernel 2.6.27
My wireless card: Pro/wireless 2200BG Network connection with ipw2200 
driver.

Can you give me some suggestions?

Thank very much in advance.

Thierry
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA&lt; at &gt;public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Chanthearith HUON</dc:creator>
    <dc:date>2008-12-01T21:25:17</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24745">
    <title>[PATCH] ath9k: Replace ath9k_opmode with nl80211_iftype</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24745</link>
    <description>This patch kills ath9k's ath9k_opmode enum by replacing it with nl80211_iftype.

Signed-off-by: Colin McCabe &lt;colin-W/OLz77bvjtBDgjK7y7TUQ&lt; at &gt;public.gmane.org&gt;
Signed-off-by: Andrey Yurovsky &lt;andrey-W/OLz77bvjtBDgjK7y7TUQ&lt; at &gt;public.gmane.org&gt;
---
 drivers/net/wireless/ath9k/ani.c    |   12 ++++----
 drivers/net/wireless/ath9k/ath9k.h  |   10 +-----
 drivers/net/wireless/ath9k/beacon.c |   22 ++++++++--------
 drivers/net/wireless/ath9k/core.h   |    2 +-
 drivers/net/wireless/ath9k/hw.c     |   29 +++++++++++++--------
 drivers/net/wireless/ath9k/main.c   |   49 +++++++++++++++++++---------------
 drivers/net/wireless/ath9k/recv.c   |   16 +++++-----
 drivers/net/wireless/ath9k/regd.c   |    2 +-
 drivers/net/wireless/ath9k/xmit.c   |    3 +-
 9 files changed, 76 insertions(+), 69 deletions(-)

diff --git a/drivers/net/wireless/ath9k/ani.c b/drivers/net/wireless/ath9k/ani.c
index ada12e9..7ccf50c 100644
--- a/drivers/net/wireless/ath9k/ani.c
+++ b/drivers/net/wireless/ath9k/ani.c
&lt; at &gt;&lt; at &gt; -303,7 +303,7 &lt; at &gt;&lt; at &gt; static void ath9k_hw_ani_ofdm_err_trigger(struct ath_hal *ah)
 }
 }
 
-if (ah-&gt;ah_opmode == ATH9K_M_HOSTAP) {
+if (ah-&gt;ah_opmode == NL80211_IFTYPE_AP) {
 if (aniState-&gt;firstepLevel &lt; HAL_FIRST_STEP_MAX) {
 ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL,
      aniState-&gt;firstepLevel + 1);
&lt; at &gt;&lt; at &gt; -368,7 +368,7 &lt; at &gt;&lt; at &gt; static void ath9k_hw_ani_cck_err_trigger(struct ath_hal *ah)
 return;
 }
 }
-if (ah-&gt;ah_opmode == ATH9K_M_HOSTAP) {
+if (ah-&gt;ah_opmode == NL80211_IFTYPE_AP) {
 if (aniState-&gt;firstepLevel &lt; HAL_FIRST_STEP_MAX) {
 ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL,
      aniState-&gt;firstepLevel + 1);
&lt; at &gt;&lt; at &gt; -398,7 +398,7 &lt; at &gt;&lt; at &gt; static void ath9k_hw_ani_lower_immunity(struct ath_hal *ah)
 
 aniState = ahp-&gt;ah_curani;
 
-if (ah-&gt;ah_opmode == ATH9K_M_HOSTAP) {
+if (ah-&gt;ah_opmode == NL80211_IFTYPE_AP) {
 if (aniState-&gt;firstepLevel &gt; 0) {
 if (ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL,
  aniState-&gt;firstepLevel - 1))
&lt; at &gt;&lt; at &gt; -487,8 +487,8 &lt; at &gt;&lt; at &gt; void ath9k_ani_reset(struct ath_hal *ah)
 aniState = &amp;ahp-&gt;ah_ani[index];
 ahp-&gt;ah_curani = aniState;
 
-if (DO_ANI(ah) &amp;&amp; ah-&gt;ah_opmode != ATH9K_M_STA
-    &amp;&amp; ah-&gt;ah_opmode != ATH9K_M_IBSS) {
+if (DO_ANI(ah) &amp;&amp; ah-&gt;ah_opmode != NL80211_IFTYPE_STATION
+    &amp;&amp; ah-&gt;ah_opmode != NL80211_IFTYPE_ADHOC) {
 DPRINTF(ah-&gt;ah_sc, ATH_DBG_ANI,
 "%s: Reset ANI state opmode %u\n", __func__,
 ah-&gt;ah_opmode);
&lt; at &gt;&lt; at &gt; -505,7 +505,7 &lt; at &gt;&lt; at &gt; void ath9k_ani_reset(struct ath_hal *ah)
 ath9k_hw_setrxfilter(ah, ath9k_hw_getrxfilter(ah) |
      ATH9K_RX_FILTER_PHYERR);
 
-if (ah-&gt;ah_opmode == ATH9K_M_HOSTAP) {
+if (ah-&gt;ah_opmode == NL80211_IFTYPE_AP) {
 ahp-&gt;ah_curani-&gt;ofdmTrigHigh =
 ah-&gt;ah_config.ofdm_trig_high;
 ahp-&gt;ah_curani-&gt;ofdmTrigLow =
diff --git a/drivers/net/wireless/ath9k/ath9k.h b/drivers/net/wireless/ath9k/ath9k.h
index 5b9bc54..f98a100 100644
--- a/drivers/net/wireless/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath9k/ath9k.h
&lt; at &gt;&lt; at &gt; -647,13 +647,6 &lt; at &gt;&lt; at &gt; enum ath9k_ant_setting {
 ATH9K_ANT_FIXED_B
 };
 
-enum ath9k_opmode {
-ATH9K_M_STA = 1,
-ATH9K_M_IBSS = 0,
-ATH9K_M_HOSTAP = 6,
-ATH9K_M_MONITOR = 8
-};
-
 #define ATH9K_SLOT_TIME_6 6
 #define ATH9K_SLOT_TIME_9 9
 #define ATH9K_SLOT_TIME_20 20
&lt; at &gt;&lt; at &gt; -780,7 +773,8 &lt; at &gt;&lt; at &gt; struct ath_hal {
 
 void __iomem *ah_sh;
 struct ath_softc *ah_sc;
-enum ath9k_opmode ah_opmode;
+
+enum nl80211_iftype ah_opmode;
 struct ath9k_ops_config ah_config;
 struct ath9k_hw_capabilities ah_caps;
 
diff --git a/drivers/net/wireless/ath9k/beacon.c b/drivers/net/wireless/ath9k/beacon.c
index e80d9b9..3ff3b16 100644
--- a/drivers/net/wireless/ath9k/beacon.c
+++ b/drivers/net/wireless/ath9k/beacon.c
&lt; at &gt;&lt; at &gt; -27,7 +27,7 &lt; at &gt;&lt; at &gt; static int ath_beaconq_config(struct ath_softc *sc)
 struct ath9k_tx_queue_info qi;
 
 ath9k_hw_get_txq_props(ah, sc-&gt;sc_bhalq, &amp;qi);
-if (sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_HOSTAP) {
+if (sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_AP) {
 /* Always burst out beacon and CAB traffic. */
 qi.tqi_aifs = 1;
 qi.tqi_cwmin = 0;
&lt; at &gt;&lt; at &gt; -84,7 +84,7 &lt; at &gt;&lt; at &gt; static void ath_beacon_setup(struct ath_softc *sc,
 
 flags = ATH9K_TXDESC_NOACK;
 
-if (sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_IBSS &amp;&amp;
+if (sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_ADHOC &amp;&amp;
     (ah-&gt;ah_caps.hw_caps &amp; ATH9K_HW_CAP_VEOL)) {
 ds-&gt;ds_link = bf-&gt;bf_daddr; /* self-linked */
 flags |= ATH9K_TXDESC_VEOL;
&lt; at &gt;&lt; at &gt; -304,7 +304,7 &lt; at &gt;&lt; at &gt; int ath_beacon_alloc(struct ath_softc *sc, int if_id)
  struct ath_buf, list);
 list_del(&amp;avp-&gt;av_bcbuf-&gt;list);
 
-if (sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_HOSTAP ||
+if (sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_AP ||
     !(sc-&gt;sc_ah-&gt;ah_caps.hw_caps &amp; ATH9K_HW_CAP_VEOL)) {
 int slot;
 /*
&lt; at &gt;&lt; at &gt; -614,16 +614,16 &lt; at &gt;&lt; at &gt; void ath_beacon_config(struct ath_softc *sc, int if_id)
 struct ath_hal *ah = sc-&gt;sc_ah;
 struct ath_beacon_config conf;
 struct ath_vap *avp;
-enum ath9k_opmode av_opmode;
+enum nl80211_iftype opmode;
 u32 nexttbtt, intval;
 
 if (if_id != ATH_IF_ID_ANY) {
 vif = sc-&gt;sc_vaps[if_id];
 ASSERT(vif);
 avp = (void *)vif-&gt;drv_priv;
-av_opmode = avp-&gt;av_opmode;
+opmode = avp-&gt;av_opmode;
 } else {
-av_opmode = sc-&gt;sc_ah-&gt;ah_opmode;
+opmode = sc-&gt;sc_ah-&gt;ah_opmode;
 }
 
 memset(&amp;conf, 0, sizeof(struct ath_beacon_config));
&lt; at &gt;&lt; at &gt; -639,7 +639,7 &lt; at &gt;&lt; at &gt; void ath_beacon_config(struct ath_softc *sc, int if_id)
 nexttbtt = TSF_TO_TU(sc-&gt;bc_tstamp &gt;&gt; 32, sc-&gt;bc_tstamp);
 
 /* XXX conditionalize multi-bss support? */
-if (sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_HOSTAP) {
+if (sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_AP) {
 /*
  * For multi-bss ap support beacons are either staggered
  * evenly over N slots or burst together.  For the former
&lt; at &gt;&lt; at &gt; -662,7 +662,7 &lt; at &gt;&lt; at &gt; void ath_beacon_config(struct ath_softc *sc, int if_id)
 __func__, nexttbtt, intval, conf.beacon_interval);
 
 /* Check for ATH9K_M_HOSTAP and sc_nostabeacons for WDS client */
-if (sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_STA) {
+if (sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_STATION) {
 struct ath9k_beacon_state bs;
 u64 tsf;
 u32 tsftu;
&lt; at &gt;&lt; at &gt; -782,7 +782,7 &lt; at &gt;&lt; at &gt; void ath_beacon_config(struct ath_softc *sc, int if_id)
 ath9k_hw_set_interrupts(ah, 0);
 if (nexttbtt == intval)
 intval |= ATH9K_BEACON_RESET_TSF;
-if (sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_IBSS) {
+if (sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_ADHOC) {
 /*
  * Pull nexttbtt forward to reflect the current
  * TSF
&lt; at &gt;&lt; at &gt; -814,7 +814,7 &lt; at &gt;&lt; at &gt; void ath_beacon_config(struct ath_softc *sc, int if_id)
 if (!(ah-&gt;ah_caps.hw_caps &amp; ATH9K_HW_CAP_VEOL))
 sc-&gt;sc_imask |= ATH9K_INT_SWBA;
 ath_beaconq_config(sc);
-} else if (sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_HOSTAP) {
+} else if (sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_AP) {
 /*
  * In AP mode we enable the beacon timers and
  * SWBA interrupts to prepare beacon frames.
&lt; at &gt;&lt; at &gt; -830,7 +830,7 &lt; at &gt;&lt; at &gt; void ath_beacon_config(struct ath_softc *sc, int if_id)
  * When using a self-linked beacon descriptor in
  * ibss mode load it once here.
  */
-if (sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_IBSS &amp;&amp;
+if (sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_ADHOC &amp;&amp;
     (ah-&gt;ah_caps.hw_caps &amp; ATH9K_HW_CAP_VEOL))
 ath_beacon_start_adhoc(sc, 0);
 }
diff --git a/drivers/net/wireless/ath9k/core.h b/drivers/net/wireless/ath9k/core.h
index f0c5437..f4f3592 100644
--- a/drivers/net/wireless/ath9k/core.h
+++ b/drivers/net/wireless/ath9k/core.h
&lt; at &gt;&lt; at &gt; -503,7 +503,7 &lt; at &gt;&lt; at &gt; void ath_tx_aggr_resume(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid
 /* driver-specific vap state */
 struct ath_vap {
 int av_bslot;/* beacon slot index */
-enum ath9k_opmode av_opmode;/* VAP operational mode */
+enum nl80211_iftype av_opmode;/* VAP operational mode */
 struct ath_buf *av_bcbuf;/* beacon buffer */
 struct ath_tx_control av_btxctl;  /* txctl information for beacon */
 };
diff --git a/drivers/net/wireless/ath9k/hw.c b/drivers/net/wireless/ath9k/hw.c
index ae7b1d6..46ce2f8 100644
--- a/drivers/net/wireless/ath9k/hw.c
+++ b/drivers/net/wireless/ath9k/hw.c
&lt; at &gt;&lt; at &gt; -1046,7 +1046,8 &lt; at &gt;&lt; at &gt; static void ath9k_hw_init_chain_masks(struct ath_hal *ah)
   REG_READ(ah, AR_PHY_ANALOG_SWAP) | 0x00000001);
 }
 
-static void ath9k_hw_init_interrupt_masks(struct ath_hal *ah, enum ath9k_opmode opmode)
+static void ath9k_hw_init_interrupt_masks(struct ath_hal *ah,
+  enum nl80211_iftype opmode)
 {
 struct ath_hal_5416 *ahp = AH5416(ah);
 
&lt; at &gt;&lt; at &gt; -1063,7 +1064,7 &lt; at &gt;&lt; at &gt; static void ath9k_hw_init_interrupt_masks(struct ath_hal *ah, enum ath9k_opmode
 
 ahp-&gt;ah_maskReg |= AR_IMR_TXOK;
 
-if (opmode == ATH9K_M_HOSTAP)
+if (opmode == NL80211_IFTYPE_AP)
 ahp-&gt;ah_maskReg |= AR_IMR_MIB;
 
 REG_WRITE(ah, AR_IMR, ahp-&gt;ah_maskReg);
&lt; at &gt;&lt; at &gt; -1431,18 +1432,18 &lt; at &gt;&lt; at &gt; static void ath9k_hw_set_operating_mode(struct ath_hal *ah, int opmode)
 val = REG_READ(ah, AR_STA_ID1);
 val &amp;= ~(AR_STA_ID1_STA_AP | AR_STA_ID1_ADHOC);
 switch (opmode) {
-case ATH9K_M_HOSTAP:
+case NL80211_IFTYPE_AP:
 REG_WRITE(ah, AR_STA_ID1, val | AR_STA_ID1_STA_AP
   | AR_STA_ID1_KSRCH_MODE);
 REG_CLR_BIT(ah, AR_CFG, AR_CFG_AP_ADHOC_INDICATION);
 break;
-case ATH9K_M_IBSS:
+case NL80211_IFTYPE_ADHOC:
 REG_WRITE(ah, AR_STA_ID1, val | AR_STA_ID1_ADHOC
   | AR_STA_ID1_KSRCH_MODE);
 REG_SET_BIT(ah, AR_CFG, AR_CFG_AP_ADHOC_INDICATION);
 break;
-case ATH9K_M_STA:
-case ATH9K_M_MONITOR:
+case NL80211_IFTYPE_STATION:
+case NL80211_IFTYPE_MONITOR:
 REG_WRITE(ah, AR_STA_ID1, val | AR_STA_ID1_KSRCH_MODE);
 break;
 }
&lt; at &gt;&lt; at &gt; -3083,14 +3084,14 &lt; at &gt;&lt; at &gt; void ath9k_hw_beaconinit(struct ath_hal *ah, u32 next_beacon, u32 beacon_period)
 ahp-&gt;ah_beaconInterval = beacon_period;
 
 switch (ah-&gt;ah_opmode) {
-case ATH9K_M_STA:
-case ATH9K_M_MONITOR:
+case NL80211_IFTYPE_STATION:
+case NL80211_IFTYPE_MONITOR:
 REG_WRITE(ah, AR_NEXT_TBTT_TIMER, TU_TO_USEC(next_beacon));
 REG_WRITE(ah, AR_NEXT_DMA_BEACON_ALERT, 0xffff);
 REG_WRITE(ah, AR_NEXT_SWBA, 0x7ffff);
 flags |= AR_TBTT_TIMER_EN;
 break;
-case ATH9K_M_IBSS:
+case NL80211_IFTYPE_ADHOC:
 REG_SET_BIT(ah, AR_TXCFG,
     AR_TXCFG_ADHOC_BEACON_ATIM_TX_POLICY);
 REG_WRITE(ah, AR_NEXT_NDP_TIMER,
&lt; at &gt;&lt; at &gt; -3098,7 +3099,7 &lt; at &gt;&lt; at &gt; void ath9k_hw_beaconinit(struct ath_hal *ah, u32 next_beacon, u32 beacon_period)
      (ahp-&gt;ah_atimWindow ? ahp-&gt;
       ah_atimWindow : 1)));
 flags |= AR_NDP_TIMER_EN;
-case ATH9K_M_HOSTAP:
+case NL80211_IFTYPE_AP:
 REG_WRITE(ah, AR_NEXT_TBTT_TIMER, TU_TO_USEC(next_beacon));
 REG_WRITE(ah, AR_NEXT_DMA_BEACON_ALERT,
   TU_TO_USEC(next_beacon -
&lt; at &gt;&lt; at &gt; -3111,6 +3112,12 &lt; at &gt;&lt; at &gt; void ath9k_hw_beaconinit(struct ath_hal *ah, u32 next_beacon, u32 beacon_period)
 flags |=
 AR_TBTT_TIMER_EN | AR_DBA_TIMER_EN | AR_SWBA_TIMER_EN;
 break;
+default:
+DPRINTF(ah-&gt;ah_sc, ATH_DBG_BEACON,
+"%s: unsupported opmode: %d\n",
+__func__, ah-&gt;ah_opmode);
+return;
+break;
 }
 
 REG_WRITE(ah, AR_BEACON_PERIOD, TU_TO_USEC(beacon_period));
&lt; at &gt;&lt; at &gt; -3210,7 +3217,7 &lt; at &gt;&lt; at &gt; bool ath9k_hw_fill_cap_info(struct ath_hal *ah)
 
 capField = ath9k_hw_get_eeprom(ah, EEP_OP_CAP);
 
-if (ah-&gt;ah_opmode != ATH9K_M_HOSTAP &amp;&amp;
+if (ah-&gt;ah_opmode != NL80211_IFTYPE_AP &amp;&amp;
     ah-&gt;ah_subvendorid == AR_SUBVENDOR_ID_NEW_A) {
 if (ah-&gt;ah_currentRD == 0x64 || ah-&gt;ah_currentRD == 0x65)
 ah-&gt;ah_currentRD += 5;
diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c
index 6e103d5..f6b6577 100644
--- a/drivers/net/wireless/ath9k/main.c
+++ b/drivers/net/wireless/ath9k/main.c
&lt; at &gt;&lt; at &gt; -758,13 +758,17 &lt; at &gt;&lt; at &gt; static int ath_key_config(struct ath_softc *sc,
 
 /*
  *  Strategy:
- *   For _M_STA mc tx, we will not setup a key at all since we never
- *   tx mc.
- *   _M_STA mc rx, we will use the keyID.
- *   for _M_IBSS mc tx, we will use the keyID, and no macaddr.
- *   for _M_IBSS mc rx, we will alloc a slot and plumb the mac of the
- *   peer node. BUT we will plumb a cleartext key so that we can do
- *   perSta default key table lookup in software.
+ *   For STA mc tx, we will not setup a key at
+ *   all since we never tx mc.
+ *
+ *   For STA mc rx, we will use the keyID.
+ *
+ *   For ADHOC mc tx, we will use the keyID, and no macaddr.
+ *
+ *   For ADHOC mc rx, we will alloc a slot and plumb the mac of
+ *   the peer node.
+ *   BUT we will plumb a cleartext key so that we can do
+ *   per-Sta default key table lookup in software.
  */
 if (is_broadcast_ether_addr(addr)) {
 switch (opmode) {
&lt; at &gt;&lt; at &gt; -857,7 +861,7 &lt; at &gt;&lt; at &gt; static void ath9k_bss_assoc_info(struct ath_softc *sc,
 bss_conf-&gt;aid);
 
 /* New association, store aid */
-if (avp-&gt;av_opmode == ATH9K_M_STA) {
+if (avp-&gt;av_opmode == NL80211_IFTYPE_STATION) {
 sc-&gt;sc_curaid = bss_conf-&gt;aid;
 ath9k_hw_write_associd(sc-&gt;sc_ah, sc-&gt;sc_curbssid,
        sc-&gt;sc_curaid);
&lt; at &gt;&lt; at &gt; -1370,7 +1374,8 &lt; at &gt;&lt; at &gt; static int ath_init(u16 devid, struct ath_softc *sc)
 goto bad;
 
 /* default to MONITOR mode */
-sc-&gt;sc_ah-&gt;ah_opmode = ATH9K_M_MONITOR;
+sc-&gt;sc_ah-&gt;ah_opmode = NL80211_IFTYPE_MONITOR;
+
 
 /* Setup rate tables */
 
&lt; at &gt;&lt; at &gt; -1943,8 +1948,8 &lt; at &gt;&lt; at &gt; static int ath9k_start(struct ieee80211_hw *hw)
  * Note we only do this (at the moment) for station mode.
  */
 if (ath9k_hw_phycounters(sc-&gt;sc_ah) &amp;&amp;
-    ((sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_STA) ||
-     (sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_IBSS)))
+    ((sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_STATION) ||
+     (sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_ADHOC)))
 sc-&gt;sc_imask |= ATH9K_INT_MIB;
 /*
  * Some hardware processes the TIM IE and fires an
&lt; at &gt;&lt; at &gt; -1953,7 +1958,7 &lt; at &gt;&lt; at &gt; static int ath9k_start(struct ieee80211_hw *hw)
  * enable the TIM interrupt when operating as station.
  */
 if ((sc-&gt;sc_ah-&gt;ah_caps.hw_caps &amp; ATH9K_HW_CAP_ENHANCEDPM) &amp;&amp;
-    (sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_STA) &amp;&amp;
+    (sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_STATION) &amp;&amp;
     !sc-&gt;sc_config.swBeaconProcess)
 sc-&gt;sc_imask |= ATH9K_INT_TIM;
 
&lt; at &gt;&lt; at &gt; -2071,7 +2076,7 &lt; at &gt;&lt; at &gt; static int ath9k_add_interface(struct ieee80211_hw *hw,
 {
 struct ath_softc *sc = hw-&gt;priv;
 struct ath_vap *avp = (void *)conf-&gt;vif-&gt;drv_priv;
-int ic_opmode = 0;
+enum nl80211_iftype ic_opmode = NL80211_IFTYPE_UNSPECIFIED;
 
 /* Support only vap for now */
 
&lt; at &gt;&lt; at &gt; -2080,13 +2085,13 &lt; at &gt;&lt; at &gt; static int ath9k_add_interface(struct ieee80211_hw *hw,
 
 switch (conf-&gt;type) {
 case NL80211_IFTYPE_STATION:
-ic_opmode = ATH9K_M_STA;
+ic_opmode = NL80211_IFTYPE_STATION;
 break;
 case NL80211_IFTYPE_ADHOC:
-ic_opmode = ATH9K_M_IBSS;
+ic_opmode = NL80211_IFTYPE_ADHOC;
 break;
 case NL80211_IFTYPE_AP:
-ic_opmode = ATH9K_M_HOSTAP;
+ic_opmode = NL80211_IFTYPE_AP;
 break;
 default:
 DPRINTF(sc, ATH_DBG_FATAL,
&lt; at &gt;&lt; at &gt; -2103,7 +2108,7 &lt; at &gt;&lt; at &gt; static int ath9k_add_interface(struct ieee80211_hw *hw,
 avp-&gt;av_opmode = ic_opmode;
 avp-&gt;av_bslot = -1;
 
-if (ic_opmode == ATH9K_M_HOSTAP)
+if (ic_opmode == NL80211_IFTYPE_AP)
 ath9k_hw_set_tsfadjust(sc-&gt;sc_ah, 1);
 
 sc-&gt;sc_vaps[0] = conf-&gt;vif;
&lt; at &gt;&lt; at &gt; -2137,8 +2142,8 &lt; at &gt;&lt; at &gt; static void ath9k_remove_interface(struct ieee80211_hw *hw,
 del_timer_sync(&amp;sc-&gt;sc_ani.timer);
 
 /* Reclaim beacon resources */
-if (sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_HOSTAP ||
-    sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_IBSS) {
+if (sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_AP ||
+    sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_ADHOC) {
 ath9k_hw_stoptxdma(sc-&gt;sc_ah, sc-&gt;sc_bhalq);
 ath_beacon_return(sc, avp);
 }
&lt; at &gt;&lt; at &gt; -2200,8 +2205,8 &lt; at &gt;&lt; at &gt; static int ath9k_config_interface(struct ieee80211_hw *hw,
 /* TODO: Need to decide which hw opmode to use for multi-interface
  * cases */
 if (vif-&gt;type == NL80211_IFTYPE_AP &amp;&amp;
-    ah-&gt;ah_opmode != ATH9K_M_HOSTAP) {
-ah-&gt;ah_opmode = ATH9K_M_HOSTAP;
+    ah-&gt;ah_opmode != NL80211_IFTYPE_AP) {
+ah-&gt;ah_opmode = NL80211_IFTYPE_STATION;
 ath9k_hw_setopmode(ah);
 ath9k_hw_write_associd(ah, sc-&gt;sc_myaddr, 0);
 /* Request full reset to get hw opmode changed properly */
&lt; at &gt;&lt; at &gt; -2257,7 +2262,7 &lt; at &gt;&lt; at &gt; static int ath9k_config_interface(struct ieee80211_hw *hw,
 }
 
 /* Check for WLAN_CAPABILITY_PRIVACY ? */
-if ((avp-&gt;av_opmode != ATH9K_M_STA)) {
+if ((avp-&gt;av_opmode != NL80211_IFTYPE_STATION)) {
 for (i = 0; i &lt; IEEE80211_WEP_NKID; i++)
 if (ath9k_hw_keyisvalid(sc-&gt;sc_ah, (u16)i))
 ath9k_hw_keysetmac(sc-&gt;sc_ah,
diff --git a/drivers/net/wireless/ath9k/recv.c b/drivers/net/wireless/ath9k/recv.c
index ba6194a..5eed0f6 100644
--- a/drivers/net/wireless/ath9k/recv.c
+++ b/drivers/net/wireless/ath9k/recv.c
&lt; at &gt;&lt; at &gt; -165,7 +165,7 &lt; at &gt;&lt; at &gt; static int ath_rx_prepare(struct sk_buff *skb, struct ath_desc *ds,
  * discard the frame. Enable this if you want to see
  * error frames in Monitor mode.
  */
-if (sc-&gt;sc_ah-&gt;ah_opmode != ATH9K_M_MONITOR)
+if (sc-&gt;sc_ah-&gt;ah_opmode != NL80211_IFTYPE_MONITOR)
 goto rx_next;
 } else if (ds-&gt;ds_rxstat.rs_status != 0) {
 if (ds-&gt;ds_rxstat.rs_status &amp; ATH9K_RXERR_CRC)
&lt; at &gt;&lt; at &gt; -191,7 +191,7 &lt; at &gt;&lt; at &gt; static int ath_rx_prepare(struct sk_buff *skb, struct ath_desc *ds,
  * decryption and MIC failures. For monitor mode,
  * we also ignore the CRC error.
  */
-if (sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_MONITOR) {
+if (sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_MONITOR) {
 if (ds-&gt;ds_rxstat.rs_status &amp;
     ~(ATH9K_RXERR_DECRYPT | ATH9K_RXERR_MIC |
       ATH9K_RXERR_CRC))
&lt; at &gt;&lt; at &gt; -366,25 +366,25 &lt; at &gt;&lt; at &gt; u32 ath_calcrxfilter(struct ath_softc *sc)
 | ATH9K_RX_FILTER_MCAST;
 
 /* If not a STA, enable processing of Probe Requests */
-if (sc-&gt;sc_ah-&gt;ah_opmode != ATH9K_M_STA)
+if (sc-&gt;sc_ah-&gt;ah_opmode != NL80211_IFTYPE_STATION)
 rfilt |= ATH9K_RX_FILTER_PROBEREQ;
 
 /* Can't set HOSTAP into promiscous mode */
-if (((sc-&gt;sc_ah-&gt;ah_opmode != ATH9K_M_HOSTAP) &amp;&amp;
+if (((sc-&gt;sc_ah-&gt;ah_opmode != NL80211_IFTYPE_AP) &amp;&amp;
      (sc-&gt;rx_filter &amp; FIF_PROMISC_IN_BSS)) ||
-    (sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_MONITOR)) {
+    (sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_MONITOR)) {
 rfilt |= ATH9K_RX_FILTER_PROM;
 /* ??? To prevent from sending ACK */
 rfilt &amp;= ~ATH9K_RX_FILTER_UCAST;
 }
 
-if (sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_STA ||
-    sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_IBSS)
+if (sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_STATION ||
+    sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_ADHOC)
 rfilt |= ATH9K_RX_FILTER_BEACON;
 
 /* If in HOSTAP mode, want to enable reception of PSPOLL frames
    &amp; beacon frames */
-if (sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_HOSTAP)
+if (sc-&gt;sc_ah-&gt;ah_opmode == NL80211_IFTYPE_AP)
 rfilt |= (ATH9K_RX_FILTER_BEACON | ATH9K_RX_FILTER_PSPOLL);
 
 return rfilt;
diff --git a/drivers/net/wireless/ath9k/regd.c b/drivers/net/wireless/ath9k/regd.c
index 62e2888..13fdc22 100644
--- a/drivers/net/wireless/ath9k/regd.c
+++ b/drivers/net/wireless/ath9k/regd.c
&lt; at &gt;&lt; at &gt; -463,7 +463,7 &lt; at &gt;&lt; at &gt; ath9k_regd_add_channel(struct ath_hal *ah,
 return false;
 }
 
-if ((rd-&gt;flags &amp; NO_HOSTAP) &amp;&amp; (ah-&gt;ah_opmode == ATH9K_M_HOSTAP)) {
+if ((rd-&gt;flags &amp; NO_HOSTAP) &amp;&amp; (ah-&gt;ah_opmode == NL80211_IFTYPE_AP)) {
 DPRINTF(ah-&gt;ah_sc, ATH_DBG_REGULATORY,
 "Skipping HOSTAP channel\n");
 return false;
diff --git a/drivers/net/wireless/ath9k/xmit.c b/drivers/net/wireless/ath9k/xmit.c
index 413fbdd..2cd288c 100644
--- a/drivers/net/wireless/ath9k/xmit.c
+++ b/drivers/net/wireless/ath9k/xmit.c
&lt; at &gt;&lt; at &gt; -763,7 +763,8 &lt; at &gt;&lt; at &gt; static void ath_tx_complete_aggr_rifs(struct ath_softc *sc,
  * when perform internal reset in this routine.
  * Only enable reset in STA mode for now.
  */
-if (sc-&gt;sc_ah-&gt;ah_opmode == ATH9K_M_STA)
+if (sc-&gt;sc_ah-&gt;ah_opmode ==
+    NL80211_IFTYPE_STATION)
 needreset = 1;
 }
 } else {
</description>
    <dc:creator>Colin McCabe</dc:creator>
    <dc:date>2008-12-01T21:38:55</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24738">
    <title>[PATCH] mac80211: deauth when interface is marked down</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24738</link>
    <description>It seems like proper etiquette to let other stations know when we are
going down in either STA or IBSS mode.  This also notifies userland, so
wpa_supplicant doesn't get confused.

Signed-off-by: John W. Linville &lt;linville-2XuSBdqkA4R54TAoqtyWWQ&lt; at &gt;public.gmane.org&gt;
---
 net/mac80211/iface.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index 4608212..b557250 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
&lt; at &gt;&lt; at &gt; -435,6 +435,9 &lt; at &gt;&lt; at &gt; static int ieee80211_stop(struct net_device *dev)
 break;
 case NL80211_IFTYPE_STATION:
 case NL80211_IFTYPE_ADHOC:
+/* Announce that we are leaving the network. */
+ieee80211_sta_deauthenticate(dev, WLAN_REASON_DEAUTH_LEAVING);
+
 sdata-&gt;u.sta.state = IEEE80211_STA_MLME_DISABLED;
 memset(sdata-&gt;u.sta.bssid, 0, ETH_ALEN);
 del_timer_sync(&amp;sdata-&gt;u.sta.timer);
</description>
    <dc:creator>John W. Linville</dc:creator>
    <dc:date>2008-12-01T20:02:04</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24733">
    <title>[PATCH] iwlwifi: disable AP mode</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24733</link>
    <description>iwlwifi does not support AP mode in any way. For one, it doesn't even
buffer multicast/broadcast frames properly. We didn't allow zd1211rw AP
mode to be enabled without this, so iwlwifi shouldn't be allowed to
advertise AP mode either.

It also doesn't work at all, it doesn't even answer to probe requests,
I'm guessing the packet injection code was disabled again.

Signed-off-by: Johannes Berg &lt;johannes-cdvu00un1VgdHxzADdlk8Q&lt; at &gt;public.gmane.org&gt;
---
FYI, I've also tested AP mode on iwl5000 and it most definitely does not
work properly:

[  471.524478] iwlagn: ERROR: APs don't scan

this is a long-standing bug, of course APs scan to know their
surroundings, not sure why this is there, it's also very pointless since
I can remove it by enabling software scan...

[  487.507346] iwlagn: Microcode SW error detected.  Restarting 0x2000000.

apparently even the microcode doesn't like AP mode :) Note that I've
done nothing out of the ordinary, just started hostapd.

Once somebody cares to fix the code these two lines can be put back
easily, I haven't ripped out the actual support code. But when you do
please test with PS clients and multicast traffic.

 drivers/net/wireless/iwlwifi/iwl-core.c     |    1 -
 drivers/net/wireless/iwlwifi/iwl3945-base.c |    1 -
 2 files changed, 2 deletions(-)

--- everything.orig/drivers/net/wireless/iwlwifi/iwl-core.c2008-12-01 18:34:29.000000000 +0100
+++ everything/drivers/net/wireless/iwlwifi/iwl-core.c2008-12-01 18:34:31.000000000 +0100
&lt; at &gt;&lt; at &gt; -808,7 +808,6 &lt; at &gt;&lt; at &gt; int iwl_setup_mac(struct iwl_priv *priv)
     IEEE80211_HW_NOISE_DBM |
     IEEE80211_HW_AMPDU_AGGREGATION;
 hw-&gt;wiphy-&gt;interface_modes =
-BIT(NL80211_IFTYPE_AP) |
 BIT(NL80211_IFTYPE_STATION) |
 BIT(NL80211_IFTYPE_ADHOC);
 
--- everything.orig/drivers/net/wireless/iwlwifi/iwl3945-base.c2008-12-01 18:34:06.000000000 +0100
+++ everything/drivers/net/wireless/iwlwifi/iwl3945-base.c2008-12-01 18:34:22.000000000 +0100
&lt; at &gt;&lt; at &gt; -7861,7 +7861,6 &lt; at &gt;&lt; at &gt; static int iwl3945_pci_probe(struct pci_
     IEEE80211_HW_NOISE_DBM;
 
 hw-&gt;wiphy-&gt;interface_modes =
-BIT(NL80211_IFTYPE_AP) |
 BIT(NL80211_IFTYPE_STATION) |
 BIT(NL80211_IFTYPE_ADHOC);
 


--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA&lt; at &gt;public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Johannes Berg</dc:creator>
    <dc:date>2008-12-01T17:50:27</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24732">
    <title>[PATCH] cfg80211: "fix" 11d oops</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24732</link>
    <description>This "fixes" the 11d oops I was seeing. This needs some more work but I
cannot work on it now.

Signed-off-by: Johannes Berg &lt;johannes-cdvu00un1VgdHxzADdlk8Q&lt; at &gt;public.gmane.org&gt;
---
 net/wireless/reg.c |    3 +++
 1 file changed, 3 insertions(+)

--- everything.orig/net/wireless/reg.c2008-12-01 18:10:15.000000000 +0100
+++ everything/net/wireless/reg.c2008-12-01 18:10:24.000000000 +0100
&lt; at &gt;&lt; at &gt; -989,6 +989,9 &lt; at &gt;&lt; at &gt; void regulatory_hint_11d(struct wiphy *w
 u32 checksum = 0;
 enum environment_cap env = ENVIRON_ANY;
 
+if (!last_request)
+return;
+
 mutex_lock(&amp;cfg80211_drv_mutex);
 
 /* IE len must be evenly divisible by 2 */


--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA&lt; at &gt;public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Johannes Berg</dc:creator>
    <dc:date>2008-12-01T17:13:05</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24724">
    <title>Note to distributions: don't use ath0 for ath5k/ath9k</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24724</link>
    <description>Small silly note: please try to drop the ath%d name from udev for
atheros devices. This was a MadWifism.

I think this is static udev rules...

  Luis
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA&lt; at &gt;public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Luis R. Rodriguez</dc:creator>
    <dc:date>2008-12-01T17:50:11</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel.wireless.general/24712">
    <title>[PATCH] iwl3945: remove obsolete irq handling</title>
    <link>http://comments.gmane.org/gmane.linux.kernel.wireless.general/24712</link>
    <description>3945 hardware does not emit the interrupts CSR_INT_BIT_RF_KILL (rfkill
toggled) and CSR_INT_BIT_CT_KILL (adapter too hot). Hence this part of code
can be removed since iwl3945_irq_tasklet does not handle 4965 hw at all.

Signed-off-by: Helmut Schaa &lt;helmut.schaa-gM/Ye1E23mwN+BqQ9rBEUg&lt; at &gt;public.gmane.org&gt;
---

diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 490bc4a..b32b507 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
&lt; at &gt;&lt; at &gt; -4321,35 +4321,6 &lt; at &gt;&lt; at &gt; static void iwl3945_irq_tasklet(struct iwl3945_priv *priv)
 /* Safely ignore these bits for debug checks below */
 inta &amp;= ~(CSR_INT_BIT_SCD | CSR_INT_BIT_ALIVE);
 
-/* HW RF KILL switch toggled (4965 only) */
-if (inta &amp; CSR_INT_BIT_RF_KILL) {
-int hw_rf_kill = 0;
-if (!(iwl3945_read32(priv, CSR_GP_CNTRL) &amp;
-CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW))
-hw_rf_kill = 1;
-
-IWL_DEBUG(IWL_DL_INFO | IWL_DL_RF_KILL | IWL_DL_ISR,
-"RF_KILL bit toggled to %s.\n",
-hw_rf_kill ? "disable radio" : "enable radio");
-
-/* Queue restart only if RF_KILL switch was set to "kill"
- *   when we loaded driver, and is now set to "enable".
- * After we're Alive, RF_KILL gets handled by
- *   iwl3945_rx_card_state_notif() */
-if (!hw_rf_kill &amp;&amp; !test_bit(STATUS_ALIVE, &amp;priv-&gt;status)) {
-clear_bit(STATUS_RF_KILL_HW, &amp;priv-&gt;status);
-queue_work(priv-&gt;workqueue, &amp;priv-&gt;restart);
-}
-
-handled |= CSR_INT_BIT_RF_KILL;
-}
-
-/* Chip got too hot and stopped itself (4965 only) */
-if (inta &amp; CSR_INT_BIT_CT_KILL) {
-IWL_ERROR("Microcode CT kill error detected.\n");
-handled |= CSR_INT_BIT_CT_KILL;
-}
</description>
    <dc:creator>Helmut Schaa</dc:creator>
    <dc:date>2008-12-01T15:53:28</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.linux.kernel.wireless.general">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.linux.kernel.wireless.general</link>
  </textinput>
</rdf:RDF>
