# Nuevo kernel 2.6.31 y tarjeta de red desconocida

## porqueami

Buenos días a todos

Desde que actualicé al kernel 2.6.31, no he sido capaz de que se me reconozca la tarjeta de red, la cual usa el driver r8168

estoy realmente interesado en este kernel porque ha sido el único que ha conseguido que se me reconozca más o menos bien todo el hardware en Gentoo.

El problema es que al compilar el módulo del kernel para r8168, en el kernel 2.6.31, me da varios errores con el make, los siguientes:

```
darkmachine r8168-8.014.00 # ls

Makefile  readme  src

darkmachine r8168-8.014.00 # make clean modules

make -C src/ clean

make[1]: Entering directory `/home/ahi/112/r8168-8.014.00/src'

rm -rf *.o *.ko *~ core* .dep* .*.d .*.cmd *.mod.c *.a *.s .*.flags .tmp_versions Module.symvers Modules.symvers Module.markers *.order

make[1]: Leaving directory `/home/ahi/112/r8168-8.014.00/src'

make -C src/ modules

make[1]: Entering directory `/home/ahi/112/r8168-8.014.00/src'

make -C /lib/modules/2.6.31-gentoo/build SUBDIRS=/home/ahi/112/r8168-8.014.00/src modules

make[2]: Entering directory `/usr/src/linux-2.6.31-gentoo'

  CC [M]  /home/ahi/112/r8168-8.014.00/src/r8168_n.o

/home/ahi/112/r8168-8.014.00/src/r8168_n.c: In function 'rtl8168_init_one':

/home/ahi/112/r8168-8.014.00/src/r8168_n.c:4137: error: 'struct net_device' has no member named 'open'

/home/ahi/112/r8168-8.014.00/src/r8168_n.c:4138: error: 'struct net_device' has no member named 'hard_start_xmit'

/home/ahi/112/r8168-8.014.00/src/r8168_n.c:4139: error: 'struct net_device' has no member named 'get_stats'

/home/ahi/112/r8168-8.014.00/src/r8168_n.c:4141: error: 'struct net_device' has no member named 'stop'

/home/ahi/112/r8168-8.014.00/src/r8168_n.c:4142: error: 'struct net_device' has no member named 'tx_timeout'

/home/ahi/112/r8168-8.014.00/src/r8168_n.c:4143: error: 'struct net_device' has no member named 'set_multicast_list'

/home/ahi/112/r8168-8.014.00/src/r8168_n.c:4147: error: 'struct net_device' has no member named 'change_mtu'

/home/ahi/112/r8168-8.014.00/src/r8168_n.c:4148: error: 'struct net_device' has no member named 'set_mac_address'

/home/ahi/112/r8168-8.014.00/src/r8168_n.c:4149: error: 'struct net_device' has no member named 'do_ioctl'

/home/ahi/112/r8168-8.014.00/src/r8168_n.c:4162: error: 'struct net_device' has no member named 'poll_controller'

make[3]: *** [/home/ahi/112/r8168-8.014.00/src/r8168_n.o] Error 1

make[2]: *** [_module_/home/ahi/112/r8168-8.014.00/src] Error 2

make[2]: Leaving directory `/usr/src/linux-2.6.31-gentoo'

make[1]: *** [modules] Error 2

make[1]: Leaving directory `/home/ahi/112/r8168-8.014.00/src'

make: *** [modules] Error 2

darkmachine r8168-8.014.00 #
```

Buscando en Internet he encontrado poca información, lo más cercano a un arreglo para este error es esto: http://www.mail-archive.com/frugalware-git@frugalware.org/msg34725.html

Pero no entiendo bien como aplicar patches y tampoco sé si es para mi versión del kernel, además, es para i686 y yo uso amd64...

Alguna idea?

Gracias de antemano

----------

## Inodoro_Pereyra

No sé cual es la 8168 esa pero casi con seguridad está soportada dentro del kernel hoy en día. Si la 8169 ya tiene como 4 años esa controladora de red debe tener una edad parecida también, con lo que "compilar el driver" no debería implicarte mas que marcarlo dentro del kernel y compilar el kernel, nada de modulos externos raros descargados de ninguna parte.

