• A
    ray_cs fixes · 7698d697
    Al Viro 提交于
    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: NAl Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
    7698d697
ray_cs.c 96.6 KB