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

Commit cf97fa9f authored by Kalle Valo's avatar Kalle Valo
Browse files

ath6kl: don't power down hardware when interface is down



Jouni reported that my patch "ath6kl: power down hardware when interface
is down" caused a regression on his x86 boxes and scan didn't work anymore.
I was able to reproduce the problem by disabling all debug messages.

So there has to be a race condition somewhere in the code and disable the
functionality until the race is fixed. Now hardware is powered from the
point where module is loaded until it's removed.

Reported-by: default avatarJouni Malinen <jouni@qca.qualcomm.com>
Tested-by: default avatarJouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent 11f6e40d
Loading
Loading
Loading
Loading
+0 −6
Original line number Original line Diff line number Diff line
@@ -1613,12 +1613,6 @@ int ath6kl_core_init(struct ath6kl *ar)
	 */
	 */
	memcpy(ndev->dev_addr, ar->mac_addr, ETH_ALEN);
	memcpy(ndev->dev_addr, ar->mac_addr, ETH_ALEN);


	ret = ath6kl_init_hw_stop(ar);
	if (ret) {
		ath6kl_err("Failed to stop hardware: %d\n", ret);
		goto err_htc_cleanup;
	}

	return ret;
	return ret;


err_rxbuf_cleanup:
err_rxbuf_cleanup:
+0 −12
Original line number Original line Diff line number Diff line
@@ -1062,12 +1062,6 @@ struct ath6kl_vif *ath6kl_vif_first(struct ath6kl *ar)
static int ath6kl_open(struct net_device *dev)
static int ath6kl_open(struct net_device *dev)
{
{
	struct ath6kl_vif *vif = netdev_priv(dev);
	struct ath6kl_vif *vif = netdev_priv(dev);
	int ret;

	/* FIXME: how to handle multi vif support? */
	ret = ath6kl_init_hw_start(vif->ar);
	if (ret)
		return ret;


	set_bit(WLAN_ENABLED, &vif->flags);
	set_bit(WLAN_ENABLED, &vif->flags);


@@ -1084,7 +1078,6 @@ static int ath6kl_close(struct net_device *dev)
{
{
	struct ath6kl *ar = ath6kl_priv(dev);
	struct ath6kl *ar = ath6kl_priv(dev);
	struct ath6kl_vif *vif = netdev_priv(dev);
	struct ath6kl_vif *vif = netdev_priv(dev);
	int ret;


	netif_stop_queue(dev);
	netif_stop_queue(dev);


@@ -1099,11 +1092,6 @@ static int ath6kl_close(struct net_device *dev)


	ath6kl_cfg80211_scan_complete_event(vif, true);
	ath6kl_cfg80211_scan_complete_event(vif, true);


	/* FIXME: how to handle multi vif support? */
	ret = ath6kl_init_hw_stop(ar);
	if (ret)
		return ret;

	clear_bit(WLAN_ENABLED, &vif->flags);
	clear_bit(WLAN_ENABLED, &vif->flags);


	return 0;
	return 0;