orinoco_cs problem when compiled for Arm processors (Ipaq)
clay.jones at email.com
Thu Jan 10 05:54:53 EST 2002
I was trying to get the orinoco driver working on an Ipaq running Linux.
I have managed to get it working after a bit of fiddling with one of the structures. I am not a part of this list group, but I wanted to pass on the information in case you wish to correct the problem for future users.
Symptom: After compiling and loading the driver, I was unable to get a dhcp lease, even though everything looked right and I connected to the AP.
Problem: After some wireless sniffing, I determined that the Wireless packets from the Ipaq had 2 too many bytes in one of the headers. The ethernet header has 2 6 byte ethernet addresses, followed by 2 byte length/type field, followed by the data. I found that there was consistently 0x00 0x00 following the 2 byte length, and before the 0xAA 0xAA of the 802.3 header.
Solution: In orinoco.c, both the struct orinoco_txframe_hdr and struct orinoco_rxframe_hdr include a struct ethhdr which is defined in linux/include/linux/if_eth.h but which is NOT packed. Thus the compiler padded 2 extra bytes onto the end of the ethhdr where it wasn't needed. My solution was to re-define struct ethhdr as struct ethhdr1 inside orinoco.c, pack it, and change all references to the new packed structure.
That probably isn't the most elegant of solutions, but it was fast and it worked. I am now able to use an orinoco card in my Ipaq.
1 cent a minute calls anywhere in the U.S.!
More information about the wireless