PATCH: fixes for RTL8139 multicast problem on big-endian machines

From: nao (nao@tom-yam.or.jp)
Date: Sat Apr 13 2002 - 09:05:58 EST


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