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

Commit 2dd50801 authored by Johannes Berg's avatar Johannes Berg Committed by John W. Linville
Browse files

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



TODO: add callbacks for ifup/ifdown (see mailing list)

Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 5c4df6da
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -268,7 +268,7 @@ ieee80211softmac_associated(struct ieee80211softmac_device *mac,
	if (mac->set_bssid_filter)
		mac->set_bssid_filter(mac->dev, net->bssid);
	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);
}
@@ -346,7 +346,7 @@ ieee80211softmac_handle_disassoc(struct net_device * dev,
	struct ieee80211softmac_device *mac = ieee80211_priv(dev);
	unsigned long flags;
	dprintk(KERN_INFO PFX "got disassoc frame\n");
	
	netif_carrier_off(dev);
	spin_lock_irqsave(&mac->lock, flags);
	mac->associnfo.bssvalid = 0;
	mac->associated = 0;
+2 −0
Original line number Diff line number Diff line
@@ -278,6 +278,8 @@ ieee80211softmac_deauth_from_net(struct ieee80211softmac_device *mac,
		kfree(net->challenge);
	kfree(net);
	
	/* can't transmit data right now... */
	netif_carrier_off(mac->dev);
	/* let's try to re-associate */
	schedule_work(&mac->associnfo.work);
	spin_unlock_irqrestore(&mac->lock, flags);
+2 −13
Original line number Diff line number Diff line
@@ -40,21 +40,10 @@ struct net_device *alloc_ieee80211softmac(int sizeof_priv)
	softmac->txrates.default_rate = IEEE80211_CCK_RATE_1MB;
	softmac->txrates.default_fallback = IEEE80211_CCK_RATE_1MB;

	/* should we also assign softmac->mgmt_xmit here so
	 * that it is always valid? If so, we probably want
	 * to define a new function for that which just
	 * wraps ieee80211_tx_frame
	 */
	
	/* until associated, we're not ready */
	dev->flags &= ~IFF_RUNNING;
	/* to start with, we can't send anything ... */
	netif_carrier_off(dev);
	
	return dev;

err_free_ieee80211:
 	free_ieee80211(dev);

	return NULL;
}

/* Clears the pending work queue items, stops all scans, etc. */