# JMC250 - jme 1.0.8 kernel driver - TCP Checksum errors

## jasn

I've got a JMicron JMC250 PCI Express Gigabit Ethernet Controller (rev 05) in my Clevo P150hm laptop, running ck-sources-3.8.3;

```
[    2.536424] jme: JMicron JMC2XX ethernet driver version 1.0.8

[    2.558523] jme 0000:03:00.0 eth0: JMC250 Gigabit Ethernet chiprev:35 pcirev:5 macaddr:xx:xx:xx:xx:xx:xx

[   13.837461] jme 0000:03:00.0: irq 54 for MSI/MSI-X

[   13.837536] jme 0000:03:00.0 eth0: Link is down

[   13.860225] jme 0000:03:00.0 eth0: Link is down

[   16.174196] jme 0000:03:00.0 eth0: Link is up at ANed: 1000 Mbps, Full-Duplex, MDI
```

using the in kernel jme driver;

```
filename:       /lib/modules/3.8.3-ck/kernel/drivers/net/ethernet/jme.ko

version:        1.0.8

license:        GPL

description:    JMicron JMC2x0 PCI Express Ethernet driver

author:         Guo-Fu Tseng <cooldavid@cooldavid.org>

srcversion:     20960E54BAC91CD713E3841

alias:          pci:v0000197Bd00000260sv*sd*bc*sc*i*

alias:          pci:v0000197Bd00000250sv*sd*bc*sc*i*

depends:        mii

intree:         Y

vermagic:       3.8.3-ck SMP preempt mod_unload 

parm:           force_pseudohp:Enable pseudo hot-plug feature manually by driver instead of BIOS. (int)

parm:           no_pseudohp:Disable pseudo hot-plug feature. (int)

parm:           no_extplug:Do not use external plug signal for pseudo hot-plug. (int)
```

and I am continuously getting TCP checksum errors;

```
[   87.317469] jme 0000:03:00.0 eth0: TCP Checksum error

[ 2199.248429] jme 0000:03:00.0 eth0: TCP Checksum error
```

Reading about these issues in general, in this Gentoo Forums thread, and this LinuxQuestions thread, as well as this Fedora mailing list thread, I've tried to turn off (set to 0);

```
/proc/sys/net/ipv4/tcp_sack

/proc/sys/net/ipv4/tcp_dsack

/proc/sys/net/ipv4/tcp_fack

and especially

/proc/sys/net/ipv4/tcp_timestamps
```

all without changing this behavior. Here's the ethtool output for the standard settings and features; 

```
Settings for eth0:

        Supported ports: [ TP MII ]

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

                                100baseT/Half 100baseT/Full 

                                1000baseT/Half 1000baseT/Full 

        Supported pause frame use: No

        Supports auto-negotiation: Yes

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

                                100baseT/Half 100baseT/Full 

                                1000baseT/Half 1000baseT/Full 

        Advertised pause frame use: Symmetric Receive-only

        Advertised auto-negotiation: Yes

        Link partner advertised link modes:  10baseT/Half 10baseT/Full 

                                             100baseT/Half 100baseT/Full 

                                             1000baseT/Full 

        Link partner advertised pause frame use: Symmetric

        Link partner advertised auto-negotiation: Yes

        Speed: 1000Mb/s

        Duplex: Full

        Port: MII

        PHYAD: 1

        Transceiver: internal

        Auto-negotiation: on

        Supports Wake-on: pg

        Wake-on: g

        Current message level: 0x000020c6 (8390)

                               probe link rx_err tx_err hw

        Link detected: yes

Features for eth0:

rx-checksumming: on

tx-checksumming: on

        tx-checksum-ipv4: on

        tx-checksum-ip-generic: off [fixed]

        tx-checksum-ipv6: on

        tx-checksum-fcoe-crc: off [fixed]

        tx-checksum-sctp: off [fixed]

scatter-gather: on

        tx-scatter-gather: on

        tx-scatter-gather-fraglist: off [fixed]

tcp-segmentation-offload: on

        tx-tcp-segmentation: on

        tx-tcp-ecn-segmentation: off [fixed]

        tx-tcp6-segmentation: on

udp-fragmentation-offload: off [fixed]

generic-segmentation-offload: on

generic-receive-offload: on

large-receive-offload: off [fixed]

rx-vlan-offload: on [fixed]

tx-vlan-offload: on [fixed]

ntuple-filters: off [fixed]

receive-hashing: off [fixed]

highdma: on [fixed]

rx-vlan-filter: off [fixed]

vlan-challenged: off [fixed]

tx-lockless: off [fixed]

netns-local: off [fixed]

tx-gso-robust: off [fixed]

tx-fcoe-segmentation: off [fixed]

fcoe-mtu: off [fixed]

tx-nocache-copy: on

loopback: off [fixed]

rx-fcs: off [fixed]

rx-all: off [fixed]
```

Any tips on how to debug this further, would be appreciated. For example, is there some way to set the debug level of the jme driver to output more useful information regarding these TCP Checksum failures? Also if someone could outline the steps necessary in order to test the latest version of the jme driver from the git repository, it would also be appreciated.

Thanks..

----------

