Re: [PATCH 1/9] ath10k: speedup htt rx descriptor processing for tx completion

2016-03-29 Thread Valo, Kalle
"Manoharan, Rajkumar"  writes:

>>> @@ -1712,7 +1710,20 @@ static void ath10k_htt_rx_frm_tx_compl(struct ath10k 
>>> *ar,
>>>   for (i = 0; i < resp->data_tx_completion.num_msdus; i++) {
>>>   msdu_id = resp->data_tx_completion.msdus[i];
>>>   tx_done.msdu_id = __le16_to_cpu(msdu_id);
>>> - ath10k_txrx_tx_unref(htt, _done);
>>> +
>>> + /* kfifo_put: In practice firmware shouldn't fire off per-CE
>>> +  * interrupt and main interrupt (MSI/-X range case) for the 
>>> same
>>> +  * HTC service so it should be safe to use kfifo_put w/o lock.
>>> +  *
>>> +  * From kfifo_put() documentation:
>>> +  *  Note that with only one concurrent reader and one 
>>> concurrent
>>> +  *  writer, you don't need extra locking to use these macro.
>>> +  */
>>> + if (!kfifo_put(>txdone_fifo, tx_done)) {
>>> + ath10k_warn(ar, "txdone fifo overrun, msdu_id %d 
>>> status %d\n",
>>> + tx_done.msdu_id, tx_done.status);
>>> + ath10k_txrx_tx_unref(htt, _done);
>>> + }
>>
>> I see two new warnings on the kfifo_put() call:
>>
>> drivers/net/wireless/ath/ath10k/htt_rx.c:1722:22: warning: cast to non-scalar
>> drivers/net/wireless/ath/ath10k/htt_rx.c:1722:22: warning: cast from 
>> non-scalar
>> 
>> But I suspect they are false warnings due to my old compiler:
>> 
>> gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
>> 
>> Opinions?
>> 
> Hmm... I am not sure why older compiler is not complaining this. Unfortunately
> both x86 and cross compiler are not throwing any warnings though :(
>
> gcc version 5.3.0 (GCC)
> Target: x86_64-unknown-linux-gnu
>
> gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r47724)
> Target: arm-openwrt-linux-uclibcgnueabi

Maybe we can just ignore the warning and hope that all recent compilers
are smart enough.

-- 
Kalle Valo--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/9] ath10k: speedup htt rx descriptor processing for tx completion

2016-03-24 Thread Manoharan, Rajkumar
[...]
>>
>> I see two new warnings on the kfifo_put() call:
>>
>> drivers/net/wireless/ath/ath10k/htt_rx.c:1722:22: warning: cast to non-scalar
>> drivers/net/wireless/ath/ath10k/htt_rx.c:1722:22: warning: cast from 
>> non-scalar
>>
>> But I suspect they are false warnings due to my old compiler:
>>
>> gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
>>
>> Opinions?
>>
> Hmm... I am not sure why older compiler is not complaining this. Unfortunately
> both x86 and cross compiler are not throwing any warnings though :(
>

older/latest/g--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/9] ath10k: speedup htt rx descriptor processing for tx completion

2016-03-24 Thread Manoharan, Rajkumar
[...]
>
>> @@ -1712,7 +1710,20 @@ static void ath10k_htt_rx_frm_tx_compl(struct ath10k 
>> *ar,
>>   for (i = 0; i < resp->data_tx_completion.num_msdus; i++) {
>>   msdu_id = resp->data_tx_completion.msdus[i];
>>   tx_done.msdu_id = __le16_to_cpu(msdu_id);
>> - ath10k_txrx_tx_unref(htt, _done);
>> +
>> + /* kfifo_put: In practice firmware shouldn't fire off per-CE
>> +  * interrupt and main interrupt (MSI/-X range case) for the 
>> same
>> +  * HTC service so it should be safe to use kfifo_put w/o lock.
>> +  *
>> +  * From kfifo_put() documentation:
>> +  *  Note that with only one concurrent reader and one 
>> concurrent
>> +  *  writer, you don't need extra locking to use these macro.
>> +  */
>> + if (!kfifo_put(>txdone_fifo, tx_done)) {
>> + ath10k_warn(ar, "txdone fifo overrun, msdu_id %d 
>> status %d\n",
>> + tx_done.msdu_id, tx_done.status);
>> + ath10k_txrx_tx_unref(htt, _done);
>> + }
>
> I see two new warnings on the kfifo_put() call:
>
> drivers/net/wireless/ath/ath10k/htt_rx.c:1722:22: warning: cast to non-scalar
> drivers/net/wireless/ath/ath10k/htt_rx.c:1722:22: warning: cast from 
> non-scalar
> 
> But I suspect they are false warnings due to my old compiler:
> 
> gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
> 
> Opinions?
> 
Hmm... I am not sure why older compiler is not complaining this. Unfortunately
both x86 and cross compiler are not throwing any warnings though :(

gcc version 5.3.0 (GCC)
Target: x86_64-unknown-linux-gnu

gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r47724)
Target: arm-openwrt-linux-uclibcgnueabi

Any suggestions welcome.

-Rajkumar

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/9] ath10k: speedup htt rx descriptor processing for tx completion

2016-03-24 Thread Valo, Kalle
Rajkumar Manoharan  writes:

> To optimize CPU usage htt rx descriptors will be reused instead of
> refilling it for htt rx copy engine (CE5). To support that all htt rx
> indications should be processed at same context. FIFO queue is used
> to maintain tx completion status for each msdu. This helps to retain
> the order of tx completion.
>
> Signed-off-by: Rajkumar Manoharan 

[...]

> @@ -1712,7 +1710,20 @@ static void ath10k_htt_rx_frm_tx_compl(struct ath10k 
> *ar,
>   for (i = 0; i < resp->data_tx_completion.num_msdus; i++) {
>   msdu_id = resp->data_tx_completion.msdus[i];
>   tx_done.msdu_id = __le16_to_cpu(msdu_id);
> - ath10k_txrx_tx_unref(htt, _done);
> +
> + /* kfifo_put: In practice firmware shouldn't fire off per-CE
> +  * interrupt and main interrupt (MSI/-X range case) for the same
> +  * HTC service so it should be safe to use kfifo_put w/o lock.
> +  *
> +  * From kfifo_put() documentation:
> +  *  Note that with only one concurrent reader and one concurrent
> +  *  writer, you don't need extra locking to use these macro.
> +  */
> + if (!kfifo_put(>txdone_fifo, tx_done)) {
> + ath10k_warn(ar, "txdone fifo overrun, msdu_id %d status 
> %d\n",
> + tx_done.msdu_id, tx_done.status);
> + ath10k_txrx_tx_unref(htt, _done);
> + }

I see two new warnings on the kfifo_put() call:

drivers/net/wireless/ath/ath10k/htt_rx.c:1722:22: warning: cast to non-scalar
drivers/net/wireless/ath/ath10k/htt_rx.c:1722:22: warning: cast from non-scalar

But I suspect they are false warnings due to my old compiler:

gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

Opinions?

-- 
Kalle Valo--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html