diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2007-12-29 04:55:50 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:08:55 -0500 |
commit | 7698d6977a62bbc6ed3b9d0d0230f2213a3b2f9d (patch) | |
tree | e7ea75cdb6ec548e3c31a71f26410e9d1892d512 /drivers/net/wireless/ipw2200.c | |
parent | 1edd3a555304a266e76bbc6cbe04f446fdd7940b (diff) |
ray_cs fixes
bugs galore:
* 0xf380 instead of htons(ETH_P_AARP), etc. Works only on l-e.
* back in 2.3.20 driver got readb() and friends instead of
direct dereferencing of iomem. Somebody got too enthusiatic and replaced
ntohs(p->mrx_overflow)
with
ntohs(read(&p->mrx_overflow)
without noticing that (a) the sucker is 16bit and (b) that expression can't possibly
be portable anyway (hell, on l-e it's always less than 256, on b-e it's always a
multiple of 256). Proper fix is
swab16(readw(&p->mrx_overflow)
taking into account the conversion done by readw() itself. That crap happened
in several places; the same fix applies.
* untranslate() assumes little-endian almost everywhere, except for
the code checking for IPX/AARP packets; there we forgot ntohs(), so that part
only works on big-endian.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ipw2200.c')
0 files changed, 0 insertions, 0 deletions