diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2007-09-28 08:01:25 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-10 19:54:15 -0400 |
commit | a28975525016ddcbdaab8225666df1cf2dc9cb2d (patch) | |
tree | 5043b4c24c3c6c40d3d844259e2c47421204436d | |
parent | f7c4daed99fba15e4e48df464031f4ac7c32e4c9 (diff) |
[MAC80211]: add "invalid" interface type
Since I cannot convince the lazy driver authors (hello Michael)
to stop (ab)using the MGMT interface type internally in their
drivers, this patch introduces a new _INVALID type especially
for their use and changes all affected drivers to use it.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/wireless/adm8211.c | 8 | ||||
-rw-r--r-- | drivers/net/wireless/p54common.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/p54pci.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00.h | 2 | ||||
-rw-r--r-- | include/net/mac80211.h | 3 | ||||
-rw-r--r-- | net/mac80211/ieee80211.c | 4 | ||||
-rw-r--r-- | net/mac80211/ieee80211_iface.c | 4 | ||||
-rw-r--r-- | net/mac80211/rx.c | 1 |
8 files changed, 21 insertions, 9 deletions
diff --git a/drivers/net/wireless/adm8211.c b/drivers/net/wireless/adm8211.c index e4fdadb52503..5bf7913aadda 100644 --- a/drivers/net/wireless/adm8211.c +++ b/drivers/net/wireless/adm8211.c | |||
@@ -1555,7 +1555,7 @@ static void adm8211_stop(struct ieee80211_hw *dev) | |||
1555 | { | 1555 | { |
1556 | struct adm8211_priv *priv = dev->priv; | 1556 | struct adm8211_priv *priv = dev->priv; |
1557 | 1557 | ||
1558 | priv->mode = IEEE80211_IF_TYPE_MGMT; | 1558 | priv->mode = IEEE80211_IF_TYPE_INVALID; |
1559 | priv->nar = 0; | 1559 | priv->nar = 0; |
1560 | ADM8211_CSR_WRITE(NAR, 0); | 1560 | ADM8211_CSR_WRITE(NAR, 0); |
1561 | ADM8211_CSR_WRITE(IER, 0); | 1561 | ADM8211_CSR_WRITE(IER, 0); |
@@ -1898,7 +1898,7 @@ static int __devinit adm8211_probe(struct pci_dev *pdev, | |||
1898 | priv->tx_power = 0x40; | 1898 | priv->tx_power = 0x40; |
1899 | priv->lpf_cutoff = 0xFF; | 1899 | priv->lpf_cutoff = 0xFF; |
1900 | priv->lnags_threshold = 0xFF; | 1900 | priv->lnags_threshold = 0xFF; |
1901 | priv->mode = IEEE80211_IF_TYPE_MGMT; | 1901 | priv->mode = IEEE80211_IF_TYPE_INVALID; |
1902 | 1902 | ||
1903 | /* Power-on issue. EEPROM won't read correctly without */ | 1903 | /* Power-on issue. EEPROM won't read correctly without */ |
1904 | if (pdev->revision >= ADM8211_REV_BA) { | 1904 | if (pdev->revision >= ADM8211_REV_BA) { |
@@ -1993,7 +1993,7 @@ static int adm8211_suspend(struct pci_dev *pdev, pm_message_t state) | |||
1993 | struct ieee80211_hw *dev = pci_get_drvdata(pdev); | 1993 | struct ieee80211_hw *dev = pci_get_drvdata(pdev); |
1994 | struct adm8211_priv *priv = dev->priv; | 1994 | struct adm8211_priv *priv = dev->priv; |
1995 | 1995 | ||
1996 | if (priv->mode != IEEE80211_IF_TYPE_MGMT) { | 1996 | if (priv->mode != IEEE80211_IF_TYPE_INVALID) { |
1997 | ieee80211_stop_queues(dev); | 1997 | ieee80211_stop_queues(dev); |
1998 | adm8211_stop(dev); | 1998 | adm8211_stop(dev); |
1999 | } | 1999 | } |
@@ -2011,7 +2011,7 @@ static int adm8211_resume(struct pci_dev *pdev) | |||
2011 | pci_set_power_state(pdev, PCI_D0); | 2011 | pci_set_power_state(pdev, PCI_D0); |
2012 | pci_restore_state(pdev); | 2012 | pci_restore_state(pdev); |
2013 | 2013 | ||
2014 | if (priv->mode != IEEE80211_IF_TYPE_MGMT) { | 2014 | if (priv->mode != IEEE80211_IF_TYPE_INVALID) { |
2015 | adm8211_start(dev); | 2015 | adm8211_start(dev); |
2016 | ieee80211_start_queues(dev); | 2016 | ieee80211_start_queues(dev); |
2017 | } | 2017 | } |
diff --git a/drivers/net/wireless/p54common.c b/drivers/net/wireless/p54common.c index 9befd6cc7911..2c63cf0ad2cd 100644 --- a/drivers/net/wireless/p54common.c +++ b/drivers/net/wireless/p54common.c | |||
@@ -797,7 +797,7 @@ static void p54_stop(struct ieee80211_hw *dev) | |||
797 | kfree_skb(skb); | 797 | kfree_skb(skb); |
798 | } | 798 | } |
799 | priv->stop(dev); | 799 | priv->stop(dev); |
800 | priv->mode = IEEE80211_IF_TYPE_MGMT; | 800 | priv->mode = IEEE80211_IF_TYPE_INVALID; |
801 | } | 801 | } |
802 | 802 | ||
803 | static int p54_add_interface(struct ieee80211_hw *dev, | 803 | static int p54_add_interface(struct ieee80211_hw *dev, |
@@ -949,7 +949,7 @@ struct ieee80211_hw *p54_init_common(size_t priv_data_len) | |||
949 | return NULL; | 949 | return NULL; |
950 | 950 | ||
951 | priv = dev->priv; | 951 | priv = dev->priv; |
952 | priv->mode = IEEE80211_IF_TYPE_MGMT; | 952 | priv->mode = IEEE80211_IF_TYPE_INVALID; |
953 | skb_queue_head_init(&priv->tx_queue); | 953 | skb_queue_head_init(&priv->tx_queue); |
954 | memcpy(priv->channels, p54_channels, sizeof(p54_channels)); | 954 | memcpy(priv->channels, p54_channels, sizeof(p54_channels)); |
955 | memcpy(priv->rates, p54_rates, sizeof(p54_rates)); | 955 | memcpy(priv->rates, p54_rates, sizeof(p54_rates)); |
diff --git a/drivers/net/wireless/p54pci.c b/drivers/net/wireless/p54pci.c index 75927583f766..410b54387f23 100644 --- a/drivers/net/wireless/p54pci.c +++ b/drivers/net/wireless/p54pci.c | |||
@@ -640,7 +640,7 @@ static int p54p_suspend(struct pci_dev *pdev, pm_message_t state) | |||
640 | struct ieee80211_hw *dev = pci_get_drvdata(pdev); | 640 | struct ieee80211_hw *dev = pci_get_drvdata(pdev); |
641 | struct p54p_priv *priv = dev->priv; | 641 | struct p54p_priv *priv = dev->priv; |
642 | 642 | ||
643 | if (priv->common.mode != IEEE80211_IF_TYPE_MGMT) { | 643 | if (priv->common.mode != IEEE80211_IF_TYPE_INVALID) { |
644 | ieee80211_stop_queues(dev); | 644 | ieee80211_stop_queues(dev); |
645 | p54p_stop(dev); | 645 | p54p_stop(dev); |
646 | } | 646 | } |
@@ -658,7 +658,7 @@ static int p54p_resume(struct pci_dev *pdev) | |||
658 | pci_set_power_state(pdev, PCI_D0); | 658 | pci_set_power_state(pdev, PCI_D0); |
659 | pci_restore_state(pdev); | 659 | pci_restore_state(pdev); |
660 | 660 | ||
661 | if (priv->common.mode != IEEE80211_IF_TYPE_MGMT) { | 661 | if (priv->common.mode != IEEE80211_IF_TYPE_INVALID) { |
662 | p54p_open(dev); | 662 | p54p_open(dev); |
663 | ieee80211_start_queues(dev); | 663 | ieee80211_start_queues(dev); |
664 | } | 664 | } |
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h index 511c11c4edda..6262d4e47c56 100644 --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h | |||
@@ -297,7 +297,7 @@ struct interface { | |||
297 | * When set to INVALID_INTERFACE, no interface is configured. | 297 | * When set to INVALID_INTERFACE, no interface is configured. |
298 | */ | 298 | */ |
299 | int type; | 299 | int type; |
300 | #define INVALID_INTERFACE IEEE80211_IF_TYPE_MGMT | 300 | #define INVALID_INTERFACE IEEE80211_IF_TYPE_INVALID |
301 | 301 | ||
302 | /* | 302 | /* |
303 | * MAC of the device. | 303 | * MAC of the device. |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 6ec12bd3a3ec..bd72f59e98fd 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -457,6 +457,8 @@ struct ieee80211_conf { | |||
457 | /** | 457 | /** |
458 | * enum ieee80211_if_types - types of 802.11 network interfaces | 458 | * enum ieee80211_if_types - types of 802.11 network interfaces |
459 | * | 459 | * |
460 | * @IEEE80211_IF_TYPE_INVALID: invalid interface type, not used | ||
461 | * by mac80211 itself | ||
460 | * @IEEE80211_IF_TYPE_AP: interface in AP mode. | 462 | * @IEEE80211_IF_TYPE_AP: interface in AP mode. |
461 | * @IEEE80211_IF_TYPE_MGMT: special interface for communication with hostap | 463 | * @IEEE80211_IF_TYPE_MGMT: special interface for communication with hostap |
462 | * daemon. Drivers should never see this type. | 464 | * daemon. Drivers should never see this type. |
@@ -468,6 +470,7 @@ struct ieee80211_conf { | |||
468 | * will never see this type. | 470 | * will never see this type. |
469 | */ | 471 | */ |
470 | enum ieee80211_if_types { | 472 | enum ieee80211_if_types { |
473 | IEEE80211_IF_TYPE_INVALID, | ||
471 | IEEE80211_IF_TYPE_AP, | 474 | IEEE80211_IF_TYPE_AP, |
472 | IEEE80211_IF_TYPE_MGMT, | 475 | IEEE80211_IF_TYPE_MGMT, |
473 | IEEE80211_IF_TYPE_STA, | 476 | IEEE80211_IF_TYPE_STA, |
diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c index 62877a8f9f0f..373e8b728782 100644 --- a/net/mac80211/ieee80211.c +++ b/net/mac80211/ieee80211.c | |||
@@ -351,6 +351,10 @@ static int ieee80211_open(struct net_device *dev) | |||
351 | case IEEE80211_IF_TYPE_IBSS: | 351 | case IEEE80211_IF_TYPE_IBSS: |
352 | /* no special treatment */ | 352 | /* no special treatment */ |
353 | break; | 353 | break; |
354 | case IEEE80211_IF_TYPE_INVALID: | ||
355 | /* cannot happen */ | ||
356 | WARN_ON(1); | ||
357 | break; | ||
354 | } | 358 | } |
355 | 359 | ||
356 | if (local->open_count == 0) { | 360 | if (local->open_count == 0) { |
diff --git a/net/mac80211/ieee80211_iface.c b/net/mac80211/ieee80211_iface.c index 08c1e188d4b8..ef618e947e2b 100644 --- a/net/mac80211/ieee80211_iface.c +++ b/net/mac80211/ieee80211_iface.c | |||
@@ -243,6 +243,10 @@ void ieee80211_if_reinit(struct net_device *dev) | |||
243 | ieee80211_if_sdata_deinit(sdata); | 243 | ieee80211_if_sdata_deinit(sdata); |
244 | 244 | ||
245 | switch (sdata->type) { | 245 | switch (sdata->type) { |
246 | case IEEE80211_IF_TYPE_INVALID: | ||
247 | /* cannot happen */ | ||
248 | WARN_ON(1); | ||
249 | break; | ||
246 | case IEEE80211_IF_TYPE_MGMT: | 250 | case IEEE80211_IF_TYPE_MGMT: |
247 | /* nothing to do */ | 251 | /* nothing to do */ |
248 | break; | 252 | break; |
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 03635fb3e9b6..b4a62fe3ccbd 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
@@ -1453,6 +1453,7 @@ static int prepare_for_handlers(struct ieee80211_sub_if_data *sdata, | |||
1453 | case IEEE80211_IF_TYPE_MNTR: | 1453 | case IEEE80211_IF_TYPE_MNTR: |
1454 | /* take everything */ | 1454 | /* take everything */ |
1455 | break; | 1455 | break; |
1456 | case IEEE80211_IF_TYPE_INVALID: | ||
1456 | case IEEE80211_IF_TYPE_MGMT: | 1457 | case IEEE80211_IF_TYPE_MGMT: |
1457 | /* should never get here */ | 1458 | /* should never get here */ |
1458 | WARN_ON(1); | 1459 | WARN_ON(1); |