You are not logged in.

#1 2013-11-13 18:22:50

jifwin
Member
Registered: 2013-11-13
Posts: 1

Asus K52Je JMicron network interface kernel module problem

Hi.
I've got laptop ASUS K52Je. The ethernet controller doesn't work. It is detected by the kernel:

lspci | grep Jmicron

05:00.0 System peripheral: JMicron Technology Corp. SD/MMC Host Controller (rev 80)
05:00.2 SD Host controller: JMicron Technology Corp. Standard SD Host Controller (rev 80)
05:00.3 System peripheral: JMicron Technology Corp. MS Host Controller (rev 80)
05:00.4 System peripheral: JMicron Technology Corp. xD Host Controller (rev 80)
05:00.5 Ethernet controller: JMicron Technology Corp. JMC250 PCI Express Gigabit Ethernet Controller (rev 03)

and by the ifconfig -a

ens5f5: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        ether ff:ff:ff:ff:ff:ff  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

but it's down and I can't set it up.
ip link set dev ens5f5 up

RTNETLINK answers: Cannot assign requested address

dhcpcd doesn't work too.

dhcpcd[3623]: version 6.0.5 starting
dhcpcd[3623]: ens5f5: up_interface: Cannot assign requested address
dhcpcd[3623]: ens5f5: waiting for carrier
dhcpcd[3623]: timed out
dhcpcd[3623]: exited

This ethernet interface is controlled by jme kernel module. It is loaded automaticly while booting.

lsmod | grep jme

jme                    45368  0 
mii                     4027  1 jme

I also tried compiling this module direclty from the producer webiste, but errors occured while 'make install'::

make[1]: Entering directory '/usr/src/linux-3.11.6-1-ARCH'
  CC [M]  /home/grzegorz/driver/jmebp-1.0.8.5/jme.o
/home/grzegorz/driver/jmebp-1.0.8.5/jme.c: In function 'jme_alloc_and_feed_skb':
/home/grzegorz/driver/jmebp-1.0.8.5/jme.c:1121:4: error: too few arguments to function '__vlan_hwaccel_put_tag'
    __vlan_hwaccel_put_tag(skb, vid);
    ^
