I noticed that the multicast hash calculations assumed little endian byte ordering in the winbond-840 driver, and it seems that several other drivers are also affected: 8139too, epic100, fealnx, pci-
Many big-endian systems already need to provide little-endian bitops, for ext2's sake for example. We should formalize this, with {set,clear,change,test}_le_bit which technically every port has imple
The multicast hash is written into a nic register with set_bit(crc(...),mc_list); ... out{b,w,l}(mc_list[i],ioaddr); set_bit_le only helps for outb. My patch uses set_bit_16 and set_bit_32. Another o
That could cause alignment problems. <<< from starfire.c { long filter_addr; u16 mc_filter[32] __attribute__ ((aligned(sizeof(long)))); <<< set_bit requires word alignment, but without the __attibute
I noticed that the multicast hash calculations assumed little endian byte ordering in the winbond-840 driver, and it seems that several other drivers are also affected: 8139too, epic100, fealnx, pci-
Many big-endian systems already need to provide little-endian bitops, for ext2's sake for example. We should formalize this, with {set,clear,change,test}_le_bit which technically every port has imple
The multicast hash is written into a nic register with set_bit(crc(...),mc_list); ... out{b,w,l}(mc_list[i],ioaddr); set_bit_le only helps for outb. My patch uses set_bit_16 and set_bit_32. Another o
That could cause alignment problems. <<< from starfire.c { long filter_addr; u16 mc_filter[32] __attribute__ ((aligned(sizeof(long)))); <<< set_bit requires word alignment, but without the __attibute