2020-06-22 02:08:32

by Wright Feng

[permalink] [raw]
Subject: [PATCH 2/2] brcmfmac: Set pacing shift before transmitting skb to bus

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 <[email protected]>
Signed-off-by: Chi-hsien Lin <[email protected]>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 3 +++
1 file changed, 3 insertions(+)

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);
--
2.25.0


2020-06-22 08:59:42

by Arend van Spriel

[permalink] [raw]
Subject: Re: [PATCH 2/2] brcmfmac: Set pacing shift before transmitting skb to bus

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

2020-06-24 05:46:31

by Wright Feng

[permalink] [raw]
Subject: Re: [PATCH 2/2] brcmfmac: Set pacing shift before transmitting skb to bus



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