Re: [PATCH 1/9] ath10k: speedup htt rx descriptor processing for tx completion
"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
[...] >> >> 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
[...] > >> @@ -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
Rajkumar Manoharanwrites: > 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