All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] d80211: pull request
@ 2006-08-01 19:16 Jiri Benc
  2006-08-01 19:16 ` [PATCH 1/5] d80211: make sleeping in hw->config possible Jiri Benc
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Jiri Benc @ 2006-08-01 19:16 UTC (permalink / raw)
  To: John W. Linville; +Cc: netdev

Please pull from
git://git.kernel.org/pub/scm/linux/kernel/git/jbenc/dscape.git up
to obtain following patches:

Jiri Benc:
      d80211: make sleeping in hw->config possible
      d80211: return correct error codes for scan requests
      d80211: Switch d80211 drivers to IEEE80211_ style definitions

Karol Lewandowski:
      d80211: return correct value when loading of rate control module fails

Michael Wu:
      d80211: Switch d80211 to IEEE80211_ style names

 drivers/net/wireless/d80211/adm8211/adm8211.c      |   10 -
 drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c |   12 -
 drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c |   15 -
 drivers/net/wireless/d80211/rt2x00/rt2400pci.c     |   12 -
 drivers/net/wireless/d80211/rt2x00/rt2500pci.c     |   12 -
 drivers/net/wireless/d80211/rt2x00/rt2500usb.c     |   12 -
 drivers/net/wireless/d80211/rt2x00/rt61pci.c       |   10 -
 drivers/net/wireless/d80211/rt2x00/rt73usb.c       |   10 -
 include/net/d80211.h                               |  125 ++++---
 net/d80211/ieee80211.c                             |  343 ++++++++++----------
 net/d80211/ieee80211_i.h                           |    6 
 net/d80211/ieee80211_iface.c                       |   10 -
 net/d80211/ieee80211_ioctl.c                       |   22 +
 net/d80211/ieee80211_scan.c                        |    2 
 net/d80211/ieee80211_sta.c                         |  259 ++++++++-------
 net/d80211/ieee80211_sysfs.c                       |    2 
 net/d80211/rate_control.c                          |   10 -
 net/d80211/sta_info.c                              |   16 -
 net/d80211/tkip.c                                  |    8 
 net/d80211/wep.c                                   |    8 
 net/d80211/wme.c                                   |    8 
 net/d80211/wpa.c                                   |   72 ++--
 22 files changed, 508 insertions(+), 476 deletions(-)


-- 
Jiri Benc
SUSE Labs

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/5] d80211: make sleeping in hw->config possible
  2006-08-01 19:16 [PATCH 0/5] d80211: pull request Jiri Benc
@ 2006-08-01 19:16 ` Jiri Benc
  2006-08-01 19:16 ` [PATCH 2/5] d80211: return correct error codes for scan requests Jiri Benc
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Jiri Benc @ 2006-08-01 19:16 UTC (permalink / raw)
  To: John W. Linville; +Cc: netdev

This patch makes sleeping in the hw->config callback possible by removing
the only atomic caller. The atomic caller was a timer and is replaced by
a workqueue.

This is based on a patch from Michael Buesch <mb@bu3sch.de>.

Signed-off-by: Jiri Benc <jbenc@suse.cz>

---

 net/d80211/ieee80211.c       |   23 +++++++++++++++--------
 net/d80211/ieee80211_i.h     |    3 ++-
 net/d80211/ieee80211_iface.c |   10 ++++++++--
 net/d80211/ieee80211_sta.c   |   37 +++++++++++++++++--------------------
 4 files changed, 42 insertions(+), 31 deletions(-)

d0d2b7a8ddc378ddea499f1537f6aea83d96d003
diff --git a/net/d80211/ieee80211.c b/net/d80211/ieee80211.c
index 4e80767..9f883a4 100644
--- a/net/d80211/ieee80211.c
+++ b/net/d80211/ieee80211.c
@@ -4552,14 +4552,6 @@ void ieee80211_unregister_hw(struct net_
         tasklet_disable(&local->tasklet);
         /* TODO: skb_queue should be empty here, no need to do anything? */
 
-	if (local->rate_limit)
-		del_timer_sync(&local->rate_limit_timer);
-	if (local->stat_time)
-		del_timer_sync(&local->stat_timer);
-	if (local->scan_timer.data)
-		del_timer_sync(&local->scan_timer);
-	ieee80211_rx_bss_list_deinit(dev);
-
 	rtnl_lock();
 	local->reg_state = IEEE80211_DEV_UNREGISTERED;
 	if (local->apdev)
@@ -4572,6 +4564,21 @@ void ieee80211_unregister_hw(struct net_
 	}
 	rtnl_unlock();
 
+	if (local->rate_limit)
+		del_timer_sync(&local->rate_limit_timer);
+	if (local->stat_time)
+		del_timer_sync(&local->stat_timer);
+	if (local->scan_work.data) {
+		local->sta_scanning = 0;
+		cancel_delayed_work(&local->scan_work);
+		flush_scheduled_work();
+		/* The scan_work is guaranteed not to be called at this
+		 * point. It is not scheduled and not running now. It can be
+		 * scheduled again only by some sta_timer (all of them are
+		 * stopped by now) or under rtnl lock. */
+	}
+
+	ieee80211_rx_bss_list_deinit(dev);
 	ieee80211_clear_tx_pending(local);
 	sta_info_stop(local);
 	rate_control_remove_attrs(local, local->rate_ctrl_priv,
diff --git a/net/d80211/ieee80211_i.h b/net/d80211/ieee80211_i.h
index 016a2b1..5a2c6e8 100644
--- a/net/d80211/ieee80211_i.h
+++ b/net/d80211/ieee80211_i.h
@@ -17,6 +17,7 @@ #include <linux/interrupt.h>
 #include <linux/list.h>
 #include <linux/netdevice.h>
 #include <linux/skbuff.h>
+#include <linux/workqueue.h>
 #include "ieee80211_key.h"
 #include "sta_info.h"
 
@@ -425,7 +426,7 @@ #define IEEE80211_IRQSAFE_QUEUE_LIMIT 12
 	int scan_channel_idx;
 	enum { SCAN_SET_CHANNEL, SCAN_SEND_PROBE } scan_state;
 	unsigned long last_scan_completed;
-	struct timer_list scan_timer;
+	struct work_struct scan_work;
 	int scan_oper_channel;
 	int scan_oper_channel_val;
 	int scan_oper_power_level;
diff --git a/net/d80211/ieee80211_iface.c b/net/d80211/ieee80211_iface.c
index fa3d9e2..12b9d4f 100644
--- a/net/d80211/ieee80211_iface.c
+++ b/net/d80211/ieee80211_iface.c
@@ -287,8 +287,14 @@ #endif /* CONFIG_D80211_VERBOSE_DEBUG */
 	case IEEE80211_IF_TYPE_STA:
 	case IEEE80211_IF_TYPE_IBSS:
 		del_timer_sync(&sdata->u.sta.timer);
-		if (local->scan_timer.data == (unsigned long) sdata->dev)
-			del_timer_sync(&local->scan_timer);
+		if (local->scan_work.data == sdata->dev) {
+			local->sta_scanning = 0;
+			cancel_delayed_work(&local->scan_work);
+			flush_scheduled_work();
+			/* see comment in ieee80211_unregister_hw to
+			 * understand why this works */
+			local->scan_work.data = NULL;
+		}
 		kfree(sdata->u.sta.extra_ie);
 		sdata->u.sta.extra_ie = NULL;
 		kfree(sdata->u.sta.assocreq_ies);
diff --git a/net/d80211/ieee80211_sta.c b/net/d80211/ieee80211_sta.c
index b0cfff1..22f9599 100644
--- a/net/d80211/ieee80211_sta.c
+++ b/net/d80211/ieee80211_sta.c
@@ -2417,15 +2417,16 @@ static int ieee80211_active_scan(struct 
 }
 
 
-static void ieee80211_sta_scan_timer(unsigned long ptr)
+static void ieee80211_sta_scan_work(void *ptr)
 {
-	struct net_device *dev = (struct net_device *) ptr;
+	struct net_device *dev = ptr;
 	struct ieee80211_local *local = dev->ieee80211_ptr;
         struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
 	struct ieee80211_hw_modes *mode;
 	struct ieee80211_channel *chan;
 	int skip;
 	union iwreq_data wrqu;
+	unsigned long next_delay = 0;
 
 	if (!local->sta_scanning)
 		return;
@@ -2493,31 +2494,30 @@ #endif
 			local->scan_channel_idx = 0;
 		}
 
-		if (skip) {
-			local->scan_timer.expires = jiffies;
+		if (skip)
 			break;
-		}
 
-		local->scan_timer.expires =
-			jiffies + IEEE80211_PROBE_DELAY +
-			usecs_to_jiffies(local->hw->channel_change_time);
+		next_delay = IEEE80211_PROBE_DELAY +
+			     usecs_to_jiffies(local->hw->channel_change_time);
 		local->scan_state = SCAN_SEND_PROBE;
 		break;
 	case SCAN_SEND_PROBE:
 		if (ieee80211_active_scan(local)) {
 			ieee80211_send_probe_req(dev, NULL, local->scan_ssid,
 						 local->scan_ssid_len);
-			local->scan_timer.expires =
-				jiffies + IEEE80211_CHANNEL_TIME;
-		} else {
-			local->scan_timer.expires =
-				jiffies + IEEE80211_PASSIVE_CHANNEL_TIME;
-		}
+			next_delay = IEEE80211_CHANNEL_TIME;
+		} else
+			next_delay = IEEE80211_PASSIVE_CHANNEL_TIME;
 		local->scan_state = SCAN_SET_CHANNEL;
 		break;
 	}
 
-	add_timer(&local->scan_timer);
+	if (local->sta_scanning) {
+		if (next_delay)
+			schedule_delayed_work(&local->scan_work, next_delay);
+		else
+			schedule_work(&local->scan_work);
+	}
 }
 
 
@@ -2566,11 +2566,8 @@ int ieee80211_sta_req_scan(struct net_de
 	local->scan_state = SCAN_SET_CHANNEL;
 	local->scan_hw_mode_idx = 0;
 	local->scan_channel_idx = 0;
-	init_timer(&local->scan_timer);
-	local->scan_timer.data = (unsigned long) dev;
-	local->scan_timer.function = ieee80211_sta_scan_timer;
-	local->scan_timer.expires = jiffies + 1;
-	add_timer(&local->scan_timer);
+	INIT_WORK(&local->scan_work, ieee80211_sta_scan_work, dev);
+	schedule_work(&local->scan_work);
 
 	return 0;
 }
-- 
1.3.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/5] d80211: return correct error codes for scan requests
  2006-08-01 19:16 [PATCH 0/5] d80211: pull request Jiri Benc
  2006-08-01 19:16 ` [PATCH 1/5] d80211: make sleeping in hw->config possible Jiri Benc
@ 2006-08-01 19:16 ` Jiri Benc
  2006-08-01 19:16 ` [PATCH 3/5] d80211: return correct value when loading of rate control module fails Jiri Benc
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Jiri Benc @ 2006-08-01 19:16 UTC (permalink / raw)
  To: John W. Linville; +Cc: netdev

Do not allow scanning when the network interface is down. Return 0 instead
of -EBUSY when scanning is in progress on the same network interface.

Signed-off-by: Jiri Benc <jbenc@suse.cz>

---

 net/d80211/ieee80211_ioctl.c |    6 ++++++
 net/d80211/ieee80211_sta.c   |    5 ++++-
 2 files changed, 10 insertions(+), 1 deletions(-)

