[patch] ATL1E multicast fix

Bug #300698 reported by Daniel Nyström
4
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Fix Released
Undecided
Unassigned
Hardy
Invalid
Undecided
Unassigned
Intrepid
Fix Released
High
Unassigned

Bug Description

After installing my new ASUS motherboard Avahi stopped working. It
turned out that the ATL1E driver failed receiving multicasts.

I applied the following patch, and it started working immediately. As
ASUS is one of the bigger motherboard vendors I think this might be
important to get into a new kernel version.

Patch from:
http://kerneltrap.org/mailarchive/linux-netdev/2008/11/11/4060524

diff --git a/drivers/net/atl1e/atl1e_hw.c b/drivers/net/atl1e/atl1e_hw.c
index 949e753..c0d5f7c 100644
--- a/drivers/net/atl1e/atl1e_hw.c
+++ b/drivers/net/atl1e/atl1e_hw.c
@@ -163,9 +163,6 @@ int atl1e_read_mac_addr(struct atl1e_hw *hw)
  * atl1e_hash_mc_addr
  * purpose
  * set hash value for a multicast address
- * hash calcu processing :
- * 1. calcu 32bit CRC for multicast address
- * 2. reverse crc with MSB to LSB
  */
 u32 atl1e_hash_mc_addr(struct atl1e_hw *hw, u8 *mc_addr)
 {
@@ -174,7 +171,6 @@ u32 atl1e_hash_mc_addr(struct atl1e_hw *hw, u8 *mc_addr)
  int i;

  crc32 = ether_crc_le(6, mc_addr);
- crc32 = ~crc32;
  for (i = 0; i < 32; i++)
   value |= (((crc32 >> i) & 1) << (31 - i));

--
1.5.6.5
--

Revision history for this message
Daniel Nyström (speakman) wrote :
Tim Gardner (timg-tpi)
Changed in linux:
status: New → Invalid
Revision history for this message
Tim Gardner (timg-tpi) wrote :

SRU Justification

Impact: atl1e ethernet adapters cannot receive multicast packets

Patch Description: Correctly invert the multicast address CRC field.

Patch: http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-intrepid.git;a=commit;h=790be40d61f4d831dd1893b417d018ba304c5fca

Test Case: see bug description

Changed in linux:
assignee: nobody → timg-tpi
importance: Undecided → High
milestone: none → intrepid-updates
status: New → Fix Committed
Revision history for this message
Tim Gardner (timg-tpi) wrote :

Released in 2.6.27-11.21

atl1e: fix broken multicast by removing unnecessary crc inversion

Changed in linux (Ubuntu Intrepid):
assignee: Tim Gardner (timg-tpi) → nobody
status: Fix Committed → Fix Released
Revision history for this message
Leann Ogasawara (leannogasawara) wrote :

Patch also included in the latest Jaunty release as well as the upcoming Karmic release. Setting actively developed linux task to Fix Released.

ogasawara@emiko:~/ubuntu-jaunty$ git log 7ee0fddfe05f105d3346aa8774695e7130697836
commit 7ee0fddfe05f105d3346aa8774695e7130697836
Author: J. K. Cliburn <email address hidden>
Date: Tue Nov 11 16:21:48 2008 -0600

    atl1e: fix broken multicast by removing unnecessary crc inversion

    Inverting the crc after calling ether_crc_le() is unnecessary and breaks
    multicast. Remove it.

    Tested-by: David Madore <email address hidden>
    Signed-off-by: Jay Cliburn <email address hidden>
    Cc: <email address hidden>
    Signed-off-by: Jeff Garzik <email address hidden>

Changed in linux (Ubuntu):
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.