Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a2897552 authored by Johannes Berg's avatar Johannes Berg Committed by David S. Miller
Browse files

[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: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f7c4daed
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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);
	}
+2 −2
Original line number Diff line number Diff line
@@ -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));
+2 −2
Original line number Diff line number Diff line
@@ -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);
	}
+1 −1
Original line number Diff line number Diff line
@@ -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.
+3 −0
Original line number Diff line number Diff line
@@ -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,
Loading