2cf10f1a78222a375297d01a919d55d1a3c2a5a6
diff --git a/net/d80211/ieee80211_ioctl.c b/net/d80211/ieee80211_ioctl.c
index d73693e..e43e3b0 100644
--- a/net/d80211/ieee80211_ioctl.c
+++ b/net/d80211/ieee80211_ioctl.c
@@ -1091,6 +1091,9 @@ static int ieee80211_ioctl_scan_req(stru
 	if (local->user_space_mlme)
 		return -EOPNOTSUPP;
 
+	if (!netif_running(dev))
+		return -ENETDOWN;
+
 	if (left < len || len > IEEE80211_MAX_SSID_LEN)
 		return -EINVAL;
 
@@ -1914,6 +1917,9 @@ static int ieee80211_ioctl_siwscan(struc
 	u8 *ssid = NULL;
 	size_t ssid_len = 0;
 
+	if (!netif_running(dev))
+		return -ENETDOWN;
+
 	if (local->scan_flags & IEEE80211_SCAN_MATCH_SSID) {
 		if (sdata->type == IEEE80211_IF_TYPE_STA ||
 		    sdata->type == IEEE80211_IF_TYPE_IBSS) {
diff --git a/net/d80211/ieee80211_sta.c b/net/d80211/ieee80211_sta.c
index 22f9599..13dcdae 100644
--- a/net/d80211/ieee80211_sta.c
+++ b/net/d80211/ieee80211_sta.c
@@ -2548,8 +2548,11 @@ int ieee80211_sta_req_scan(struct net_de
 	/* TODO: if assoc, move to power save mode for the duration of the
 	 * scan */
 
-	if (local->sta_scanning)
+	if (local->sta_scanning) {
+		if (local->scan_work.data == dev)
+			return 0;
 		return -EBUSY;
+	}
 
 	printk(KERN_DEBUG "%s: starting scan\n", dev->name);
 
-- 
1.3.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/5] d80211: return correct value when loading of rate control module fails
  2006-08-01 19:16 [PATCH 0/5] d80211: pull request Jiri Benc
  2006-08-01 19:16 ` [PATCH 1/5] d80211: make sleeping in hw->config possible Jiri Benc
  2006-08-01 19:16 ` [PATCH 2/5] d80211: return correct error codes for scan requests Jiri Benc
@ 2006-08-01 19:16 ` Jiri Benc
  2006-08-01 19:16 ` [PATCH 4/5] d80211: Switch d80211 to IEEE80211_ style names Jiri Benc
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Jiri Benc @ 2006-08-01 19:16 UTC (permalink / raw)
  To: John W. Linville; +Cc: netdev

From: Karol Lewandowski <kl@jasmine.eu.org>

When loading of rate_control module fails, ieee80211_register_hw returns
value from previous check. This patch fixes that.

Signed-off-by: Jiri Benc <jbenc@suse.cz>

---

 net/d80211/ieee80211.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

2a053059b358f64991ac003c48f3de1da86c33ab
diff --git a/net/d80211/ieee80211.c b/net/d80211/ieee80211.c
index 9f883a4..41c292b 100644
--- a/net/d80211/ieee80211.c
+++ b/net/d80211/ieee80211.c
@@ -4462,7 +4462,8 @@ int ieee80211_register_hw(struct net_dev
 	if (result < 0)
 		goto fail_if_sysfs;
 
-	if (rate_control_initialize(local) < 0) {
+	result = rate_control_initialize(local);
+	if (result < 0) {
 		printk(KERN_DEBUG "%s: Failed to initialize rate control "
 		       "algorithm\n", dev->name);
 		goto fail_rate;
-- 
1.3.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 4/5] d80211: Switch d80211 to IEEE80211_ style names
  2006-08-01 19:16 [PATCH 0/5] d80211: pull request Jiri Benc
                   ` (2 preceding siblings ...)
  2006-08-01 19:16 ` [PATCH 3/5] d80211: return correct value when loading of rate control module fails Jiri Benc
@ 2006-08-01 19:16 ` Jiri Benc
  2006-08-04 19:20   ` Jouni Malinen
  2006-08-01 19:17 ` [PATCH 5/5] d80211: Switch d80211 drivers to IEEE80211_ style definitions Jiri Benc
  2006-08-02  2:11 ` [PATCH 0/5] d80211: pull request John W. Linville
  5 siblings, 1 reply; 9+ messages in thread
From: Jiri Benc @ 2006-08-01 19:16 UTC (permalink / raw)
  To: John W. Linville; +Cc: netdev

From: Michael Wu <flamingice@sourmilk.net>

This patch switches the WLAN_ definitions in d80211.h to IEEE80211_ style
definitions found in ieee80211.h. It also switches to MAC_ARG and MAC_FMT.

Signed-off-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: Jiri Benc <jbenc@suse.cz>

---

 include/net/d80211.h         |  125 +++++++++--------
 net/d80211/ieee80211.c       |  317 +++++++++++++++++++++---------------------
 net/d80211/ieee80211_i.h     |    3 
 net/d80211/ieee80211_ioctl.c |   16 +-
 net/d80211/ieee80211_scan.c  |    2 
 net/d80211/ieee80211_sta.c   |  217 ++++++++++++++---------------
 net/d80211/ieee80211_sysfs.c |    2 
 net/d80211/rate_control.c    |   10 +
 net/d80211/sta_info.c        |   16 +-
 net/d80211/tkip.c            |    8 +
 net/d80211/wep.c             |    8 +
 net/d80211/wme.c             |    8 +
 net/d80211/wpa.c             |   72 +++++-----
 13 files changed, 408 insertions(+), 396 deletions(-)

6884184d15ad8a0c5f4255e1219c170655a9610d
diff --git a/include/net/d80211.h b/include/net/d80211.h
index 3a8f6d5..ba5cb4c 100644
--- a/include/net/d80211.h
+++ b/include/net/d80211.h
@@ -898,67 +898,73 @@ void ieee80211_rx_led(int state, struct 
 
 #define FCS_LEN 4
 
-#define WLAN_FC_PVER		0x0003
-#define WLAN_FC_TODS		0x0100
-#define WLAN_FC_FROMDS		0x0200
-#define WLAN_FC_MOREFRAG	0x0400
-#define WLAN_FC_RETRY		0x0800
-#define WLAN_FC_PWRMGT		0x1000
-#define WLAN_FC_MOREDATA	0x2000
-#define WLAN_FC_ISWEP		0x4000
-#define WLAN_FC_ORDER		0x8000
-
-#define WLAN_FC_GET_TYPE(fc)	(((fc) & 0x000c) >> 2)
-#define WLAN_FC_GET_STYPE(fc)	(((fc) & 0x00f0) >> 4)
-
-#define WLAN_GET_SEQ_FRAG(seq)	((seq) & 0x000f)
-#define WLAN_GET_SEQ_SEQ(seq)	((seq) >> 4)
-
-#define WLAN_FC_DATA_PRESENT(fc) (((fc) & 0x4c) == 0x08)
-
-#define WLAN_FC_TYPE_MGMT	0
-#define WLAN_FC_TYPE_CTRL	1
-#define WLAN_FC_TYPE_DATA	2
+#define IEEE80211_DATA_LEN              2304
+/* Maximum size for the MA-UNITDATA primitive, 802.11 standard section
+   6.2.1.1.2.
+
+   The figure in section 7.1.2 suggests a body size of up to 2312
+   bytes is allowed, which is a bit confusing, I suspect this
+   represents the 2304 bytes of real data, plus a possible 8 bytes of
+   WEP IV and ICV. (this interpretation suggested by Ramiro Barreiro) */
+
+#define IEEE80211_FCTL_VERS		0x0003
+#define IEEE80211_FCTL_FTYPE		0x000c
+#define IEEE80211_FCTL_STYPE		0x00f0
+#define IEEE80211_FCTL_TODS		0x0100
+#define IEEE80211_FCTL_FROMDS		0x0200
+#define IEEE80211_FCTL_MOREFRAGS	0x0400
+#define IEEE80211_FCTL_RETRY		0x0800
+#define IEEE80211_FCTL_PM		0x1000
+#define IEEE80211_FCTL_MOREDATA		0x2000
+#define IEEE80211_FCTL_PROTECTED	0x4000
+#define IEEE80211_FCTL_ORDER		0x8000
+
+#define IEEE80211_SCTL_FRAG		0x000F
+#define IEEE80211_SCTL_SEQ		0xFFF0
+
+#define IEEE80211_FTYPE_MGMT		0x0000
+#define IEEE80211_FTYPE_CTL		0x0004
+#define IEEE80211_FTYPE_DATA		0x0008
 
 /* management */
-#define WLAN_FC_STYPE_ASSOC_REQ		0
-#define WLAN_FC_STYPE_ASSOC_RESP	1
-#define WLAN_FC_STYPE_REASSOC_REQ	2
-#define WLAN_FC_STYPE_REASSOC_RESP	3
-#define WLAN_FC_STYPE_PROBE_REQ		4
-#define WLAN_FC_STYPE_PROBE_RESP	5
-#define WLAN_FC_STYPE_BEACON		8
-#define WLAN_FC_STYPE_ATIM		9
-#define WLAN_FC_STYPE_DISASSOC		10
-#define WLAN_FC_STYPE_AUTH		11
-#define WLAN_FC_STYPE_DEAUTH		12
-#define WLAN_FC_STYPE_ACTION		13
+#define IEEE80211_STYPE_ASSOC_REQ	0x0000
+#define IEEE80211_STYPE_ASSOC_RESP	0x0010
+#define IEEE80211_STYPE_REASSOC_REQ	0x0020
+#define IEEE80211_STYPE_REASSOC_RESP	0x0030
+#define IEEE80211_STYPE_PROBE_REQ	0x0040
+#define IEEE80211_STYPE_PROBE_RESP	0x0050
+#define IEEE80211_STYPE_BEACON		0x0080
+#define IEEE80211_STYPE_ATIM		0x0090
+#define IEEE80211_STYPE_DISASSOC	0x00A0
+#define IEEE80211_STYPE_AUTH		0x00B0
+#define IEEE80211_STYPE_DEAUTH		0x00C0
+#define IEEE80211_STYPE_ACTION		0x00D0
 
 /* control */
-#define WLAN_FC_STYPE_PSPOLL		10
-#define WLAN_FC_STYPE_RTS		11
-#define WLAN_FC_STYPE_CTS		12
-#define WLAN_FC_STYPE_ACK		13
-#define WLAN_FC_STYPE_CFEND		14
-#define WLAN_FC_STYPE_CFENDACK		15
+#define IEEE80211_STYPE_PSPOLL		0x00A0
+#define IEEE80211_STYPE_RTS		0x00B0
+#define IEEE80211_STYPE_CTS		0x00C0
+#define IEEE80211_STYPE_ACK		0x00D0
+#define IEEE80211_STYPE_CFEND		0x00E0
+#define IEEE80211_STYPE_CFENDACK	0x00F0
 
 /* data */
-#define WLAN_FC_STYPE_DATA		0
-#define WLAN_FC_STYPE_DATA_CFACK	1
-#define WLAN_FC_STYPE_DATA_CFPOLL	2
-#define WLAN_FC_STYPE_DATA_CFACKPOLL	3
-#define WLAN_FC_STYPE_NULLFUNC		4
-#define WLAN_FC_STYPE_CFACK		5
-#define WLAN_FC_STYPE_CFPOLL		6
-#define WLAN_FC_STYPE_CFACKPOLL		7
-#define WLAN_FC_STYPE_QOS_DATA		8
-#define WLAN_FC_STYPE_QOS_DATA_CFACK	9
-#define WLAN_FC_STYPE_QOS_DATA_CFPOLL	10
-#define WLAN_FC_STYPE_QOS_DATA_CFACKPOLL 11
-#define WLAN_FC_STYPE_QOS_NULLFUNC	12
-#define WLAN_FC_STYPE_QOS_CFACK		13
-#define WLAN_FC_STYPE_QOS_CFPOLL	14
-#define WLAN_FC_STYPE_QOS_CFACKPOLL	15
+#define IEEE80211_STYPE_DATA			0x0000
+#define IEEE80211_STYPE_DATA_CFACK		0x0010
+#define IEEE80211_STYPE_DATA_CFPOLL		0x0020
+#define IEEE80211_STYPE_DATA_CFACKPOLL		0x0030
+#define IEEE80211_STYPE_NULLFUNC		0x0040
+#define IEEE80211_STYPE_CFACK			0x0050
+#define IEEE80211_STYPE_CFPOLL			0x0060
+#define IEEE80211_STYPE_CFACKPOLL		0x0070
+#define IEEE80211_STYPE_QOS_DATA		0x0080
+#define IEEE80211_STYPE_QOS_DATA_CFACK		0x0090
+#define IEEE80211_STYPE_QOS_DATA_CFPOLL		0x00A0
+#define IEEE80211_STYPE_QOS_DATA_CFACKPOLL	0x00B0
+#define IEEE80211_STYPE_QOS_NULLFUNC		0x00C0
+#define IEEE80211_STYPE_QOS_CFACK		0x00D0
+#define IEEE80211_STYPE_QOS_CFPOLL		0x00E0
+#define IEEE80211_STYPE_QOS_CFACKPOLL		0x00F0
 
 
 #define IEEE80211_MAX_FRAG_THRESHOLD 2346
@@ -1002,11 +1008,12 @@ static inline u8 *ieee80211_get_DA(struc
 
 static inline int ieee80211_get_morefrag(struct ieee80211_hdr *hdr)
 {
-	return (le16_to_cpu(hdr->frame_control) & WLAN_FC_MOREFRAG) != 0;
+	return (le16_to_cpu(hdr->frame_control) &
+		IEEE80211_FCTL_MOREFRAGS) != 0;
 }
 
-#define MAC2STR(a) ((a)[0] & 0xff), ((a)[1] & 0xff), ((a)[2] & 0xff), \
-		   ((a)[3] & 0xff), ((a)[4] & 0xff), ((a)[5] & 0xff)
-#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
+#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
+#define MAC_ARG(x) ((u8*)(x))[0], ((u8*)(x))[1], ((u8*)(x))[2], \
+		   ((u8*)(x))[3], ((u8*)(x))[4], ((u8*)(x))[5]
 
 #endif /* D80211_H */
diff --git a/net/d80211/ieee80211.c b/net/d80211/ieee80211.c
index 41c292b..60eca90 100644
--- a/net/d80211/ieee80211.c
+++ b/net/d80211/ieee80211.c
@@ -246,17 +246,17 @@ int ieee80211_get_hdrlen(u16 fc)
 {
 	int hdrlen = 24;
 
-	switch (WLAN_FC_GET_TYPE(fc)) {
-	case WLAN_FC_TYPE_DATA:
-		if ((fc & WLAN_FC_FROMDS) && (fc & WLAN_FC_TODS))
+	switch (fc & IEEE80211_FCTL_FTYPE) {
+	case IEEE80211_FTYPE_DATA:
+		if ((fc & IEEE80211_FCTL_FROMDS) && (fc & IEEE80211_FCTL_TODS))
 			hdrlen = 30; /* Addr4 */
-		if (WLAN_FC_GET_STYPE(fc) & 0x08)
+		if ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_QOS_DATA)
 			hdrlen += 2; /* QoS Control Field */
 		break;
-	case WLAN_FC_TYPE_CTRL:
-		switch (WLAN_FC_GET_STYPE(fc)) {
-		case WLAN_FC_STYPE_CTS:
-		case WLAN_FC_STYPE_ACK:
+	case IEEE80211_FTYPE_CTL:
+		switch (fc & IEEE80211_FCTL_STYPE) {
+		case IEEE80211_STYPE_CTS:
+		case IEEE80211_STYPE_ACK:
 			hdrlen = 10;
 			break;
 		default:
@@ -306,13 +306,13 @@ static void ieee80211_dump_frame(const c
 		printk(" FC=0x%04x DUR=0x%04x",
 		       fc, le16_to_cpu(hdr->duration_id));
 	if (hdrlen >= 10)
-		printk(" A1=" MACSTR, MAC2STR(hdr->addr1));
+		printk(" A1=" MAC_FMT, MAC_ARG(hdr->addr1));
 	if (hdrlen >= 16)
-		printk(" A2=" MACSTR, MAC2STR(hdr->addr2));
+		printk(" A2=" MAC_FMT, MAC_ARG(hdr->addr2));
 	if (hdrlen >= 24)
-		printk(" A3=" MACSTR, MAC2STR(hdr->addr3));
+		printk(" A3=" MAC_FMT, MAC_ARG(hdr->addr3));
 	if (hdrlen >= 30)
-		printk(" A4=" MACSTR, MAC2STR(hdr->addr4));
+		printk(" A4=" MAC_FMT, MAC_ARG(hdr->addr4));
 	printk("\n");
 }
 #else /* IEEE80211_VERBOSE_DEBUG_FRAME_DUMP */
@@ -460,7 +460,7 @@ ieee80211_tx_h_fragment(struct ieee80211
 		goto fail;
 	memset(frags, 0, num_fragm * sizeof(struct sk_buff *));
 
-	hdr->frame_control |= cpu_to_le16(WLAN_FC_MOREFRAG);
+	hdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_MOREFRAGS);
 	pos = first->data + hdrlen + per_fragm;
 	left = payload_len - per_fragm;
 	for (i = 0; i < num_fragm - 1; i++) {
@@ -487,7 +487,7 @@ #define IEEE80211_ENCRYPT_TAILROOM 12
 		fhdr = (struct ieee80211_hdr *) skb_put(frag, hdrlen);
 		memcpy(fhdr, first->data, hdrlen);
 		if (i == num_fragm - 2)
-			fhdr->frame_control &= cpu_to_le16(~WLAN_FC_MOREFRAG);
+			fhdr->frame_control &= cpu_to_le16(~IEEE80211_FCTL_MOREFRAGS);
 		fhdr->seq_ctrl = cpu_to_le16(i + 1);
 		copylen = left > per_fragm ? per_fragm : left;
 		memcpy(skb_put(frag, copylen), pos, copylen);
@@ -536,14 +536,14 @@ void ieee80211_tx_set_iswep(struct ieee8
 {
 	struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) tx->skb->data;
 
-	hdr->frame_control |= cpu_to_le16(WLAN_FC_ISWEP);
+	hdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_PROTECTED);
 	if (tx->u.tx.extra_frag) {
 		struct ieee80211_hdr *fhdr;
 		int i;
 		for (i = 0; i < tx->u.tx.num_extra_frag; i++) {
 			fhdr = (struct ieee80211_hdr *)
 				tx->u.tx.extra_frag[i]->data;
-			fhdr->frame_control |= cpu_to_le16(WLAN_FC_ISWEP);
+			fhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_PROTECTED);
 		}
 	}
 }
@@ -558,9 +558,9 @@ ieee80211_tx_h_wep_encrypt(struct ieee80
         fc = le16_to_cpu(hdr->frame_control);
 
 	if (!tx->key || tx->key->alg != ALG_WEP ||
-	    (WLAN_FC_GET_TYPE(fc) != WLAN_FC_TYPE_DATA &&
-	     (WLAN_FC_GET_TYPE(fc) != WLAN_FC_TYPE_MGMT ||
-	      WLAN_FC_GET_STYPE(fc) != WLAN_FC_STYPE_AUTH)))
+	    ((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA &&
+	     ((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_MGMT ||
+	      (fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_AUTH)))
 		return TXRX_CONTINUE;
 
 	tx->u.tx.control->iv_len = WEP_IV_LEN;
@@ -676,7 +676,7 @@ static u16 ieee80211_duration(struct iee
 	 *   BSSBasicRateSet
 	 */
 
-	if (WLAN_FC_GET_TYPE(tx->fc) == WLAN_FC_TYPE_CTRL) {
+	if ((tx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_CTL) {
 		/* TODO: These control frames are not currently sent by
 		 * 80211.o, but should they be implemented, this function
 		 * needs to be updated to support duration field calculation.
@@ -887,8 +887,8 @@ #endif /* CONFIG_D80211_VERBOSE_DEBUG */
 	u32 sta_flags;
 
 	if (unlikely(tx->local->sta_scanning != 0) &&
-	    (WLAN_FC_GET_TYPE(tx->fc) != WLAN_FC_TYPE_MGMT ||
-	     WLAN_FC_GET_STYPE(tx->fc) != WLAN_FC_STYPE_PROBE_REQ))
+	    ((tx->fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_MGMT ||
+	     (tx->fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_PROBE_REQ))
 		return TXRX_DROP;
 
 	if (tx->u.tx.ps_buffered)
@@ -899,17 +899,17 @@ #endif /* CONFIG_D80211_VERBOSE_DEBUG */
 	if (likely(tx->u.tx.unicast)) {
 		if (unlikely(!(sta_flags & WLAN_STA_ASSOC) &&
 			     tx->sdata->type != IEEE80211_IF_TYPE_IBSS &&
-			     WLAN_FC_GET_TYPE(tx->fc) == WLAN_FC_TYPE_DATA)) {
+			     (tx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA)) {
 #ifdef CONFIG_D80211_VERBOSE_DEBUG
 			printk(KERN_DEBUG "%s: dropped data frame to not "
-			       "associated station " MACSTR "\n",
-			       tx->dev->name, MAC2STR(hdr->addr1));
+			       "associated station " MAC_FMT "\n",
+			       tx->dev->name, MAC_ARG(hdr->addr1));
 #endif /* CONFIG_D80211_VERBOSE_DEBUG */
 			I802_DEBUG_INC(tx->local->tx_handlers_drop_not_assoc);
 			return TXRX_DROP;
 		}
 	} else {
-		if (unlikely(WLAN_FC_GET_TYPE(tx->fc) == WLAN_FC_TYPE_DATA &&
+		if (unlikely((tx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA &&
 			     tx->local->num_sta == 0 &&
 			     !tx->local->allow_broadcast_always &&
 			     tx->sdata->type != IEEE80211_IF_TYPE_IBSS)) {
@@ -927,9 +927,9 @@ #endif /* CONFIG_D80211_VERBOSE_DEBUG */
 #ifdef CONFIG_D80211_DEBUG
 		struct ieee80211_hdr *hdr =
 			(struct ieee80211_hdr *) tx->skb->data;
-		printk(KERN_DEBUG "%s: dropped frame to " MACSTR
+		printk(KERN_DEBUG "%s: dropped frame to " MAC_FMT
 		       " (unauthorized port)\n", tx->dev->name,
-		       MAC2STR(hdr->addr1));
+		       MAC_ARG(hdr->addr1));
 #endif
 		I802_DEBUG_INC(tx->local->tx_handlers_drop_unauth_port);
 		return TXRX_DROP;
@@ -995,7 +995,7 @@ ieee80211_tx_h_multicast_ps_buf(struct i
 	if (tx->local->hw->host_broadcast_ps_buffering &&
 	    tx->sdata->type != IEEE80211_IF_TYPE_WDS &&
 	    tx->sdata->bss && atomic_read(&tx->sdata->bss->num_sta_ps) &&
-	    !(tx->fc & WLAN_FC_ORDER)) {
+	    !(tx->fc & IEEE80211_FCTL_ORDER)) {
 		if (tx->local->total_ps_buffered >= TOTAL_MAX_TX_BUFFER)
 			purge_old_ps_buffers(tx->local);
 		if (skb_queue_len(&tx->sdata->bss->ps_bc_buf) >=
@@ -1022,16 +1022,16 @@ ieee80211_tx_h_unicast_ps_buf(struct iee
 	struct sta_info *sta = tx->sta;
 
 	if (unlikely(!sta ||
-		     (WLAN_FC_GET_TYPE(tx->fc) == WLAN_FC_TYPE_MGMT &&
-		      WLAN_FC_GET_STYPE(tx->fc) == WLAN_FC_STYPE_PROBE_RESP)))
+		     ((tx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT &&
+		      (tx->fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_PROBE_RESP)))
 		return TXRX_CONTINUE;
 
 	if (unlikely((sta->flags & WLAN_STA_PS) && !sta->pspoll)) {
 		struct ieee80211_tx_packet_data *pkt_data;
 #ifdef IEEE80211_VERBOSE_DEBUG_PS
-		printk(KERN_DEBUG "STA " MACSTR " aid %d: PS buffer (entries "
+		printk(KERN_DEBUG "STA " MAC_FMT " aid %d: PS buffer (entries "
 		       "before %d)\n",
-		       MAC2STR(sta->addr), sta->aid,
+		       MAC_ARG(sta->addr), sta->aid,
 		       skb_queue_len(&sta->ps_tx_buf));
 #endif /* IEEE80211_VERBOSE_DEBUG_PS */
 		sta->flags |= WLAN_STA_TIM;
@@ -1040,9 +1040,9 @@ #endif /* IEEE80211_VERBOSE_DEBUG_PS */
 		if (skb_queue_len(&sta->ps_tx_buf) >= STA_MAX_TX_BUFFER) {
 			struct sk_buff *old = skb_dequeue(&sta->ps_tx_buf);
 			if (net_ratelimit()) {
-				printk(KERN_DEBUG "%s: STA " MACSTR " TX "
+				printk(KERN_DEBUG "%s: STA " MAC_FMT " TX "
 				       "buffer full - dropping oldest frame\n",
-				       tx->dev->name, MAC2STR(sta->addr));
+				       tx->dev->name, MAC_ARG(sta->addr));
 			}
 			dev_kfree_skb(old);
 		} else
@@ -1057,9 +1057,9 @@ #endif /* IEEE80211_VERBOSE_DEBUG_PS */
 	}
 #ifdef IEEE80211_VERBOSE_DEBUG_PS
 	else if (unlikely(sta->flags & WLAN_STA_PS)) {
-		printk(KERN_DEBUG "%s: STA " MACSTR " in PS mode, but pspoll "
+		printk(KERN_DEBUG "%s: STA " MAC_FMT " in PS mode, but pspoll "
 		       "set -> send frame\n", tx->dev->name,
-		       MAC2STR(sta->addr));
+		       MAC_ARG(sta->addr));
 	}
 #endif /* IEEE80211_VERBOSE_DEBUG_PS */
 	sta->pspoll = 0;
@@ -1479,18 +1479,18 @@ static int ieee80211_subif_start_xmit(st
 	 * operation mode) */
 	ethertype = (skb->data[12] << 8) | skb->data[13];
 	/* TODO: handling for 802.1x authorized/unauthorized port */
-	fc = (WLAN_FC_TYPE_DATA << 2) | (WLAN_FC_STYPE_DATA << 4);
+	fc = IEEE80211_FTYPE_DATA | IEEE80211_STYPE_DATA;
 
 	if (likely(sdata->type == IEEE80211_IF_TYPE_AP ||
 		   sdata->type == IEEE80211_IF_TYPE_VLAN)) {
-		fc |= WLAN_FC_FROMDS;
+		fc |= IEEE80211_FCTL_FROMDS;
 		/* DA BSSID SA */
 		memcpy(hdr.addr1, skb->data, ETH_ALEN);
 		memcpy(hdr.addr2, dev->dev_addr, ETH_ALEN);
 		memcpy(hdr.addr3, skb->data + ETH_ALEN, ETH_ALEN);
                 hdrlen = 24;
         } else if (sdata->type == IEEE80211_IF_TYPE_WDS) {
-                fc |= WLAN_FC_FROMDS | WLAN_FC_TODS;
+		fc |= IEEE80211_FCTL_FROMDS | IEEE80211_FCTL_TODS;
 		/* RA TA DA SA */
                 memcpy(hdr.addr1, sdata->u.wds.remote_addr, ETH_ALEN);
                 memcpy(hdr.addr2, dev->dev_addr, ETH_ALEN);
@@ -1498,7 +1498,7 @@ static int ieee80211_subif_start_xmit(st
                 memcpy(hdr.addr4, skb->data + ETH_ALEN, ETH_ALEN);
                 hdrlen = 30;
         } else if (sdata->type == IEEE80211_IF_TYPE_STA) {
-		fc |= WLAN_FC_TODS;
+		fc |= IEEE80211_FCTL_TODS;
 		/* BSSID SA DA */
 		memcpy(hdr.addr1, sdata->u.sta.bssid, ETH_ALEN);
 		memcpy(hdr.addr2, skb->data + ETH_ALEN, ETH_ALEN);
@@ -1519,7 +1519,7 @@ static int ieee80211_subif_start_xmit(st
 	sta = sta_info_get(local, hdr.addr1);
 	if (sta) {
 		if (sta->flags & WLAN_STA_WME) {
-			fc |= WLAN_FC_STYPE_QOS_DATA << 4;
+			fc |= IEEE80211_STYPE_QOS_DATA << 4;
 			hdrlen += 2;
 		}
 		sta_info_put(sta);
@@ -1654,8 +1654,8 @@ ieee80211_mgmt_start_xmit(struct sk_buff
         pkt_data->ifindex = sdata->dev->ifindex;
 	pkt_data->mgmt_iface = (sdata->type == IEEE80211_IF_TYPE_MGMT);
 
-	if (WLAN_FC_GET_TYPE(fc) == WLAN_FC_TYPE_MGMT &&
-	    WLAN_FC_GET_STYPE(fc) == WLAN_FC_STYPE_PROBE_RESP)
+	if ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT &&
+	    (fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_PROBE_RESP)
 		pkt_data->pkt_probe_resp = 1;
 
 	skb->priority = 20; /* use hardcoded priority for mgmt TX queue */
@@ -1671,7 +1671,7 @@ ieee80211_mgmt_start_xmit(struct sk_buff
 		hdr->frame_control = cpu_to_le16(fc);
 	}
 
-	pkt_data->do_not_encrypt = !(fc & WLAN_FC_ISWEP);
+	pkt_data->do_not_encrypt = !(fc & IEEE80211_FCTL_PROTECTED);
 
 	sdata->stats.tx_packets++;
         sdata->stats.tx_bytes += skb->len;
@@ -1870,7 +1870,7 @@ ieee80211_get_buffered_bc(struct net_dev
 		struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
 		/* more buffered multicast/broadcast frames ==> set MoreData
 		 * flag in IEEE 802.11 header to inform PS STAs */
-		hdr->frame_control |= cpu_to_le16(WLAN_FC_MOREDATA);
+		hdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_MOREDATA);
 	}
 
 	ieee80211_tx_prepare(&tx, skb, dev, control);
@@ -1989,7 +1989,7 @@ static int ieee80211_change_mtu(struct n
 {
 	/* FIX: what would be proper limits for MTU?
 	 * This interface uses 802.3 frames. */
-	if (new_mtu < 256 || new_mtu > 2304 - 24 - 6) {
+	if (new_mtu < 256 || new_mtu > IEEE80211_DATA_LEN - 24 - 6) {
 		printk(KERN_WARNING "%s: invalid MTU %d\n",
 		       dev->name, new_mtu);
 		return -EINVAL;
@@ -2007,7 +2007,7 @@ static int ieee80211_change_mtu_apdev(st
 {
 	/* FIX: what would be proper limits for MTU?
 	 * This interface uses 802.11 frames. */
-	if (new_mtu < 256 || new_mtu > 2304) {
+	if (new_mtu < 256 || new_mtu > IEEE80211_DATA_LEN) {
 		printk(KERN_WARNING "%s: invalid MTU %d\n",
 		       dev->name, new_mtu);
 		return -EINVAL;
@@ -2356,7 +2356,7 @@ ieee80211_rx_h_data(struct ieee80211_txr
         struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
 
 	fc = rx->fc;
-	if (unlikely(WLAN_FC_GET_TYPE(fc) != WLAN_FC_TYPE_DATA))
+	if (unlikely((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA))
 		return TXRX_CONTINUE;
 
 	if (unlikely(!WLAN_FC_DATA_PRESENT(fc)))
@@ -2374,36 +2374,36 @@ ieee80211_rx_h_data(struct ieee80211_txr
 	 *   1     1   RA    TA    DA    SA
 	 */
 
-	switch (fc & (WLAN_FC_TODS | WLAN_FC_FROMDS)) {
-	case WLAN_FC_TODS:
+	switch (fc & (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) {
+	case IEEE80211_FCTL_TODS:
 		/* BSSID SA DA */
 		memcpy(dst, hdr->addr3, ETH_ALEN);
 		memcpy(src, hdr->addr2, ETH_ALEN);
 
 		if (unlikely(sdata->type != IEEE80211_IF_TYPE_AP)) {
 			printk(KERN_DEBUG "%s: dropped ToDS frame (BSSID="
-			       MACSTR " SA=" MACSTR " DA=" MACSTR ")\n",
-			       dev->name, MAC2STR(hdr->addr1),
-			       MAC2STR(hdr->addr2), MAC2STR(hdr->addr3));
+			       MAC_FMT " SA=" MAC_FMT " DA=" MAC_FMT ")\n",
+			       dev->name, MAC_ARG(hdr->addr1),
+			       MAC_ARG(hdr->addr2), MAC_ARG(hdr->addr3));
 			return TXRX_DROP;
 		}
 		break;
-	case (WLAN_FC_TODS | WLAN_FC_FROMDS):
+	case (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS):
 		/* RA TA DA SA */
 		memcpy(dst, hdr->addr3, ETH_ALEN);
 		memcpy(src, hdr->addr4, ETH_ALEN);
 
 		if (unlikely(sdata->type != IEEE80211_IF_TYPE_WDS)) {
 			printk(KERN_DEBUG "%s: dropped FromDS&ToDS frame (RA="
-			       MACSTR " TA=" MACSTR " DA=" MACSTR " SA="
-			       MACSTR ")\n",
-			       rx->dev->name, MAC2STR(hdr->addr1),
-			       MAC2STR(hdr->addr2), MAC2STR(hdr->addr3),
-			       MAC2STR(hdr->addr4));
+			       MAC_FMT " TA=" MAC_FMT " DA=" MAC_FMT " SA="
+			       MAC_FMT ")\n",
+			       rx->dev->name, MAC_ARG(hdr->addr1),
+			       MAC_ARG(hdr->addr2), MAC_ARG(hdr->addr3),
+			       MAC_ARG(hdr->addr4));
 			return TXRX_DROP;
 		}
 		break;
-	case WLAN_FC_FROMDS:
+	case IEEE80211_FCTL_FROMDS:
 		/* DA BSSID SA */
 		memcpy(dst, hdr->addr1, ETH_ALEN);
 		memcpy(src, hdr->addr3, ETH_ALEN);
@@ -2420,11 +2420,11 @@ ieee80211_rx_h_data(struct ieee80211_txr
 		if (sdata->type != IEEE80211_IF_TYPE_IBSS) {
 			if (net_ratelimit()) {
 				printk(KERN_DEBUG "%s: dropped IBSS frame (DA="
-				       MACSTR " SA=" MACSTR " BSSID=" MACSTR
+				       MAC_FMT " SA=" MAC_FMT " BSSID=" MAC_FMT
 				       ")\n",
-				       dev->name, MAC2STR(hdr->addr1),
-				       MAC2STR(hdr->addr2),
-				       MAC2STR(hdr->addr3));
+				       dev->name, MAC_ARG(hdr->addr1),
+				       MAC_ARG(hdr->addr2),
+				       MAC_ARG(hdr->addr3));
 			}
 			return TXRX_DROP;
 		}
@@ -2696,8 +2696,8 @@ static void ap_sta_ps_start(struct net_d
 	sta->flags |= WLAN_STA_PS;
 	sta->pspoll = 0;
 #ifdef IEEE80211_VERBOSE_DEBUG_PS
-	printk(KERN_DEBUG "%s: STA " MACSTR " aid %d enters power "
-	       "save mode\n", dev->name, MAC2STR(sta->addr), sta->aid);
+	printk(KERN_DEBUG "%s: STA " MAC_FMT " aid %d enters power "
+	       "save mode\n", dev->name, MAC_ARG(sta->addr), sta->aid);
 #endif /* IEEE80211_VERBOSE_DEBUG_PS */
 }
 
@@ -2718,8 +2718,8 @@ static int ap_sta_ps_end(struct net_devi
 	if (!skb_queue_empty(&sta->ps_tx_buf) && local->hw->set_tim)
 		local->hw->set_tim(dev, sta->aid, 0);
 #ifdef IEEE80211_VERBOSE_DEBUG_PS
-	printk(KERN_DEBUG "%s: STA " MACSTR " aid %d exits power "
-	       "save mode\n", dev->name, MAC2STR(sta->addr), sta->aid);
+	printk(KERN_DEBUG "%s: STA " MAC_FMT " aid %d exits power "
+	       "save mode\n", dev->name, MAC_ARG(sta->addr), sta->aid);
 #endif /* IEEE80211_VERBOSE_DEBUG_PS */
 	/* Send all buffered frames to the station */
 	while ((skb = skb_dequeue(&sta->tx_filtered)) != NULL) {
@@ -2733,9 +2733,9 @@ #endif /* IEEE80211_VERBOSE_DEBUG_PS */
 		local->total_ps_buffered--;
 		sent++;
 #ifdef IEEE80211_VERBOSE_DEBUG_PS
-		printk(KERN_DEBUG "%s: STA " MACSTR " aid %d send PS frame "
+		printk(KERN_DEBUG "%s: STA " MAC_FMT " aid %d send PS frame "
 		       "since STA not sleeping anymore\n", dev->name,
-		       MAC2STR(sta->addr), sta->aid);
+		       MAC_ARG(sta->addr), sta->aid);
 #endif /* IEEE80211_VERBOSE_DEBUG_PS */
 		pkt_data->requeue = 1;
 		dev_queue_xmit(skb);
@@ -2751,8 +2751,9 @@ ieee80211_rx_h_ps_poll(struct ieee80211_
 	struct sk_buff *skb;
 	int no_pending_pkts;
 
-	if (likely(!rx->sta || WLAN_FC_GET_TYPE(rx->fc) != WLAN_FC_TYPE_CTRL ||
-		   WLAN_FC_GET_STYPE(rx->fc) != WLAN_FC_STYPE_PSPOLL ||
+	if (likely(!rx->sta ||
+		   (rx->fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_CTL ||
+		   (rx->fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_PSPOLL ||
 		   !rx->u.rx.ra_match))
 		return TXRX_CONTINUE;
 
@@ -2774,19 +2775,19 @@ ieee80211_rx_h_ps_poll(struct ieee80211_
 		rx->sta->pspoll = 1;
 
 #ifdef IEEE80211_VERBOSE_DEBUG_PS
-		printk(KERN_DEBUG "STA " MACSTR " aid %d: PS Poll (entries "
+		printk(KERN_DEBUG "STA " MAC_FMT " aid %d: PS Poll (entries "
 		       "after %d)\n",
-		       MAC2STR(rx->sta->addr), rx->sta->aid,
+		       MAC_ARG(rx->sta->addr), rx->sta->aid,
 		       skb_queue_len(&rx->sta->ps_tx_buf));
 #endif /* IEEE80211_VERBOSE_DEBUG_PS */
 
 		/* Use MoreData flag to indicate whether there are more
 		 * buffered frames for this STA */
 		if (no_pending_pkts) {
-			hdr->frame_control &= cpu_to_le16(~WLAN_FC_MOREDATA);
+			hdr->frame_control &= cpu_to_le16(~IEEE80211_FCTL_MOREDATA);
 			rx->sta->flags &= ~WLAN_STA_TIM;
 		} else
-			hdr->frame_control |= cpu_to_le16(WLAN_FC_MOREDATA);
+			hdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_MOREDATA);
 
 		dev_queue_xmit(skb);
 
@@ -2794,9 +2795,9 @@ #endif /* IEEE80211_VERBOSE_DEBUG_PS */
 			rx->local->hw->set_tim(rx->dev, rx->sta->aid, 0);
 #ifdef IEEE80211_VERBOSE_DEBUG_PS
 	} else if (!rx->u.rx.sent_ps_buffered) {
-		printk(KERN_DEBUG "%s: STA " MACSTR " sent PS Poll even "
+		printk(KERN_DEBUG "%s: STA " MAC_FMT " sent PS Poll even "
 		       "though there is no buffered frames for it\n",
-		       rx->dev->name, MAC2STR(rx->sta->addr));
+		       rx->dev->name, MAC_ARG(rx->sta->addr));
 #endif /* IEEE80211_VERBOSE_DEBUG_PS */
 
 	}
@@ -2828,11 +2829,11 @@ #ifdef CONFIG_D80211_DEBUG
 			(struct ieee80211_hdr *) entry->skb_list.next->data;
 		printk(KERN_DEBUG "%s: RX reassembly removed oldest "
 		       "fragment entry (idx=%d age=%lu seq=%d last_frag=%d "
-		       "addr1=" MACSTR " addr2=" MACSTR "\n",
+		       "addr1=" MAC_FMT " addr2=" MAC_FMT "\n",
 		       sdata->dev->name, idx,
 		       jiffies - entry->first_frag_time, entry->seq,
-		       entry->last_frag, MAC2STR(hdr->addr1),
-		       MAC2STR(hdr->addr2));
+		       entry->last_frag, MAC_ARG(hdr->addr1),
+		       MAC_ARG(hdr->addr2));
 #endif /* CONFIG_D80211_DEBUG */
 		__skb_queue_purge(&entry->skb_list);
 	}
@@ -2876,7 +2877,7 @@ ieee80211_reassemble_find(struct ieee802
 		f_hdr = (struct ieee80211_hdr *) entry->skb_list.next->data;
 		f_fc = le16_to_cpu(f_hdr->frame_control);
 
-		if (WLAN_FC_GET_TYPE(fc) != WLAN_FC_GET_TYPE(f_fc) ||
+		if ((fc & IEEE80211_FCTL_FTYPE) != (f_fc & IEEE80211_FCTL_FTYPE) ||
 		    memcmp(hdr->addr1, f_hdr->addr1, ETH_ALEN) != 0 ||
 		    memcmp(hdr->addr2, f_hdr->addr2, ETH_ALEN) != 0)
 			continue;
@@ -2903,9 +2904,9 @@ ieee80211_rx_h_defragment(struct ieee802
 
 	hdr = (struct ieee80211_hdr *) rx->skb->data;
 	sc = le16_to_cpu(hdr->seq_ctrl);
-	frag = WLAN_GET_SEQ_FRAG(sc);
+	frag = sc & IEEE80211_SCTL_FRAG;
 
-	if (likely((!(rx->fc & WLAN_FC_MOREFRAG) && frag == 0) ||
+	if (likely((!(rx->fc & IEEE80211_FCTL_MOREFRAGS) && frag == 0) ||
 		   (rx->skb)->len < 24 ||
 		   is_multicast_ether_addr(hdr->addr1))) {
 		/* not fragmented */
@@ -2913,14 +2914,14 @@ ieee80211_rx_h_defragment(struct ieee802
 	}
 	I802_DEBUG_INC(rx->local->rx_handlers_fragments);
 
-	seq = WLAN_GET_SEQ_SEQ(sc);
+	seq = (sc & IEEE80211_SCTL_SEQ) >> 4;
 
 	if (frag == 0) {
 		/* This is the first fragment of a new frame. */
 		entry = ieee80211_reassemble_add(rx->sdata, frag, seq,
 						 rx->u.rx.queue, &(rx->skb));
 		if (rx->key && rx->key->alg == ALG_CCMP &&
-		    (rx->fc & WLAN_FC_ISWEP)) {
+		    (rx->fc & IEEE80211_FCTL_PROTECTED)) {
 			/* Store CCMP PN so that we can verify that the next
 			 * fragment has a sequential PN value. */
 			entry->ccmp = 1;
@@ -2957,9 +2958,9 @@ ieee80211_rx_h_defragment(struct ieee802
 		rpn = rx->key->u.ccmp.rx_pn[rx->u.rx.queue];
 		if (memcmp(pn, rpn, CCMP_PN_LEN) != 0) {
 			printk(KERN_DEBUG "%s: defrag: CCMP PN not sequential"
-			       " A2=" MACSTR " PN=%02x%02x%02x%02x%02x%02x "
+			       " A2=" MAC_FMT " PN=%02x%02x%02x%02x%02x%02x "
 			       "(expected %02x%02x%02x%02x%02x%02x)\n",
-			       rx->dev->name, MAC2STR(hdr->addr2),
+			       rx->dev->name, MAC_ARG(hdr->addr2),
 			       rpn[0], rpn[1], rpn[2], rpn[3], rpn[4], rpn[5],
 			       pn[0], pn[1], pn[2], pn[3], pn[4], pn[5]);
 			return TXRX_DROP;
@@ -2971,7 +2972,7 @@ ieee80211_rx_h_defragment(struct ieee802
 	__skb_queue_tail(&entry->skb_list, rx->skb);
 	entry->last_frag = frag;
 	entry->extra_len += rx->skb->len;
-	if (rx->fc & WLAN_FC_MOREFRAG) {
+	if (rx->fc & IEEE80211_FCTL_MOREFRAGS) {
 		rx->skb = NULL;
 		return TXRX_QUEUED;
 	}
@@ -3027,7 +3028,7 @@ ieee80211_rx_h_check(struct ieee80211_tx
 
 	/* Drop duplicate 802.11 retransmissions (IEEE 802.11 Chap. 9.2.9) */
 	if (rx->sta && !is_multicast_ether_addr(hdr->addr1)) {
-		if (unlikely(rx->fc & WLAN_FC_RETRY &&
+		if (unlikely(rx->fc & IEEE80211_FCTL_RETRY &&
 			     rx->sta->last_seq_ctrl[rx->u.rx.queue] ==
 			     hdr->seq_ctrl)) {
 			if (rx->u.rx.ra_match) {
@@ -3067,12 +3068,13 @@ ieee80211_rx_h_check(struct ieee80211_tx
 	 * deauth/disassoc frames when needed. In addition, hostapd is
 	 * responsible for filtering on both auth and assoc states.
 	 */
-	if (unlikely((WLAN_FC_GET_TYPE(rx->fc) == WLAN_FC_TYPE_DATA ||
-		      (WLAN_FC_GET_TYPE(rx->fc) == WLAN_FC_TYPE_CTRL &&
-		       WLAN_FC_GET_STYPE(rx->fc) == WLAN_FC_STYPE_PSPOLL)) &&
+	if (unlikely(((rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA ||
+		      ((rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_CTL &&
+		       (rx->fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_PSPOLL)) &&
 		     rx->sdata->type != IEEE80211_IF_TYPE_IBSS &&
 		     (!rx->sta || !(rx->sta->flags & WLAN_STA_ASSOC)))) {
-		if ((!(rx->fc & WLAN_FC_FROMDS) && !(rx->fc & WLAN_FC_TODS)) ||
+		if ((!(rx->fc & IEEE80211_FCTL_FROMDS) &&
+		     !(rx->fc & IEEE80211_FCTL_TODS)) ||
 		    !rx->u.rx.ra_match) {
 			/* Drop IBSS frames and frames for other hosts
 			 * silently. */
@@ -3098,7 +3100,7 @@ ieee80211_rx_h_check(struct ieee80211_tx
 			rx->key = rx->sdata->default_key;
 
 		if (rx->local->hw->wep_include_iv &&
-		    rx->fc & WLAN_FC_ISWEP) {
+		    rx->fc & IEEE80211_FCTL_PROTECTED) {
 			int keyidx = ieee80211_wep_get_keyidx(rx->skb);
 
 			if (keyidx >= 0 && keyidx < NUM_DEFAULT_KEYS &&
@@ -3110,12 +3112,12 @@ ieee80211_rx_h_check(struct ieee80211_tx
 				if (!rx->u.rx.ra_match)
 					return TXRX_DROP;
 				printk(KERN_DEBUG "%s: RX WEP frame with "
-				       "unknown keyidx %d (A1=" MACSTR " A2="
-				       MACSTR " A3=" MACSTR ")\n",
+				       "unknown keyidx %d (A1=" MAC_FMT " A2="
+				       MAC_FMT " A3=" MAC_FMT ")\n",
 				       rx->dev->name, keyidx,
-				       MAC2STR(hdr->addr1),
-				       MAC2STR(hdr->addr2),
-				       MAC2STR(hdr->addr3));
+				       MAC_ARG(hdr->addr1),
+				       MAC_ARG(hdr->addr2),
+				       MAC_ARG(hdr->addr3));
 				ieee80211_rx_mgmt(
 					rx->dev, rx->skb, rx->u.rx.status,
 					ieee80211_msg_wep_frame_unknown_key);
@@ -3124,7 +3126,7 @@ ieee80211_rx_h_check(struct ieee80211_tx
 		}
         }
 
-	if (rx->fc & WLAN_FC_ISWEP && rx->key && rx->u.rx.ra_match) {
+	if (rx->fc & IEEE80211_FCTL_PROTECTED && rx->key && rx->u.rx.ra_match) {
 		rx->key->tx_rx_count++;
 		if (unlikely(rx->local->key_tx_rx_threshold &&
 			     rx->key->tx_rx_count >
@@ -3172,20 +3174,20 @@ ieee80211_rx_h_sta_process(struct ieee80
 	sta->rx_bytes += rx->skb->len;
 	sta->last_rssi = rx->u.rx.status->ssi;
 
-	if (!(rx->fc & WLAN_FC_MOREFRAG)) {
+	if (!(rx->fc & IEEE80211_FCTL_MOREFRAGS)) {
 		/* Change STA power saving mode only in the end of a frame
 		 * exchange sequence */
-		if ((sta->flags & WLAN_STA_PS) && !(rx->fc & WLAN_FC_PWRMGT))
+		if ((sta->flags & WLAN_STA_PS) && !(rx->fc & IEEE80211_FCTL_PM))
 			rx->u.rx.sent_ps_buffered += ap_sta_ps_end(dev, sta);
 		else if (!(sta->flags & WLAN_STA_PS) &&
-			 (rx->fc & WLAN_FC_PWRMGT))
+			 (rx->fc & IEEE80211_FCTL_PM))
 			ap_sta_ps_start(dev, sta);
 	}
 
 	/* Drop data::nullfunc frames silently, since they are used only to
 	 * control station power saving mode. */
-	if (WLAN_FC_GET_TYPE(rx->fc) == WLAN_FC_TYPE_DATA &&
-	    WLAN_FC_GET_STYPE(rx->fc) == WLAN_FC_STYPE_NULLFUNC) {
+	if ((rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA &&
+	    (rx->fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_NULLFUNC) {
 		I802_DEBUG_INC(rx->local->rx_handlers_drop_nullfunc);
 		/* Update counter and free packet here to avoid counting this
 		 * as a dropped packed. */
@@ -3201,9 +3203,9 @@ ieee80211_rx_h_sta_process(struct ieee80
 static ieee80211_txrx_result
 ieee80211_rx_h_wep_weak_iv_detection(struct ieee80211_txrx_data *rx)
 {
-	if (!rx->sta || !(rx->fc & WLAN_FC_ISWEP) ||
-	    WLAN_FC_GET_TYPE(rx->fc) != WLAN_FC_TYPE_DATA || !rx->key ||
-	    rx->key->alg != ALG_WEP || !rx->u.rx.ra_match)
+	if (!rx->sta || !(rx->fc & IEEE80211_FCTL_PROTECTED) ||
+	    (rx->fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA ||
+	    !rx->key || rx->key->alg != ALG_WEP || !rx->u.rx.ra_match)
 		return TXRX_CONTINUE;
 
 	/* Check for weak IVs, if hwaccel did not remove IV from the frame */
@@ -3227,10 +3229,10 @@ ieee80211_rx_h_wep_decrypt(struct ieee80
 		return TXRX_CONTINUE;
 
 	if ((rx->key && rx->key->alg != ALG_WEP) ||
-	    !(rx->fc & WLAN_FC_ISWEP) ||
-	    (WLAN_FC_GET_TYPE(rx->fc) != WLAN_FC_TYPE_DATA &&
-	     (WLAN_FC_GET_TYPE(rx->fc) != WLAN_FC_TYPE_MGMT ||
-	      WLAN_FC_GET_STYPE(rx->fc) != WLAN_FC_STYPE_AUTH)))
+	    !(rx->fc & IEEE80211_FCTL_PROTECTED) ||
+	    ((rx->fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA &&
+	     ((rx->fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_MGMT ||
+	      (rx->fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_AUTH)))
 		return TXRX_CONTINUE;
 
 	if (!rx->key) {
@@ -3269,16 +3271,16 @@ ieee80211_rx_h_802_1x_pae(struct ieee802
 	}
 
 	if (unlikely(rx->sdata->ieee802_1x &&
-		     WLAN_FC_GET_TYPE(rx->fc) == WLAN_FC_TYPE_DATA &&
-		     WLAN_FC_GET_STYPE(rx->fc) != WLAN_FC_STYPE_NULLFUNC &&
+		     (rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA &&
+		     (rx->fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_NULLFUNC &&
 		     (!rx->sta || !(rx->sta->flags & WLAN_STA_AUTHORIZED)) &&
 		     !ieee80211_is_eapol(rx->skb))) {
 #ifdef CONFIG_D80211_DEBUG
 		struct ieee80211_hdr *hdr =
 			(struct ieee80211_hdr *) rx->skb->data;
-		printk(KERN_DEBUG "%s: dropped frame from " MACSTR
+		printk(KERN_DEBUG "%s: dropped frame from " MAC_FMT
 		       " (unauthorized port)\n", rx->dev->name,
-		       MAC2STR(hdr->addr2));
+		       MAC_ARG(hdr->addr2));
 #endif /* CONFIG_D80211_DEBUG */
 		return TXRX_DROP;
 	}
@@ -3295,9 +3297,9 @@ ieee80211_rx_h_drop_unencrypted(struct i
 		return TXRX_CONTINUE;
 
 	/* Drop unencrypted frames if key is set. */
-	if (unlikely(!(rx->fc & WLAN_FC_ISWEP) &&
-		     WLAN_FC_GET_TYPE(rx->fc) == WLAN_FC_TYPE_DATA &&
-		     WLAN_FC_GET_STYPE(rx->fc) != WLAN_FC_STYPE_NULLFUNC &&
+	if (unlikely(!(rx->fc & IEEE80211_FCTL_PROTECTED) &&
+		     (rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA &&
+		     (rx->fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_NULLFUNC &&
 		     (rx->key || rx->sdata->drop_unencrypted) &&
 		     (rx->sdata->eapol == 0 ||
 		      !ieee80211_is_eapol(rx->skb)))) {
@@ -3342,7 +3344,7 @@ ieee80211_rx_h_passive_scan(struct ieee8
 		return TXRX_QUEUED;
 	}
 
-	if (WLAN_FC_GET_TYPE(rx->fc) == WLAN_FC_TYPE_DATA)
+	if ((rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA)
 		local->scan.txrx_count++;
         if (unlikely(local->scan.in_scan != 0 &&
 		     rx->u.rx.status->freq == local->scan.freq)) {
@@ -3354,8 +3356,8 @@ ieee80211_rx_h_passive_scan(struct ieee8
                 hdr = (struct ieee80211_hdr *) skb->data;
                 fc = le16_to_cpu(hdr->frame_control);
 
-                if (WLAN_FC_GET_TYPE(fc) == WLAN_FC_TYPE_MGMT &&
-		    WLAN_FC_GET_STYPE(fc) == WLAN_FC_STYPE_BEACON &&
+		if ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT &&
+		    (fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_BEACON &&
 		    rx->dev == local->mdev) {
 			local->scan.rx_beacon++;
 			/* Need to trim FCS here because it is normally
@@ -3392,23 +3394,23 @@ static u8 * ieee80211_get_bssid(struct i
 
 	fc = le16_to_cpu(hdr->frame_control);
 
-	switch (WLAN_FC_GET_TYPE(fc)) {
-	case WLAN_FC_TYPE_DATA:
-		switch (fc & (WLAN_FC_TODS | WLAN_FC_FROMDS)) {
-		case WLAN_FC_TODS:
+	switch (fc & IEEE80211_FCTL_FTYPE) {
+	case IEEE80211_FTYPE_DATA:
+		switch (fc & (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) {
+		case IEEE80211_FCTL_TODS:
 			return hdr->addr1;
-		case (WLAN_FC_TODS | WLAN_FC_FROMDS):
+		case (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS):
 			return NULL;
-		case WLAN_FC_FROMDS:
+		case IEEE80211_FCTL_FROMDS:
 			return hdr->addr2;
 		case 0:
 			return hdr->addr3;
 		}
 		break;
-	case WLAN_FC_TYPE_MGMT:
+	case IEEE80211_FTYPE_MGMT:
 		return hdr->addr3;
-	case WLAN_FC_TYPE_CTRL:
-		if (WLAN_FC_GET_STYPE(fc) == WLAN_FC_STYPE_PSPOLL)
+	case IEEE80211_FTYPE_CTL:
+		if ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_PSPOLL)
 			return hdr->addr1;
 		else
 			return NULL;
@@ -3433,23 +3435,23 @@ static void ieee80211_rx_michael_mic_rep
 	/* TODO: verify that this is not triggered by fragmented
 	 * frames (hw does not verify MIC for them). */
 	printk(KERN_DEBUG "%s: TKIP hwaccel reported Michael MIC "
-	       "failure from " MACSTR " to " MACSTR " keyidx=%d\n",
-	       dev->name, MAC2STR(hdr->addr2), MAC2STR(hdr->addr1), keyidx);
+	       "failure from " MAC_FMT " to " MAC_FMT " keyidx=%d\n",
+	       dev->name, MAC_ARG(hdr->addr2), MAC_ARG(hdr->addr1), keyidx);
 
 	if (sta == NULL) {
 		/* Some hardware versions seem to generate incorrect
 		 * Michael MIC reports; ignore them to avoid triggering
 		 * countermeasures. */
 		printk(KERN_DEBUG "%s: ignored spurious Michael MIC "
-		       "error for unknown address " MACSTR "\n",
-		       dev->name, MAC2STR(hdr->addr2));
+		       "error for unknown address " MAC_FMT "\n",
+		       dev->name, MAC_ARG(hdr->addr2));
 		goto ignore;
 	}
 
-	if (!(rx->fc & WLAN_FC_ISWEP)) {
+	if (!(rx->fc & IEEE80211_FCTL_PROTECTED)) {
 		printk(KERN_DEBUG "%s: ignored spurious Michael MIC "
 		       "error for a frame with no ISWEP flag (src "
-		       MACSTR ")\n", dev->name, MAC2STR(hdr->addr2));
+		       MAC_FMT ")\n", dev->name, MAC_ARG(hdr->addr2));
 		goto ignore;
 	}
 
@@ -3462,19 +3464,19 @@ static void ieee80211_rx_michael_mic_rep
 		 * frames in BSS. */
 		if (keyidx) {
 			printk(KERN_DEBUG "%s: ignored Michael MIC error for "
-			       "a frame with non-zero keyidx (%d) (src " MACSTR
-			       ")\n", dev->name, keyidx, MAC2STR(hdr->addr2));
+			       "a frame with non-zero keyidx (%d) (src " MAC_FMT
+			       ")\n", dev->name, keyidx, MAC_ARG(hdr->addr2));
 			goto ignore;
 		}
 	}
 
-	if (WLAN_FC_GET_TYPE(rx->fc) != WLAN_FC_TYPE_DATA &&
-	    (WLAN_FC_GET_TYPE(rx->fc) != WLAN_FC_TYPE_MGMT ||
-	     WLAN_FC_GET_STYPE(rx->fc) != WLAN_FC_STYPE_AUTH)) {
+	if ((rx->fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA &&
+	    ((rx->fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_MGMT ||
+	     (rx->fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_AUTH)) {
 		printk(KERN_DEBUG "%s: ignored spurious Michael MIC "
 		       "error for a frame that cannot be encrypted "
-		       "(fc=0x%04x) (src " MACSTR ")\n",
-		       dev->name, rx->fc, MAC2STR(hdr->addr2));
+		       "(fc=0x%04x) (src " MAC_FMT ")\n",
+		       dev->name, rx->fc, MAC_ARG(hdr->addr2));
 		goto ignore;
 	}
 
@@ -3486,9 +3488,9 @@ static void ieee80211_rx_michael_mic_rep
 
 		/* TODO: needed parameters: count, key type, TSC */
 		sprintf(buf, "MLME-MICHAELMICFAILURE.indication("
-			"keyid=%d %scast addr=" MACSTR ")",
+			"keyid=%d %scast addr=" MAC_FMT ")",
 			keyidx, hdr->addr1[0] & 0x01 ? "broad" : "uni",
-			MAC2STR(hdr->addr2));
+			MAC_ARG(hdr->addr2));
 		memset(&wrqu, 0, sizeof(wrqu));
 		wrqu.data.length = strlen(buf);
 		wireless_send_event(rx->dev, IWEVCUSTOM, &wrqu, buf);
@@ -3568,8 +3570,8 @@ void __ieee80211_rx(struct net_device *d
 
 	rx.u.rx.status = status;
 	rx.fc = skb->len >= 2 ? le16_to_cpu(hdr->frame_control) : 0;
-	type = WLAN_FC_GET_TYPE(rx.fc);
-	if (type == WLAN_FC_TYPE_DATA || type == WLAN_FC_TYPE_MGMT)
+	type = rx.fc & IEEE80211_FCTL_FTYPE;
+	if (type == IEEE80211_FTYPE_DATA || type == IEEE80211_FTYPE_MGMT)
 		local->dot11ReceivedFragmentCount++;
 	multicast = is_multicast_ether_addr(hdr->addr1);
 
@@ -3662,7 +3664,7 @@ void __ieee80211_rx(struct net_device *d
 				break;
 			case IEEE80211_IF_TYPE_WDS:
 				if (bssid ||
-				    WLAN_FC_GET_TYPE(rx.fc) != WLAN_FC_TYPE_DATA)
+				    (rx.fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA)
 					continue;
 				if (memcmp(sdata->u.wds.remote_addr,
 					   hdr->addr2, ETH_ALEN) != 0)
@@ -4007,7 +4009,7 @@ static void ieee80211_remove_tx_extra(st
 		struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
 		u16 fc = le16_to_cpu(hdr->frame_control);
 		if ((fc & 0x8C) == 0x88) /* QoS Control Field */ {
-			fc &= ~(WLAN_FC_STYPE_QOS_DATA << 4);
+			fc &= ~(IEEE80211_STYPE_QOS_DATA << 4);
 			hdr->frame_control = cpu_to_le16(fc);
 			memmove(skb->data + 2, skb->data, hdrlen - 2);
 			skb_pull(skb, 2);
@@ -4110,8 +4112,8 @@ #endif /* IEEE80211_LEDS */
 	 * are actually fragments, not frames. Update frame counters only for
 	 * the first fragment of the frame. */
 
-	frag = WLAN_GET_SEQ_FRAG(le16_to_cpu(hdr->seq_ctrl));
-	type = WLAN_FC_GET_TYPE(le16_to_cpu(hdr->frame_control));
+	frag = le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_FRAG;
+	type = le16_to_cpu(hdr->frame_control) & IEEE80211_FCTL_FTYPE;
 
         if (status->ack) {
 		if (frag == 0) {
@@ -4129,7 +4131,8 @@ #endif /* IEEE80211_LEDS */
 		 * with a multicast address in the address 1 field of type Data
 		 * or Management. */
 		if (!is_multicast_ether_addr(hdr->addr1) ||
-		    type == WLAN_FC_TYPE_DATA || type == WLAN_FC_TYPE_MGMT)
+		    type == IEEE80211_FTYPE_DATA ||
+		    type == IEEE80211_FTYPE_MGMT)
 			local->dot11TransmittedFragmentCount++;
         } else {
 		if (frag == 0)
@@ -4228,8 +4231,8 @@ int ieee80211_if_update_wds(struct net_d
 		sta_info_free(sta, 0);
 	} else {
 		printk(KERN_DEBUG "%s: could not find STA entry for WDS link "
-		       "peer " MACSTR "\n",
-		       dev->name, MAC2STR(sdata->u.wds.remote_addr));
+		       "peer " MAC_FMT "\n",
+		       dev->name, MAC_ARG(sdata->u.wds.remote_addr));
 	}
 
 	/* Update WDS link data */
diff --git a/net/d80211/ieee80211_i.h b/net/d80211/ieee80211_i.h
index 5a2c6e8..7e021ec 100644
--- a/net/d80211/ieee80211_i.h
+++ b/net/d80211/ieee80211_i.h
@@ -30,13 +30,14 @@ #endif /* ETH_P_PAE */
 
 #define IEEE80211_MAX_SSID_LEN 32
 
+#define WLAN_FC_DATA_PRESENT(fc) (((fc) & 0x4c) == 0x08)
+
 struct ieee80211_local;
 
 #define BIT(x) (1 << (x))
 
 #define IEEE80211_ALIGN32_PAD(a) ((4 - ((a) & 3)) & 3)
 
-
 /* Maximum number of broadcast/multicast frames to buffer when some of the
  * associated stations are using power saving. */
 #define AP_MAX_BC_BUFFER 128
diff --git a/net/d80211/ieee80211_ioctl.c b/net/d80211/ieee80211_ioctl.c
index e43e3b0..dd52555 100644
--- a/net/d80211/ieee80211_ioctl.c
+++ b/net/d80211/ieee80211_ioctl.c
@@ -413,14 +413,14 @@ static int ieee80211_ioctl_set_flags_sta
 		    (param->u.set_flags_sta.flags_or & WLAN_STA_AUTHORIZED) &&
 		    local->hw->set_port_auth(local->mdev, sta->addr, 1))
 			printk(KERN_DEBUG "%s: failed to set low-level driver "
-			       "PAE state (authorized) for " MACSTR "\n",
-			       dev->name, MAC2STR(sta->addr));
+			       "PAE state (authorized) for " MAC_FMT "\n",
+			       dev->name, MAC_ARG(sta->addr));
 		if (local->hw->set_port_auth &&
 		    !(param->u.set_flags_sta.flags_and & WLAN_STA_AUTHORIZED)
 		    && local->hw->set_port_auth(local->mdev, sta->addr, 0))
 			printk(KERN_DEBUG "%s: failed to set low-level driver "
-			       "PAE state (unauthorized) for " MACSTR "\n",
-			       dev->name, MAC2STR(sta->addr));
+			       "PAE state (unauthorized) for " MAC_FMT "\n",
+			       dev->name, MAC_ARG(sta->addr));
 		sta_info_put(sta);
 	}
 
@@ -518,8 +518,8 @@ static int ieee80211_set_encryption(stru
 				*err = HOSTAP_CRYPT_ERR_UNKNOWN_ADDR;
 #ifdef CONFIG_D80211_VERBOSE_DEBUG
 			printk(KERN_DEBUG "%s: set_encrypt - unknown addr "
-			       MACSTR "\n",
-			       dev->name, MAC2STR(sta_addr));
+			       MAC_FMT "\n",
+			       dev->name, MAC_ARG(sta_addr));
 #endif /* CONFIG_D80211_VERBOSE_DEBUG */
 
 			return -ENOENT;
@@ -1164,8 +1164,8 @@ static int ieee80211_ioctl_set_sta_vlan(
 			dev_get_by_name(param->u.set_sta_vlan.vlan_name);
                 if (new_vlan_dev) {
 #if 0
-                        printk("%s: Station " MACSTR " moved to vlan: %s\n",
-                               dev->name, MAC2STR(param->sta_addr),
+			printk("%s: Station " MAC_FMT " moved to vlan: %s\n",
+			       dev->name, MAC_ARG(param->sta_addr),
                                new_vlan_dev->name);
 #endif
                         sta->dev = new_vlan_dev;
diff --git a/net/d80211/ieee80211_scan.c b/net/d80211/ieee80211_scan.c
index 4184abf..445509e 100644
--- a/net/d80211/ieee80211_scan.c
+++ b/net/d80211/ieee80211_scan.c
@@ -319,7 +319,7 @@ void ieee80211_init_scan(struct net_devi
 		return;
 	}
 
-	fc = (WLAN_FC_TYPE_CTRL << 2) | (WLAN_FC_STYPE_CTS << 4);
+	fc = IEEE80211_FTYPE_CTL | IEEE80211_STYPE_CTS;
 	hdr.frame_control = cpu_to_le16(fc);
 	hdr.duration_id =
 		cpu_to_le16(2 * local->hw->channel_change_time +
diff --git a/net/d80211/ieee80211_sta.c b/net/d80211/ieee80211_sta.c
index 13dcdae..8caf352 100644
--- a/net/d80211/ieee80211_sta.c
+++ b/net/d80211/ieee80211_sta.c
@@ -56,7 +56,7 @@ #define IEEE80211_IBSS_INACTIVITY_LIMIT 
 #define IEEE80211_IBSS_MAX_STA_ENTRIES 128
 
 
-#define IEEE80211_FC(type, stype) cpu_to_le16((type << 2) | (stype << 4))
+#define IEEE80211_FC(type, stype) cpu_to_le16(type | stype)
 
 #define ERP_INFO_USE_PROTECTION BIT(1)
 
@@ -426,10 +426,10 @@ static void ieee80211_send_auth(struct n
 
 	mgmt = (struct ieee80211_mgmt *) skb_put(skb, 24 + 6);
 	memset(mgmt, 0, 24 + 6);
-	mgmt->frame_control = IEEE80211_FC(WLAN_FC_TYPE_MGMT,
-					   WLAN_FC_STYPE_AUTH);
+	mgmt->frame_control = IEEE80211_FC(IEEE80211_FTYPE_MGMT,
+					   IEEE80211_STYPE_AUTH);
 	if (encrypt)
-		mgmt->frame_control |= cpu_to_le16(WLAN_FC_ISWEP);
+		mgmt->frame_control |= cpu_to_le16(IEEE80211_FCTL_PROTECTED);
 	memcpy(mgmt->da, ifsta->bssid, ETH_ALEN);
 	memcpy(mgmt->sa, dev->dev_addr, ETH_ALEN);
 	memcpy(mgmt->bssid, ifsta->bssid, ETH_ALEN);
@@ -449,15 +449,15 @@ static void ieee80211_authenticate(struc
 {
 	ifsta->auth_tries++;
 	if (ifsta->auth_tries > IEEE80211_AUTH_MAX_TRIES) {
-		printk(KERN_DEBUG "%s: authentication with AP " MACSTR
+		printk(KERN_DEBUG "%s: authentication with AP " MAC_FMT
 		       " timed out\n",
-		       dev->name, MAC2STR(ifsta->bssid));
+		       dev->name, MAC_ARG(ifsta->bssid));
 		return;
 	}
 
 	ifsta->state = IEEE80211_AUTHENTICATE;
-	printk(KERN_DEBUG "%s: authenticate with AP " MACSTR "\n",
-	       dev->name, MAC2STR(ifsta->bssid));
+	printk(KERN_DEBUG "%s: authenticate with AP " MAC_FMT "\n",
+	       dev->name, MAC_ARG(ifsta->bssid));
 
 	ieee80211_send_auth(dev, ifsta, 1, NULL, 0, 0);
 
@@ -508,16 +508,16 @@ static void ieee80211_send_assoc(struct 
 
 	if (ifsta->prev_bssid_set) {
 		skb_put(skb, 10);
-		mgmt->frame_control = IEEE80211_FC(WLAN_FC_TYPE_MGMT,
-						   WLAN_FC_STYPE_REASSOC_REQ);
+		mgmt->frame_control = IEEE80211_FC(IEEE80211_FTYPE_MGMT,
+						   IEEE80211_STYPE_REASSOC_REQ);
 		mgmt->u.reassoc_req.capab_info = cpu_to_le16(capab);
 		mgmt->u.reassoc_req.listen_interval = cpu_to_le16(1);
 		memcpy(mgmt->u.reassoc_req.current_ap, ifsta->prev_bssid,
 		       ETH_ALEN);
 	} else {
 		skb_put(skb, 4);
-		mgmt->frame_control = IEEE80211_FC(WLAN_FC_TYPE_MGMT,
-						   WLAN_FC_STYPE_ASSOC_REQ);
+		mgmt->frame_control = IEEE80211_FC(IEEE80211_FTYPE_MGMT,
+						   IEEE80211_STYPE_ASSOC_REQ);
 		mgmt->u.assoc_req.capab_info = cpu_to_le16(capab);
 		mgmt->u.assoc_req.listen_interval = cpu_to_le16(1);
 	}
@@ -599,8 +599,8 @@ static void ieee80211_send_deauth(struct
 	memcpy(mgmt->da, ifsta->bssid, ETH_ALEN);
 	memcpy(mgmt->sa, dev->dev_addr, ETH_ALEN);
 	memcpy(mgmt->bssid, ifsta->bssid, ETH_ALEN);
-	mgmt->frame_control = IEEE80211_FC(WLAN_FC_TYPE_MGMT,
-					   WLAN_FC_STYPE_DEAUTH);
+	mgmt->frame_control = IEEE80211_FC(IEEE80211_FTYPE_MGMT,
+					   IEEE80211_STYPE_DEAUTH);
 	skb_put(skb, 2);
 	mgmt->u.deauth.reason_code = cpu_to_le16(reason);
 
@@ -626,8 +626,8 @@ static void ieee80211_send_disassoc(stru
 	memcpy(mgmt->da, ifsta->bssid, ETH_ALEN);
 	memcpy(mgmt->sa, dev->dev_addr, ETH_ALEN);
 	memcpy(mgmt->bssid, ifsta->bssid, ETH_ALEN);
-	mgmt->frame_control = IEEE80211_FC(WLAN_FC_TYPE_MGMT,
-					   WLAN_FC_STYPE_DISASSOC);
+	mgmt->frame_control = IEEE80211_FC(IEEE80211_FTYPE_MGMT,
+					   IEEE80211_STYPE_DISASSOC);
 	skb_put(skb, 2);
 	mgmt->u.disassoc.reason_code = cpu_to_le16(reason);
 
@@ -664,15 +664,15 @@ static void ieee80211_associate(struct n
 {
 	ifsta->assoc_tries++;
 	if (ifsta->assoc_tries > IEEE80211_ASSOC_MAX_TRIES) {
-		printk(KERN_DEBUG "%s: association with AP " MACSTR
+		printk(KERN_DEBUG "%s: association with AP " MAC_FMT
 		       " timed out\n",
-		       dev->name, MAC2STR(ifsta->bssid));
+		       dev->name, MAC_ARG(ifsta->bssid));
 		return;
 	}
 
 	ifsta->state = IEEE80211_ASSOCIATE;
-	printk(KERN_DEBUG "%s: associate with AP " MACSTR "\n",
-	       dev->name, MAC2STR(ifsta->bssid));
+	printk(KERN_DEBUG "%s: associate with AP " MAC_FMT "\n",
+	       dev->name, MAC_ARG(ifsta->bssid));
 	if (ieee80211_privacy_mismatch(dev, ifsta)) {
 		printk(KERN_DEBUG "%s: mismatch in privacy configuration and "
 		       "mixed-cell disabled - abort association\n", dev->name);
@@ -701,8 +701,8 @@ static void ieee80211_associated(struct 
 
 	sta = sta_info_get(local, ifsta->bssid);
 	if (sta == NULL) {
-		printk(KERN_DEBUG "%s: No STA entry for own AP " MACSTR "\n",
-		       dev->name, MAC2STR(ifsta->bssid));
+		printk(KERN_DEBUG "%s: No STA entry for own AP " MAC_FMT "\n",
+		       dev->name, MAC_ARG(ifsta->bssid));
 		disassoc = 1;
 	} else {
 		disassoc = 0;
@@ -710,9 +710,9 @@ static void ieee80211_associated(struct 
 			       sta->last_rx + IEEE80211_MONITORING_INTERVAL)) {
 			if (ifsta->probereq_poll) {
 				printk(KERN_DEBUG "%s: No ProbeResp from "
-				       "current AP " MACSTR " - assume out of "
+				       "current AP " MAC_FMT " - assume out of "
 				       "range\n",
-				       dev->name, MAC2STR(ifsta->bssid));
+				       dev->name, MAC_ARG(ifsta->bssid));
 				disassoc = 1;
 			} else {
 				ieee80211_send_probe_req(dev, ifsta->bssid,
@@ -764,8 +764,8 @@ static void ieee80211_send_probe_req(str
 
 	mgmt = (struct ieee80211_mgmt *) skb_put(skb, 24);
 	memset(mgmt, 0, 24);
-	mgmt->frame_control = IEEE80211_FC(WLAN_FC_TYPE_MGMT,
-					   WLAN_FC_STYPE_PROBE_REQ);
+	mgmt->frame_control = IEEE80211_FC(IEEE80211_FTYPE_MGMT,
+					   IEEE80211_STYPE_PROBE_REQ);
 	memcpy(mgmt->sa, dev->dev_addr, ETH_ALEN);
 	if (dst) {
 		memcpy(mgmt->da, dst, ETH_ALEN);
@@ -866,33 +866,33 @@ static void ieee80211_rx_mgmt_auth(struc
 	if (ifsta->state != IEEE80211_AUTHENTICATE &&
 	    sdata->type != IEEE80211_IF_TYPE_IBSS) {
 		printk(KERN_DEBUG "%s: authentication frame received from "
-		       MACSTR ", but not in authenticate state - ignored\n",
-		       dev->name, MAC2STR(mgmt->sa));
+		       MAC_FMT ", but not in authenticate state - ignored\n",
+		       dev->name, MAC_ARG(mgmt->sa));
 		return;
 	}
 
 	if (len < 24 + 6) {
 		printk(KERN_DEBUG "%s: too short (%zd) authentication frame "
-		       "received from " MACSTR " - ignored\n",
-		       dev->name, len, MAC2STR(mgmt->sa));
+		       "received from " MAC_FMT " - ignored\n",
+		       dev->name, len, MAC_ARG(mgmt->sa));
 		return;
 	}
 
 	if (sdata->type != IEEE80211_IF_TYPE_IBSS &&
 	    memcmp(ifsta->bssid, mgmt->sa, ETH_ALEN) != 0) {
 		printk(KERN_DEBUG "%s: authentication frame received from "
-		       "unknown AP (SA=" MACSTR " BSSID=" MACSTR ") - "
-		       "ignored\n", dev->name, MAC2STR(mgmt->sa),
-		       MAC2STR(mgmt->bssid));
+		       "unknown AP (SA=" MAC_FMT " BSSID=" MAC_FMT ") - "
+		       "ignored\n", dev->name, MAC_ARG(mgmt->sa),
+		       MAC_ARG(mgmt->bssid));
 		return;
 	}
 
 	if (sdata->type != IEEE80211_IF_TYPE_IBSS &&
 	    memcmp(ifsta->bssid, mgmt->bssid, ETH_ALEN) != 0) {
 		printk(KERN_DEBUG "%s: authentication frame received from "
-		       "unknown BSSID (SA=" MACSTR " BSSID=" MACSTR ") - "
-		       "ignored\n", dev->name, MAC2STR(mgmt->sa),
-		       MAC2STR(mgmt->bssid));
+		       "unknown BSSID (SA=" MAC_FMT " BSSID=" MAC_FMT ") - "
+		       "ignored\n", dev->name, MAC_ARG(mgmt->sa),
+		       MAC_ARG(mgmt->bssid));
 		return;
 	}
 
@@ -900,9 +900,9 @@ static void ieee80211_rx_mgmt_auth(struc
 	auth_transaction = le16_to_cpu(mgmt->u.auth.auth_transaction);
 	status_code = le16_to_cpu(mgmt->u.auth.status_code);
 
-	printk(KERN_DEBUG "%s: RX authentication from " MACSTR " (alg=%d "
+	printk(KERN_DEBUG "%s: RX authentication from " MAC_FMT " (alg=%d "
 	       "transaction=%d status=%d)\n",
-	       dev->name, MAC2STR(mgmt->sa), auth_alg,
+	       dev->name, MAC_ARG(mgmt->sa), auth_alg,
 	       auth_transaction, status_code);
 
 	if (sdata->type == IEEE80211_IF_TYPE_IBSS) {
@@ -994,24 +994,24 @@ static void ieee80211_rx_mgmt_deauth(str
 
 	if (len < 24 + 2) {
 		printk(KERN_DEBUG "%s: too short (%zd) deauthentication frame "
-		       "received from " MACSTR " - ignored\n",
-		       dev->name, len, MAC2STR(mgmt->sa));
+		       "received from " MAC_FMT " - ignored\n",
+		       dev->name, len, MAC_ARG(mgmt->sa));
 		return;
 	}
 
 	if (memcmp(ifsta->bssid, mgmt->sa, ETH_ALEN) != 0) {
 		printk(KERN_DEBUG "%s: deauthentication frame received from "
-		       "unknown AP (SA=" MACSTR " BSSID=" MACSTR ") - "
-		       "ignored\n", dev->name, MAC2STR(mgmt->sa),
-		       MAC2STR(mgmt->bssid));
+		       "unknown AP (SA=" MAC_FMT " BSSID=" MAC_FMT ") - "
+		       "ignored\n", dev->name, MAC_ARG(mgmt->sa),
+		       MAC_ARG(mgmt->bssid));
 		return;
 	}
 
 	reason_code = le16_to_cpu(mgmt->u.deauth.reason_code);
 
-	printk(KERN_DEBUG "%s: RX deauthentication from " MACSTR
+	printk(KERN_DEBUG "%s: RX deauthentication from " MAC_FMT
 	       " (reason=%d)\n",
-	       dev->name, MAC2STR(mgmt->sa), reason_code);
+	       dev->name, MAC_ARG(mgmt->sa), reason_code);
 
 	if (ifsta->authenticated) {
 		printk(KERN_DEBUG "%s: deauthenticated\n", dev->name);
@@ -1040,24 +1040,24 @@ static void ieee80211_rx_mgmt_disassoc(s
 
 	if (len < 24 + 2) {
 		printk(KERN_DEBUG "%s: too short (%zd) disassociation frame "
-		       "received from " MACSTR " - ignored\n",
-		       dev->name, len, MAC2STR(mgmt->sa));
+		       "received from " MAC_FMT " - ignored\n",
+		       dev->name, len, MAC_ARG(mgmt->sa));
 		return;
 	}
 
 	if (memcmp(ifsta->bssid, mgmt->sa, ETH_ALEN) != 0) {
 		printk(KERN_DEBUG "%s: disassociation frame received from "
-		       "unknown AP (SA=" MACSTR " BSSID=" MACSTR ") - "
-		       "ignored\n", dev->name, MAC2STR(mgmt->sa),
-		       MAC2STR(mgmt->bssid));
+		       "unknown AP (SA=" MAC_FMT " BSSID=" MAC_FMT ") - "
+		       "ignored\n", dev->name, MAC_ARG(mgmt->sa),
+		       MAC_ARG(mgmt->bssid));
 		return;
 	}
 
 	reason_code = le16_to_cpu(mgmt->u.disassoc.reason_code);
 
-	printk(KERN_DEBUG "%s: RX disassociation from " MACSTR
+	printk(KERN_DEBUG "%s: RX disassociation from " MAC_FMT
 	       " (reason=%d)\n",
-	       dev->name, MAC2STR(mgmt->sa), reason_code);
+	       dev->name, MAC_ARG(mgmt->sa), reason_code);
 
 	if (ifsta->associated)
 		printk(KERN_DEBUG "%s: disassociated\n", dev->name);
@@ -1092,23 +1092,23 @@ static void ieee80211_rx_mgmt_assoc_resp
 
 	if (ifsta->state != IEEE80211_ASSOCIATE) {
 		printk(KERN_DEBUG "%s: association frame received from "
-		       MACSTR ", but not in associate state - ignored\n",
-		       dev->name, MAC2STR(mgmt->sa));
+		       MAC_FMT ", but not in associate state - ignored\n",
+		       dev->name, MAC_ARG(mgmt->sa));
 		return;
 	}
 
 	if (len < 24 + 6) {
 		printk(KERN_DEBUG "%s: too short (%zd) association frame "
-		       "received from " MACSTR " - ignored\n",
-		       dev->name, len, MAC2STR(mgmt->sa));
+		       "received from " MAC_FMT " - ignored\n",
+		       dev->name, len, MAC_ARG(mgmt->sa));
 		return;
 	}
 
 	if (memcmp(ifsta->bssid, mgmt->sa, ETH_ALEN) != 0) {
 		printk(KERN_DEBUG "%s: association frame received from "
-		       "unknown AP (SA=" MACSTR " BSSID=" MACSTR ") - "
-		       "ignored\n", dev->name, MAC2STR(mgmt->sa),
-		       MAC2STR(mgmt->bssid));
+		       "unknown AP (SA=" MAC_FMT " BSSID=" MAC_FMT ") - "
+		       "ignored\n", dev->name, MAC_ARG(mgmt->sa),
+		       MAC_ARG(mgmt->bssid));
 		return;
 	}
 
@@ -1120,9 +1120,9 @@ static void ieee80211_rx_mgmt_assoc_resp
 		       "set\n", dev->name, aid);
 	aid &= ~(BIT(15) | BIT(14));
 
-	printk(KERN_DEBUG "%s: RX %sssocResp from " MACSTR " (capab=0x%x "
+	printk(KERN_DEBUG "%s: RX %sssocResp from " MAC_FMT " (capab=0x%x "
 	       "status=%d aid=%d)\n",
-	       dev->name, reassoc ? "Rea" : "A", MAC2STR(mgmt->sa),
+	       dev->name, reassoc ? "Rea" : "A", MAC_ARG(mgmt->sa),
 	       capab_info, status_code, aid);
 
 	if (status_code != WLAN_STATUS_SUCCESS) {
@@ -1349,9 +1349,9 @@ static void ieee80211_rx_bss_info(struct
 		return; /* ignore ProbeResp to foreign address */
 
 #if 0
-	printk(KERN_DEBUG "%s: RX %s from " MACSTR " to " MACSTR "\n",
+	printk(KERN_DEBUG "%s: RX %s from " MAC_FMT " to " MAC_FMT "\n",
 	       dev->name, beacon ? "Beacon" : "Probe Response",
-	       MAC2STR(mgmt->sa), MAC2STR(mgmt->da));
+	       MAC_ARG(mgmt->sa), MAC_ARG(mgmt->da));
 #endif
 
 	baselen = (u8 *) mgmt->u.beacon.variable - (u8 *) mgmt;
@@ -1370,10 +1370,10 @@ #ifdef IEEE80211_IBSS_DEBUG
 		else
 			tsf = -1LLU;
 		if (time_after(jiffies, last_tsf_debug + 5 * HZ)) {
-			printk(KERN_DEBUG "RX beacon SA=" MACSTR " BSSID="
-			       MACSTR " TSF=0x%llx BCN=0x%llx diff=%lld "
+			printk(KERN_DEBUG "RX beacon SA=" MAC_FMT " BSSID="
+			       MAC_FMT " TSF=0x%llx BCN=0x%llx diff=%lld "
 			       "@%ld\n",
-			       MAC2STR(mgmt->sa), MAC2STR(mgmt->bssid),
+			       MAC_ARG(mgmt->sa), MAC_ARG(mgmt->bssid),
 			       tsf, timestamp, tsf - timestamp, jiffies);
 			last_tsf_debug = jiffies;
 		}
@@ -1433,9 +1433,9 @@ #endif /* IEEE80211_IBSS_DEBUG */
 		}
 		if (sta->supp_rates != prev_rates) {
 			printk(KERN_DEBUG "%s: updated supp_rates set for "
-			       MACSTR " based on beacon info (0x%x & 0x%x -> "
+			       MAC_FMT " based on beacon info (0x%x & 0x%x -> "
 			       "0x%x)\n",
-			       dev->name, MAC2STR(sta->addr), prev_rates,
+			       dev->name, MAC_ARG(sta->addr), prev_rates,
 			       supp_rates, sta->supp_rates);
 		}
 		sta_info_put(sta);
@@ -1618,10 +1618,10 @@ static void ieee80211_rx_mgmt_beacon(str
 	if (use_protection != !!ifsta->use_protection) {
 		if (net_ratelimit()) {
 			printk(KERN_DEBUG "%s: CTS protection %s (BSSID="
-			       MACSTR ")\n",
+			       MAC_FMT ")\n",
 			       dev->name,
 			       use_protection ? "enabled" : "disabled",
-			       MAC2STR(ifsta->bssid));
+			       MAC_ARG(ifsta->bssid));
 		}
 		ifsta->use_protection = use_protection ? 1 : 0;
 		local->cts_protect_erp_frames = use_protection;
@@ -1658,10 +1658,10 @@ static void ieee80211_rx_mgmt_probe_req(
 		tx_last_beacon = 1;
 
 #ifdef IEEE80211_IBSS_DEBUG
-	printk(KERN_DEBUG "%s: RX ProbeReq SA=" MACSTR " DA=" MACSTR " BSSID="
-	       MACSTR " (tx_last_beacon=%d)\n",
-	       dev->name, MAC2STR(mgmt->sa), MAC2STR(mgmt->da),
-	       MAC2STR(mgmt->bssid), tx_last_beacon);
+	printk(KERN_DEBUG "%s: RX ProbeReq SA=" MAC_FMT " DA=" MAC_FMT " BSSID="
+	       MAC_FMT " (tx_last_beacon=%d)\n",
+	       dev->name, MAC_ARG(mgmt->sa), MAC_ARG(mgmt->da),
+	       MAC_ARG(mgmt->bssid), tx_last_beacon);
 #endif /* IEEE80211_IBSS_DEBUG */
 
 	if (!tx_last_beacon)
@@ -1677,8 +1677,8 @@ #endif /* IEEE80211_IBSS_DEBUG */
 	    pos + 2 + pos[1] > end) {
 		if (net_ratelimit()) {
 			printk(KERN_DEBUG "%s: Invalid SSID IE in ProbeReq "
-			       "from " MACSTR "\n",
-			       dev->name, MAC2STR(mgmt->sa));
+			       "from " MAC_FMT "\n",
+			       dev->name, MAC_ARG(mgmt->sa));
 		}
 		return;
 	}
@@ -1697,8 +1697,8 @@ #endif /* IEEE80211_IBSS_DEBUG */
 	resp = (struct ieee80211_mgmt *) skb->data;
 	memcpy(resp->da, mgmt->sa, ETH_ALEN);
 #ifdef IEEE80211_IBSS_DEBUG
-	printk(KERN_DEBUG "%s: Sending ProbeResp to " MACSTR "\n",
-	       dev->name, MAC2STR(resp->da));
+	printk(KERN_DEBUG "%s: Sending ProbeResp to " MAC_FMT "\n",
+	       dev->name, MAC_ARG(resp->da));
 #endif /* IEEE80211_IBSS_DEBUG */
 	ieee80211_sta_tx(dev, skb, 0, 1);
 }
@@ -1726,39 +1726,40 @@ void ieee80211_sta_rx_mgmt(struct net_de
 	mgmt = (struct ieee80211_mgmt *) skb->data;
 	fc = le16_to_cpu(mgmt->frame_control);
 
-	switch (WLAN_FC_GET_STYPE(fc)) {
-	case WLAN_FC_STYPE_PROBE_REQ:
+	switch (fc & IEEE80211_FCTL_STYPE) {
+	case IEEE80211_STYPE_PROBE_REQ:
 		ieee80211_rx_mgmt_probe_req(dev, ifsta, mgmt, skb->len,
 					    rx_status);
 		break;
-	case WLAN_FC_STYPE_PROBE_RESP:
+	case IEEE80211_STYPE_PROBE_RESP:
 		ieee80211_rx_mgmt_probe_resp(dev, mgmt, skb->len, rx_status);
 		break;
-	case WLAN_FC_STYPE_BEACON:
+	case IEEE80211_STYPE_BEACON:
 		ieee80211_rx_mgmt_beacon(dev, mgmt, skb->len, rx_status);
 		break;
-	case WLAN_FC_STYPE_AUTH:
+	case IEEE80211_STYPE_AUTH:
 		ieee80211_rx_mgmt_auth(dev, ifsta, mgmt, skb->len, rx_status);
 		break;
-	case WLAN_FC_STYPE_ASSOC_RESP:
+	case IEEE80211_STYPE_ASSOC_RESP:
 		ieee80211_rx_mgmt_assoc_resp(dev, ifsta, mgmt, skb->len,
 					     rx_status, 0);
 		break;
-	case WLAN_FC_STYPE_REASSOC_RESP:
+	case IEEE80211_STYPE_REASSOC_RESP:
 		ieee80211_rx_mgmt_assoc_resp(dev, ifsta, mgmt, skb->len,
 					     rx_status, 1);
 		break;
-	case WLAN_FC_STYPE_DEAUTH:
+	case IEEE80211_STYPE_DEAUTH:
 		ieee80211_rx_mgmt_deauth(dev, ifsta, mgmt, skb->len,
 					 rx_status);
 		break;
-	case WLAN_FC_STYPE_DISASSOC:
+	case IEEE80211_STYPE_DISASSOC:
 		ieee80211_rx_mgmt_disassoc(dev, ifsta, mgmt, skb->len,
 					   rx_status);
 		break;
 	default:
 		printk(KERN_DEBUG "%s: received unknown management frame - "
-		       "stype=%d\n", dev->name, WLAN_FC_GET_STYPE(fc));
+		       "stype=%d\n", dev->name,
+		       (fc & IEEE80211_FCTL_STYPE) >> 4);
 		break;
 	}
 
@@ -1781,11 +1782,11 @@ void ieee80211_sta_rx_scan(struct net_de
 	mgmt = (struct ieee80211_mgmt *) skb->data;
 	fc = le16_to_cpu(mgmt->frame_control);
 
-	if (WLAN_FC_GET_TYPE(fc) == WLAN_FC_TYPE_MGMT) {
-		if (WLAN_FC_GET_STYPE(fc) == WLAN_FC_STYPE_PROBE_RESP) {
+	if ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) {
+		if ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_PROBE_RESP) {
 			ieee80211_rx_mgmt_probe_resp(dev, mgmt,
 						     skb->len, rx_status);
-		} else if (WLAN_FC_GET_STYPE(fc) == WLAN_FC_STYPE_BEACON) {
+		} else if ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_BEACON) {
 			ieee80211_rx_mgmt_beacon(dev, mgmt, skb->len,
 						 rx_status);
 		}
@@ -1829,8 +1830,8 @@ static void ieee80211_sta_expire(struct 
 		sta = list_entry(ptr, struct sta_info, list);
 		if (time_after(jiffies, sta->last_rx +
 			       IEEE80211_IBSS_INACTIVITY_LIMIT)) {
-			printk(KERN_DEBUG "%s: expiring inactive STA " MACSTR
-			       "\n", dev->name, MAC2STR(sta->addr));
+			printk(KERN_DEBUG "%s: expiring inactive STA " MAC_FMT
+			       "\n", dev->name, MAC_ARG(sta->addr));
 			sta_info_free(sta, 1);
 		}
 	}
@@ -2017,8 +2018,8 @@ static int ieee80211_sta_join_ibss(struc
 		mgmt = (struct ieee80211_mgmt *)
 			skb_put(skb, 24 + sizeof(mgmt->u.beacon));
 		memset(mgmt, 0, 24 + sizeof(mgmt->u.beacon));
-		mgmt->frame_control = IEEE80211_FC(WLAN_FC_TYPE_MGMT,
-						   WLAN_FC_STYPE_BEACON);
+		mgmt->frame_control = IEEE80211_FC(IEEE80211_FTYPE_MGMT,
+						   IEEE80211_STYPE_BEACON);
 		memset(mgmt->da, 0xff, ETH_ALEN);
 		memcpy(mgmt->sa, dev->dev_addr, ETH_ALEN);
 		memcpy(mgmt->bssid, ifsta->bssid, ETH_ALEN);
@@ -2083,8 +2084,8 @@ static int ieee80211_sta_join_ibss(struc
 			mgmt = (struct ieee80211_mgmt *)
 				ifsta->probe_resp->data;
 			mgmt->frame_control =
-				IEEE80211_FC(WLAN_FC_TYPE_MGMT,
-					     WLAN_FC_STYPE_PROBE_RESP);
+				IEEE80211_FC(IEEE80211_FTYPE_MGMT,
+					     IEEE80211_STYPE_PROBE_RESP);
 		} else {
 			printk(KERN_DEBUG "%s: Could not allocate ProbeResp "
 			       "template for IBSS\n", dev->name);
@@ -2147,8 +2148,8 @@ #else
 	bssid[0] |= 0x02;
 #endif
 
-	printk(KERN_DEBUG "%s: Creating new IBSS network, BSSID " MACSTR "\n",
-	       dev->name, MAC2STR(bssid));
+	printk(KERN_DEBUG "%s: Creating new IBSS network, BSSID " MAC_FMT "\n",
+	       dev->name, MAC_ARG(bssid));
 
 	bss = ieee80211_rx_bss_add(dev, bssid);
 	if (bss == NULL)
@@ -2207,8 +2208,8 @@ #endif /* IEEE80211_IBSS_DEBUG */
 		    || !(bss->capability & WLAN_CAPABILITY_IBSS))
 			continue;
 #ifdef IEEE80211_IBSS_DEBUG
-		printk(KERN_DEBUG "   bssid=" MACSTR " found\n",
-		       MAC2STR(bss->bssid));
+		printk(KERN_DEBUG "   bssid=" MAC_FMT " found\n",
+		       MAC_ARG(bss->bssid));
 #endif /* IEEE80211_IBSS_DEBUG */
 		memcpy(bssid, bss->bssid, ETH_ALEN);
 		found = 1;
@@ -2218,14 +2219,14 @@ #endif /* IEEE80211_IBSS_DEBUG */
 	spin_unlock_bh(&local->sta_bss_lock);
 
 #ifdef IEEE80211_IBSS_DEBUG
-	printk(KERN_DEBUG "   sta_find_ibss: selected " MACSTR " current "
-	       MACSTR "\n", MAC2STR(bssid), MAC2STR(ifsta->bssid));
+	printk(KERN_DEBUG "   sta_find_ibss: selected " MAC_FMT " current "
+	       MAC_FMT "\n", MAC_ARG(bssid), MAC_ARG(ifsta->bssid));
 #endif /* IEEE80211_IBSS_DEBUG */
 	if (found && memcmp(ifsta->bssid, bssid, ETH_ALEN) != 0 &&
 	    (bss = ieee80211_rx_bss_get(dev, bssid))) {
-		printk(KERN_DEBUG "%s: Selected IBSS BSSID " MACSTR
+		printk(KERN_DEBUG "%s: Selected IBSS BSSID " MAC_FMT
 		       " based on configured SSID\n",
-		       dev->name, MAC2STR(bssid));
+		       dev->name, MAC_ARG(bssid));
 		return ieee80211_sta_join_ibss(dev, ifsta, bss);
 	}
 #ifdef IEEE80211_IBSS_DEBUG
@@ -2799,7 +2800,7 @@ struct sta_info * ieee80211_ibss_add_sta
 	if (local->num_sta >= IEEE80211_IBSS_MAX_STA_ENTRIES) {
 		if (net_ratelimit()) {
 			printk(KERN_DEBUG "%s: No room for a new IBSS STA "
-			       "entry " MACSTR "\n", dev->name, MAC2STR(addr));
+			       "entry " MAC_FMT "\n", dev->name, MAC_ARG(addr));
 		}
 		return NULL;
 	}
@@ -2818,8 +2819,8 @@ struct sta_info * ieee80211_ibss_add_sta
 	if (sta_dev == NULL)
 		return NULL;
 
-	printk(KERN_DEBUG "%s: Adding new IBSS station " MACSTR " (dev=%s)\n",
-	       dev->name, MAC2STR(addr), sta_dev->name);
+	printk(KERN_DEBUG "%s: Adding new IBSS station " MAC_FMT " (dev=%s)\n",
+	       dev->name, MAC_ARG(addr), sta_dev->name);
 
 	sta = sta_info_add(local, dev, addr);
 	if (sta == NULL) {
diff --git a/net/d80211/ieee80211_sysfs.c b/net/d80211/ieee80211_sysfs.c
index fb1c6b5..9974668 100644
--- a/net/d80211/ieee80211_sysfs.c
+++ b/net/d80211/ieee80211_sysfs.c
@@ -420,7 +420,7 @@ #define IEEE80211_IF_FMT_MAC(name, field
 static ssize_t ieee80211_if_fmt_##name(const struct			\
 			ieee80211_sub_if_data *sdata, char *buf)	\
 {									\
-	return sprintf(buf, MACSTR "\n", MAC2STR(sdata->field));	\
+	return sprintf(buf, MAC_FMT "\n", MAC_ARG(sdata->field));	\
 }
 
 #define __IEEE80211_IF_SHOW(name)					\
diff --git a/net/d80211/rate_control.c b/net/d80211/rate_control.c
index bf797ec..1d40e88 100644
--- a/net/d80211/rate_control.c
+++ b/net/d80211/rate_control.c
@@ -141,9 +141,9 @@ static void rate_control_simple_tx_statu
 	if (status->excessive_retries) {
 		sta->antenna_sel = sta->antenna_sel == 1 ? 2 : 1;
 		if (local->sta_antenna_sel == STA_ANTENNA_SEL_SW_CTRL_DEBUG) {
-			printk(KERN_DEBUG "%s: " MACSTR " TX antenna --> %d "
+			printk(KERN_DEBUG "%s: " MAC_FMT " TX antenna --> %d "
 			       "(@%lu)\n",
-			       dev->name, MAC2STR(hdr->addr1),
+			       dev->name, MAC_ARG(hdr->addr1),
 			       sta->antenna_sel, jiffies);
 		}
 		srctrl->tx_num_failures++;
@@ -196,9 +196,9 @@ #endif
 		srctrl->avg_rate_update = jiffies;
 		if (srctrl->tx_avg_rate_num > 0) {
 #ifdef CONFIG_D80211_VERBOSE_DEBUG
-			printk(KERN_DEBUG "%s: STA " MACSTR " Average rate: "
+			printk(KERN_DEBUG "%s: STA " MAC_FMT " Average rate: "
 			       "%d (%d/%d)\n",
-                               dev->name, MAC2STR(sta->addr),
+			       dev->name, MAC_ARG(sta->addr),
 			       srctrl->tx_avg_rate_sum /
 			       srctrl->tx_avg_rate_num,
 			       srctrl->tx_avg_rate_sum,
@@ -227,7 +227,7 @@ rate_control_simple_get_rate(struct net_
 	memset(extra, 0, sizeof(*extra));
 
 	fc = le16_to_cpu(hdr->frame_control);
-	if (WLAN_FC_GET_TYPE(fc) != WLAN_FC_TYPE_DATA ||
+	if ((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA ||
 	    (hdr->addr1[0] & 0x01)) {
 		/* Send management frames and broadcast/multicast data using
 		 * lowest rate. */
diff --git a/net/d80211/sta_info.c b/net/d80211/sta_info.c
index d3b4b42..7f5febe 100644
--- a/net/d80211/sta_info.c
+++ b/net/d80211/sta_info.c
@@ -51,8 +51,8 @@ static void sta_info_hash_del(struct iee
 	if (s->hnext != NULL)
 		s->hnext = s->hnext->hnext;
 	else
-		printk(KERN_ERR "%s: could not remove STA " MACSTR " from "
-		       "hash table\n", local->mdev->name, MAC2STR(sta->addr));
+		printk(KERN_ERR "%s: could not remove STA " MAC_FMT " from "
+		       "hash table\n", local->mdev->name, MAC_ARG(sta->addr));
 }
 
 static inline struct sta_info *__sta_info_get(struct sta_info *sta)
@@ -139,7 +139,7 @@ struct sta_info * sta_info_add(struct ie
 
 	memset(sta, 0, sizeof(*sta));
 
-	if (kobject_set_name(&sta->kobj, MACSTR, MAC2STR(addr))) {
+	if (kobject_set_name(&sta->kobj, MAC_FMT, MAC_ARG(addr))) {
 		kfree(sta);
 		return NULL;
 	}
@@ -170,8 +170,8 @@ struct sta_info * sta_info_add(struct ie
 	sta->key_idx_compression = HW_KEY_IDX_INVALID;
 
 #ifdef CONFIG_D80211_VERBOSE_DEBUG
-	printk(KERN_DEBUG "%s: Added STA " MACSTR "\n",
-	       local->mdev->name, MAC2STR(addr));
+	printk(KERN_DEBUG "%s: Added STA " MAC_FMT "\n",
+	       local->mdev->name, MAC_ARG(addr));
 #endif /* CONFIG_D80211_VERBOSE_DEBUG */
 
 	if (!in_interrupt()) {
@@ -193,8 +193,8 @@ static void finish_sta_info_free(struct 
 				 struct sta_info *sta)
 {
 #ifdef CONFIG_D80211_VERBOSE_DEBUG
-	printk(KERN_DEBUG "%s: Removed STA " MACSTR "\n",
-	       local->mdev->name, MAC2STR(sta->addr));
+	printk(KERN_DEBUG "%s: Removed STA " MAC_FMT "\n",
+	       local->mdev->name, MAC_ARG(sta->addr));
 #endif /* CONFIG_D80211_VERBOSE_DEBUG */
 
 	rate_control_remove_sta_attrs(local, sta->rate_ctrl_priv, &sta->kobj);
@@ -301,7 +301,7 @@ static void sta_info_cleanup_expire_buff
 		if (skb) {
 			local->total_ps_buffered--;
 			printk(KERN_DEBUG "Buffered frame expired (STA "
-			       MACSTR ")\n", MAC2STR(sta->addr));
+			       MAC_FMT ")\n", MAC_ARG(sta->addr));
 			dev_kfree_skb(skb);
 		} else
 			break;
diff --git a/net/d80211/tkip.c b/net/d80211/tkip.c
index 337e31a..3f0cf57 100644
--- a/net/d80211/tkip.c
+++ b/net/d80211/tkip.c
@@ -276,8 +276,8 @@ #endif /* CONFIG_TKIP_DEBUG */
 	      iv16 <= key->u.tkip.iv16_rx[queue]))) {
 #ifdef CONFIG_TKIP_DEBUG
 		printk(KERN_DEBUG "TKIP replay detected for RX frame from "
-		       MACSTR " (RX IV (%04x,%02x) <= prev. IV (%04x,%02x)\n",
-		       MAC2STR(ta),
+		       MAC_FMT " (RX IV (%04x,%02x) <= prev. IV (%04x,%02x)\n",
+		       MAC_ARG(ta),
 		       iv32, iv16, key->u.tkip.iv32_rx[queue],
 		       key->u.tkip.iv16_rx[queue]);
 #endif /* CONFIG_TKIP_DEBUG */
@@ -298,8 +298,8 @@ #endif /* CONFIG_TKIP_DEBUG */
 #ifdef CONFIG_TKIP_DEBUG
 		{
 			int i;
-			printk(KERN_DEBUG "TKIP decrypt: Phase1 TA=" MACSTR
-			       " TK=", MAC2STR(ta));
+			printk(KERN_DEBUG "TKIP decrypt: Phase1 TA=" MAC_FMT
+			       " TK=", MAC_ARG(ta));
 			for (i = 0; i < 16; i++)
 				printk("%02x ",
 				       key->key[ALG_TKIP_TEMP_ENCR_KEY + i]);
diff --git a/net/d80211/wep.c b/net/d80211/wep.c
index f60e449..0473f3c 100644
--- a/net/d80211/wep.c
+++ b/net/d80211/wep.c
@@ -81,7 +81,7 @@ u8 * ieee80211_wep_add_iv(struct ieee802
 	u8 *newhdr;
 
 	fc = le16_to_cpu(hdr->frame_control);
-	fc |= WLAN_FC_ISWEP;
+	fc |= IEEE80211_FCTL_PROTECTED;
 	hdr->frame_control = cpu_to_le16(fc);
 
 	if ((skb_headroom(skb) < WEP_IV_LEN ||
@@ -227,7 +227,7 @@ int ieee80211_wep_decrypt(struct ieee802
 	int ret = 0;
 
 	fc = le16_to_cpu(hdr->frame_control);
-	if (!(fc & WLAN_FC_ISWEP))
+	if (!(fc & IEEE80211_FCTL_PROTECTED))
 		return -1;
 
 	hdrlen = ieee80211_get_hdrlen(fc);
@@ -281,7 +281,7 @@ int ieee80211_wep_get_keyidx(struct sk_b
 	int hdrlen;
 
 	fc = le16_to_cpu(hdr->frame_control);
-	if (!(fc & WLAN_FC_ISWEP))
+	if (!(fc & IEEE80211_FCTL_PROTECTED))
 		return -1;
 
 	hdrlen = ieee80211_get_hdrlen(fc);
@@ -302,7 +302,7 @@ u8 * ieee80211_wep_is_weak_iv(struct sk_
 	u32 iv;
 
 	fc = le16_to_cpu(hdr->frame_control);
-	if (!(fc & WLAN_FC_ISWEP))
+	if (!(fc & IEEE80211_FCTL_PROTECTED))
 		return NULL;
 
 	hdrlen = ieee80211_get_hdrlen(fc);
diff --git a/net/d80211/wme.c b/net/d80211/wme.c
index 76de062..c3c961d 100644
--- a/net/d80211/wme.c
+++ b/net/d80211/wme.c
@@ -38,7 +38,7 @@ ieee80211_rx_h_parse_qos(struct ieee8021
 		/* frame has qos control */
 		tid = qc[0] & QOS_CONTROL_TID_MASK;
 	} else {
-		if (unlikely(WLAN_FC_GET_TYPE(rx->fc) == WLAN_FC_TYPE_MGMT)) {
+		if (unlikely((rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT)) {
 			/* Separate TID for management frames */
 			tid = NUM_RX_DATA_QUEUES - 1;
 		} else {
@@ -76,7 +76,7 @@ ieee80211_rx_h_remove_qos_control(struct
 	memmove(data + 2, data, ieee80211_get_hdrlen(fc) - 2);
 	hdr = (struct ieee80211_hdr *) skb_pull(rx->skb, 2);
 	/* change frame type to non QOS */
-	rx->fc = fc &= ~(WLAN_FC_STYPE_QOS_DATA << 4);
+	rx->fc = fc &= ~(IEEE80211_STYPE_QOS_DATA << 4);
 	hdr->frame_control = cpu_to_le16(fc);
 
 	return TXRX_CONTINUE;
@@ -184,7 +184,7 @@ static inline int classify80211(struct s
 	const int ieee802_1d_to_ac[8] = { 2, 3, 3, 2, 1, 1, 0, 0 };
 
 	/* see if frame is data or non data frame */
-	if (unlikely(WLAN_FC_GET_TYPE(fc) != WLAN_FC_TYPE_DATA)) {
+	if (unlikely((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA)) {
 		/* management frames go on AC_VO queue, but are sent
 		* without QoS control fields */
 		return IEEE80211_TX_QUEUE_DATA0;
@@ -199,7 +199,7 @@ static inline int classify80211(struct s
 	}
 
 	/* is this a QoS frame? */
-	qos = fc & (WLAN_FC_STYPE_QOS_DATA << 4);
+	qos = fc & (IEEE80211_STYPE_QOS_DATA << 4);
 
 	if (!qos) {
 		skb->priority = 0; /* required for correct WPA/11i MIC */
diff --git a/net/d80211/wpa.c b/net/d80211/wpa.c
index 811a107..7919620 100644
--- a/net/d80211/wpa.c
+++ b/net/d80211/wpa.c
@@ -45,15 +45,15 @@ int ieee80211_get_hdr_info(const struct 
 	fc = le16_to_cpu(hdr->frame_control);
 
 	hdrlen = 24;
-	if ((fc & (WLAN_FC_FROMDS | WLAN_FC_TODS)) ==
-	    (WLAN_FC_FROMDS | WLAN_FC_TODS)) {
+	if ((fc & (IEEE80211_FCTL_FROMDS | IEEE80211_FCTL_TODS)) ==
+	    (IEEE80211_FCTL_FROMDS | IEEE80211_FCTL_TODS)) {
 		hdrlen += ETH_ALEN;
 		*sa = hdr->addr4;
 		*da = hdr->addr3;
-	} else if (fc & WLAN_FC_FROMDS) {
+	} else if (fc & IEEE80211_FCTL_FROMDS) {
 		*sa = hdr->addr3;
 		*da = hdr->addr1;
-	} else if (fc & WLAN_FC_TODS) {
+	} else if (fc & IEEE80211_FCTL_TODS) {
 		*sa = hdr->addr2;
 		*da = hdr->addr3;
 	} else {
@@ -67,10 +67,10 @@ int ieee80211_get_hdr_info(const struct 
 	*data = skb->data + hdrlen;
 	*data_len = skb->len - hdrlen;
 
-	a4_included = (fc & (WLAN_FC_TODS | WLAN_FC_FROMDS)) ==
-		(WLAN_FC_TODS | WLAN_FC_FROMDS);
-	if (WLAN_FC_GET_TYPE(fc) == WLAN_FC_TYPE_DATA &&
-	    WLAN_FC_GET_STYPE(fc) & 0x08) {
+	a4_included = (fc & (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) ==
+		(IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS);
+	if ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA &&
+	    (fc & IEEE80211_FCTL_STYPE) & IEEE80211_STYPE_QOS_DATA) {
 		pos = (u8 *) &hdr->addr4;
 		if (a4_included)
 			pos += 6;
@@ -133,7 +133,7 @@ #endif /* MICHAEL_MIC_HWACCEL */
 	}
 
 #if 0
-	authenticator = fc & WLAN_FC_FROMDS; /* FIX */
+	authenticator = fc & IEEE80211_FCTL_FROMDS; /* FIX */
 #else
 	authenticator = 1;
 #endif
@@ -145,8 +145,8 @@ #endif
 #ifdef CONFIG_HOSTAPD_WPA_TESTING
 	if (tx->sta && tx->sta->wpa_trigger & WPA_TRIGGER_FAIL_TX_MIC) {
 		printk(KERN_INFO "%s: WPA testing - corrupting TX Michael MIC "
-		       "for STA " MACSTR "\n",
-		       tx->dev->name, MAC2STR(tx->sta->addr));
+		       "for STA " MAC_FMT "\n",
+		       tx->dev->name, MAC_ARG(tx->sta->addr));
 		tx->u.tx.control->key_idx = HW_KEY_IDX_INVALID;
 		tx->sta->wpa_trigger &= ~WPA_TRIGGER_FAIL_TX_MIC;
 		tx->wpa_test = 1;
@@ -184,7 +184,7 @@ ieee80211_rx_h_michael_mic_verify(struct
 		return TXRX_CONTINUE;
 
 	if (!rx->key || rx->key->alg != ALG_TKIP ||
-	    !(rx->fc & WLAN_FC_ISWEP) || !WLAN_FC_DATA_PRESENT(fc))
+	    !(rx->fc & IEEE80211_FCTL_PROTECTED) || !WLAN_FC_DATA_PRESENT(fc))
 		return TXRX_CONTINUE;
 
 #ifdef CONFIG_HOSTAPD_WPA_TESTING
@@ -215,7 +215,7 @@ #endif /* MICHAEL_MIC_HWACCEL */
 	data_len -= MICHAEL_MIC_LEN;
 
 #if 0
-	authenticator = fc & WLAN_FC_TODS; /* FIX */
+	authenticator = fc & IEEE80211_FCTL_TODS; /* FIX */
 #else
 	authenticator = 1;
 #endif
@@ -225,8 +225,8 @@ #endif
 #ifdef CONFIG_HOSTAPD_WPA_TESTING
 	if (rx->sta && rx->sta->wpa_trigger & WPA_TRIGGER_FAIL_RX_MIC) {
 		printk(KERN_INFO "%s: WPA testing - corrupting RX Michael MIC "
-		       "for STA " MACSTR "\n",
-		       rx->dev->name, MAC2STR(rx->sta->addr));
+		       "for STA " MAC_FMT "\n",
+		       rx->dev->name, MAC_ARG(rx->sta->addr));
 		rx->sta->wpa_trigger &= ~WPA_TRIGGER_FAIL_RX_MIC;
 		mic[0]++;
 	}
@@ -240,7 +240,7 @@ #endif /* CONFIG_HOSTAPD_WPA_TESTING */
 			return TXRX_DROP;
 
 		printk(KERN_DEBUG "%s: invalid Michael MIC in data frame from "
-		       MACSTR "\n", rx->dev->name, MAC2STR(sa));
+		       MAC_FMT "\n", rx->dev->name, MAC_ARG(sa));
 #ifdef CONFIG_HOSTAPD_WPA_TESTING
 		printk(KERN_DEBUG "   received");
 		for (i = 0; i < MICHAEL_MIC_LEN; i++)
@@ -249,8 +249,8 @@ #ifdef CONFIG_HOSTAPD_WPA_TESTING
 		for (i = 0; i < MICHAEL_MIC_LEN; i++)
 			printk(" %02x", mic[i]);
 		printk("\n");
-		printk(KERN_DEBUG "   SA=" MACSTR " DA=" MACSTR " key",
-		       MAC2STR(sa), MAC2STR(da));
+		printk(KERN_DEBUG "   SA=" MAC_FMT " DA=" MAC_FMT " key",
+		       MAC_ARG(sa), MAC_ARG(da));
 		for (i = 0; i < 8; i++)
 			printk(" %02x", key[i]);
 		printk(" (%d)\n", authenticator);
@@ -266,10 +266,10 @@ #endif /* CONFIG_HOSTAPD_WPA_TESTING */
 			/* TODO: needed parameters: count, key type, TSC */
 			hdr = (struct ieee80211_hdr *) skb->data;
 			sprintf(buf, "MLME-MICHAELMICFAILURE.indication("
-				"keyid=%d %scast addr=" MACSTR ")",
+				"keyid=%d %scast addr=" MAC_FMT ")",
 				rx->key->keyidx,
 				hdr->addr1[0] & 0x01 ? "broad" : "uni",
-				MAC2STR(hdr->addr2));
+				MAC_ARG(hdr->addr2));
 			memset(&wrqu, 0, sizeof(wrqu));
 			wrqu.data.length = strlen(buf);
 			wireless_send_event(rx->dev, IWEVCUSTOM, &wrqu, buf);
@@ -439,8 +439,8 @@ #endif /* CONFIG_HOSTAPD_WPA_TESTING */
 #ifdef CONFIG_HOSTAPD_WPA_TESTING
 	if (tx->sta && tx->sta->wpa_trigger & WPA_TRIGGER_FAIL_TX_ICV) {
 		printk(KERN_INFO "%s: WPA testing - corrupting TX TKIP ICV "
-		       "for STA " MACSTR "\n",
-		       tx->dev->name, MAC2STR(tx->sta->addr));
+		       "for STA " MAC_FMT "\n",
+		       tx->dev->name, MAC_ARG(tx->sta->addr));
 		tx->u.tx.control->key_idx = HW_KEY_IDX_INVALID;
 		tx->sta->wpa_trigger &= ~WPA_TRIGGER_FAIL_TX_ICV;
 		skb->data[skb->len - 1]++;
@@ -472,8 +472,8 @@ ieee80211_rx_h_tkip_decrypt(struct ieee8
 	hdrlen = ieee80211_get_hdrlen(fc);
 
 	if (!rx->key || rx->key->alg != ALG_TKIP ||
-	    !(rx->fc & WLAN_FC_ISWEP) ||
-	    WLAN_FC_GET_TYPE(rx->fc) != WLAN_FC_TYPE_DATA)
+	    !(rx->fc & IEEE80211_FCTL_PROTECTED) ||
+	    (rx->fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA)
 		return TXRX_CONTINUE;
 
 	if (!rx->sta || skb->len - hdrlen < 12)
@@ -482,8 +482,8 @@ ieee80211_rx_h_tkip_decrypt(struct ieee8
 #ifdef CONFIG_HOSTAPD_WPA_TESTING
 	if (rx->sta && rx->sta->wpa_trigger & WPA_TRIGGER_FAIL_RX_ICV) {
 		printk(KERN_INFO "%s: WPA testing - corrupting RX TKIP ICV "
-		       "for STA " MACSTR "\n",
-		       rx->dev->name, MAC2STR(rx->sta->addr));
+		       "for STA " MAC_FMT "\n",
+		       rx->dev->name, MAC_ARG(rx->sta->addr));
 		rx->sta->wpa_trigger &= ~WPA_TRIGGER_FAIL_RX_ICV;
 		skb->data[skb->len - 1]++;
 		wpa_test = 1;
@@ -507,8 +507,8 @@ #endif /* CONFIG_HOSTAPD_WPA_TESTING */
 					  hwaccel, rx->u.rx.queue);
 	if (res != TKIP_DECRYPT_OK || wpa_test) {
 		printk(KERN_DEBUG "%s: TKIP decrypt failed for RX frame from "
-		       MACSTR " (res=%d)\n",
-		       rx->dev->name, MAC2STR(rx->sta->addr), res);
+		       MAC_FMT " (res=%d)\n",
+		       rx->dev->name, MAC_ARG(rx->sta->addr), res);
 		return TXRX_DROP;
 	}
 
@@ -535,8 +535,8 @@ static void ccmp_special_blocks(struct s
 
 	fc_pos = (u8 *) &hdr->frame_control;
 	fc = fc_pos[0] ^ (fc_pos[1] << 8);
-	a4_included = (fc & (WLAN_FC_TODS | WLAN_FC_FROMDS)) ==
-		(WLAN_FC_TODS | WLAN_FC_FROMDS);
+	a4_included = (fc & (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) ==
+		(IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS);
 
 	ieee80211_get_hdr_info(skb, &sa, &da, &qos_tid, &data, &data_len);
 	data_len -= CCMP_HDR_LEN + (encrypted ? CCMP_MIC_LEN : 0);
@@ -772,8 +772,8 @@ ieee80211_rx_h_ccmp_decrypt(struct ieee8
 	hdrlen = ieee80211_get_hdrlen(fc);
 
 	if (!key || key->alg != ALG_CCMP ||
-	    !(rx->fc & WLAN_FC_ISWEP) ||
-	    WLAN_FC_GET_TYPE(rx->fc) != WLAN_FC_TYPE_DATA)
+	    !(rx->fc & IEEE80211_FCTL_PROTECTED) ||
+	    (rx->fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA)
 		return TXRX_CONTINUE;
 
 	data_len = skb->len - hdrlen - CCMP_HDR_LEN - CCMP_MIC_LEN;
@@ -791,9 +791,9 @@ ieee80211_rx_h_ccmp_decrypt(struct ieee8
 #ifdef CONFIG_D80211_DEBUG
 		u8 *ppn = key->u.ccmp.rx_pn[rx->u.rx.queue];
 		printk(KERN_DEBUG "%s: CCMP replay detected for RX frame from "
-		       MACSTR " (RX PN %02x%02x%02x%02x%02x%02x <= prev. PN "
+		       MAC_FMT " (RX PN %02x%02x%02x%02x%02x%02x <= prev. PN "
 		       "%02x%02x%02x%02x%02x%02x)\n", rx->dev->name,
-		       MAC2STR(rx->sta->addr),
+		       MAC_ARG(rx->sta->addr),
 		       pn[0], pn[1], pn[2], pn[3], pn[4], pn[5],
 		       ppn[0], ppn[1], ppn[2], ppn[3], ppn[4], ppn[5]);
 #endif /* CONFIG_D80211_DEBUG */
@@ -819,8 +819,8 @@ #endif /* CONFIG_D80211_DEBUG */
 			    skb->data + skb->len - CCMP_MIC_LEN,
 			    skb->data + hdrlen + CCMP_HDR_LEN)) {
 			printk(KERN_DEBUG "%s: CCMP decrypt failed for RX "
-			       "frame from " MACSTR "\n", rx->dev->name,
-			       MAC2STR(rx->sta->addr));
+			       "frame from " MAC_FMT "\n", rx->dev->name,
+			       MAC_ARG(rx->sta->addr));
 			return TXRX_DROP;
 		}
 	}
-- 
1.3.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 5/5] d80211: Switch d80211 drivers to IEEE80211_ style definitions
  2006-08-01 19:16 [PATCH 0/5] d80211: pull request Jiri Benc
                   ` (3 preceding siblings ...)
  2006-08-01 19:16 ` [PATCH 4/5] d80211: Switch d80211 to IEEE80211_ style names Jiri Benc
@ 2006-08-01 19:17 ` Jiri Benc
  2006-08-02  2:11 ` [PATCH 0/5] d80211: pull request John W. Linville
  5 siblings, 0 replies; 9+ messages in thread
From: Jiri Benc @ 2006-08-01 19:17 UTC (permalink / raw)
  To: John W. Linville; +Cc: netdev

This patch makes the d80211 drivers work with the switch to IEEE80211_ style
names in d80211.h. Based on the patch by Michael Wu <flamingice@sourmilk.net>.

Signed-off-by: Jiri Benc <jbenc@suse.cz>

---

 drivers/net/wireless/d80211/adm8211/adm8211.c      |   10 +++++-----
 drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c |   12 ++++++------
 drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c |   15 +++++++--------
 drivers/net/wireless/d80211/rt2x00/rt2400pci.c     |   12 ++++++------
 drivers/net/wireless/d80211/rt2x00/rt2500pci.c     |   12 ++++++------
 drivers/net/wireless/d80211/rt2x00/rt2500usb.c     |   12 ++++++------
 drivers/net/wireless/d80211/rt2x00/rt61pci.c       |   10 +++++-----
 drivers/net/wireless/d80211/rt2x00/rt73usb.c       |   10 +++++-----
 8 files changed, 46 insertions(+), 47 deletions(-)

d2273a999331dce2e2bf6719e9fbc70ed252ea25
diff --git a/drivers/net/wireless/d80211/adm8211/adm8211.c b/drivers/net/wireless/d80211/adm8211/adm8211.c
index 0a762d7..748eb26 100644
--- a/drivers/net/wireless/d80211/adm8211/adm8211.c
+++ b/drivers/net/wireless/d80211/adm8211/adm8211.c
@@ -1825,7 +1825,7 @@ static int adm8211_tx(struct net_device 
 
 	memcpy(&hdr, skb->data, sizeof(hdr));
 
-	fc = le16_to_cpu(hdr.frame_control) & ~WLAN_FC_ISWEP;
+	fc = le16_to_cpu(hdr.frame_control) & ~IEEE80211_FCTL_PROTECTED;
 	hdrlen = ieee80211_get_hdrlen(fc);
 	skb_pull(skb, hdrlen);
 	payload_len = skb->len;
@@ -1847,7 +1847,7 @@ static int adm8211_tx(struct net_device 
 	txhdr->frame_control = hdr.frame_control;
 
 	len = hdrlen + payload_len + FCS_LEN;
-	if (fc & WLAN_FC_ISWEP)
+	if (fc & IEEE80211_FCTL_PROTECTED)
 		len += 8;
 
 	txhdr->frag = cpu_to_le16(0x0FFF);
@@ -1866,7 +1866,7 @@ static int adm8211_tx(struct net_device 
 	if (control->use_rts_cts)
 		txhdr->header_control |= cpu_to_le16(ADM8211_TXHDRCTL_ENABLE_RTS);
 
-	if (fc & WLAN_FC_ISWEP)
+	if (fc & IEEE80211_FCTL_PROTECTED)
 		txhdr->header_control |= cpu_to_le16(ADM8211_TXHDRCTL_ENABLE_WEP_ENGINE);
 
 	txhdr->retry_limit = control->retry_limit;
@@ -2082,8 +2082,8 @@ #endif
 		goto err_free_desc;
 	}
 
-	printk("%s: hwaddr " MACSTR ", Rev 0x%02x\n",
-	       dev->name, MAC2STR(dev->dev_addr), priv->revid);
+	printk("%s: hwaddr " MAC_FMT ", Rev 0x%02x\n",
+	       dev->name, MAC_ARG(dev->dev_addr), priv->revid);
 
 	return 0;
 
diff --git a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c
index 337544e..59d137b 100644
--- a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c
+++ b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c
@@ -1682,8 +1682,8 @@ static u8 * bcm43xx_generate_probe_resp(
 	*dest_size = dest_pos;
 
 	/* Set the frame control. */
-	dest_data[0] = ((WLAN_FC_TYPE_MGMT << 2) |
-			(WLAN_FC_STYPE_PROBE_RESP << 4));
+	dest_data[0] = (IEEE80211_FTYPE_MGMT |
+			IEEE80211_STYPE_PROBE_RESP);
 	dest_data[1] = 0;
 
 	/* Set the duration field.
@@ -4270,9 +4270,9 @@ static int bcm43xx_add_interface(struct 
 
 	dprintk(KERN_INFO PFX "Virtual interface added "
 			      "(type: 0x%08X, ID: %d, MAC: "
-			      MACSTR ")\n",
+			      MAC_FMT ")\n",
 		conf->type, conf->if_id,
-		MAC2STR((u8 *)conf->mac_addr));
+		MAC_ARG(conf->mac_addr));
 
 out_unlock:
 	spin_unlock_irqrestore(&bcm->irq_lock, flags);
@@ -4301,9 +4301,9 @@ static void bcm43xx_remove_interface(str
 
 	dprintk(KERN_INFO PFX "Virtual interface removed "
 			      "(type: 0x%08X, ID: %d, MAC: "
-			      MACSTR ")\n",
+			      MAC_FMT ")\n",
 		conf->type, conf->if_id,
-		MAC2STR((u8 *)conf->mac_addr));
+		MAC_ARG(conf->mac_addr));
 }
 
 static int bcm43xx_config_interface(struct net_device *net_dev,
diff --git a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c
index 6ebe9fa..3f86079 100644
--- a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c
+++ b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c
@@ -180,12 +180,12 @@ __le16 bcm43xx_calc_duration_id(const st
 	const u16 frame_ctl = le16_to_cpu(wireless_header->frame_control);
 	__le16 duration_id = wireless_header->duration_id;
 
-	switch (WLAN_FC_GET_TYPE(frame_ctl)) {
-	case WLAN_FC_TYPE_DATA:
-	case WLAN_FC_TYPE_MGMT:
+	switch (frame_ctl & IEEE80211_FCTL_FTYPE) {
+	case IEEE80211_FTYPE_DATA:
+	case IEEE80211_FTYPE_MGMT:
 		//TODO: Steal the code from ieee80211, once it is completed there.
 		break;
-	case WLAN_FC_TYPE_CTRL:
+	case IEEE80211_FTYPE_CTL:
 		/* Use the original duration/id. */
 		break;
 	default:
@@ -226,8 +226,7 @@ static void bcm43xx_generate_rts(const s
 				  flen, bitrate);
 	bcm43xx_generate_plcp_hdr((struct bcm43xx_plcp_hdr4 *)(&txhdr->rts_cts_fallback_plcp),
 				  flen, fallback_bitrate);
-	fctl = WLAN_FC_TYPE_CTRL << 2;
-	fctl |= WLAN_FC_STYPE_RTS << 4;
+	fctl = IEEE80211_FTYPE_CTL | IEEE80211_STYPE_RTS;
 	dur = le16_to_cpu(wlhdr->duration_id);
 /*FIXME: should we test for dur==0 here and let it unmodified in this case?
  *       The following assert checks for this case...
@@ -259,8 +258,8 @@ assert(dur);
 
 	txhdr->rts_cts_frame_control = cpu_to_le16(fctl);
 	txhdr->rts_cts_dur = cpu_to_le16(dur);
-//printk(MACSTR "  " MACSTR "  " MACSTR "\n", MAC2STR(wlhdr->addr1), MAC2STR(wlhdr->addr2), MAC2STR(wlhdr->addr3));
-//printk(MACSTR "  " MACSTR "\n", MAC2STR(sa), MAC2STR(da));
+//printk(MAC_FMT "  " MAC_FMT "  " MAC_FMT "\n", MAC_ARG(wlhdr->addr1), MAC_ARG(wlhdr->addr2), MAC_ARG(wlhdr->addr3));
+//printk(MAC_FMT "  " MAC_FMT "\n", MAC_ARG(sa), MAC_ARG(da));
 	memcpy(txhdr->rts_cts_mac1, wlhdr->addr1, ETH_ALEN);//FIXME!
 	memcpy(txhdr->rts_cts_mac2, sa, ETH_ALEN);
 
diff --git a/drivers/net/wireless/d80211/rt2x00/rt2400pci.c b/drivers/net/wireless/d80211/rt2x00/rt2400pci.c
index 4a74d2a..709cdbf 100644
--- a/drivers/net/wireless/d80211/rt2x00/rt2400pci.c
+++ b/drivers/net/wireless/d80211/rt2x00/rt2400pci.c
@@ -1532,7 +1532,7 @@ static struct sk_buff* rt2400pci_create_
 	memcpy(skb_put(skb, IEEE80211_HEADER), hdr, IEEE80211_HEADER);
 	ieee80211hdr = (struct ieee80211_hdr*)skb->data;
 
-	frame_control = (WLAN_FC_TYPE_CTRL  << 2) | (WLAN_FC_STYPE_RTS << 4);
+	frame_control = IEEE80211_FTYPE_CTL | IEEE80211_STYPE_RTS;
 	ieee80211hdr->frame_control = cpu_to_le16(frame_control);
 
 	ieee80211hdr->duration_id += cpu_to_le16(duration);
@@ -1564,7 +1564,7 @@ static void rt2400pci_write_tx_desc(stru
 	 * Check which rate should be used for this frame.
 	 */
 	frame_control = le16_to_cpu(ieee80211hdr->frame_control);
-	if (WLAN_FC_GET_STYPE(frame_control) == WLAN_FC_STYPE_RTS &&
+	if ((frame_control & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_RTS &&
 	    control->rts_cts_rate)
 		tx_rate = control->rts_cts_rate;
 	else
@@ -1577,7 +1577,7 @@ static void rt2400pci_write_tx_desc(stru
 	 * Set IFS to IFS_SIFS when the this is not the first fragment,
 	 * or this fragment came after RTS/CTS.
 	 */
-	if ((WLAN_GET_SEQ_FRAG(le16_to_cpu(ieee80211hdr->seq_ctrl)) > 0) ||
+	if (((le16_to_cpu(ieee80211hdr->seq_ctrl) & IEEE80211_SCTL_FRAG) > 0) ||
 	    control->use_rts_cts)
 		rt2x00_set_field32(&txd->word0, TXD_W0_IFS, IFS_SIFS);
 	else
@@ -1598,7 +1598,7 @@ static void rt2400pci_write_tx_desc(stru
 	else
 		rt2x00_set_field32(&txd->word0, TXD_W0_MORE_FRAG, 0);
 
-	if (WLAN_FC_GET_STYPE(frame_control) == WLAN_FC_STYPE_RTS)
+	if ((frame_control & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_RTS)
 		rt2x00_set_field32(&txd->word0, TXD_W0_RTS, 1);
 	else
 		rt2x00_set_field32(&txd->word0, TXD_W0_RTS, 0);
@@ -1922,7 +1922,7 @@ static int rt2400pci_tx(struct net_devic
 	 */
 	frame_control = le16_to_cpu(ieee80211hdr->frame_control);
 	if (control->use_rts_cts &&
-	    WLAN_FC_GET_STYPE(frame_control) != WLAN_FC_STYPE_RTS) {
+	    (frame_control & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_RTS) {
 		skb_rts = rt2400pci_create_rts(rt2x00dev,
 				ieee80211hdr, control->rts_cts_duration);
 		if (!skb_rts) {
@@ -1957,7 +1957,7 @@ static int rt2400pci_tx(struct net_devic
 	memcpy(rt2x00pci_data_addr(entry), skb->data, skb->len);
 	rt2400pci_write_tx_desc(rt2x00dev, txd, skb, control);
 	memcpy(&entry->tx_status.control, control, sizeof(*control));
-	if (WLAN_FC_GET_STYPE(frame_control) == WLAN_FC_STYPE_RTS)
+	if ((frame_control & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_RTS)
 		SET_FLAG(entry, ENTRY_RTS_FRAME);
 	entry->skb = skb;
 
diff --git a/drivers/net/wireless/d80211/rt2x00/rt2500pci.c b/drivers/net/wireless/d80211/rt2x00/rt2500pci.c
index a2e41a3..8a22968 100644
--- a/drivers/net/wireless/d80211/rt2x00/rt2500pci.c
+++ b/drivers/net/wireless/d80211/rt2x00/rt2500pci.c
@@ -1652,7 +1652,7 @@ static struct sk_buff* rt2500pci_create_
 	memcpy(skb_put(skb, IEEE80211_HEADER), hdr, IEEE80211_HEADER);
 	ieee80211hdr = (struct ieee80211_hdr*)skb->data;
 
-	frame_control = (WLAN_FC_TYPE_CTRL  << 2) | (WLAN_FC_STYPE_RTS << 4);
+	frame_control = IEEE80211_FTYPE_CTL | IEEE80211_STYPE_RTS;
 	ieee80211hdr->frame_control = cpu_to_le16(frame_control);
 
 	ieee80211hdr->duration_id += cpu_to_le16(duration);
@@ -1685,7 +1685,7 @@ static void rt2500pci_write_tx_desc(stru
 	 * Check which rate should be used for this frame.
 	 */
 	frame_control = le16_to_cpu(ieee80211hdr->frame_control);
-	if (WLAN_FC_GET_STYPE(frame_control) == WLAN_FC_STYPE_RTS &&
+	if ((frame_control & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_RTS &&
 	    control->rts_cts_rate)
 		tx_rate = control->rts_cts_rate;
 	else
@@ -1707,7 +1707,7 @@ static void rt2500pci_write_tx_desc(stru
 	 * Set IFS to IFS_SIFS when the this is not the first fragment,
 	 * or this fragment came after RTS/CTS.
 	 */
-	if ((WLAN_GET_SEQ_FRAG(le16_to_cpu(ieee80211hdr->seq_ctrl)) > 0) ||
+	if (((le16_to_cpu(ieee80211hdr->seq_ctrl) & IEEE80211_SCTL_FRAG) > 0) ||
 	    control->use_rts_cts)
 		rt2x00_set_field32(&txd->word0, TXD_W0_IFS, IFS_SIFS);
 	else
@@ -1723,7 +1723,7 @@ static void rt2500pci_write_tx_desc(stru
 	else
 		rt2x00_set_field32(&txd->word0, TXD_W0_MORE_FRAG, 0);
 
-	if (WLAN_FC_GET_STYPE(frame_control) == WLAN_FC_STYPE_RTS)
+	if ((frame_control & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_RTS)
 		rt2x00_set_field32(&txd->word10, TXD_W10_RTS, 1);
 	else
 		rt2x00_set_field32(&txd->word10, TXD_W10_RTS, 0);
@@ -2069,7 +2069,7 @@ static int rt2500pci_tx(struct net_devic
 	 */
 	frame_control = le16_to_cpu(ieee80211hdr->frame_control);
 	if (control->use_rts_cts &&
-	    WLAN_FC_GET_STYPE(frame_control) != WLAN_FC_STYPE_RTS) {
+	    (frame_control & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_RTS) {
 		skb_rts = rt2500pci_create_rts(rt2x00dev,
 				ieee80211hdr, control->rts_cts_duration);
 		if (!skb_rts) {
@@ -2104,7 +2104,7 @@ static int rt2500pci_tx(struct net_devic
 	memcpy(rt2x00pci_data_addr(entry), skb->data, skb->len);
 	rt2500pci_write_tx_desc(rt2x00dev, txd, skb, control);
 	memcpy(&entry->tx_status.control, control, sizeof(*control));
-	if (WLAN_FC_GET_STYPE(frame_control) == WLAN_FC_STYPE_RTS)
+	if ((frame_control & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_RTS)
 		SET_FLAG(entry, ENTRY_RTS_FRAME);
 	entry->skb = skb;
 
diff --git a/drivers/net/wireless/d80211/rt2x00/rt2500usb.c b/drivers/net/wireless/d80211/rt2x00/rt2500usb.c
index ff84d0e..d15a33e 100644
--- a/drivers/net/wireless/d80211/rt2x00/rt2500usb.c
+++ b/drivers/net/wireless/d80211/rt2x00/rt2500usb.c
@@ -1414,7 +1414,7 @@ static struct sk_buff* rt2500usb_create_
 	memcpy(skb_put(skb, IEEE80211_HEADER), hdr, IEEE80211_HEADER);
 	ieee80211hdr = (struct ieee80211_hdr*)skb->data;
 
-	frame_control = (WLAN_FC_TYPE_CTRL  << 2) | (WLAN_FC_STYPE_RTS << 4);
+	frame_control = IEEE80211_FTYPE_CTL | IEEE80211_STYPE_RTS;
 	ieee80211hdr->frame_control = cpu_to_le16(frame_control);
 
 	ieee80211hdr->duration_id += cpu_to_le16(duration);
@@ -1447,7 +1447,7 @@ static void rt2500usb_write_tx_desc(stru
 	 * Check which rate should be used for this frame.
 	 */
 	frame_control = le16_to_cpu(ieee80211hdr->frame_control);
-	if (WLAN_FC_GET_STYPE(frame_control) == WLAN_FC_STYPE_RTS &&
+	if ((frame_control & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_RTS &&
 	    control->rts_cts_rate)
 		tx_rate = control->rts_cts_rate;
 	else
@@ -1468,7 +1468,7 @@ static void rt2500usb_write_tx_desc(stru
 	 * Set IFS to IFS_SIFS when the this is not the first fragment,
 	 * or this fragment came after RTS/CTS.
 	 */
-	if ((WLAN_GET_SEQ_FRAG(le16_to_cpu(ieee80211hdr->seq_ctrl)) > 0) ||
+	if (((le16_to_cpu(ieee80211hdr->seq_ctrl) & IEEE80211_SCTL_FRAG) > 0) ||
 	    control->use_rts_cts)
 		rt2x00_set_field32(&txd->word0, TXD_W0_IFS, IFS_SIFS);
 	else
@@ -1482,7 +1482,7 @@ static void rt2500usb_write_tx_desc(stru
 	else
 		rt2x00_set_field32(&txd->word0, TXD_W0_MORE_FRAG, 0);
 
-	if (WLAN_GET_SEQ_FRAG(ieee80211hdr->seq_ctrl) == 0)
+	if ((ieee80211hdr->seq_ctrl & IEEE80211_SCTL_FRAG) == 0)
 		rt2x00_set_field32(&txd->word0, TXD_W0_NEW_SEQ, 1);
 	else
 		rt2x00_set_field32(&txd->word0, TXD_W0_NEW_SEQ, 0);
@@ -1788,7 +1788,7 @@ static int rt2500usb_tx(struct net_devic
 	 */
 	frame_control = le16_to_cpu(ieee80211hdr->frame_control);
 	if (control->use_rts_cts &&
-	    WLAN_FC_GET_STYPE(frame_control) != WLAN_FC_STYPE_RTS) {
+	    (frame_control & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_RTS) {
 		skb_rts = rt2500usb_create_rts(rt2x00dev,
 				ieee80211hdr, control->rts_cts_duration);
 		if (!skb_rts) {
@@ -1817,7 +1817,7 @@ static int rt2500usb_tx(struct net_devic
 	memcpy(rt2x00usb_txdata_addr(entry), skb->data, skb->len);
 	rt2500usb_write_tx_desc(rt2x00dev, txd, skb, control);
 	memcpy(&entry->tx_status.control, control, sizeof(*control));
-	if (WLAN_FC_GET_STYPE(frame_control) == WLAN_FC_STYPE_RTS)
+	if ((frame_control & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_RTS)
 		SET_FLAG(entry, ENTRY_RTS_FRAME);
 	entry->skb = skb;
 
diff --git a/drivers/net/wireless/d80211/rt2x00/rt61pci.c b/drivers/net/wireless/d80211/rt2x00/rt61pci.c
index 3233658..8bb9de9 100644
--- a/drivers/net/wireless/d80211/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/d80211/rt2x00/rt61pci.c
@@ -2085,7 +2085,7 @@ static struct sk_buff* rt61pci_create_rt
 	memcpy(skb_put(skb, IEEE80211_HEADER), hdr, IEEE80211_HEADER);
 	ieee80211hdr = (struct ieee80211_hdr*)skb->data;
 
-	frame_control = (WLAN_FC_TYPE_CTRL  << 2) | (WLAN_FC_STYPE_RTS << 4);
+	frame_control = IEEE80211_FTYPE_CTL | IEEE80211_STYPE_RTS;
 	ieee80211hdr->frame_control = cpu_to_le16(frame_control);
 
 	ieee80211hdr->duration_id += cpu_to_le16(duration);
@@ -2118,7 +2118,7 @@ static void rt61pci_write_tx_desc(struct
 	 * Check which rate should be used for this frame.
 	 */
 	frame_control = le16_to_cpu(ieee80211hdr->frame_control);
-	if (WLAN_FC_GET_STYPE(frame_control) == WLAN_FC_STYPE_RTS &&
+	if ((frame_control & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_RTS &&
 	    control->rts_cts_rate)
 		tx_rate = control->rts_cts_rate;
 	else
@@ -2140,7 +2140,7 @@ static void rt61pci_write_tx_desc(struct
 	 * Set IFS to IFS_SIFS when the this is not the first fragment,
 	 * or this fragment came after RTS/CTS.
 	 */
-	if ((WLAN_GET_SEQ_FRAG(le16_to_cpu(ieee80211hdr->seq_ctrl)) > 0) ||
+	if (((le16_to_cpu(ieee80211hdr->seq_ctrl) & IEEE80211_SCTL_FRAG) > 0) ||
 	    control->use_rts_cts)
 		rt2x00_set_field32(&txd->word0, TXD_W0_IFS, IFS_SIFS);
 	else
@@ -2548,7 +2548,7 @@ static int rt61pci_tx(struct net_device 
 	 */
 	frame_control = le16_to_cpu(ieee80211hdr->frame_control);
 	if (control->use_rts_cts &&
-	    WLAN_FC_GET_STYPE(frame_control) != WLAN_FC_STYPE_RTS) {
+	    (frame_control & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_RTS) {
 		skb_rts = rt61pci_create_rts(rt2x00dev,
 				ieee80211hdr, control->rts_cts_duration);
 		if (!skb_rts) {
@@ -2578,7 +2578,7 @@ static int rt61pci_tx(struct net_device 
 	memcpy(rt2x00pci_data_addr(entry), skb->data, skb->len);
 	rt61pci_write_tx_desc(rt2x00dev, txd, skb, control);
 	memcpy(&entry->tx_status.control, control, sizeof(*control));
-	if (WLAN_FC_GET_STYPE(frame_control) == WLAN_FC_STYPE_RTS)
+	if ((frame_control & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_RTS)
 		SET_FLAG(entry, ENTRY_RTS_FRAME);
 	entry->skb = skb;
 
diff --git a/drivers/net/wireless/d80211/rt2x00/rt73usb.c b/drivers/net/wireless/d80211/rt2x00/rt73usb.c
index 1106a20..acc5357 100644
--- a/drivers/net/wireless/d80211/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/d80211/rt2x00/rt73usb.c
@@ -1681,7 +1681,7 @@ static struct sk_buff* rt73usb_create_rt
 	memcpy(skb_put(skb, IEEE80211_HEADER), hdr, IEEE80211_HEADER);
 	ieee80211hdr = (struct ieee80211_hdr*)skb->data;
 
-	frame_control = (WLAN_FC_TYPE_CTRL  << 2) | (WLAN_FC_STYPE_RTS << 4);
+	frame_control = IEEE80211_FTYPE_CTL | IEEE80211_STYPE_RTS;
 	ieee80211hdr->frame_control = cpu_to_le16(frame_control);
 
 	ieee80211hdr->duration_id += cpu_to_le16(duration);
@@ -1714,7 +1714,7 @@ static void rt73usb_write_tx_desc(struct
 	 * Check which rate should be used for this frame.
 	 */
 	frame_control = le16_to_cpu(ieee80211hdr->frame_control);
-	if (WLAN_FC_GET_STYPE(frame_control) == WLAN_FC_STYPE_RTS &&
+	if ((frame_control & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_RTS &&
 	    control->rts_cts_rate)
 		tx_rate = control->rts_cts_rate;
 	else
@@ -1736,7 +1736,7 @@ static void rt73usb_write_tx_desc(struct
 	 * Set IFS to IFS_SIFS when the this is not the first fragment,
 	 * or this fragment came after RTS/CTS.
 	 */
-	if ((WLAN_GET_SEQ_FRAG(le16_to_cpu(ieee80211hdr->seq_ctrl)) > 0) ||
+	if (((le16_to_cpu(ieee80211hdr->seq_ctrl) & IEEE80211_SCTL_FRAG) > 0) ||
 	    control->use_rts_cts)
 		rt2x00_set_field32(&txd->word0, TXD_W0_IFS, IFS_SIFS);
 	else
@@ -2072,7 +2072,7 @@ static int rt73usb_tx(struct net_device 
 	 */
 	frame_control = le16_to_cpu(ieee80211hdr->frame_control);
 	if (control->use_rts_cts &&
-	    WLAN_FC_GET_STYPE(frame_control) != WLAN_FC_STYPE_RTS) {
+	    (frame_control & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_RTS) {
 		skb_rts = rt73usb_create_rts(rt2x00dev,
 				ieee80211hdr, control->rts_cts_duration);
 		if (!skb_rts) {
@@ -2101,7 +2101,7 @@ static int rt73usb_tx(struct net_device 
 	memcpy(rt2x00usb_txdata_addr(entry), skb->data, skb->len);
 	rt73usb_write_tx_desc(rt2x00dev, txd, skb, control);
 	memcpy(&entry->tx_status.control, control, sizeof(*control));
-	if (WLAN_FC_GET_STYPE(frame_control) == WLAN_FC_STYPE_RTS)
+	if ((frame_control & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_RTS)
 		SET_FLAG(entry, ENTRY_RTS_FRAME);
 	entry->skb = skb;
 
-- 
1.3.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 0/5] d80211: pull request
  2006-08-01 19:16 [PATCH 0/5] d80211: pull request Jiri Benc
                   ` (4 preceding siblings ...)
  2006-08-01 19:17 ` [PATCH 5/5] d80211: Switch d80211 drivers to IEEE80211_ style definitions Jiri Benc
@ 2006-08-02  2:11 ` John W. Linville
  5 siblings, 0 replies; 9+ messages in thread
From: John W. Linville @ 2006-08-02  2:11 UTC (permalink / raw)
  To: Jiri Benc; +Cc: netdev

On Tue, Aug 01, 2006 at 09:16:54PM +0200, Jiri Benc wrote:
> Please pull from
> git://git.kernel.org/pub/scm/linux/kernel/git/jbenc/dscape.git up
> to obtain following patches:
> 
> Jiri Benc:
>       d80211: make sleeping in hw->config possible
>       d80211: return correct error codes for scan requests
>       d80211: Switch d80211 drivers to IEEE80211_ style definitions
> 
> Karol Lewandowski:
>       d80211: return correct value when loading of rate control module fails
> 
> Michael Wu:
>       d80211: Switch d80211 to IEEE80211_ style names

Pulled and available in wireless-dev.  No fancy announcment, since
all I did was pull Jiri's stuff.

John
-- 
John W. Linville
linville@tuxdriver.com

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 4/5] d80211: Switch d80211 to IEEE80211_ style names
  2006-08-01 19:16 ` [PATCH 4/5] d80211: Switch d80211 to IEEE80211_ style names Jiri Benc
@ 2006-08-04 19:20   ` Jouni Malinen
  2006-08-04 22:10     ` Michael Wu
  0 siblings, 1 reply; 9+ messages in thread
From: Jouni Malinen @ 2006-08-04 19:20 UTC (permalink / raw)
  To: Jiri Benc; +Cc: John W. Linville, netdev, Michael Wu

On Tue, Aug 01, 2006 at 09:16:59PM +0200, Jiri Benc wrote:
> From: Michael Wu <flamingice@sourmilk.net>
> This patch switches the WLAN_ definitions in d80211.h to IEEE80211_ style
> definitions found in ieee80211.h. It also switches to MAC_ARG and MAC_FMT.

This kind of change is more than just search-and-replace since frame
type and subtype macros were using different style (not shifted left in
WLAN_FC_{TYPE,STYPE}_* and shifted left in IEEE80211_{FTYPE,STYPE}_*.
Some of these seemed to be caught in the patch, but not all. At least
the following changes look incorrect. I'm not sure whether this is a
complete list of issues, though, so going through all IEEE80211_STYPE_*
and IEEE80211_FTYPE_* cases again could be a worthwhile exercise.


ieee80211.c:
-		if (WLAN_FC_GET_STYPE(fc) & 0x08)
+		if ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_QOS_DATA)
  (this is supposed to catch all QoS frames, not just QoS data subtype) 

ieee80211.c:
-			fc |= WLAN_FC_STYPE_QOS_DATA << 4;
+			fc |= IEEE80211_STYPE_QOS_DATA << 4;

ieee80211.c:
-			fc &= ~(WLAN_FC_STYPE_QOS_DATA << 4);
+			fc &= ~(IEEE80211_STYPE_QOS_DATA << 4);

wme.c:
-	qos = fc & (WLAN_FC_STYPE_QOS_DATA << 4);
+	qos = fc & (IEEE80211_STYPE_QOS_DATA << 4);

-- 
Jouni Malinen                                            PGP id EFC895FA

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 4/5] d80211: Switch d80211 to IEEE80211_ style names
  2006-08-04 19:20   ` Jouni Malinen
@ 2006-08-04 22:10     ` Michael Wu
  0 siblings, 0 replies; 9+ messages in thread
From: Michael Wu @ 2006-08-04 22:10 UTC (permalink / raw)
  To: Jouni Malinen; +Cc: Jiri Benc, John W. Linville, netdev

[-- Attachment #1: Type: text/plain, Size: 896 bytes --]

On Friday 04 August 2006 12:20, Jouni Malinen wrote:
> On Tue, Aug 01, 2006 at 09:16:59PM +0200, Jiri Benc wrote:
> This kind of change is more than just search-and-replace since frame
> type and subtype macros were using different style (not shifted left in
> WLAN_FC_{TYPE,STYPE}_* and shifted left in IEEE80211_{FTYPE,STYPE}_*.
> Some of these seemed to be caught in the patch, but not all. At least
> the following changes look incorrect. I'm not sure whether this is a
> complete list of issues, though, so going through all IEEE80211_STYPE_*
> and IEEE80211_FTYPE_* cases again could be a worthwhile exercise.
>
Thanks for the heads up. I tried to make sure everything using 
IEEE80211_[FS]TYPE_* was correct, but I'm not very familiar with the QoS 
stuff, so those got through. I'll patch up the QoS problems tonight and look 
through any other problem areas.

-Michael Wu

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2006-08-04 22:10 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-01 19:16 [PATCH 0/5] d80211: pull request Jiri Benc
2006-08-01 19:16 ` [PATCH 1/5] d80211: make sleeping in hw->config possible Jiri Benc
2006-08-01 19:16 ` [PATCH 2/5] d80211: return correct error codes for scan requests Jiri Benc
2006-08-01 19:16 ` [PATCH 3/5] d80211: return correct value when loading of rate control module fails Jiri Benc
2006-08-01 19:16 ` [PATCH 4/5] d80211: Switch d80211 to IEEE80211_ style names Jiri Benc
2006-08-04 19:20   ` Jouni Malinen
2006-08-04 22:10     ` Michael Wu
2006-08-01 19:17 ` [PATCH 5/5] d80211: Switch d80211 drivers to IEEE80211_ style definitions Jiri Benc
2006-08-02  2:11 ` [PATCH 0/5] d80211: pull request John W. Linville

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.