[LEDE-DEV] [PATCH] ag71xx: Add some unlikely calls + rearange some stuff in hard_start_xmit.

Rosen Penev rosenp at gmail.com
Wed Feb 14 07:20:36 PST 2018


On Tue, Feb 13, 2018 at 11:10 PM, Felix Fietkau <nbd at nbd.name> wrote:
> On 2018-02-13 23:53, Rosen Penev wrote:
>> Based on Qualcomm driver. Improves iperf3 throughput by ~20mbps on transmit on Archer C7v4.
>>
>> Signed-off-by: Rosen Penev <rosenp at gmail.com>
>> ---
>>  .../drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c      | 14 +++++++-------
>>  1 file changed, 7 insertions(+), 7 deletions(-)
>>
>> diff --git a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c
>> index 95682b7641..d32f220178 100644
>> --- a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c
>> +++ b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c
>> @@ -797,11 +797,14 @@ static netdev_tx_t ag71xx_hard_start_xmit(struct sk_buff *skb,
>>       if (ag71xx_has_ar8216(ag))
>>               ag71xx_add_ar8216_header(ag, skb);
>>
>> -     if (skb->len <= 4) {
>> +     dma_cache_sync (NULL, skb->data, skb->len, DMA_TO_DEVICE);
> The use of dma_cache_sync here makes no sense, since it's the wrong API.
> Also, effectively it results in the same kind of cache flush as the one
> that's done by the DMA mapping done later.

>From my reading of dma_cache_flush, I agree. However that's the part
of this patch that gives the biggest speedup. Before this patch, I
tested just adding that and it worked. I can back this up with
benchmarks later on.
>
> - Felix



More information about the Lede-dev mailing list