All of lore.kernel.org
 help / color / mirror / Atom feed
From: arnaud.patard@rtp-net.org (Arnaud Patard (Rtp))
To: linux-arm-kernel@lists.infradead.org
Subject: [patch 1/1] kirkwood: set tx_csum_limit
Date: Thu, 26 Jul 2012 11:28:23 +0200	[thread overview]
Message-ID: <87r4ry98i0.fsf@lebrac.rtp-net.org> (raw)
In-Reply-To: <1719571.FAPWHj9hMz@flexo> (Florian Fainelli's message of "Thu, 26 Jul 2012 11:15:55 +0200")

Florian Fainelli <florian@openwrt.org> writes:

> Hi Arnaud,
>
> On Thursday 26 July 2012 09:12:00 Arnaud Patard wrote:
>> kirkwood and dove have a smaller FIFO than other "orion" SoCs. This
>> needs to be taken into account otherwise people using things like jumbo 
> frames
>> will get into some troubles.
>> 
>> As a side note, this patch is an updated version of a patch sent some years
>> ago: http://lists.infradead.org/pipermail/linux-arm-kernel/2010-
> June/017320.html
>> which seems to have been lost.
>> 
>> Signed-off-by: Arnaud Patard <arnaud.patard@rtp-net.org>
>> 
>> Index: alunn/arch/arm/mach-dove/common.c
>> ===================================================================
>> --- alunn.orig/arch/arm/mach-dove/common.c	2012-07-20 09:14:45.000000000 
> +0200
>> +++ alunn/arch/arm/mach-dove/common.c	2012-07-20 17:51:38.872925518 
> +0200
>> @@ -102,7 +102,7 @@ void __init dove_ehci1_init(void)
>>  void __init dove_ge00_init(struct mv643xx_eth_platform_data *eth_data)
>>  {
>>  	orion_ge00_init(eth_data, DOVE_GE00_PHYS_BASE,
>> -			IRQ_DOVE_GE00_SUM, IRQ_DOVE_GE00_ERR);
>> +			IRQ_DOVE_GE00_SUM, IRQ_DOVE_GE00_ERR, 0);
>>  }
>
> You might want to add a constant for TX_CSUM_NO_LIMIT or something like that, 
> rather than a plain 0 which might be a little misleading.
>

It's not to set an unlimited value but to tell the driver it has to
use its default value. This limit is only valid for kirkwood but given
that orion_ge*_init functions are used on all platforms, I have to set 

