Subject: Re: [PATCH 11/23] e1000: Jumbo frames fixes for 82573

From: Auke Kok <[email-masked]>
Date: Wed, 20 Sep 2006 08:37:47 -0700

Jeff Garzik wrote:
> Kok, Auke wrote:
>> Disable jumbo frames for 82573L alltogether and when ASPM is enabled
>> since the hardware has problems with it. For the NICs that do support
>> this in the 82573 series we set ERT_2048 to attempt to receive as much
>> traffic as early as we can.
>>
>> Signed-off-by: Bruce Allan <[email-masked]>
>> Signed-off-by: Auke Kok <[email-masked]>
>> ---
>>
>>  drivers/net/e1000/e1000_main.c |   10 +++++++---
>>  1 files changed, 7 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/net/e1000/e1000_main.c 
>> b/drivers/net/e1000/e1000_main.c
>> index e81aa03..2ecec51 100644
>> --- a/drivers/net/e1000/e1000_main.c
>> +++ b/drivers/net/e1000/e1000_main.c
>> @@ -3138,11 +3138,13 @@ e1000_change_mtu(struct net_device *netd
>>          }
>>          break;
>>      case e1000_82573:
>> -        /* only enable jumbo frames if ASPM is disabled completely
>> -         * this means both bits must be zero in 0x1A bits 3:2 */
>> +        /* Jumbo Frames not supported if:
>> +         * - this is not an 82573L device
>> +         * - ASPM is enabled in any way (0x1A bits 3:2) */
>>          e1000_read_eeprom(&adapter->hw, EEPROM_INIT_3GIO_3, 1,
>>                            &eeprom_data);
>> -        if (eeprom_data & EEPROM_WORD1A_ASPM_MASK) {
>> +        if ((adapter->hw.device_id != E1000_DEV_ID_82573L) ||
>> +            (eeprom_data & EEPROM_WORD1A_ASPM_MASK)) {
>>              if (max_frame > MAXIMUM_ETHERNET_FRAME_SIZE) {
>>                  DPRINTK(PROBE, ERR,
>>                              "Jumbo Frames not supported.\n");
> 
> NAK.  at probe time, set a jumbo-frames-enabled bit, then test it in 
> e1000_change_mtu().
> 
> Don't include all this chip-checking code into the change_mtu function.

I agree with the concept, not with the NAK. This workaround was already there 
and is not a significant new introduction of out-of-band workarounds in code.

Cleaning e1000 up is a major task that will take a few more months. This 
workaround changes 3 lines of code and will help today.

Cheers,

Auke