OSEC

Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
 
From: David Gibson (davidgibson.dropbear.id.au)
Date: Wed Jan 09 2002 - 17:35:07 CST

  • Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

    On Thu, Jan 10, 2002 at 02:54:53AM +0800, Clay Jones wrote:
    > 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.

    Yes, the driver is broken for ARM (it's in the FAQ even). I think it
    is fixed in the current testing version (more below).

    > 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.

    Actually, I'm surprised that was sufficient - I think I've tried that
    in the past and it hasn't worked. gcc doesn't seem to reliably pack
    things when there are nested structures.

    > 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.

    The testing version has a neater solution, it removes the use of the
    nested structure entirely.

    -- 
    David Gibson			| For every complex problem there is a
    davidgibson.dropbear.id.au	| solution which is simple, neat and
    				| wrong.  -- H.L. Mencken
    http://www.ozlabs.org/people/dgibson