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

mac80211: partially fix skb->cb use



This patch fixes mac80211 to not use the skb->cb over the queue step
from virtual interfaces to the master. The patch also, for now,
disables aggregation because that would still require requeuing,
will fix that in a separate patch. There are two other places (software
requeue and powersaving stations) where requeue can happen, but that is
not currently used by any drivers/not possible to use respectively.

Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 0ccd58fc
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1237,7 +1237,7 @@ ath5k_txbuf_setup(struct ath5k_softc *sc, struct ath5k_buf *bf)

	pktlen = skb->len;

	if (!(info->flags & IEEE80211_TX_CTL_DO_NOT_ENCRYPT)) {
	if (info->control.hw_key) {
		keyidx = info->control.hw_key->hw_key_idx;
		pktlen += info->control.icv_len;
	}
+1 −1
Original line number Diff line number Diff line
@@ -192,7 +192,7 @@ int b43_generate_txhdr(struct b43_wldev *dev,
	const struct b43_phy *phy = &dev->phy;
	const struct ieee80211_hdr *wlhdr =
	    (const struct ieee80211_hdr *)fragment_data;
	int use_encryption = (!(info->flags & IEEE80211_TX_CTL_DO_NOT_ENCRYPT));
	int use_encryption = !!info->control.hw_key;
	__le16 fctl = wlhdr->frame_control;
	struct ieee80211_rate *fbrate;
	u8 rate, rate_fb;
+1 −1
Original line number Diff line number Diff line
@@ -192,7 +192,7 @@ static int generate_txhdr_fw3(struct b43legacy_wldev *dev,
			       u16 cookie)
{
	const struct ieee80211_hdr *wlhdr;
	int use_encryption = (!(info->flags & IEEE80211_TX_CTL_DO_NOT_ENCRYPT));
	int use_encryption = !!info->control.hw_key;
	u16 fctl;
	u8 rate;
	struct ieee80211_rate *rate_fb;
+1 −1
Original line number Diff line number Diff line
@@ -906,7 +906,7 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
	 * first entry */
	iwl_hw_txq_attach_buf_to_tfd(priv, tfd, txcmd_phys, len);

	if (!(info->flags & IEEE80211_TX_CTL_DO_NOT_ENCRYPT))
	if (info->control.hw_key)
		iwl_tx_cmd_build_hwcrypto(priv, info, tx_cmd, skb, sta_id);

	/* Set up TFD's 2nd entry to point directly to remainder of skb,
+1 −1
Original line number Diff line number Diff line
@@ -2667,7 +2667,7 @@ static int iwl3945_tx_skb(struct iwl3945_priv *priv, struct sk_buff *skb)
	 * first entry */
	iwl3945_hw_txq_attach_buf_to_tfd(priv, tfd, txcmd_phys, len);

	if (!(info->flags & IEEE80211_TX_CTL_DO_NOT_ENCRYPT))
	if (info->control.hw_key)
		iwl3945_build_tx_cmd_hwcrypto(priv, info, out_cmd, skb, 0);

	/* Set up TFD's 2nd entry to point directly to remainder of skb,
Loading