Actions











Ralink RT2870 et kernel 2.6.35

Écrit le 07/07/2010 @ 13:41 par Alexandre

Informatique - LinuxPendant que je testais le dernier RC du kernel 2.6.35 (RC4) avec une de mes machines, je suis tombé sur un problème de compilation d'un pilote pour ma carte réseau USB (Belkin N Wireless USB Adapter F5D8053, V.3000). Par le passé, j'ai déjà communiqué avec Ralink, la compagnie qui fait le chipset de la carte (RT2870USB), pour leur fournir une patch, car leur pilote n'avait pas l'information nécessaire pour supporter ma carte. Ralink m'avait répondu avec courtoisie et avait fait suivre mon patch au département de QA. Alors j'ai décidé de récidiver puisque j'ai corrigé le bogue de compilation. J'ai envoyé le patch au support technique de Ralink, en espérant qu'il sera intégré prochainement.

Il existe un pilote RT2x00 dans le kernel, mais malheureusement il n'est toujours pas stable pour moi, même s'il s'améliore. En attendant, j'ai besoin d'une connexion réseau, alors je me rabats sur le code source de Ralink. Le seul problème est que je dois penser à recompiler le pilote chaque fois que je fais une mise à jour de kernel.

Pour ceux que ça intéressent, voici le patch pour la version 2.4.0.0 à appliquer (avec une correction typographique). Je crois que ça peut s'appliquer sur d'autres de leurs pilotes également, mais je n'ai pas testé.

*** 2010_06_25_RT2870_Linux_STA_v2.4.0.0/include/os/rt_linux.h 2010-06-08 23:23:11.000000000 -0400
--- RT2870_LinuxSTA_V2.4.0.1/include/os/rt_linux.h 2010-07-07 12:30:02.217532804 -0400
***************
*** 111,117 ****

#ifdef KTHREAD_SUPPORT
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,4)
! #error "This kerne version doesn't support kthread!!"
#endif
#endif // KTHREAD_SUPPORT //

--- 111,117 ----

#ifdef KTHREAD_SUPPORT
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,4)
! #error "This kernel version doesn't support kthread!!"
#endif
#endif // KTHREAD_SUPPORT //

***************
*** 1074,1081 ****
--- 1074,1086 ----
#define RT28XX_PUT_DEVICE usb_put_dev
#define RTUSB_ALLOC_URB(iso) usb_alloc_urb(iso, GFP_ATOMIC)
#define RTUSB_SUBMIT_URB(pUrb) usb_submit_urb(pUrb, GFP_ATO
MIC)
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)
+ #define RTUSB_URB_ALLOC_BUFFER(pUsb_Dev, BufSize, pDma_addr) usb_alloc_coherent(pUsb_Dev, BufSize, GFP_ATOMIC, pDma_addr)
+ #define RTUSB_URB_FREE_BUFFER(pUsb_Dev, BufSize, pTransferBuf, Dma_addr) usb_free_coherent(pUsb_Dev, BufSize, pTransferBuf, Dma_addr)
+ #else
#define RTUSB_URB_ALLOC_BUFFER(pUsb_Dev, BufSize, pDma_addr) usb_buffer_alloc(pUsb_Dev, BufSize, GFP_ATOMIC, pDma_addr)
#define RTUSB_URB_FREE_BUFFER(pUsb_Dev, BufSize, pTransferBuf, Dma_addr) usb_buffer_free(pUsb_Dev, BufSize, pTransferBuf, Dma_addr)
+ #endif // USB_BUFFER_ALLOC AND USB_BUFFER_FREE FUNCTIONS RENAMED //
#else

#define RT28XX_PUT_DEVICE



Dernière modification le 07/07/2010 @ 13:43 par Alexandre

Pas de commentaires


Tous les blogs
<< Que faire de vos vieux matelas | Retour aux blogs | Mesa 7.9 dev : comment configurer, compiler et tester. >>
Blogs de la même catégorie
<< Problème avec NetworkManager | Linux 2.6.35 disponible >>