[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Problemas con pcmcia bromax.



Buenas a todos,



Rubén Gómez Antolí wrote:

Kander nos contaba su problema:

Hola, tengo un toshiba satellite con tarjeta pcmcia
bromax (iport), mi problema es que no reconoce la
tarjeta. La pcmcia sí.
el lsmod me sale en blnaco.
modprobe pcnet_cs me informa diciendo que Can't locate
module.
Con make xconfig tengo marcadas todas las opciones
correspondientes a las pcmcias y además NE2000
compatible.

Seguramente toda esta información esté algo
desordenade, pero ahora mismo así tengo el cerebro,
DESORDENADO.
¿Alguien tiene idea de como actuar?.


Y a mi me dio por decir esto:



Vamos a ver, he estado revisando la documentación que viene con la tarjeta y parece ser que hay que recompilar el modulito que viene con ella, ¿has probado?


Hoy he probado, os cuento:


Voy a poner la parte importante para si algún ojo avizor de la lista sabe si alguno de los modulos del núcleo recoge la opcion para esta tarjeta:

[...]
3. To generate the driver

   Modify the PCMCIASRC variable in your makefile to the location of your
   PCMCIA source.

   Modify the KERN_VER variable in your makefile.

After you finish the modification of variables in your makefile, you can
   rebuild the driver by doing

   > make


La salida del make, dio muchos errores:

Puerto_Lobo:/usr/src/in0100-af-v1.51# make
gcc -DMODULE -DMODVERSIONS -D__KERNEL__ -DGENERIC -DGENERIC_IN0100AF -c -O2 -I/usr/src/pcmcia/include -I/usr/src/linux/include -o pcnet_cs.o pcnet_cs.c In file included from pcnet_cs.c:42:
/usr/src/linux/include/linux/malloc.h:4: warning: #warning linux/malloc.h is deprecated, use linux/slab.h instead.
In file included from pcnet_cs.c:50:
8390.h:146: warning: `struct device' declared inside parameter list
8390.h:146: warning: its scope is only this definition or declaration, which is probably not what you want.
8390.h:147: warning: `struct device' declared inside parameter list
8390.h:148: warning: `struct device' declared inside parameter list
8390.h:149: warning: `struct device' declared inside parameter list
8390.h:159: warning: `struct device' declared inside parameter list
8390.h:160: warning: `struct device' declared inside parameter list
8390.h:161: warning: `struct device' declared inside parameter list
8390.h:162: warning: `struct device' declared inside parameter list
pcnet_cs.c:134: warning: `struct device' declared inside parameter list
pcnet_cs.c:135: warning: `struct device' declared inside parameter list
pcnet_cs.c:137: warning: `struct device' declared inside parameter list
pcnet_cs.c:139: warning: `struct device' declared inside parameter list
pcnet_cs.c:268: field `dev' has incomplete type
pcnet_cs.c: In function `pcnet_attach':
pcnet_cs.c:326: warning: passing arg 1 of `ethdev_init' from incompatible pointer type
pcnet_cs.c:327: dereferencing pointer to incomplete type
pcnet_cs.c:328: dereferencing pointer to incomplete type
pcnet_cs.c:329: dereferencing pointer to incomplete type
pcnet_cs.c:330: dereferencing pointer to incomplete type
pcnet_cs.c:331: dereferencing pointer to incomplete type
pcnet_cs.c:332: dereferencing pointer to incomplete type
pcnet_cs.c: In function `pcnet_detach':
pcnet_cs.c:401: dereferencing pointer to incomplete type
pcnet_cs.c:402: dereferencing pointer to incomplete type
pcnet_cs.c: In function `get_dl_fast':
pcnet_cs.c:418: dereferencing pointer to incomplete type
pcnet_cs.c:424: dereferencing pointer to incomplete type
pcnet_cs.c:424: dereferencing pointer to incomplete type
pcnet_cs.c: In function `get_hwinfo':
pcnet_cs.c:464: dereferencing pointer to incomplete type
pcnet_cs.c:465: dereferencing pointer to incomplete type
pcnet_cs.c:473: dereferencing pointer to incomplete type
pcnet_cs.c:489: dereferencing pointer to incomplete type
pcnet_cs.c: In function `get_prom':
pcnet_cs.c:530: dereferencing pointer to incomplete type
pcnet_cs.c:532: warning: passing arg 1 of `pcnet_reset_8390' from incompatible pointer type
pcnet_cs.c:549: dereferencing pointer to incomplete type
pcnet_cs.c:550: dereferencing pointer to incomplete type
pcnet_cs.c:551: dereferencing pointer to incomplete type
pcnet_cs.c:552: dereferencing pointer to incomplete type
pcnet_cs.c:553: dereferencing pointer to incomplete type
pcnet_cs.c:554: dereferencing pointer to incomplete type
pcnet_cs.c: In function `get_hwired':
pcnet_cs.c:579: dereferencing pointer to incomplete type
pcnet_cs.c: In function `pcnet_config':
pcnet_cs.c:767: dereferencing pointer to incomplete type
pcnet_cs.c:768: dereferencing pointer to incomplete type
pcnet_cs.c:771: dereferencing pointer to incomplete type
pcnet_cs.c:774: dereferencing pointer to incomplete type
pcnet_cs.c:776: warning: passing arg 1 of `register_netdev_R64eb3156' from incompatible pointer type
pcnet_cs.c:795: warning: passing arg 1 of `unregister_netdev_Rfc73dd6f' from incompatible pointer type
pcnet_cs.c:835: dereferencing pointer to incomplete type
pcnet_cs.c:835: dereferencing pointer to incomplete type
pcnet_cs.c:837: warning: passing arg 1 of `unregister_netdev_Rfc73dd6f' from incompatible pointer type
pcnet_cs.c:843: dereferencing pointer to incomplete type
pcnet_cs.c:844: dereferencing pointer to incomplete type
pcnet_cs.c:845: dereferencing pointer to incomplete type
pcnet_cs.c:851: dereferencing pointer to incomplete type
pcnet_cs.c:851: dereferencing pointer to incomplete type
pcnet_cs.c:851: dereferencing pointer to incomplete type
pcnet_cs.c:854: dereferencing pointer to incomplete type
pcnet_cs.c:858: dereferencing pointer to incomplete type
pcnet_cs.c: In function `set_misc_reg':
pcnet_cs.c:971: dereferencing pointer to incomplete type
pcnet_cs.c:977: dereferencing pointer to incomplete type
pcnet_cs.c: At top level:
pcnet_cs.c:990: conflicting types for `pcnet_open'
pcnet_cs.c:134: previous declaration of `pcnet_open'
pcnet_cs.c: In function `pcnet_open':
pcnet_cs.c:1012: dereferencing pointer to incomplete type
pcnet_cs.c:1021: dereferencing pointer to incomplete type
pcnet_cs.c:1023: warning: passing arg 1 of `ei_open' from incompatible pointer type
pcnet_cs.c: At top level:
pcnet_cs.c:1026: conflicting types for `pcnet_close'
pcnet_cs.c:135: previous declaration of `pcnet_close'
pcnet_cs.c: In function `pcnet_close':
pcnet_cs.c:1038: warning: passing arg 1 of `pcnet_reset_8390' from incompatible pointer type
pcnet_cs.c:1039: dereferencing pointer to incomplete type
pcnet_cs.c:1040: dereferencing pointer to incomplete type
pcnet_cs.c: At top level:
pcnet_cs.c:1056: conflicting types for `pcnet_reset_8390'
pcnet_cs.c:137: previous declaration of `pcnet_reset_8390'
pcnet_cs.c: In function `pcnet_reset_8390':
pcnet_cs.c:1057: dereferencing pointer to incomplete type
pcnet_cs.c:1060: dereferencing pointer to incomplete type
pcnet_cs.c:1061: dereferencing pointer to incomplete type
pcnet_cs.c:1077: dereferencing pointer to incomplete type
pcnet_cs.c: At top level:
pcnet_cs.c:1085: conflicting types for `set_config'
pcnet_cs.c:139: previous declaration of `set_config'
pcnet_cs.c: In function `set_config':
pcnet_cs.c:1088: dereferencing pointer to incomplete type
pcnet_cs.c:1093: dereferencing pointer to incomplete type
pcnet_cs.c:1102: dereferencing pointer to incomplete type
pcnet_cs.c:1103: dereferencing pointer to incomplete type
pcnet_cs.c:1104: dereferencing pointer to incomplete type
pcnet_cs.c: In function `dma_get_8390_hdr':
pcnet_cs.c:1115: dereferencing pointer to incomplete type
pcnet_cs.c: In function `dma_block_input':
pcnet_cs.c:1126: dereferencing pointer to incomplete type
pcnet_cs.c: In function `dma_block_output':
pcnet_cs.c:1175: dereferencing pointer to incomplete type
pcnet_cs.c: In function `setup_dma_config':
pcnet_cs.c:1247: dereferencing pointer to incomplete type
pcnet_cs.c:1248: dereferencing pointer to incomplete type
pcnet_cs.c:1249: dereferencing pointer to incomplete type
pcnet_cs.c:1252: dereferencing pointer to incomplete type
pcnet_cs.c:1253: dereferencing pointer to incomplete type
pcnet_cs.c:1254: dereferencing pointer to incomplete type
pcnet_cs.c: In function `shmem_get_8390_hdr':
pcnet_cs.c:1303: dereferencing pointer to incomplete type
pcnet_cs.c:1304: dereferencing pointer to incomplete type
pcnet_cs.c: In function `shmem_block_input':
pcnet_cs.c:1311: dereferencing pointer to incomplete type
pcnet_cs.c:1312: dereferencing pointer to incomplete type
pcnet_cs.c:1315: dereferencing pointer to incomplete type
pcnet_cs.c:1317: dereferencing pointer to incomplete type
pcnet_cs.c:1320: dereferencing pointer to incomplete type
pcnet_cs.c:1321: dereferencing pointer to incomplete type
pcnet_cs.c: In function `shmem_block_output':
pcnet_cs.c:1330: dereferencing pointer to incomplete type
pcnet_cs.c:1331: dereferencing pointer to incomplete type
pcnet_cs.c: In function `setup_shmem_window':
pcnet_cs.c:1382: dereferencing pointer to incomplete type
pcnet_cs.c:1383: dereferencing pointer to incomplete type
pcnet_cs.c:1383: dereferencing pointer to incomplete type
pcnet_cs.c:1384: dereferencing pointer to incomplete type
pcnet_cs.c:1384: dereferencing pointer to incomplete type
pcnet_cs.c:1386: dereferencing pointer to incomplete type
pcnet_cs.c:1387: dereferencing pointer to incomplete type
pcnet_cs.c:1388: dereferencing pointer to incomplete type
pcnet_cs.c:1391: dereferencing pointer to incomplete type
pcnet_cs.c:1392: dereferencing pointer to incomplete type
pcnet_cs.c:1393: dereferencing pointer to incomplete type
make: *** [pcnet_cs.o] Error 1


Pero podria ser porque yo ya tengo el módulo pcnet_cs instalado y funcionando.

El caso es que sigo:



4. To install the driver

   > make install


Y de nuevo, gran cantidad de errores:

gcc -DMODULE -DMODVERSIONS -D__KERNEL__ -DGENERIC -DGENERIC_IN0100AF -c -O2 -I/usr/src/pcmcia/include -I/usr/src/linux/include -o pcnet_cs.o pcnet_cs.c In file included from pcnet_cs.c:42:
/usr/src/linux/include/linux/malloc.h:4: warning: #warning linux/malloc.h is deprecated, use linux/slab.h instead.
In file included from pcnet_cs.c:50:
8390.h:146: warning: `struct device' declared inside parameter list
8390.h:146: warning: its scope is only this definition or declaration, which is probably not what you want.
8390.h:147: warning: `struct device' declared inside parameter list
8390.h:148: warning: `struct device' declared inside parameter list
8390.h:149: warning: `struct device' declared inside parameter list
8390.h:159: warning: `struct device' declared inside parameter list
8390.h:160: warning: `struct device' declared inside parameter list
8390.h:161: warning: `struct device' declared inside parameter list
8390.h:162: warning: `struct device' declared inside parameter list
pcnet_cs.c:134: warning: `struct device' declared inside parameter list
pcnet_cs.c:135: warning: `struct device' declared inside parameter list
pcnet_cs.c:137: warning: `struct device' declared inside parameter list
pcnet_cs.c:139: warning: `struct device' declared inside parameter list
pcnet_cs.c:268: field `dev' has incomplete type
pcnet_cs.c: In function `pcnet_attach':
pcnet_cs.c:326: warning: passing arg 1 of `ethdev_init' from incompatible pointer type
pcnet_cs.c:327: dereferencing pointer to incomplete type
pcnet_cs.c:328: dereferencing pointer to incomplete type
pcnet_cs.c:329: dereferencing pointer to incomplete type
pcnet_cs.c:330: dereferencing pointer to incomplete type
pcnet_cs.c:331: dereferencing pointer to incomplete type
pcnet_cs.c:332: dereferencing pointer to incomplete type
pcnet_cs.c: In function `pcnet_detach':
pcnet_cs.c:401: dereferencing pointer to incomplete type
pcnet_cs.c:402: dereferencing pointer to incomplete type
pcnet_cs.c: In function `get_dl_fast':
pcnet_cs.c:418: dereferencing pointer to incomplete type
pcnet_cs.c:424: dereferencing pointer to incomplete type
pcnet_cs.c:424: dereferencing pointer to incomplete type
pcnet_cs.c: In function `get_hwinfo':
pcnet_cs.c:464: dereferencing pointer to incomplete type
pcnet_cs.c:465: dereferencing pointer to incomplete type
pcnet_cs.c:473: dereferencing pointer to incomplete type
pcnet_cs.c:489: dereferencing pointer to incomplete type
pcnet_cs.c: In function `get_prom':
pcnet_cs.c:530: dereferencing pointer to incomplete type
pcnet_cs.c:532: warning: passing arg 1 of `pcnet_reset_8390' from incompatible pointer type
pcnet_cs.c:549: dereferencing pointer to incomplete type
pcnet_cs.c:550: dereferencing pointer to incomplete type
pcnet_cs.c:551: dereferencing pointer to incomplete type
pcnet_cs.c:552: dereferencing pointer to incomplete type
pcnet_cs.c:553: dereferencing pointer to incomplete type
pcnet_cs.c:554: dereferencing pointer to incomplete type
pcnet_cs.c: In function `get_hwired':
pcnet_cs.c:579: dereferencing pointer to incomplete type
pcnet_cs.c: In function `pcnet_config':
pcnet_cs.c:767: dereferencing pointer to incomplete type
pcnet_cs.c:768: dereferencing pointer to incomplete type
pcnet_cs.c:771: dereferencing pointer to incomplete type
pcnet_cs.c:774: dereferencing pointer to incomplete type
pcnet_cs.c:776: warning: passing arg 1 of `register_netdev_R64eb3156' from incompatible pointer type
pcnet_cs.c:795: warning: passing arg 1 of `unregister_netdev_Rfc73dd6f' from incompatible pointer type
pcnet_cs.c:835: dereferencing pointer to incomplete type
pcnet_cs.c:835: dereferencing pointer to incomplete type
pcnet_cs.c:837: warning: passing arg 1 of `unregister_netdev_Rfc73dd6f' from incompatible pointer type
pcnet_cs.c:843: dereferencing pointer to incomplete type
pcnet_cs.c:844: dereferencing pointer to incomplete type
pcnet_cs.c:845: dereferencing pointer to incomplete type
pcnet_cs.c:851: dereferencing pointer to incomplete type
pcnet_cs.c:851: dereferencing pointer to incomplete type
pcnet_cs.c:851: dereferencing pointer to incomplete type
pcnet_cs.c:854: dereferencing pointer to incomplete type
pcnet_cs.c:858: dereferencing pointer to incomplete type
pcnet_cs.c: In function `set_misc_reg':
pcnet_cs.c:971: dereferencing pointer to incomplete type
pcnet_cs.c:977: dereferencing pointer to incomplete type
pcnet_cs.c: At top level:
pcnet_cs.c:990: conflicting types for `pcnet_open'
pcnet_cs.c:134: previous declaration of `pcnet_open'
pcnet_cs.c: In function `pcnet_open':
pcnet_cs.c:1012: dereferencing pointer to incomplete type
pcnet_cs.c:1021: dereferencing pointer to incomplete type
pcnet_cs.c:1023: warning: passing arg 1 of `ei_open' from incompatible pointer type
pcnet_cs.c: At top level:
pcnet_cs.c:1026: conflicting types for `pcnet_close'
pcnet_cs.c:135: previous declaration of `pcnet_close'
pcnet_cs.c: In function `pcnet_close':
pcnet_cs.c:1038: warning: passing arg 1 of `pcnet_reset_8390' from incompatible pointer type
pcnet_cs.c:1039: dereferencing pointer to incomplete type
pcnet_cs.c:1040: dereferencing pointer to incomplete type
pcnet_cs.c: At top level:
pcnet_cs.c:1056: conflicting types for `pcnet_reset_8390'
pcnet_cs.c:137: previous declaration of `pcnet_reset_8390'
pcnet_cs.c: In function `pcnet_reset_8390':
pcnet_cs.c:1057: dereferencing pointer to incomplete type
pcnet_cs.c:1060: dereferencing pointer to incomplete type
pcnet_cs.c:1061: dereferencing pointer to incomplete type
pcnet_cs.c:1077: dereferencing pointer to incomplete type
pcnet_cs.c: At top level:
pcnet_cs.c:1085: conflicting types for `set_config'
pcnet_cs.c:139: previous declaration of `set_config'
pcnet_cs.c: In function `set_config':
pcnet_cs.c:1088: dereferencing pointer to incomplete type
pcnet_cs.c:1093: dereferencing pointer to incomplete type
pcnet_cs.c:1102: dereferencing pointer to incomplete type
pcnet_cs.c:1103: dereferencing pointer to incomplete type
pcnet_cs.c:1104: dereferencing pointer to incomplete type
pcnet_cs.c: In function `dma_get_8390_hdr':
pcnet_cs.c:1115: dereferencing pointer to incomplete type
pcnet_cs.c: In function `dma_block_input':
pcnet_cs.c:1126: dereferencing pointer to incomplete type
pcnet_cs.c: In function `dma_block_output':
pcnet_cs.c:1175: dereferencing pointer to incomplete type
pcnet_cs.c: In function `setup_dma_config':
pcnet_cs.c:1247: dereferencing pointer to incomplete type
pcnet_cs.c:1248: dereferencing pointer to incomplete type
pcnet_cs.c:1249: dereferencing pointer to incomplete type
pcnet_cs.c:1252: dereferencing pointer to incomplete type
pcnet_cs.c:1253: dereferencing pointer to incomplete type
pcnet_cs.c:1254: dereferencing pointer to incomplete type
pcnet_cs.c: In function `shmem_get_8390_hdr':
pcnet_cs.c:1303: dereferencing pointer to incomplete type
pcnet_cs.c:1304: dereferencing pointer to incomplete type
pcnet_cs.c: In function `shmem_block_input':
pcnet_cs.c:1311: dereferencing pointer to incomplete type
pcnet_cs.c:1312: dereferencing pointer to incomplete type
pcnet_cs.c:1315: dereferencing pointer to incomplete type
pcnet_cs.c:1317: dereferencing pointer to incomplete type
pcnet_cs.c:1320: dereferencing pointer to incomplete type
pcnet_cs.c:1321: dereferencing pointer to incomplete type
pcnet_cs.c: In function `shmem_block_output':
pcnet_cs.c:1330: dereferencing pointer to incomplete type
pcnet_cs.c:1331: dereferencing pointer to incomplete type
pcnet_cs.c: In function `setup_shmem_window':
pcnet_cs.c:1382: dereferencing pointer to incomplete type
pcnet_cs.c:1383: dereferencing pointer to incomplete type
pcnet_cs.c:1383: dereferencing pointer to incomplete type
pcnet_cs.c:1384: dereferencing pointer to incomplete type
pcnet_cs.c:1384: dereferencing pointer to incomplete type
pcnet_cs.c:1386: dereferencing pointer to incomplete type
pcnet_cs.c:1387: dereferencing pointer to incomplete type
pcnet_cs.c:1388: dereferencing pointer to incomplete type
pcnet_cs.c:1391: dereferencing pointer to incomplete type
pcnet_cs.c:1392: dereferencing pointer to incomplete type
pcnet_cs.c:1393: dereferencing pointer to incomplete type
make: *** [pcnet_cs.o] Error 1


Pero si habeis estado atentos, que seguro que si, en el módulo interesante, el 8390 no ha dado nada mas que warning, así que debe estar instalado:

Puerto_Lobo:/usr/src/in0100-af-v1.51# modprobe -l
/lib/modules/2.4.18/kernel/drivers/block/loop.o
/lib/modules/2.4.18/kernel/drivers/char/i8k.o
/lib/modules/2.4.18/kernel/drivers/char/lp.o
/lib/modules/2.4.18/kernel/drivers/char/lt_modem.o
/lib/modules/2.4.18/kernel/drivers/char/lt_serial.o
/lib/modules/2.4.18/kernel/drivers/net/8139too.o
/lib/modules/2.4.18/kernel/drivers/net/8390.o
                                      ^^^^^^^  <---- Aqui esta nuestro módulo
/lib/modules/2.4.18/kernel/drivers/net/dummy.o
/lib/modules/2.4.18/kernel/drivers/net/mii.o
/lib/modules/2.4.18/kernel/drivers/net/pcmcia/pcnet_cs.o
                                             ^^^^^^^^^^^  <----- Y aqui esta el pcnet_cs que yo ya tenia compilado.

/lib/modules/2.4.18/kernel/drivers/net/ppp_async.o
/lib/modules/2.4.18/kernel/drivers/net/ppp_deflate.o



5. To configure the PCMCIA 10/100 Ethernet Card

   > cd /etc/pcmcia

To add the following text into the "config" file (The mode of the "config"
   file must be the "write" mode.)

   > vi config

   card "PCMCIA 10/100 Ethernet Card"
      version "PCMCIA", "10/100 Ethernet Card"
      bind "pcnet_cs"

   To configure the PCMCIA NIC interface

   > vi network.opts


Todo esto ya lo tenia hecho, pero no tiene mayor complicación.


6. To reboot the Linux

   > shutdown -r now


No he sido tan drastico, simplemente he hecho:

Puerto_Lobo:/usr/src/in0100-af-v1.51# sh /etc/init.d/pcmcia restart
Shutting down PCMCIA services: done.
Starting PCMCIA services: cardmgr[802]: error in file 'config' line 2003: unknown device '8139too'
cardmgr[802]: watching 2 sockets
done.
Puerto_Lobo:/usr/src/in0100-af-v1.51#


El error de la línea 2003 es antiguo, no os preocupeis por el, es por la otra tarjeta que tengo, que ando a ver si la configuro, pero como no hay mucho tiempo... :-(



En Knoppix que he probado, dice que la tarjeta no esta reconocida. Aqui estan también las salidas que da cardctl:

root@Puerto_Lobo:~# cardctl ident
Socket 0:
  no product info available
Socket 1:
  product info: "PCMCIA", "10/100 Ethernet Card", "", ""
  manfid: 0x0274, 0x1106
  function: 6 (network)
root@Puerto_Lobo:~# cardctl info
PRODID_1=""
PRODID_2=""
PRODID_3=""
PRODID_4=""
MANFID=0000,0000
FUNCID=255
PRODID_1="PCMCIA"
PRODID_2="10/100 Ethernet Card"
PRODID_3=""
PRODID_4="" MANFID=0274,1106
FUNCID=6
root@Puerto_Lobo:~#


Todo esto sigue saliendo igual, con la diferencia de que ahora carga las opciones de red, del tiron, y el módulo también carga directo, pero la tarjeta no funciona, de hecho no enciende ni el piloto de estar activada, ¿alguna idea de porque puede ser?



Ahora no puedo compilar el modulo que trae porque me tengo que ir, esta noche lo probare, espero.


Bueno, al final no fue anoche, es esta noche, en fin.. ^_^

En definitiva, ¿ha alguien se le ocurre algo que me pueda haber saltado? ¿Alguien conoce esta tarjeta y la ha podido hacer funcionar? ¿Es posible que haya que solucionar todos esos errores al hacer make con respecto al pcnet_cs, aunque yo ya tenga ese módulo? Resumiendo, que acepto ideas, sugerencias y apoyos :-P

Nos leemos.

Salud y Revolución.

Lobo.

Pd: Podeis ver las especificaciones técnicas de la tarjeta aqui, por si hacen falta, digo...

http://www.bromax.com/product%20list/pcmcia/bin100-a.htm




--
Libertad es poder elegir en cualquier momento. Ahora yo eligo GNU/Linux,
para no atar mis manos con las cadenas del soft propietario.
---------
Desde El Ejido, en Almeria, usuario registrado linux #294013
http://www.counter.li.org





Reply to: