Can't build linux-driver-8.5.1 with netdev support

This forum covers PCAN-Linux and Linux development issues concerning our products
Post Reply
Eric.c
Posts: 2
Joined: Mon 29. Jan 2018, 15:46

Can't build linux-driver-8.5.1 with netdev support

Post by Eric.c » Mon 29. Jan 2018, 15:57

Hi,

I was successfully using linux-driver-8.4.0 with netdev for USB CAN dongle but since kernel update "can0" interface is not found.

So, I tried to build the 8.5.1 version with:
make NET=NETDEV_SUPPORT PCC=NO PCI=NO PCIEC=NO ISA=NO DNG=NO COMPAT_SUPPORT=NO

But I have the following error: error: ‘struct net_device’ has no member named ‘trans_start’

Code: Select all

make NET=NETDEV_SUPPORT PCC=NO PCI=NO PCIEC=NO ISA=NO DNG=NO COMPAT_SUPPORT=NO
make[1]: Entering directory `/work1/dev200-local/can/peak-linux-driver-8.5.1/driver'
make[1]: Nothing to be done for `depend'.
make[1]: Leaving directory `/work1/dev200-local/can/peak-linux-driver-8.5.1/driver'
make[1]: Entering directory `/work1/dev200-local/can/peak-linux-driver-8.5.1/driver'
***
*** Host machine kernel version=3.10.0-693.17.1.el7.x86_64
*** Driver kernel version=3.10.0-693.17.1.el7.x86_64 (3.10.0)
*** Path to kernel sources=/lib/modules/3.10.0-693.17.1.el7.x86_64/build
*** use KBUILD=yes
*** cc version=4.8.5
***
make -C /lib/modules/3.10.0-693.17.1.el7.x86_64/build  SUBDIRS=/work1/dev200-local/can/peak-linux-driver-8.5.1/driver        EXTRA_CFLAGS="-DNO_COMPAT -DLINUX_CAN_RESTART_TIMER -I/work1/dev200-local/can/peak-linux-driver-8.5.1/driver        -DNO_DEBUG -DMODVERSIONS -DPARPORT_SUBSYSTEM -DUSB_SUPPORT -DNO -DNO -DNO -DNO -DNO -DNETDEV_SUPPORT -DNO_RT " V=0 modules
make[2]: Entering directory `/usr/src/kernels/3.10.0-693.17.1.el7.x86_64'
  CC [M]  /work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcan_main.o
  CC [M]  /work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcan_fops.o
  CC [M]  /work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcan_fifo.o
  CC [M]  /work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcan_filter.o
  CC [M]  /work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcan_parse.o
  CC [M]  /work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcan_sja1000.o
  CC [M]  /work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcan_common.o
  CC [M]  /work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcan_timing.o
  CC [M]  /work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcanfd_core.o
  CC [M]  /work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcanfd_ucan.o
  CC [M]  /work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcan_usb_core.o
  CC [M]  /work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcan_usb.o
  CC [M]  /work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcan_usbpro.o
  CC [M]  /work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcanfd_usb.o
  CC [M]  /work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcan_netdev.o
/work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcan_netdev.c: In function ‘pcan_netdev_tx’:
/work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcan_netdev.c:326:5: error: ‘struct net_device’ has no member named ‘trans_start’
  dev->trans_start = jiffies;
     ^
make[3]: *** [/work1/dev200-local/can/peak-linux-driver-8.5.1/driver/src/pcan_netdev.o] Error 1
make[2]: *** [_module_/work1/dev200-local/can/peak-linux-driver-8.5.1/driver] Error 2
make[2]: Leaving directory `/usr/src/kernels/3.10.0-693.17.1.el7.x86_64'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/work1/dev200-local/can/peak-linux-driver-8.5.1/driver'
make[1]: Entering directory `/work1/dev200-local/can/peak-linux-driver-8.5.1/lib'
cc -DNO_RT -I. -I../driver -fPIC -Wall -Wcast-align -Wredundant-decls  -DPCANFD_OLD_STYLE_API -c src/libpcan.c -o obj/libpcan.o
cc -shared -Wl,-soname,libpcan.so.0 -o lib/libpcan.so.0.6 obj/libpcan.o 
cd lib/; ln -sf libpcan.so.0.6 libpcan.so
cc -DNO_RT -I. -I../driver -fPIC -Wall -Wcast-align -Wredundant-decls  -DPCANFD_OLD_STYLE_API -c src/libpcanfd.c -o obj/libpcanfd.o
cc -shared -Wl,-soname,libpcanfd.so.0 -o lib/libpcanfd.so.0.1 obj/libpcanfd.o 
cd lib/; ln -sf libpcanfd.so.0.1 libpcanfd.so
ar rcs lib/libpcanfd.a obj/libpcanfd.o

Info: only 64-bit version of libpcan can be built. 32-bit version of libpcan can't because the 32-bit version of libc seems not being installed...

make[1]: Leaving directory `/work1/dev200-local/can/peak-linux-driver-8.5.1/lib'
make[1]: Entering directory `/work1/dev200-local/can/peak-linux-driver-8.5.1/test'
cc -DNO_RT -g -I. -I../lib -I../driver    src/receivetest.c src/common.c -lpcanfd  -L../lib/lib   -o receivetest
cc -DNO_RT -g -I. -I../lib -I../driver    src/transmitest.cpp src/common.c src/parser.cpp -lpcanfd -lstdc++  -L../lib/lib   -o transmitest
cc -DNO_RT -g -I. -I../lib -I../driver    src/bitratetest.c src/common.c -lpcanfd  -L../lib/lib   -o bitratetest
cc -DNO_RT -g -I. -I../lib -I../driver    src/filtertest.cpp src/common.c -lpcanfd -lstdc++  -L../lib/lib   -o filtertest
cc -DNO_RT -g -I. -I../lib -I../driver    src/pcanfdtst.c -lpcanfd  -L../lib/lib   -o pcanfdtst
cc -DNO_RT -g -I. -I../lib -I../driver    src/pcan-settings.c -lpopt  -L../lib/lib   -g -o pcan-settings
make[1]: Leaving directory `/work1/dev200-local/can/peak-linux-driver-8.5.1/test'
It's a physical machine, my kernel is

Code: Select all

uname -a
Linux localhost.localdomain 3.10.0-693.17.1.el7.x86_64 #1 SMP Thu Jan 25 20:13:58 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Thank you for helping!

Regards,
Eric

User avatar
S.Grosjean
Software Development
Software Development
Posts: 357
Joined: Wed 4. Jul 2012, 17:02

Re: Can't build linux-driver-8.5.1 with netdev support

Post by S.Grosjean » Mon 29. Jan 2018, 16:07

Hi,

It's a known bug when building the driver against old Kernels.

As a workaround, type the following please:

Code: Select all

$ cd peak-linux-driver-8.5.1/driver
$ sed -i -e "s/dev->trans_start =.*//" src/pcan_netdev.c
Then, rebuild and install the driver as you did...

Regards,

Stéphane
— Stéphane

Eric.c
Posts: 2
Joined: Mon 29. Jan 2018, 15:46

Re: Can't build linux-driver-8.5.1 with netdev support

Post by Eric.c » Mon 29. Jan 2018, 16:27

It worked,

Thank you!

Post Reply