In file included from /home/grzegorz/driver/jmebp-1.0.8.5/jme.c:45:0:
include/linux/if_vlan.h:236:31: note: declared here
 static inline struct sk_buff *__vlan_hwaccel_put_tag(struct sk_buff *skb,
                               ^
/home/grzegorz/driver/jmebp-1.0.8.5/jme.c: At top level:
/home/grzegorz/driver/jmebp-1.0.8.5/jme.c:3444:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'jme_init_one'
 jme_init_one(struct pci_dev *pdev,
 ^
/home/grzegorz/driver/jmebp-1.0.8.5/jme.c:3732:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'jme_remove_one'
 jme_remove_one(struct pci_dev *pdev)
 ^
/home/grzegorz/driver/jmebp-1.0.8.5/jme.c:3901:20: error: 'jme_init_one' undeclared here (not in a function)
  .probe          = jme_init_one,
                    ^
/home/grzegorz/driver/jmebp-1.0.8.5/jme.c:3902:2: error: implicit declaration of function '__devexit_p' [-Werror=implicit-function-declaration]
  .remove         = __devexit_p(jme_remove_one),
  ^
/home/grzegorz/driver/jmebp-1.0.8.5/jme.c:3902:32: error: 'jme_remove_one' undeclared here (not in a function)
  .remove         = __devexit_p(jme_remove_one),
                                ^
/home/grzegorz/driver/jmebp-1.0.8.5/jme.c:300:1: warning: 'jme_reload_eeprom' defined but not used [-Wunused-function]
 jme_reload_eeprom(struct jme_adapter *jme)
 ^
/home/grzegorz/driver/jmebp-1.0.8.5/jme.c:330:1: warning: 'jme_load_macaddr' defined but not used [-Wunused-function]
 jme_load_macaddr(struct net_device *netdev)
 ^
/home/grzegorz/driver/jmebp-1.0.8.5/jme.c:1276:1: warning: 'jme_pcc_tasklet' defined but not used [-Wunused-function]
 jme_pcc_tasklet(unsigned long arg)
 ^
/home/grzegorz/driver/jmebp-1.0.8.5/jme.c:1468:13: warning: 'jme_LC_task' defined but not used [-Wunused-function]
 static void jme_LC_task(struct work_struct *work)
             ^
/home/grzegorz/driver/jmebp-1.0.8.5/jme.c:1572:1: warning: 'jme_link_change_tasklet' defined but not used [-Wunused-function]
 jme_link_change_tasklet(unsigned long arg)
 ^
/home/grzegorz/driver/jmebp-1.0.8.5/jme.c:1662:1: warning: 'jme_poll' defined but not used [-Wunused-function]
 jme_poll(JME_NAPI_HOLDER(holder), JME_NAPI_WEIGHT(budget))
 ^
/home/grzegorz/driver/jmebp-1.0.8.5/jme.c:1687:1: warning: 'jme_rx_empty_tasklet' defined but not used [-Wunused-function]
 jme_rx_empty_tasklet(unsigned long arg)
 ^
/home/grzegorz/driver/jmebp-1.0.8.5/jme.c:1724:1: warning: 'jme_tx_clean_tasklet' defined but not used [-Wunused-function]
 jme_tx_clean_tasklet(unsigned long arg)
 ^
/home/grzegorz/driver/jmebp-1.0.8.5/jme.c:3360:1: warning: 'jme_pci_dma64' defined but not used [-Wunused-function]
 jme_pci_dma64(struct pci_dev *pdev)
 ^
cc1: some warnings being treated as errors
scripts/Makefile.build:314: recipe for target '/home/grzegorz/driver/jmebp-1.0.8.5/jme.o' failed
make[2]: *** [/home/grzegorz/driver/jmebp-1.0.8.5/jme.o] Error 1
Makefile:1225: recipe for target '_module_/home/grzegorz/driver/jmebp-1.0.8.5' failed
make[1]: *** [_module_/home/grzegorz/driver/jmebp-1.0.8.5] Error 2
make[1]: Leaving directory '/usr/src/linux-3.11.6-1-ARCH'
Makefile:27: recipe for target 'modules' failed
make: *** [modules] Error 2

I also tried installing it from AUR, it's called jme-git. It installes with no problem, but the interface still doesn't work.
I tried different linux distributions, none of them had this module working. Wifi controller works great. I had no problem with configuring it. Hope you guys help me.

Offline

#2 2014-04-08 11:03:09

dsueiro
Member
Registered: 2014-04-08
Posts: 1

Re: Asus K52Je JMicron network interface kernel module problem

Newer kernel versions don't have __devinit, __devexit anymore. This is why it gives the compilation error.
Some useful info:
http://elinux.org/Kernel_3.4_to_3.10_porting_guide

You can appy this patch to get compilation working:

Index: jmebp-1.0.8.5/jme.c
===================================================================
--- jmebp-1.0.8.5.orig/jme.c    2011-12-01 05:48:53.000000000 -0200
+++ jmebp-1.0.8.5/jme.c 2014-04-08 07:57:46.378852689 -0300
@@ -3440,8 +3440,7 @@
 };
 #endif

-static int __devinit
-jme_init_one(struct pci_dev *pdev,
+static int  jme_init_one(struct pci_dev *pdev,
             const struct pci_device_id *ent)
 {
        int rc = 0, using_dac, i;
@@ -3728,7 +3727,7 @@
        return rc;
 }

-static void __devexit
+static void 
 jme_remove_one(struct pci_dev *pdev)
 {
        struct net_device *netdev = pci_get_drvdata(pdev);
@@ -3899,7 +3898,7 @@
        .name           = DRV_NAME,
        .id_table       = jme_pci_tbl,
        .probe          = jme_init_one,
-       .remove         = __devexit_p(jme_remove_one),
+       .remove         = jme_remove_one,
        .shutdown       = jme_shutdown,
 #ifndef JME_NEW_PM_API
        .suspend        = jme_suspend,

Offline

Board footer

Powered by FluxBB