Wen Gong <wgong@xxxxxxxxxxxxxx> wrote: > For sdio chip, it is high latency bus, all the TX packet's content will > be tranferred from HOST memory to firmware memory via sdio bus, then it > need much more memory in firmware than low latency bus chip, for low > latency chip, such as PCI-E, it only need to transfer the TX descriptor > via PCI-E bus to firmware memory. For sdio chip, reduce the complexity of > TX logic will help TX efficiency since its memory is limited, and it will > reduce the TX circle's time of each packet and then firmware will have more > memory for TX since TX complete also need memeory. > > This patch disable TX complete indication from firmware for htt data > packet, it will not have TX complete indication from firmware to ath10k. > It will cut the cost of bus bandwidth of TX complete and make the TX > logic of firmware simpler, it results in significant performance > improvement on TX path. > > Udp TX throughout is 130Mbps without this patch, and it arrives > 400Mbps with this patch. > > The downside of this patch is the command "iw wlan0 station dump" will > show 0 for "tx retries" and "tx failed" since all tx packet's status > is success. > > This patch only effect sdio chip, it will not effect PCI, SNOC etc. > > Tested with QCA6174 SDIO with firmware > WLAN.RMH.4.4.1-00017-QCARMSWPZ-1 > > Signed-off-by: Wen Gong <wgong@xxxxxxxxxxxxxx> > Signed-off-by: Kalle Valo <kvalo@xxxxxxxxxxxxxx> This has new warnings: drivers/net/wireless/ath/ath10k/htt_tx.c: In function 'ath10k_htt_htc_tx_complete': drivers/net/wireless/ath/ath10k/htt_tx.c:566:30: warning: 'msg_type' may be used uninitialized in this function [-Wmaybe-uninitialized] drivers/net/wireless/ath/ath10k/htt_tx.c:573:6: warning: 'flags1' may be used uninitialized in this function [-Wmaybe-uninitialized] drivers/net/wireless/ath/ath10k/htt_tx.c:577:42: warning: 'desc_hdr' may be used uninitialized in this function [-Wmaybe-uninitialized] >From what I can see these are false positives, but please do double check that. In the pending branch I solved it like this: --- a/drivers/net/wireless/ath/ath10k/htt_tx.c +++ b/drivers/net/wireless/ath/ath10k/htt_tx.c @@ -546,9 +546,9 @@ void ath10k_htt_htc_tx_complete(struct ath10k *ar, struct sk_buff *skb) struct ath10k_htt *htt = &ar->htt; struct htt_tx_done tx_done = {0}; struct htt_cmd_hdr *htt_hdr; - struct htt_data_tx_desc *desc_hdr; - u16 flags1; - u8 msg_type; + struct htt_data_tx_desc *desc_hdr = NULL; + u16 flags1 = 0; + u8 msg_type = 0; if (htt->disable_tx_comp) { htt_hdr = (struct htt_cmd_hdr *)skb->data; -- https://patchwork.kernel.org/patch/11377827/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches