Subject: Re: pull-request: wireless-drivers-next 2016-05-13

From: "Coelho, Luciano" <[email-masked]>
Date: Mon, 16 May 2016 18:11:47 +0000

On Mon, 2016-05-16 at 17:08 +0300, Kalle Valo wrote:
> Kalle Valo <[email-masked]> writes:
> 
> > 
> > Kalle Valo <[email-masked]> writes:
> > 
> > > 
> > > The following changes since commit
> > > ede00a5ceb4d903a8c137a52bb77d574baaef8bd:
> > > 
> > >   Merge tag 'wireless-drivers-next-for-davem-2016-05-02' of
> > > git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-
> > > drivers-next (2016-05-03 00:35:16 -0400)
> > > 
> > > are available in the git repository at:
> > > 
> > > 
> > >   git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-
> > > drivers-next.git tags/wireless-drivers-next-for-davem-2016-05-13
> > Please don't pull this yet, there might be something wrong now with
> > merges and need to check that first.
> Ok, like discussed in thread "linux-next: manual merge of the
> wireless-drivers-next tree with the net-next tree" there seems to be
> a
> problem on net-next in function iwl_mvm_set_tx_cmd(). Here is how I
> propose to fix this.
> 
> When pulling the tag above you should get a conflict like this:
> 
> diff --cc drivers/net/wireless/intel/iwlwifi/mvm/tx.c
> index 880210917a6f,779bafcbc9a1..000000000000
> --- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
> +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
> @@@ -294,7 -295,7 +294,11 @@@ void iwl_mvm_set_tx_cmd(struct iwl_mvm 
>         tx_cmd->tx_flags = cpu_to_le32(tx_flags);
>         /* Total # bytes to be transmitted */
>         tx_cmd->len = cpu_to_le16((u16)skb->len +
> ++<<<<<<< HEAD
>  +              (uintptr_t)info->driver_data[0]);
> ++=======
> +               (uintptr_t)skb_info->driver_data[0]);
> ++>>>>>>> master
>         tx_cmd->life_time = cpu_to_le32(TX_CMD_LIFE_TIME_INFINITE);
>         tx_cmd->sta_id = sta_id;
> 
> Pick the latter with skb_info and then add skb_info to the beginning
> of
> the same function. So the function should be:
> 
> 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);
> 	u32 len = skb->len + FCS_LEN;
> 	u8 ac;
> 
> [...]
> 
> 	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)skb_info->driver_data[0]);
> 	tx_cmd->life_time = cpu_to_le32(TX_CMD_LIFE_TIME_INFINITE);
> 	tx_cmd->sta_id = sta_id;
> 
> Sorry about the hassle and please let me know if you have any
> problems.
> Adding Luca and Emmanuel just in case I missed something.

ACK.  This looks correct.  I just diffed the iwlwifi-next.git tree (at
commit a525d0eab17d -- which is where I merge iwlwifi-fixes into
iwlwifi-next) with net-next.git master and the difference [1] is
exactly what you proposed to fix.

[1] http://pastebin.coelho.fi/1b6907cdb9a25413.txt

--
Cheers,
Luca.