Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a28975525016ddcbdaab8225666df1cf2dc9cb2d
Commit:     a28975525016ddcbdaab8225666df1cf2dc9cb2d
Parent:     f7c4daed99fba15e4e48df464031f4ac7c32e4c9
Author:     Johannes Berg <[EMAIL PROTECTED]>
AuthorDate: Fri Sep 28 14:01:25 2007 +0200
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Wed Oct 10 16:54:15 2007 -0700

    [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 <[EMAIL PROTECTED]>
    Signed-off-by: John W. Linville <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 drivers/net/wireless/adm8211.c       |    8 ++++----
 drivers/net/wireless/p54common.c     |    4 ++--
 drivers/net/wireless/p54pci.c        |    4 ++--
 drivers/net/wireless/rt2x00/rt2x00.h |    2 +-
 include/net/mac80211.h               |    3 +++
 net/mac80211/ieee80211.c             |    4 ++++
 net/mac80211/ieee80211_iface.c       |    4 ++++
 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 e4fdadb..5bf7913 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)
 {
        struct adm8211_priv *priv = dev->priv;
 
-       priv->mode = IEEE80211_IF_TYPE_MGMT;
+       priv->mode = IEEE80211_IF_TYPE_INVALID;
        priv->nar = 0;
        ADM8211_CSR_WRITE(NAR, 0);
        ADM8211_CSR_WRITE(IER, 0);
@@ -1898,7 +1898,7 @@ static int __devinit adm8211_probe(struct pci_dev *pdev,
        priv->tx_power = 0x40;
        priv->lpf_cutoff = 0xFF;
        priv->lnags_threshold = 0xFF;
-       priv->mode = IEEE80211_IF_TYPE_MGMT;
+       priv->mode = IEEE80211_IF_TYPE_INVALID;
 
        /* Power-on issue. EEPROM won't read correctly without */
        if (pdev->revision >= ADM8211_REV_BA) {
@@ -1993,7 +1993,7 @@ static int adm8211_suspend(struct pci_dev *pdev, 
pm_message_t state)
        struct ieee80211_hw *dev = pci_get_drvdata(pdev);
        struct adm8211_priv *priv = dev->priv;
 
-       if (priv->mode != IEEE80211_IF_TYPE_MGMT) {
+       if (priv->mode != IEEE80211_IF_TYPE_INVALID) {
                ieee80211_stop_queues(dev);
                adm8211_stop(dev);
        }
@@ -2011,7 +2011,7 @@ static int adm8211_resume(struct pci_dev *pdev)
        pci_set_power_state(pdev, PCI_D0);
        pci_restore_state(pdev);
 
-       if (priv->mode != IEEE80211_IF_TYPE_MGMT) {
+       if (priv->mode != IEEE80211_IF_TYPE_INVALID) {
                adm8211_start(dev);
                ieee80211_start_queues(dev);
        }
diff --git a/drivers/net/wireless/p54common.c b/drivers/net/wireless/p54common.c
index 9befd6c..2c63cf0 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)
                kfree_skb(skb);
        }
        priv->stop(dev);
-       priv->mode = IEEE80211_IF_TYPE_MGMT;
+       priv->mode = IEEE80211_IF_TYPE_INVALID;
 }
 
 static int p54_add_interface(struct ieee80211_hw *dev,
@@ -949,7 +949,7 @@ struct ieee80211_hw *p54_init_common(size_t priv_data_len)
                return NULL;
 
        priv = dev->priv;
-       priv->mode = IEEE80211_IF_TYPE_MGMT;
+       priv->mode = IEEE80211_IF_TYPE_INVALID;
        skb_queue_head_init(&priv->tx_queue);
        memcpy(priv->channels, p54_channels, sizeof(p54_channels));
        memcpy(priv->rates, p54_rates, sizeof(p54_rates));
diff --git a/drivers/net/wireless/p54pci.c b/drivers/net/wireless/p54pci.c
index 7592758..410b543 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)
        struct ieee80211_hw *dev = pci_get_drvdata(pdev);
        struct p54p_priv *priv = dev->priv;
 
-       if (priv->common.mode != IEEE80211_IF_TYPE_MGMT) {
+       if (priv->common.mode != IEEE80211_IF_TYPE_INVALID) {
                ieee80211_stop_queues(dev);
                p54p_stop(dev);
        }
@@ -658,7 +658,7 @@ static int p54p_resume(struct pci_dev *pdev)
        pci_set_power_state(pdev, PCI_D0);
        pci_restore_state(pdev);
 
-       if (priv->common.mode != IEEE80211_IF_TYPE_MGMT) {
+       if (priv->common.mode != IEEE80211_IF_TYPE_INVALID) {
                p54p_open(dev);
                ieee80211_start_queues(dev);
        }
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h 
b/drivers/net/wireless/rt2x00/rt2x00.h
index 511c11c..6262d4e 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -297,7 +297,7 @@ struct interface {
         * When set to INVALID_INTERFACE, no interface is configured.
         */
        int type;
-#define INVALID_INTERFACE      IEEE80211_IF_TYPE_MGMT
+#define INVALID_INTERFACE      IEEE80211_IF_TYPE_INVALID
 
        /*
         * MAC of the device.
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 6ec12bd..bd72f59 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -457,6 +457,8 @@ struct ieee80211_conf {
 /**
  * enum ieee80211_if_types - types of 802.11 network interfaces
  *
+ * @IEEE80211_IF_TYPE_INVALID: invalid interface type, not used
+ *     by mac80211 itself
  * @IEEE80211_IF_TYPE_AP: interface in AP mode.
  * @IEEE80211_IF_TYPE_MGMT: special interface for communication with hostap
  *     daemon. Drivers should never see this type.
@@ -468,6 +470,7 @@ struct ieee80211_conf {
  *     will never see this type.
  */
 enum ieee80211_if_types {
+       IEEE80211_IF_TYPE_INVALID,
        IEEE80211_IF_TYPE_AP,
        IEEE80211_IF_TYPE_MGMT,
        IEEE80211_IF_TYPE_STA,
diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c
index 62877a8..373e8b7 100644
--- a/net/mac80211/ieee80211.c
+++ b/net/mac80211/ieee80211.c
@@ -351,6 +351,10 @@ static int ieee80211_open(struct net_device *dev)
        case IEEE80211_IF_TYPE_IBSS:
                /* no special treatment */
                break;
+       case IEEE80211_IF_TYPE_INVALID:
+               /* cannot happen */
+               WARN_ON(1);
+               break;
        }
 
        if (local->open_count == 0) {
diff --git a/net/mac80211/ieee80211_iface.c b/net/mac80211/ieee80211_iface.c
index 08c1e18..ef618e9 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)
        ieee80211_if_sdata_deinit(sdata);
 
        switch (sdata->type) {
+       case IEEE80211_IF_TYPE_INVALID:
+               /* cannot happen */
+               WARN_ON(1);
+               break;
        case IEEE80211_IF_TYPE_MGMT:
                /* nothing to do */
                break;
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 03635fb..b4a62fe 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,
        case IEEE80211_IF_TYPE_MNTR:
                /* take everything */
                break;
+       case IEEE80211_IF_TYPE_INVALID:
        case IEEE80211_IF_TYPE_MGMT:
                /* should never get here */
                WARN_ON(1);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to