# Jumbo Frames [SOLVED]

## plink212

I have 2 linux machines

the first has a nforce 4 chipset with a gigabyte nic identified as

```
00:14.0 Bridge: nVidia Corporation MCP51 Ethernet Controller (rev a1)
```

ifconfig lists

```
eth0      Link encap:Ethernet  HWaddr 00:15:58:11:09:A9  

          inet addr:192.168.1.4  Bcast:192.168.1.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:4092 errors:0 dropped:0 overruns:0 frame:0

          TX packets:2516 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:483502 (472.1 Kb)  TX bytes:351905 (343.6 Kb)

          Interrupt:10 
```

ethtool lists

```
Settings for eth0:

        Supported ports: [ MII ]

        Supported link modes:   10baseT/Half 10baseT/Full 

                                100baseT/Half 100baseT/Full 

                                1000baseT/Full 

        Supports auto-negotiation: Yes

        Advertised link modes:  10baseT/Half 10baseT/Full 

                                100baseT/Half 100baseT/Full 

                                1000baseT/Full 

        Advertised auto-negotiation: Yes

        Speed: 1000Mb/s

        Duplex: Full

        Port: MII

        PHYAD: 1

        Transceiver: external

        Auto-negotiation: on

        Supports Wake-on: g

        Wake-on: d

        Link detected: yes
```

This is using the forced eth driver in the kernel

```
Linux mythtv 2.6.18-ck1-r2 #2 SMP Sun Nov 19 12:43:53 GMT 2006 x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 4800+ AuthenticAMD GNU/Linux
```

I want to set jumbo frames so i execute

```
ifconfig eth0 mtu 9000
```

however the result is

```
SIOCSIFMTU: Invalid argument
```

The same is true for the other machine which has deets as follows

```
00:0a.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet (rev 10)

```

```
eth0      Link encap:Ethernet  HWaddr 00:14:6C:33:63:B5  

          inet addr:192.168.1.77  Bcast:192.168.1.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:19207579 errors:0 dropped:0 overruns:0 frame:0

          TX packets:12375561 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:4130092277 (3938.7 Mb)  TX bytes:1644050617 (1567.8 Mb)

          Interrupt:16 Base address:0x4400 
```

```
Settings for eth0:

        Supported ports: [ TP ]

        Supported link modes:   10baseT/Half 10baseT/Full 

                                100baseT/Half 100baseT/Full 

                                1000baseT/Full 

        Supports auto-negotiation: Yes

        Advertised link modes:  10baseT/Half 10baseT/Full 

                                100baseT/Half 100baseT/Full 

                                1000baseT/Full 

        Advertised auto-negotiation: Yes

        Speed: 1000Mb/s

        Duplex: Full

        Port: Twisted Pair

        PHYAD: 0

        Transceiver: internal

        Auto-negotiation: on

        Supports Wake-on: pumbg

        Wake-on: g

        Current message level: 0x00000033 (51)

        Link detected: yes

```

Is there some hidden kernel option I am missing here? as i do not seem to able to enable jumbo frames on either nic?

Thanks

TimLast edited by plink212 on Sun Jan 21, 2007 2:44 pm; edited 1 time in total

----------

## anthrax

Since my network is not gigabit enabled, so I shall do the best I can. I may be the case that Jumbo Frames are not possible yet with the driver. However reading the gentoo-wiki page on it the guy mentioned that his Gigabit Interface could only bring its MTU up to 7200 so maybe yours is not capable of the full 9000 either. So may be google around for the max MTU of your chip/driver or use ethtool (I really dont know what one you can do this with in just guessing). One other thing you could try is bringing down your interface and then trying to apply the new MTU.

Good Luck  :Smile: 

----------

## plink212

looking in the forcedeth.c the maximum mtu is defined as 9200, so at least for the nvidia I do not think that is the case.

I have tried applying the mtu with the interface up and down but it gives the same result.

I cannot seem to set a mtu of greater than 1500 on either adapter.

----------

## plink212

bump

----------

## anthrax

Then I guess I regret to say that either the nforce ethernet does support jumbo frames (not all gigabit chips do) or the forcedeth driver doesnt support it. It may be worth trying the proprietary ones from Nvidia maybe

----------

## anybody

This is very strange. According to nVidia Specs the nForce Gigabit adapters DO support Jumbo frames, and according to the driver it does too.

Why doesn't it work ?!? Has somebody solved this problem yet ?

I'm using an Asus A8N-VM CSM with GeForce 6150/MCP430 Chipset and a "nVidia Corporation MCP51 Ethernet Controller (rev a1)" network controller according to lspci.

I am using the very latest Kernel (2.6.20-rc5) and tried it with both "Use Rx and Tx Polling (NAPI) (EXPERIMENTAL)" On and Off.

----------

## anybody

Even tough i have absolutely no clue about C, i just had a look at the forcedeth.c driver, trying to find out more about this problem. And i actually found the reason !!!

Let's have a look at some code snippets:

```
#define DEV_HAS_LARGEDESC       0x0004  /* device supports jumbo frames and needs packet format 2 */
```

```

        np->pkt_limit = NV_PKTLIMIT_1;

        if (id->driver_data & DEV_HAS_LARGEDESC)

                np->pkt_limit = NV_PKTLIMIT_2;

```

We can see that the higher value of 9100 (stored in NV_PKTLIMIT_2) is only enabled when DEV_HAS_LARGEDESC is present.

Now if we compare for example the hardware profiles in the driver of the old nForce 3 with the much newer MCP51, we see:

```

        {       /* nForce3 Ethernet Controller */

                PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_7),

                .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM,

```

vs.

```

        {       /* MCP51 Ethernet Controller */

                PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_13),

                .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL,

```

The question that remains now is: Does this hardware REALLY not support jumbo frames (which i doubt), or is it just a forcedeth bug, that nobody except us has noticed so far?

Could someone please test whether it is possible to use jumbo frames on this hardware in windows ?

----------

## anybody

I changed the both MCP51 feature bits in the forcedeth.c code and recompiled the kernel:

```

tux ~ # ifconfig eth0 mtu 9100

tux ~ # ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 00:15:F2:52:D7:6A

          inet addr:192.168.0.11  Bcast:192.168.0.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:9100  Metric:1

          RX packets:461 errors:0 dropped:0 overruns:0 frame:0

          TX packets:353 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:79498 (77.6 Kb)  TX bytes:32904 (32.1 Kb)

          Interrupt:23 Base address:0x4000

```

However now, once i enable larger MTU sizes (i tried, 9100, 9000 and 2000), the server quickly looses the whole network connection or starts dropping SSH connections where there is more traffic than a few bytes / sec.

(For example: When starting IPTRAF, i only see the first few parts of the background and then the connection is dead before the menu shows up)

I'm starting to get the impression that this network card might actually NOT support Jumbo Frames. I found an indication that this might be true here:

http://archives.neohapsis.com/archives/openbsd/cvs/2006-02/0288.html

However, i guess for the ultimate proof, having a look in the windows device manager of such a board is needed. If that should be indeed the case, having a gigabit network card without jumbo frames is indeed a very sad thing  :Sad: 

[EDIT]

I now had someone have a look in the windows settings driver settings, in both Vista (Microsoft Driver) and Windows XP (nVidia Driver).

Both did not have Settings related to Frame Size / Jumbo Frames in the Device Manager. So i suppose this chipset really doesn't support it. I ordered an Intel PRO/1000 PT Desktop Adapter PCIe x1 Network Card therefor and will do some speed comparisons once it arrives.

[/EDIT]

----------

