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

Commit 106af2c9 authored by John W. Linville's avatar John W. Linville
Browse files

Merge branch 'master' of...

parents 0c0217b0 7d2c16be
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -943,6 +943,7 @@ ath5k_txq_setup(struct ath5k_softc *sc,
		spin_lock_init(&txq->lock);
		txq->setup = true;
		txq->txq_len = 0;
		txq->txq_max = ATH5K_TXQ_LEN_MAX;
		txq->txq_poll_mark = false;
		txq->txq_stuck = 0;
	}
@@ -1534,7 +1535,7 @@ ath5k_tx_queue(struct ieee80211_hw *hw, struct sk_buff *skb,
		goto drop_packet;
	}

	if (txq->txq_len >= ATH5K_TXQ_LEN_MAX)
	if (txq->txq_len >= txq->txq_max)
		ieee80211_stop_queue(hw, txq->qnum);

	spin_lock_irqsave(&sc->txbuflock, flags);
+1 −0
Original line number Diff line number Diff line
@@ -86,6 +86,7 @@ struct ath5k_txq {
	spinlock_t		lock;	/* lock on q and link */
	bool			setup;
	int			txq_len; /* number of queued buffers */
	int			txq_max; /* max allowed num of queued buffers */
	bool			txq_poll_mark;
	unsigned int		txq_stuck;	/* informational counter */
};
+43 −0
Original line number Diff line number Diff line
@@ -740,6 +740,47 @@ ath5k_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant)
}


static void ath5k_get_ringparam(struct ieee80211_hw *hw,
				u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max)
{
	struct ath5k_softc *sc = hw->priv;

	*tx = sc->txqs[AR5K_TX_QUEUE_ID_DATA_MIN].txq_max;

	*tx_max = ATH5K_TXQ_LEN_MAX;
	*rx = *rx_max = ATH_RXBUF;
}


static int ath5k_set_ringparam(struct ieee80211_hw *hw, u32 tx, u32 rx)
{
	struct ath5k_softc *sc = hw->priv;
	u16 qnum;

	/* only support setting tx ring size for now */
	if (rx != ATH_RXBUF)
		return -EINVAL;

	/* restrict tx ring size min/max */
	if (!tx || tx > ATH5K_TXQ_LEN_MAX)
		return -EINVAL;

	for (qnum = 0; qnum < ARRAY_SIZE(sc->txqs); qnum++) {
		if (!sc->txqs[qnum].setup)
			continue;
		if (sc->txqs[qnum].qnum < AR5K_TX_QUEUE_ID_DATA_MIN ||
		    sc->txqs[qnum].qnum > AR5K_TX_QUEUE_ID_DATA_MAX)
			continue;

		sc->txqs[qnum].txq_max = tx;
		if (sc->txqs[qnum].txq_len >= sc->txqs[qnum].txq_max)
			ieee80211_stop_queue(hw, sc->txqs[qnum].qnum);
	}

	return 0;
}


const struct ieee80211_ops ath5k_hw_ops = {
	.tx			= ath5k_tx,
	.start			= ath5k_start,
@@ -778,4 +819,6 @@ const struct ieee80211_ops ath5k_hw_ops = {
	/* .napi_poll		= not implemented */
	.set_antenna		= ath5k_set_antenna,
	.get_antenna		= ath5k_get_antenna,
	.set_ringparam		= ath5k_set_ringparam,
	.get_ringparam		= ath5k_get_ringparam,
};
+2 −0
Original line number Diff line number Diff line
@@ -667,6 +667,7 @@ static const u32 ar9485_1_0_pcie_phy_clkreq_enable_L1[][2] = {

static const u32 ar9485_1_0_soc_preamble[][2] = {
	/*   Addr     allmodes */
	{0x00004090, 0x00aa10aa},
	{0x000040a4, 0x00a0c9c9},
	{0x00007048, 0x00000004},
};
@@ -1708,6 +1709,7 @@ static const u32 ar9485_1_1_pcie_phy_clkreq_disable_L1[][2] = {
static const u32 ar9485_1_1_soc_preamble[][2] = {
	/* Addr        allmodes */
	{0x00004014, 0xba280400},
	{0x00004090, 0x00aa10aa},
	{0x000040a4, 0x00a0c9c9},
	{0x00007010, 0x00000022},
	{0x00007020, 0x00000000},
+0 −1
Original line number Diff line number Diff line
@@ -189,7 +189,6 @@ struct ath_txq {
	u32 axq_ampdu_depth;
	bool stopped;
	bool axq_tx_inprogress;
	bool txq_flush_inprogress;
	struct list_head axq_acq;
	struct list_head txq_fifo[ATH_TXFIFO_DEPTH];
	struct list_head txq_fifo_pending;
Loading