J'ai la même carte (la principale différence avec la 8169 semble être que la 8169 est sur PCI et la 8168 sur PCI Express) sur un portable ASUS également. Le pilote de chez RealTek (apparement libre d'ailleurs) me pose quelques problèmes.
D'abord pour cette erreur :
/home/chobu/Documents/r1000/src/r1000_n.c:1450: error: 'entdev' undeclared (first use in this function)
Il y a effectivement une faute de frappe dans le fichier r1000_n.c à la ligne 1450 : 'entdev' n'est effectivement déclaré nulle part, ça devrait en fait être 'netdev'.
Pour info : (la ligne 1450 est ici l'avant dernière)
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
synchronize_irq ();
#else
synchronize_irq(entdev->irq);
#endif
Après avoir corrigé cette erreur j'ai pu le compiler mais le module ne pouvait pas se charger parce que compilé avec une version de gcc différente de celle du noyau (pourtant mon GCC et mon noyau venaient tous les deux du CD1 de Debian Sarge, mais c'est le portage non officiel sur AMD64, enfin je trouve quand même ça étrange).
J'ai compilé un noyau (2.6.17) qui marche bien, mais le problème c'est que maintenant, la compilation du module ne fonctionne plus, j'obtiens :
.../r1000/src/r1000_n.c:46: error: erreur de syntaxe before string constant
.../r1000/src/r1000_n.c:46: attention : type defaults to 'int' in declaration of 'MODULE_PARM'
.../r1000/src/r1000_n.c:46: attention : function declaration isn't a prototype
.../r1000/src/r1000_n.c:46: attention : data definition has no type or storage class
La ligne 46 du r1000_n.c est :
MODULE_PARM (media, "1-" __MODULE_STRING(MAX_UNITS) "i");
J'ai vérifier dans les kernel-headers, __MODULE_STRING est bien défini de la même manière pour mon noyau et pour celui de mon autre PC (noyau 2.6.13) sur lequel le module compile sans problème (mais où il ne sert à rien).
J'ai du mal à comprendre comment le même gcc, sur la même machine, trouve ou non une erreur de syntaxe dans le même fichier source selon le noyau utilisé. Si quelqu'un a une idée...