Es mas, lo mas probable es que el driver 8169 haga funcionar también la 8168 esa...

Pega la salida de lspci | grep Ethernet por favor.

Salud!

----------

## pcmaster

Pues en el changelog del kernel:

http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.31

lo único que han cambiado es el wake on lan de la r8168, así que si eso no te afecta, ¿por qué no pruebas la última revisión del 2.6.30 en gentoo-sources?

----------

## porqueami

Bueno, aún sigo teniendo poca práctica en compilar kernels y en la 2.6.30-r5 no me reconocía la grabadora, pero este kernel funciona perfectamente y es súper ligero, excepto por el problemilla de la tarjeta de red.

Me gustaría intentar arreglar ese problema y continuar usando esta nueva versión, pero no sé qué hacer...

Debería probar con r8169? Creo que funciona bien con mi tarjeta, pero no estoy seguro...

----------

## pcmaster

¿Has leído el changelog del kernel 2.6.31, que te he puesto antes?

commit ca52efd5490f97f396d3c5863ba714624f272033

Author: françois romieu <romieu@fr.zoreil.com>

Date:   Fri Jul 24 12:34:19 2009 +0000

    r8169: WakeOnLan fix for the 8168

    More stuff for http://bugzilla.kernel.org/show_bug.cgi?id=9512

    Some 8168 are unable to WoL when receiving is not enabled (plain

    old 8169 do not seem to care).

    It is not exactly pretty to leave the receiver enabled but we

    should now enable DMA late enough for it to be safe. Some late

    stage boot failure due to pxe and friends may benefit from the

    delayed enabling of bus-mastering as well.

    Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>

    Tested-by: Jaromír Cápík <tavvva@volny.cz>

    Cc: Edward Hsu <edward_hsu@realtek.com.tw>

Está claro que sí funciona (o debería)

¿Qué driver estabas usando?

----------

## porqueami

Bueno, el changelog habla de unos cambios en el driver r8169, que mejoran la 8168, no explícitamente de la r8168 (o es un typo)

Debería de funcionar, acabo de descargar hoy desde la web de realtek el driver r8168, la versión es: r8168-8.014.00

Probaré el r8169, que ya había usado con anterioridad y hacía funciopnar mi tarjeta

Sobre la salida de lspci:

```
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)
```

----------

## porqueami

Nada, el driver r8169 da exactamente el mismo fallo...

----------

## Inodoro_Pereyra

Estas usando un driver externo al del kernel (descargado de internet, copiado de un cd o algo similar) o usando el driver que viene incluido en el kernel?

No veo como puede darte exactamente el mismo mensaje de error el driver del kernel con un driver descargado de internet, por eso pregunto. Y de ser asi, que estas usando un driver externo, no lo hagas, en linux (casi) no se usan otros drivers que los incluidos en el mismo kernel. (Casi) nunca vas a necesitar descargar un driver de internet parahacer funcionar algo por ejemplo.

Salud!

----------

## porqueami

Vale, finalmente encontré la opción en el kernel y lo he podido configurar, ahora mismo reinicio y miro que tal va....

----------

## luispa

Usa el driver del kernel, olvídate del driver del fabricante, y usa el r8169. 

Este es mi caso (una revisión distinta pero no creo que le afecte).

```
# lspci | grep -i realtek

08:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)

09:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)

```

Y funciona perfecto, con .28, .29, .30 y .31. 

Otra cosa, que me volvió loco al principio, en mi BIOS hay una opción en las NICs llamada "Green LAN", asegurate de ponerlas en disable. Dicha opción, cuando está habilitada, desactiva la tarjeta LAN durante el boot si no tiene cable conectado (o no tiene conectividad), y una vez arrancado el equipo ya no se puede volver a activar aunque conectes el cable.

Luis

----------

## porqueami

Gracias por el consejo, Luispa, pero no es mi caso, no tengo esa opción en la BIOS

Y gracias a todos por la ayuda, tras habilitar la opción ahora estoy trabajando perfectamente con 2.6.31, la tarjeta de red va muy bien y el tema ya puede ser dado por solucionado  :Very Happy: 

Muchas gracias a todos de nuevo!!

----------

