diff options
Diffstat (limited to 'drivers/net/wireless/rtl818x/rtl8180_dev.c')
-rw-r--r-- | drivers/net/wireless/rtl818x/rtl8180_dev.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/drivers/net/wireless/rtl818x/rtl8180_dev.c b/drivers/net/wireless/rtl818x/rtl8180_dev.c index 8a40a1439984..f01f1ef9e3be 100644 --- a/drivers/net/wireless/rtl818x/rtl8180_dev.c +++ b/drivers/net/wireless/rtl818x/rtl8180_dev.c | |||
@@ -82,8 +82,6 @@ static const struct ieee80211_channel rtl818x_channels[] = { | |||
82 | }; | 82 | }; |
83 | 83 | ||
84 | 84 | ||
85 | |||
86 | |||
87 | void rtl8180_write_phy(struct ieee80211_hw *dev, u8 addr, u32 data) | 85 | void rtl8180_write_phy(struct ieee80211_hw *dev, u8 addr, u32 data) |
88 | { | 86 | { |
89 | struct rtl8180_priv *priv = dev->priv; | 87 | struct rtl8180_priv *priv = dev->priv; |
@@ -615,7 +613,6 @@ static int rtl8180_start(struct ieee80211_hw *dev) | |||
615 | reg |= RTL818X_CMD_TX_ENABLE; | 613 | reg |= RTL818X_CMD_TX_ENABLE; |
616 | rtl818x_iowrite8(priv, &priv->map->CMD, reg); | 614 | rtl818x_iowrite8(priv, &priv->map->CMD, reg); |
617 | 615 | ||
618 | priv->mode = NL80211_IFTYPE_MONITOR; | ||
619 | return 0; | 616 | return 0; |
620 | 617 | ||
621 | err_free_rings: | 618 | err_free_rings: |
@@ -633,8 +630,6 @@ static void rtl8180_stop(struct ieee80211_hw *dev) | |||
633 | u8 reg; | 630 | u8 reg; |
634 | int i; | 631 | int i; |
635 | 632 | ||
636 | priv->mode = NL80211_IFTYPE_UNSPECIFIED; | ||
637 | |||
638 | rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0); | 633 | rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0); |
639 | 634 | ||
640 | reg = rtl818x_ioread8(priv, &priv->map->CMD); | 635 | reg = rtl818x_ioread8(priv, &priv->map->CMD); |
@@ -661,12 +656,14 @@ static int rtl8180_add_interface(struct ieee80211_hw *dev, | |||
661 | { | 656 | { |
662 | struct rtl8180_priv *priv = dev->priv; | 657 | struct rtl8180_priv *priv = dev->priv; |
663 | 658 | ||
664 | if (priv->mode != NL80211_IFTYPE_MONITOR) | 659 | /* |
665 | return -EOPNOTSUPP; | 660 | * We only support one active interface at a time. |
661 | */ | ||
662 | if (priv->vif) | ||
663 | return -EBUSY; | ||
666 | 664 | ||
667 | switch (conf->type) { | 665 | switch (conf->type) { |
668 | case NL80211_IFTYPE_STATION: | 666 | case NL80211_IFTYPE_STATION: |
669 | priv->mode = conf->type; | ||
670 | break; | 667 | break; |
671 | default: | 668 | default: |
672 | return -EOPNOTSUPP; | 669 | return -EOPNOTSUPP; |
@@ -688,7 +685,6 @@ static void rtl8180_remove_interface(struct ieee80211_hw *dev, | |||
688 | struct ieee80211_if_init_conf *conf) | 685 | struct ieee80211_if_init_conf *conf) |
689 | { | 686 | { |
690 | struct rtl8180_priv *priv = dev->priv; | 687 | struct rtl8180_priv *priv = dev->priv; |
691 | priv->mode = NL80211_IFTYPE_MONITOR; | ||
692 | priv->vif = NULL; | 688 | priv->vif = NULL; |
693 | } | 689 | } |
694 | 690 | ||