Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2919 connectés 

 


Dernière réponse
Sujet : KERNEL 2.6.12 et IPW2200
splurf utilisez le patch mm1 -> il contient les ipw2200 ainsi que reiser4

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
splurf utilisez le patch mm1 -> il contient les ipw2200 ainsi que reiser4
L0k mhh (addr[0] != 0xff) je sais pas si c'est un test broadcast rapide, parce que juste après dans le code du modules y a un fonction pour vérifier si c'est broadcast...
 

Code :
  1. extern inline int is_broadcast_ether_addr(const u8 *addr)
  2. {
  3. return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) &&   \
  4.  (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff));
  5. }


 
et la ça vérifie tout.
 
Y a p'tet des spécfication particulières pour un multicast qui interdit d'avoir 0xff sans pour autant que ça soit du broadcast...

L0k ouais ça serait intéressant de voir, mais j'ai pas de résau wifi à portée en ce moment.. je peux toujours voir si ça plante pas le tout.. mais je peux faire aucun tests..
0x90 Bon de ce que j'ai vu, ff:ff:ff:ff:ff:ff est une adresse de broadcast (utilisé notament par ARP) ne tester que le premier ca doit être une version "rapide" du test de broadcast je suppose, pour être "propre" il faudrait donc :
 
- virer la déclaration de is_multicast_ether_addr() dans le module
- avoir une fonction is_broadcast_ether_addr() ( qui test ff ) (ptêtre qu'elle existe déja )
- que le module face un is_multicast && !is_broadcast à la place de l'ancien multicast.
 
Alternativement, on pourrait voir ce qui se passe si on utilise simplement le test is_multicast du noyo sans utiliser de is_broadcast, peut-être que d'avoir un "true" en cas de broadcast ne gène en rien la carte, et ca serait l'idéal, bonne séance de test si ca te dis ^^
 
Enfin le patch que t'as fait suffit amplement pour le moment, mais je suis curieux de voir la décision qui sera finalement prise ...
L0k bon disons que c'est provisoire de toute façon, la prochaine version du pilote sera corrigée merci de tes conseils en tt cas.
0x90 Nan il faut pas utiliser is_valid, il teste le contraire justement.
je sais pas ce que ca implique que l'adresse commence par ff ( c'est la seule diff entre la version du kernel et celle du module ), je suis entrain de vérifier, mais a terme je pense qu'il faut utiliser celle du kernel ;)
L0k dans le kernel il y a ça comme code, ça ressemble bcp  
 

Code :
  1. /**
  2. * is_zero_ether_addr - Determine if give Ethernet address is all
  3. * zeros.
  4. */
  5. static inline int is_zero_ether_addr(const u8 *addr)
  6. {
  7. return !(addr[0] | addr[1] | addr[2] | addr[3] | addr[4] | addr[5]);
  8. }
  9. /**
  10. * is_multicast_ether_addr - Determine if the given Ethernet address is a
  11. * multicast address.
  12. *
  13. * @addr: Pointer to a six-byte array containing the Ethernet address
  14. *
  15. * Return true if the address is a multicast address.
  16. */
  17. static inline int is_multicast_ether_addr(const u8 *addr)
  18. {
  19. return addr[0] & 0x01;
  20. }
  21. /**
  22. * is_valid_ether_addr - Determine if the given Ethernet address is valid
  23. * @addr: Pointer to a six-byte array containing the Ethernet address
  24. *
  25. * Check that the Ethernet address (MAC) is not 00:00:00:00:00:00, is not
  26. * a multicast address, and is not FF:FF:FF:FF:FF:FF.
  27. *
  28. * Return true if the address is valid.
  29. */
  30. static inline int is_valid_ether_addr(const u8 *addr)
  31. {
  32. /* FF:FF:FF:FF:FF:FF is a multicast address so we don't need to
  33.  * explicitly check for it here. */
  34. return !is_multicast_ether_addr(addr) && !is_zero_ether_addr(addr);
  35. }


 
mais dans ce cas je me demande si il faudrait pas plutot utiliser is_valid_ether_addr ?

0x90

L0k a écrit :

désolé pour le temps de réponse...
 

Code :
  1. extern inline int is_multicast_ether_addr2(const u8 *addr)
  2. {
  3. return ((addr[0] != 0xff) && (0x01 & addr[0]));
  4. }


 
L'original est pareil sauf sans le 2, et tous les appels de la fonction dans les autre fichiers ont été modifiés. voila..


 
Si t'as modifié les appels de fonctions dans les fichiers ca va alors ;)
( Sinon il serait entrain d'appeller l'autre fonction (celle du fichier du kernel qui entre en conflit et la ... aieaieaie :/ )
 
tu peut ptêtre poster un diff pour faciliter la chose pour les autres ;) (bien qu'il est fort possible qu'un patch plus "propre" existe sous peu...
D'ailleurs si ca se trouve la fct qui est dans le kernel est la même et il a été décidé de l'integrer ( faudrait aller voir le code) et dans ce cas la, la manip propre serait de virer la déclaration faite dans le module ipw2200 ;)

emericv merci beaucoup pour vos réponses !
je vais aissayer ça
L0k désolé pour le temps de réponse...
 

Code :
  1. extern inline int is_multicast_ether_addr2(const u8 *addr)
  2. {
  3. return ((addr[0] != 0xff) && (0x01 & addr[0]));
  4. }


 
L'original est pareil sauf sans le 2, et tous les appels de la fonction dans les autre fichiers ont été modifiés. voila..

0x90 montre le bout de code que t'as touché pour voir ... ( avec l'original de pref ... )
L0k ça marche nickel, mais question, je connais pas bcp le c, y a une notation à suivre ? parce que la j'ai juste rajouté un 2 à la fonction, est c'est assez moche mdr
L0k lol ok merci.. je vais essayer
0x90 Bha suffit de lire, c'est marqué, y'a une variable redéfinie, z'avez qu'a la renommer proprement dans un des deux ( de préférence dans le driver ipw2200 ), et ca devrait aller ;)
L0k oui j'ai exactement la même, je ne sais pas pourquoi, mais j'ai posté dans le topic officiel  
 
http://forum.hardware.fr/hardwaref [...] 1401-1.htm
emericv Bonjours !
 
Je viens de compiler le nouveau kernel 2.6.12, mais quand je compile le driver IPW2200 ça me donne cette erreur :
 

Citation :

make -C /lib/modules/2.6.12-mr-ti.com/build SUBDIRS=/root/ipw2200/ipw2200-1.0.4 MODVERDIR=/root/ipw2200/ipw2200-1.0.4 modules
make[1]: Entering directory `/usr/src/linux-2.6.12'
  CC [M]  /root/ipw2200/ipw2200-1.0.4/ipw2200.o
In file included from /root/ipw2200/ipw2200-1.0.4/ipw2200.h:50,
                 from /root/ipw2200/ipw2200-1.0.4/ipw2200.c:33:
/root/ipw2200/ipw2200-1.0.4/net/ieee80211.h:722: error: redefinition of `is_multicast_ether_addr'
include/linux/etherdevice.h:67: error: `is_multicast_ether_addr' previously defined here
make[2]: *** [/root/ipw2200/ipw2200-1.0.4/ipw2200.o] Erreur 1
make[1]: *** [_module_/root/ipw2200/ipw2200-1.0.4] Erreur 2
make[1]: Leaving directory `/usr/src/linux-2.6.12'
make: *** [modules] Erreur 2


 
Quelqun aurait-il eu cette erreur ?
 
merci d'avance ...


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)