<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">

This driver is doing set_bit() on a u16*.



 drivers/net/yellowfin.c |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff -puN drivers/net/yellowfin.c~yellowfin-set_bit-fix drivers/net/yellowfin.c
--- 25/drivers/net/yellowfin.c~yellowfin-set_bit-fix	2003-03-02 21:40:05.000000000 -0800
+++ 25-akpm/drivers/net/yellowfin.c	2003-03-02 21:48:39.000000000 -0800
@@ -1349,6 +1349,11 @@ static struct net_device_stats *yellowfi
 
 /* Set or clear the multicast filter for this adaptor. */
 
+static void set_hash_bit(int bit, u16 *hash)
+{
+	hash[bit / 2] |= 1 &lt;&lt; (bit &amp; 15);
+}
+
 static void set_rx_mode(struct net_device *dev)
 {
 	struct yellowfin_private *yp = dev-&gt;priv;
@@ -1368,20 +1373,21 @@ static void set_rx_mode(struct net_devic
 		struct dev_mc_list *mclist;
 		u16 hash_table[4];
 		int i;
+
 		memset(hash_table, 0, sizeof(hash_table));
 		for (i = 0, mclist = dev-&gt;mc_list; mclist &amp;&amp; i &lt; dev-&gt;mc_count;
 			 i++, mclist = mclist-&gt;next) {
 			/* Due to a bug in the early chip versions, multiple filter
 			   slots must be set for each address. */
 			if (yp-&gt;drv_flags &amp; HasMulticastBug) {
-				set_bit((ether_crc_le(3, mclist-&gt;dmi_addr) &gt;&gt; 3) &amp; 0x3f,
+				set_hash_bit((ether_crc_le(3, mclist-&gt;dmi_addr) &gt;&gt; 3) &amp; 0x3f,
 						hash_table);
-				set_bit((ether_crc_le(4, mclist-&gt;dmi_addr) &gt;&gt; 3) &amp; 0x3f,
+				set_hash_bit((ether_crc_le(4, mclist-&gt;dmi_addr) &gt;&gt; 3) &amp; 0x3f,
 						hash_table);
-				set_bit((ether_crc_le(5, mclist-&gt;dmi_addr) &gt;&gt; 3) &amp; 0x3f,
+				set_hash_bit((ether_crc_le(5, mclist-&gt;dmi_addr) &gt;&gt; 3) &amp; 0x3f,
 						hash_table);
 			}
-			set_bit((ether_crc_le(6, mclist-&gt;dmi_addr) &gt;&gt; 3) &amp; 0x3f,
+			set_hash_bit((ether_crc_le(6, mclist-&gt;dmi_addr) &gt;&gt; 3) &amp; 0x3f,
 					hash_table);
 		}
 		/* Copy the hash table to the chip. */

_
</pre></body></html>