diff mbox series

[2/2] brcmfmac: Set pacing shift before transmitting skb to bus

Message ID 20200622020721.498-3-wright.feng@cypress.com (mailing list archive)
State Changes Requested
Delegated to: Kalle Valo
Headers show
Series brcmfmac: Stability and throughput changes | expand

Commit Message

Wright Feng June 22, 2020, 2:07 a.m. UTC
Linux 3.6 introduces TSQ which has a per socket threshold for TCP Tx
packet to reduce latency. In flow control mode, host driver enqueues skb
in hanger and TCP doesn't push new skb frees until host frees the skb when
receiving fwstatus event. So set pacing shift 8 to send them as a single
large aggregate frame to the bus layer.

43455 TX TCP throughput in FC mode 2 on Linux 5.4.18
sk_pacing_shift : Throughput
10: 190 Mbps
 9: 216 Mbps
 8: 233 Mbps (Max throughput)
 7: 233 Mpbs

Signed-off-by: Wright Feng <wright.feng@cypress.com>
Signed-off-by: Chi-hsien Lin <chi-hsien.lin@cypress.com>
---
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Arend van Spriel June 22, 2020, 8:57 a.m. UTC | #1
On 6/22/2020 4:07 AM, Wright Feng wrote:
> Linux 3.6 introduces TSQ which has a per socket threshold for TCP Tx
> packet to reduce latency. In flow control mode, host driver enqueues skb
> in hanger and TCP doesn't push new skb frees until host frees the skb when
> receiving fwstatus event. So set pacing shift 8 to send them as a single
> large aggregate frame to the bus layer.
> 
> 43455 TX TCP throughput in FC mode 2 on Linux 5.4.18
> sk_pacing_shift : Throughput
> 10: 190 Mbps
>   9: 216 Mbps
>   8: 233 Mbps (Max throughput)
>   7: 233 Mpbs

In this patch the pacing shift update is done irrespective of the FC 
mode so I would like to see similar measurements for the other FC mode 
configurations.

Regards,
Arend
Wright Feng June 24, 2020, 5:45 a.m. UTC | #2
Arend Van Spriel 於 6/22/2020 4:57 PM 寫道:
> On 6/22/2020 4:07 AM, Wright Feng wrote:
>> Linux 3.6 introduces TSQ which has a per socket threshold for TCP Tx
>> packet to reduce latency. In flow control mode, host driver enqueues skb
>> in hanger and TCP doesn't push new skb frees until host frees the skb 
>> when
>> receiving fwstatus event. So set pacing shift 8 to send them as a single
>> large aggregate frame to the bus layer.
>>
>> 43455 TX TCP throughput in FC mode 2 on Linux 5.4.18
>> sk_pacing_shift : Throughput
>> 10: 190 Mbps
>>   9: 216 Mbps
>>   8: 233 Mbps (Max throughput)
>>   7: 233 Mpbs
> 
> In this patch the pacing shift update is done irrespective of the FC 
> mode so I would like to see similar measurements for the other FC mode 
> configurations.
> 
Measure 43455 TX TCP throughput again with different FC mode.
Here is the result and I will update result in patch v2.

43455 TX TCP throughput on Linux 5.4.18
FC mode 0
sk_pacing_shift : Throughput
10: 245 Mbps
  9: 245 Mbps
  8: 246 Mbps
  7: 246 Mbps

FC mode 1
sk_pacing_shift : Throughput
10: 182 Mbps
  9: 197 Mbps
  8: 206 Mbps
  7: 207 Mbps

FC mode 2
sk_pacing_shift : Throughput
10: 180 Mbps
  9: 197 Mbps
  8: 206 Mbps
  7: 207 Mbps
> Regards,
> Arend
diff mbox series

Patch

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
index c88655acc78c..f89010a81ffb 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
@@ -352,6 +352,9 @@  static netdev_tx_t brcmf_netdev_start_xmit(struct sk_buff *skb,
 	if ((skb->priority == 0) || (skb->priority > 7))
 		skb->priority = cfg80211_classify8021d(skb, NULL);
 
+	/* set pacing shift for packet aggregation */
+	sk_pacing_shift_update(skb->sk, 8);
+
 	ret = brcmf_proto_tx_queue_data(drvr, ifp->ifidx, skb);
 	if (ret < 0)
 		brcmf_txfinalize(ifp, skb, false);