>>  
>>  
> /*****************************************************************************
>> Index: alunn/arch/arm/mach-kirkwood/common.c
>> ===================================================================
>> --- alunn.orig/arch/arm/mach-kirkwood/common.c	2012-07-20 
> 09:14:46.000000000 +0200
>> +++ alunn/arch/arm/mach-kirkwood/common.c	2012-07-20 17:51:03.104927094 
> +0200
>> @@ -301,7 +301,7 @@ void __init kirkwood_ge00_init(struct mv
>>  {
>>  	orion_ge00_init(eth_data,
>>  			GE00_PHYS_BASE, IRQ_KIRKWOOD_GE00_SUM,
>> -			IRQ_KIRKWOOD_GE00_ERR);
>> +			IRQ_KIRKWOOD_GE00_ERR, 1600);
>>  	/* The interface forgets the MAC address assigned by u-boot if
>>  	the clock is turned off, so claim the clk now. */
>>  	clk_prepare_enable(ge0);
>> @@ -315,7 +315,7 @@ void __init kirkwood_ge01_init(struct mv
>>  {
>>  	orion_ge01_init(eth_data,
>>  			GE01_PHYS_BASE, IRQ_KIRKWOOD_GE01_SUM,
>> -			IRQ_KIRKWOOD_GE01_ERR);
>> +			IRQ_KIRKWOOD_GE01_ERR, 1600);
>>  	clk_prepare_enable(ge1);
>>  }
>>  
>> Index: alunn/arch/arm/mach-mv78xx0/common.c
>> ===================================================================
>> --- alunn.orig/arch/arm/mach-mv78xx0/common.c	2012-07-20 
> 09:14:46.000000000 +0200
>> +++ alunn/arch/arm/mach-mv78xx0/common.c	2012-07-20 17:50:26.712928695 +0200
>> @@ -213,7 +213,7 @@ void __init mv78xx0_ge00_init(struct mv6
>>  {
>>  	orion_ge00_init(eth_data,
>>  			GE00_PHYS_BASE, IRQ_MV78XX0_GE00_SUM,
>> -			IRQ_MV78XX0_GE_ERR);
>> +			IRQ_MV78XX0_GE_ERR, 0);
>>  }
>>  
>>  
>> @@ -224,7 +224,7 @@ void __init mv78xx0_ge01_init(struct mv6
>>  {
>>  	orion_ge01_init(eth_data,
>>  			GE01_PHYS_BASE, IRQ_MV78XX0_GE01_SUM,
>> -			NO_IRQ);
>> +			NO_IRQ, 0);
>>  }
>>  
>>  
>> Index: alunn/arch/arm/mach-orion5x/common.c
>> ===================================================================
>> --- alunn.orig/arch/arm/mach-orion5x/common.c	2012-07-20 09:14:46.000000000 
> +0200
>> +++ alunn/arch/arm/mach-orion5x/common.c	2012-07-20 17:50:26.744928692 
> +0200
>> @@ -109,7 +109,7 @@ void __init orion5x_eth_init(struct mv64
>>  {
>>  	orion_ge00_init(eth_data,
>>  			ORION5X_ETH_PHYS_BASE, IRQ_ORION5X_ETH_SUM,
>> -			IRQ_ORION5X_ETH_ERR);
>> +			IRQ_ORION5X_ETH_ERR, 0);
>>  }
>>  
>>  
>> Index: alunn/arch/arm/plat-orion/common.c
>> ===================================================================
>> --- alunn.orig/arch/arm/plat-orion/common.c	2012-07-20 
> 09:14:46.000000000 +0200
>> +++ alunn/arch/arm/plat-orion/common.c	2012-07-20 17:50:26.756928690 +0200
>> @@ -291,10 +291,12 @@ static struct platform_device orion_ge00
>>  void __init orion_ge00_init(struct mv643xx_eth_platform_data *eth_data,
>>  			    unsigned long mapbase,
>>  			    unsigned long irq,
>> -			    unsigned long irq_err)
>> +			    unsigned long irq_err,
>> +			    unsigned int tx_csum_limit)
>>  {
>>  	fill_resources(&orion_ge00_shared, orion_ge00_shared_resources,
>>  		       mapbase + 0x2000, SZ_16K - 1, irq_err);
>> +	orion_ge00_shared_data.tx_csum_limit = tx_csum_limit;
>>  	ge_complete(&orion_ge00_shared_data,
>>  		    orion_ge00_resources, irq, &orion_ge00_shared,
>>  		    eth_data, &orion_ge00);
>> @@ -343,10 +345,12 @@ static struct platform_device orion_ge01
>>  void __init orion_ge01_init(struct mv643xx_eth_platform_data *eth_data,
>>  			    unsigned long mapbase,
>>  			    unsigned long irq,
>> -			    unsigned long irq_err)
>> +			    unsigned long irq_err,
>> +			    unsigned int tx_csum_limit)
>>  {
>>  	fill_resources(&orion_ge01_shared, orion_ge01_shared_resources,
>>  		       mapbase + 0x2000, SZ_16K - 1, irq_err);
>> +	orion_ge01_shared_data.tx_csum_limit = tx_csum_limit;
>>  	ge_complete(&orion_ge01_shared_data,
>>  		    orion_ge01_resources, irq, &orion_ge01_shared,
>>  		    eth_data, &orion_ge01);
>> Index: alunn/arch/arm/plat-orion/include/plat/common.h
>> ===================================================================
>> --- alunn.orig/arch/arm/plat-orion/include/plat/common.h	2012-07-20 
> 09:14:46.000000000 +0200
>> +++ alunn/arch/arm/plat-orion/include/plat/common.h	2012-07-20 
> 17:50:26.772928691 +0200
>> @@ -39,12 +39,14 @@ void __init orion_rtc_init(unsigned long
>>  void __init orion_ge00_init(struct mv643xx_eth_platform_data *eth_data,
>>  			    unsigned long mapbase,
>>  			    unsigned long irq,
>> -			    unsigned long irq_err);
>> +			    unsigned long irq_err,
>> +			    unsigned int tx_csum_limit);
>>  
>>  void __init orion_ge01_init(struct mv643xx_eth_platform_data *eth_data,
>>  			    unsigned long mapbase,
>>  			    unsigned long irq,
>> -			    unsigned long irq_err);
>> +			    unsigned long irq_err,
>> +			    unsigned int tx_csum_limit);
>>  
>>  void __init orion_ge10_init(struct mv643xx_eth_platform_data *eth_data,
>>  			    unsigned long mapbase,
>> 
>> 
>> 
>> _______________________________________________
>> linux-arm-kernel mailing list
>> linux-arm-kernel at lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2012-07-26  9:28 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-26  7:12 [patch 1/1] kirkwood: set tx_csum_limit Arnaud Patard (Rtp)
2012-07-26  9:15 ` Florian Fainelli
2012-07-26  9:28   ` Arnaud Patard (Rtp) [this message]
2012-07-26  9:44     ` Florian Fainelli
2012-07-26  9:45     ` Andrew Lunn
2012-07-26 10:15       ` Arnaud Patard (Rtp)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87r4ry98i0.fsf@lebrac.rtp-net.org \
    --to=arnaud.patard@rtp-net.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.