提交 2dd50801 编写于 作者: J Johannes Berg 提交者: John W. Linville

[PATCH] softmac: correctly use netif_carrier_{on,off}

TODO: add callbacks for ifup/ifdown (see mailing list)
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 5c4df6da
...@@ -268,7 +268,7 @@ ieee80211softmac_associated(struct ieee80211softmac_device *mac, ...@@ -268,7 +268,7 @@ ieee80211softmac_associated(struct ieee80211softmac_device *mac,
if (mac->set_bssid_filter) if (mac->set_bssid_filter)
mac->set_bssid_filter(mac->dev, net->bssid); mac->set_bssid_filter(mac->dev, net->bssid);
memcpy(mac->ieee->bssid, net->bssid, ETH_ALEN); memcpy(mac->ieee->bssid, net->bssid, ETH_ALEN);
mac->dev->flags |= IFF_RUNNING; netif_carrier_on(mac->dev);
mac->association_id = le16_to_cpup(&resp->aid); mac->association_id = le16_to_cpup(&resp->aid);
} }
...@@ -346,7 +346,7 @@ ieee80211softmac_handle_disassoc(struct net_device * dev, ...@@ -346,7 +346,7 @@ ieee80211softmac_handle_disassoc(struct net_device * dev,
struct ieee80211softmac_device *mac = ieee80211_priv(dev); struct ieee80211softmac_device *mac = ieee80211_priv(dev);
unsigned long flags; unsigned long flags;
dprintk(KERN_INFO PFX "got disassoc frame\n"); dprintk(KERN_INFO PFX "got disassoc frame\n");
netif_carrier_off(dev);
spin_lock_irqsave(&mac->lock, flags); spin_lock_irqsave(&mac->lock, flags);
mac->associnfo.bssvalid = 0; mac->associnfo.bssvalid = 0;
mac->associated = 0; mac->associated = 0;
......
...@@ -278,6 +278,8 @@ ieee80211softmac_deauth_from_net(struct ieee80211softmac_device *mac, ...@@ -278,6 +278,8 @@ ieee80211softmac_deauth_from_net(struct ieee80211softmac_device *mac,
kfree(net->challenge); kfree(net->challenge);
kfree(net); kfree(net);
/* can't transmit data right now... */
netif_carrier_off(mac->dev);
/* let's try to re-associate */ /* let's try to re-associate */
schedule_work(&mac->associnfo.work); schedule_work(&mac->associnfo.work);
spin_unlock_irqrestore(&mac->lock, flags); spin_unlock_irqrestore(&mac->lock, flags);
......
...@@ -40,21 +40,10 @@ struct net_device *alloc_ieee80211softmac(int sizeof_priv) ...@@ -40,21 +40,10 @@ struct net_device *alloc_ieee80211softmac(int sizeof_priv)
softmac->txrates.default_rate = IEEE80211_CCK_RATE_1MB; softmac->txrates.default_rate = IEEE80211_CCK_RATE_1MB;
softmac->txrates.default_fallback = IEEE80211_CCK_RATE_1MB; softmac->txrates.default_fallback = IEEE80211_CCK_RATE_1MB;
/* should we also assign softmac->mgmt_xmit here so /* to start with, we can't send anything ... */
* that it is always valid? If so, we probably want netif_carrier_off(dev);
* to define a new function for that which just
* wraps ieee80211_tx_frame
*/
/* until associated, we're not ready */
dev->flags &= ~IFF_RUNNING;
return dev; return dev;
err_free_ieee80211:
free_ieee80211(dev);
return NULL;
} }
/* Clears the pending work queue items, stops all scans, etc. */ /* Clears the pending work queue items, stops all scans, etc. */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册