浏览代码

Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git

ath.git patches for 4.13. Major changes:

Only bugfixes or cleanups, no new features.
Kalle Valo 8 年之前
父节点
当前提交
fdcbe65d61

+ 1 - 1
drivers/net/wireless/ath/ath10k/mac.c

@@ -1392,7 +1392,7 @@ static int ath10k_vdev_stop(struct ath10k_vif *arvif)
 
 
 	ret = ath10k_vdev_setup_sync(ar);
 	ret = ath10k_vdev_setup_sync(ar);
 	if (ret) {
 	if (ret) {
-		ath10k_warn(ar, "failed to syncronise setup for vdev %i: %d\n",
+		ath10k_warn(ar, "failed to synchronize setup for vdev %i: %d\n",
 			    arvif->vdev_id, ret);
 			    arvif->vdev_id, ret);
 		return ret;
 		return ret;
 	}
 	}

+ 1 - 1
drivers/net/wireless/ath/ath10k/pci.c

@@ -469,7 +469,7 @@ static int ath10k_pci_wake_wait(struct ath10k *ar)
 	while (tot_delay < PCIE_WAKE_TIMEOUT) {
 	while (tot_delay < PCIE_WAKE_TIMEOUT) {
 		if (ath10k_pci_is_awake(ar)) {
 		if (ath10k_pci_is_awake(ar)) {
 			if (tot_delay > PCIE_WAKE_LATE_US)
 			if (tot_delay > PCIE_WAKE_LATE_US)
-				ath10k_warn(ar, "device wakeup took %d ms which is unusally long, otherwise it works normally.\n",
+				ath10k_warn(ar, "device wakeup took %d ms which is unusually long, otherwise it works normally.\n",
 					    tot_delay / 1000);
 					    tot_delay / 1000);
 			return 0;
 			return 0;
 		}
 		}

+ 2 - 2
drivers/net/wireless/ath/ath10k/sdio.c

@@ -1553,7 +1553,7 @@ static int ath10k_sdio_hif_diag_read(struct ath10k *ar, u32 address, void *buf,
 	/* read the data */
 	/* read the data */
 	ret = ath10k_sdio_read(ar, MBOX_WINDOW_DATA_ADDRESS, buf, buf_len);
 	ret = ath10k_sdio_read(ar, MBOX_WINDOW_DATA_ADDRESS, buf, buf_len);
 	if (ret) {
 	if (ret) {
-		ath10k_warn(ar, "failed to read from mbox window data addrress: %d\n",
+		ath10k_warn(ar, "failed to read from mbox window data address: %d\n",
 			    ret);
 			    ret);
 		return ret;
 		return ret;
 	}
 	}
@@ -1592,7 +1592,7 @@ static int ath10k_sdio_hif_diag_write_mem(struct ath10k *ar, u32 address,
 	ret = ath10k_sdio_write(ar, MBOX_WINDOW_DATA_ADDRESS, data, nbytes);
 	ret = ath10k_sdio_write(ar, MBOX_WINDOW_DATA_ADDRESS, data, nbytes);
 	if (ret) {
 	if (ret) {
 		ath10k_warn(ar,
 		ath10k_warn(ar,
-			    "failed to write 0x%p to mbox window data addrress: %d\n",
+			    "failed to write 0x%p to mbox window data address: %d\n",
 			    data, ret);
 			    data, ret);
 		return ret;
 		return ret;
 	}
 	}

+ 1 - 1
drivers/net/wireless/ath/ath10k/thermal.c

@@ -63,7 +63,7 @@ ath10k_thermal_set_cur_throttle_state(struct thermal_cooling_device *cdev,
 	return 0;
 	return 0;
 }
 }
 
 
-static struct thermal_cooling_device_ops ath10k_thermal_ops = {
+static const struct thermal_cooling_device_ops ath10k_thermal_ops = {
 	.get_max_state = ath10k_thermal_get_max_throttle_state,
 	.get_max_state = ath10k_thermal_get_max_throttle_state,
 	.get_cur_state = ath10k_thermal_get_cur_throttle_state,
 	.get_cur_state = ath10k_thermal_get_cur_throttle_state,
 	.set_cur_state = ath10k_thermal_set_cur_throttle_state,
 	.set_cur_state = ath10k_thermal_set_cur_throttle_state,

+ 1 - 1
drivers/net/wireless/ath/ath10k/wmi-tlv.c

@@ -2022,7 +2022,7 @@ ath10k_wmi_tlv_op_gen_sta_keepalive(struct ath10k *ar,
 	arp->dest_ip4_addr = arg->dest_ip4_addr;
 	arp->dest_ip4_addr = arg->dest_ip4_addr;
 	ether_addr_copy(arp->dest_mac_addr.addr, arg->dest_mac_addr);
 	ether_addr_copy(arp->dest_mac_addr.addr, arg->dest_mac_addr);
 
 
-	ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi tlv sta keepalive vdev %d enabled %d method %d inverval %d\n",
+	ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi tlv sta keepalive vdev %d enabled %d method %d interval %d\n",
 		   arg->vdev_id, arg->enabled, arg->method, arg->interval);
 		   arg->vdev_id, arg->enabled, arg->method, arg->interval);
 	return skb;
 	return skb;
 }
 }

+ 0 - 2
drivers/net/wireless/ath/ath9k/ar9003_phy.c

@@ -1821,8 +1821,6 @@ static void ar9003_hw_spectral_scan_wait(struct ath_hw *ah)
 static void ar9003_hw_tx99_start(struct ath_hw *ah, u32 qnum)
 static void ar9003_hw_tx99_start(struct ath_hw *ah, u32 qnum)
 {
 {
 	REG_SET_BIT(ah, AR_PHY_TEST, PHY_AGC_CLR);
 	REG_SET_BIT(ah, AR_PHY_TEST, PHY_AGC_CLR);
-	REG_SET_BIT(ah, 0x9864, 0x7f000);
-	REG_SET_BIT(ah, 0x9924, 0x7f00fe);
 	REG_CLR_BIT(ah, AR_DIAG_SW, AR_DIAG_RX_DIS);
 	REG_CLR_BIT(ah, AR_DIAG_SW, AR_DIAG_RX_DIS);
 	REG_WRITE(ah, AR_CR, AR_CR_RXD);
 	REG_WRITE(ah, AR_CR, AR_CR_RXD);
 	REG_WRITE(ah, AR_DLCL_IFS(qnum), 0);
 	REG_WRITE(ah, AR_DLCL_IFS(qnum), 0);

+ 4 - 4
drivers/net/wireless/ath/ath9k/main.c

@@ -731,12 +731,12 @@ static int ath9k_start(struct ieee80211_hw *hw)
 
 
 	spin_unlock_bh(&sc->sc_pcu_lock);
 	spin_unlock_bh(&sc->sc_pcu_lock);
 
 
+	ath9k_rng_start(sc);
+
 	mutex_unlock(&sc->mutex);
 	mutex_unlock(&sc->mutex);
 
 
 	ath9k_ps_restore(sc);
 	ath9k_ps_restore(sc);
 
 
-	ath9k_rng_start(sc);
-
 	return 0;
 	return 0;
 }
 }
 
 
@@ -826,10 +826,10 @@ static void ath9k_stop(struct ieee80211_hw *hw)
 
 
 	ath9k_deinit_channel_context(sc);
 	ath9k_deinit_channel_context(sc);
 
 
-	ath9k_rng_stop(sc);
-
 	mutex_lock(&sc->mutex);
 	mutex_lock(&sc->mutex);
 
 
+	ath9k_rng_stop(sc);
+
 	ath_cancel_work(sc);
 	ath_cancel_work(sc);
 
 
 	if (test_bit(ATH_OP_INVALID, &common->op_flags)) {
 	if (test_bit(ATH_OP_INVALID, &common->op_flags)) {

+ 1 - 1
drivers/net/wireless/ath/ath9k/mci.c

@@ -548,7 +548,7 @@ void ath_mci_intr(struct ath_softc *sc)
 
 
 	if (mci_int_rxmsg & AR_MCI_INTERRUPT_RX_MSG_SCHD_INFO) {
 	if (mci_int_rxmsg & AR_MCI_INTERRUPT_RX_MSG_SCHD_INFO) {
 		mci_int_rxmsg &= ~AR_MCI_INTERRUPT_RX_MSG_SCHD_INFO;
 		mci_int_rxmsg &= ~AR_MCI_INTERRUPT_RX_MSG_SCHD_INFO;
-		offset = ar9003_mci_state(ah, MCI_STATE_LAST_SCHD_MSG_OFFSET);
+		ar9003_mci_state(ah, MCI_STATE_LAST_SCHD_MSG_OFFSET);
 	}
 	}
 
 
 	if (mci_int_rxmsg & AR_MCI_INTERRUPT_RX_MSG_GPM) {
 	if (mci_int_rxmsg & AR_MCI_INTERRUPT_RX_MSG_GPM) {

+ 8 - 2
drivers/net/wireless/ath/ath9k/rng.c

@@ -24,6 +24,8 @@
 #define ATH9K_RNG_BUF_SIZE	320
 #define ATH9K_RNG_BUF_SIZE	320
 #define ATH9K_RNG_ENTROPY(x)	(((x) * 8 * 10) >> 5) /* quality: 10/32 */
 #define ATH9K_RNG_ENTROPY(x)	(((x) * 8 * 10) >> 5) /* quality: 10/32 */
 
 
+static DECLARE_WAIT_QUEUE_HEAD(rng_queue);
+
 static int ath9k_rng_data_read(struct ath_softc *sc, u32 *buf, u32 buf_size)
 static int ath9k_rng_data_read(struct ath_softc *sc, u32 *buf, u32 buf_size)
 {
 {
 	int i, j;
 	int i, j;
@@ -85,7 +87,9 @@ static int ath9k_rng_kthread(void *data)
 						 ATH9K_RNG_BUF_SIZE);
 						 ATH9K_RNG_BUF_SIZE);
 		if (unlikely(!bytes_read)) {
 		if (unlikely(!bytes_read)) {
 			delay = ath9k_rng_delay_get(++fail_stats);
 			delay = ath9k_rng_delay_get(++fail_stats);
-			msleep_interruptible(delay);
+			wait_event_interruptible_timeout(rng_queue,
+							 kthread_should_stop(),
+							 msecs_to_jiffies(delay));
 			continue;
 			continue;
 		}
 		}
 
 
@@ -120,6 +124,8 @@ void ath9k_rng_start(struct ath_softc *sc)
 
 
 void ath9k_rng_stop(struct ath_softc *sc)
 void ath9k_rng_stop(struct ath_softc *sc)
 {
 {
-	if (sc->rng_task)
+	if (sc->rng_task) {
 		kthread_stop(sc->rng_task);
 		kthread_stop(sc->rng_task);
+		sc->rng_task = NULL;
+	}
 }
 }

+ 9 - 4
drivers/net/wireless/ath/ath9k/tx99.c

@@ -189,22 +189,27 @@ static ssize_t write_file_tx99(struct file *file, const char __user *user_buf,
 	if (strtobool(buf, &start))
 	if (strtobool(buf, &start))
 		return -EINVAL;
 		return -EINVAL;
 
 
+	mutex_lock(&sc->mutex);
+
 	if (start == sc->tx99_state) {
 	if (start == sc->tx99_state) {
 		if (!start)
 		if (!start)
-			return count;
+			goto out;
 		ath_dbg(common, XMIT, "Resetting TX99\n");
 		ath_dbg(common, XMIT, "Resetting TX99\n");
 		ath9k_tx99_deinit(sc);
 		ath9k_tx99_deinit(sc);
 	}
 	}
 
 
 	if (!start) {
 	if (!start) {
 		ath9k_tx99_deinit(sc);
 		ath9k_tx99_deinit(sc);
-		return count;
+		goto out;
 	}
 	}
 
 
 	r = ath9k_tx99_init(sc);
 	r = ath9k_tx99_init(sc);
-	if (r)
+	if (r) {
+		mutex_unlock(&sc->mutex);
 		return r;
 		return r;
-
+	}
+out:
+	mutex_unlock(&sc->mutex);
 	return count;
 	return count;
 }
 }