Hi,
RTL8139 interfaces cannot receive multicast packets on big-endian
machines. Tested kernel version is 2.4.19pre6. Both
driver/net/8139too.c and driver/net/8139cp.c have this problem.
These drivers have unnecessary byte-swap codes in their multicast
setup procedure. IPv6 networking on big-endian machines is deeply
affected because multicast packets are used to propagate routing
informations.
Applying the following paches fixes this problem.
--- drivers/net/8139cp.c- Wed Apr 10 05:42:41 2002
+++ drivers/net/8139cp.c Sat Apr 13 22:15:31 2002
@@ -812,7 +812,7 @@
i++, mclist = mclist->next) {
int bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26;
- mc_filter[bit_nr >> 5] |= cpu_to_le32(1 << (bit_nr & 31));
+ mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31);
rx_mode |= AcceptMulticast;
}
}
--- drivers/net/8139too.c- Wed Apr 10 05:43:48 2002
+++ drivers/net/8139too.c Sat Apr 13 21:52:09 2002
@@ -2430,7 +2430,7 @@
i++, mclist = mclist->next) {
int bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26;
- mc_filter[bit_nr >> 5] |= cpu_to_le32(1 << (bit_nr & 31));
+ mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31);
rx_mode |= AcceptMulticast;
}
}
Naoki Hamada
nao@tom-yam.or.jp
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Mon Apr 15 2002 - 22:00:21 EST