Message ID | CA+55aFxTXem=w71Q4pJCgeypqLzt+zk6KqoPM547usNDYxAjpg@mail.gmail.com (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Kalle Valo |
Headers | show |
On Wed, May 18, 2016 at 12:51 PM, Linus Torvalds <torvalds@linux-foundation.org> wrote: > On Wed, May 18, 2016 at 11:45 AM, Linus Torvalds > <torvalds@linux-foundation.org> wrote: >> >> From what I can tell, there's a merge bug in commit 909b27f70643, >> where David seems to have lost some of the changes to >> iwl_mvm_set_tx_cmd(). >> >> I do not know if that's the reason for the problem I see. But I will test. > > Yes. The attached patch that fixes the incorrect merge seems to fix > things for me. > > That should mean that the assumption that this problem existed in v4.6 > too was wrong, because the incorrect merge came in later. I think > Luciano mis-understood "v4.6+" to mean plain v4.6. > > Reinoud Koornstra, does this patch fix things for you too? Indeed, I meant 4.6+, not 4.6. The patch you attached doesn't change existing code for me in 4.6+ as these two lines are already in there. Thanks, Reinoud. > > Linus -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c index 880210917a6f..c53aa0f220e0 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c @@ -211,6 +211,7 @@ void iwl_mvm_set_tx_cmd(struct iwl_mvm *mvm, struct sk_buff *skb, struct iwl_tx_cmd *tx_cmd, struct ieee80211_tx_info *info, u8 sta_id) { + struct ieee80211_tx_info *skb_info = IEEE80211_SKB_CB(skb); struct ieee80211_hdr *hdr = (void *)skb->data; __le16 fc = hdr->frame_control; u32 tx_flags = le32_to_cpu(tx_cmd->tx_flags); @@ -294,7 +295,7 @@ void iwl_mvm_set_tx_cmd(struct iwl_mvm *mvm, struct sk_buff *skb, tx_cmd->tx_flags = cpu_to_le32(tx_flags); /* Total # bytes to be transmitted */ tx_cmd->len = cpu_to_le16((u16)skb->len + - (uintptr_t)info->driver_data[0]); + (uintptr_t)skb_info->driver_data[0]); tx_cmd->life_time = cpu_to_le32(TX_CMD_LIFE_TIME_INFINITE); tx_cmd->sta_id = sta_id;