1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

JMicron JMC250 jme interface not receiving

Discussion in 'System Hardware' started by ocrow, Jun 25, 2010.

  1. ocrow

    ocrow New Member

    Thanks Received:
    I posted this to the freebsd-hardware list yesterday. I hope you'll forgive me for cross-posting here for a broader audience.

    I'm asking for help getting a JMicron JMC250 network interface working under FreeBSD. It appears that the jme() driver is not functioning correctly on this hardware. The machine is an Asus Eee Box B202 with a JMicron JMC250 Ethernet chip on the motherboard. I'm running the 8.0-RELEASE Generic kernel. The machine boots fine, recognizing the interface as jme0, but I can't connect to any hosts on the network. When I ping the router or another host on the subnet, I see the packet lights flash on the router, but I get no ping responses. The arp() cache remains empty.

    I know that it's not a hardware problem, because the machine can connect to the network fine under Windows XP, using the same NIC, cable and router port. Under FreeBSD I can assign an IP address, take the interface down and up, and can see the link light on the router turn off and on again when the interface comes up, but I can't ping any hosts.

    When I ping the EeeBox from another host the EeeBox MAC address is added to the other hosts' arp() cache, but no ping response packets are received. On the EeeBox the arp() cache remains empty. Perhaps the EeeBox can transmit packets, but somehow not receive?

    I have tried booting with MSI and MSI-X disabled (in loader.conf: hw.jme.msi_disable="1", hw.jme.msix_disable="1"). The interface came up without MSI, but I was still unable to connect to any hosts. I tried disabling the following interface options using ifconfig(), also without result: -rxcsum, -txcsum, -tso, -wol, -vlanhwtag.

    # pciconf -vlbc
    jme0@pci0:1:0:0:    class=0x020000 card=0x839c1043 chip=0x0250197b rev=0x11 hdr=0x00
        vendor     = 'JMicron Technology Corp.'
        class      = network
        subclass   = ethernet
        bar   [10] = type Memory, range 32, base 0xfbefc000, size 16384, enabled
        bar   [18] = type I/O Port, range 32, base 0xec80, size 128, enabled
        bar   [1c] = type I/O Port, range 32, base 0xe800, size 256, enabled
        cap 01[68] = powerspec 3  supports D0 D3  current D0
        cap 10[50] = PCI-Express 1 legacy endpoint max data 128(128) link x1(x1)
        cap 11[40] = MSI-X supports 8 messages in map 0x10 enabled
        cap 05[70] = MSI supports 8 messages, 64 bit, vector masks

    # ifconfig jme0
    jme0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether e0:cb:4e:08:37:f5
        inet netmask 0xffffff00 broadcast
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active

    # netstat -nr
    Routing tables
    Destination        Gateway            Flags    Refs      Use  Netif Expire       link#1             U           0       15   jme0         link#1             UHS         0        0    lo0          link#2             UH          0        4    lo0

    # arp -a

    # ping
    PING ( 56 data bytes
    ping: sendto: Host is down
    ping: sendto: Host is down
    ping: sendto: Host is down
    ping: sendto: Host is down
    --- ping statistics ---
    9 packets transmitted, 0 packets received, 100.0% packet loss

    # uname -a
    FreeBSD  8.0-RELEASE FreeBSD 8.0-RELEASE #0: Sat Nov 21 15:48:17 UTC 2009 root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386

    # dmesg
    Copyright (c) 1992-2009 The FreeBSD Project.
    Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
    FreeBSD is a registered trademark of The FreeBSD Foundation.
    FreeBSD 8.0-RELEASE #0: Sat Nov 21 15:48:17 UTC 2009
    Timecounter "i8254" frequency 1193182 Hz quality 0
    CPU: Intel(R) Atom(TM) CPU N270   @ 1.60GHz (1608.02-MHz 686-class CPU)
      Origin = "GenuineIntel"  Id = 0x106c2  Stepping = 2
      AMD Features=0x100000<NX>
      AMD Features2=0x1<LAHF>
      TSC: P-state invariant
    real memory  = 1073741824 (1024 MB)
    avail memory = 1027768320 (980 MB)
    ACPI APIC Table: <A_M_I_ OEMAPIC >
    FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
    FreeBSD/SMP: 1 package(s) x 1 core(s) x 2 HTT threads
     cpu0 (BSP): APIC ID:  0
     cpu1 (AP/HT): APIC ID:  1
    ACPI Warning: Optional field Pm2ControlBlock has zero address or length:        0     820/0 20090521 tbfadt-655
    ACPI Warning: Invalid length for Pm2ControlBlock: 0, using default 8 20090521 tbfadt-707
    ioapic0: Changing APIC ID to 2
    ioapic0 <Version 2.0> irqs 0-23 on motherboard
    kbd1 at kbdmux0
    acpi0: <A_M_I_ OEMRSDT> on motherboard
    acpi0: [ITHREAD]
    acpi0: Power Button (fixed)
    acpi0: reservation of 0, a0000 (3) failed
    acpi0: reservation of 100000, 3f700000 (3) failed
    Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
    acpi_timer0: <24-bit timer at 3.579545MHz> port 0x808-0x80b on acpi0
    acpi_hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
    Timecounter "HPET" frequency 14318180 Hz quality 900
    pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
    pci0: <ACPI PCI bus> on pcib0
    vgapci0: <VGA-compatible display> port 0xdc80-0xdc87 mem 0xfbd00000-0xfbd7ffff,0xd0000000-0xdfffffff,0xfbcc0000-0xfbcfffff irq 16 at device 2.0 
    on pci0
    agp0: <Intel 945GME SVGA controller> on vgapci0
    agp0: detected 7932k stolen memory
    agp0: aperture size is 256M
    vgapci1: <VGA-compatible display> mem 0xfbd80000-0xfbdfffff at device 2.1 on pci0
    pci0: <multimedia, HDA> at device 27.0 (no driver attached)
    pcib1: <ACPI PCI-PCI bridge> irq 16 at device 28.0 on pci0
    pci3: <ACPI PCI bus> on pcib1
    pcib2: <ACPI PCI-PCI bridge> irq 17 at device 28.1 on pci0
    pci2: <ACPI PCI bus> on pcib2
    pci2: <network> at device 0.0 (no driver attached)
    pcib3: <ACPI PCI-PCI bridge> irq 18 at device 28.2 on pci0
    pci1: <ACPI PCI bus> on pcib3
    jme0: <JMicron Inc, JMC250 Gigabit Ethernet> port 0xec80-0xecff,0xe800-0xe8ff mem 0xfbefc000-0xfbefffff irq 18 at device 0.0 on pci1
    jme0: Using 8 MSIX messages.
    miibus0: <MII bus> on jme0
    jmphy0: <JMP211 10/100/1000 media interface> PHY 1 on miibus0
    jmphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
    jme0: Ethernet address: e0:cb:4e:08:37:f5
    jme0: [FILTER]
    jme0: [FILTER]
    jme0: [FILTER]
    jme0: [FILTER]
    jme0: [FILTER]
    jme0: [FILTER]
    jme0: [FILTER]
    jme0: [FILTER]
    uhci0: <Intel 82801G (ICH7) USB controller USB-A> port 0xd480-0xd49f irq 23 at device 29.0 on pci0
    uhci0: [ITHREAD]
    uhci0: LegSup = 0x0f30
    usbus0: <Intel 82801G (ICH7) USB controller USB-A> on uhci0

    Thanks for any assistance,
  2. ocrow

    ocrow New Member

    Thanks Received:
  3. singing_sky

    singing_sky New Member

    Thanks Received:
    I've got the same problem with my Broadcom 4312 under FreeBSD 9. But I can't find the solution yet....
  4. ideaflow

    ideaflow New Member

    Thanks Received:
    Just to confirm I had this identical problem in FreeBSD 10, the adapter was able to acquire an IP address using DHCP, but no other communcation was possible no ping to valid IP on the LAN would work. In my case the adapter also worked fine in Windows XP, and a quick boot into Lubuntu 14.04 fixed it. My box was also an Asus Eee box, although I'm unsure of the exact model.

    I suspect that Windows XP leaves the adapter in a state which FreeBSD is not able to manage properly, yet Ubuntu can, and Ubuntu will then leave this in a state which FreeBSD can manage okay. I have heard for example that Windows has its own way to making an adapter ready for a wake on LAN packet each time it shuts down, which has in the past caused me problems in Linux. It could be this or some other similar process.