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

Commit 36323f81 authored by Thomas Huehn's avatar Thomas Huehn Committed by Johannes Berg
Browse files

mac80211: move TX station pointer and restructure TX



Remove the control.sta pointer from ieee80211_tx_info to free up
sufficient space in the TX skb control buffer for the upcoming
Transmit Power Control (TPC).
Instead, the pointer is now on the stack in a new control struct
that is passed as a function parameter to the drivers' tx method.

Signed-off-by: default avatarThomas Huehn <thomas@net.t-labs.tu-berlin.de>
Signed-off-by: default avatarAlina Friedrichsen <x-alina@gmx.net>
Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
[reworded commit message]
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent ab095877
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -1661,7 +1661,9 @@ static void adm8211_tx_raw(struct ieee80211_hw *dev, struct sk_buff *skb,
}

/* Put adm8211_tx_hdr on skb and transmit */
static void adm8211_tx(struct ieee80211_hw *dev, struct sk_buff *skb)
static void adm8211_tx(struct ieee80211_hw *dev,
		       struct ieee80211_tx_control *control,
		       struct sk_buff *skb)
{
	struct adm8211_tx_hdr *txhdr;
	size_t payload_len, hdrlen;
+3 −1
Original line number Diff line number Diff line
@@ -1726,7 +1726,9 @@ static void at76_mac80211_tx_callback(struct urb *urb)
	ieee80211_wake_queues(priv->hw);
}

static void at76_mac80211_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
static void at76_mac80211_tx(struct ieee80211_hw *hw,
			     struct ieee80211_tx_control *control,
			     struct sk_buff *skb)
{
	struct at76_priv *priv = hw->priv;
	struct at76_tx_buffer *tx_buffer = priv->bulk_out_buffer;
+2 −1
Original line number Diff line number Diff line
@@ -55,7 +55,8 @@
\********************/

static void
ath5k_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
ath5k_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
	 struct sk_buff *skb)
{
	struct ath5k_hw *ah = hw->priv;
	u16 qnum = skb_get_queue_mapping(skb);
+1 −0
Original line number Diff line number Diff line
@@ -280,6 +280,7 @@ struct ath_tx_control {
	struct ath_txq *txq;
	struct ath_node *an;
	u8 paprd;
	struct ieee80211_sta *sta;
};

#define ATH_TX_ERROR        0x01
+1 −0
Original line number Diff line number Diff line
@@ -542,6 +542,7 @@ void ath9k_htc_stop_ani(struct ath9k_htc_priv *priv);

int ath9k_tx_init(struct ath9k_htc_priv *priv);
int ath9k_htc_tx_start(struct ath9k_htc_priv *priv,
		       struct ieee80211_sta *sta,
		       struct sk_buff *skb, u8 slot, bool is_cab);
void ath9k_tx_cleanup(struct ath9k_htc_priv *priv);
bool ath9k_htc_txq_setup(struct ath9k_htc_priv *priv, int subtype);
Loading