diff mbox

[net-next-2.6] e1000: convert to use netdev_for_each_mc_addr

Message ID 20100222191044.GC4141@psychotron.redhat.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Jiri Pirko Feb. 22, 2010, 7:10 p.m. UTC
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
---
 drivers/net/e1000/e1000_main.c |   37 +++++++++++++++++--------------------
 1 files changed, 17 insertions(+), 20 deletions(-)

Comments

David Miller Feb. 22, 2010, 11:47 p.m. UTC | #1
From: Jiri Pirko <jpirko@redhat.com>
Date: Mon, 22 Feb 2010 20:10:44 +0100

> 
> Signed-off-by: Jiri Pirko <jpirko@redhat.com>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jesse Brandeburg Feb. 23, 2010, 12:54 a.m. UTC | #2
On Mon, Feb 22, 2010 at 11:10 AM, Jiri Pirko <jpirko@redhat.com> wrote:
>
> Signed-off-by: Jiri Pirko <jpirko@redhat.com>
> ---
>  drivers/net/e1000/e1000_main.c |   37 +++++++++++++++++--------------------
>  1 files changed, 17 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
> index 3b14dd7..c99f95c 100644
> --- a/drivers/net/e1000/e1000_main.c
> +++ b/drivers/net/e1000/e1000_main.c
> @@ -2161,29 +2161,26 @@ static void e1000_set_rx_mode(struct net_device *netdev)
>
>        WARN_ON(i == rar_entries);
>
> -       mc_ptr = netdev->mc_list;
> -
> -       for (; i < rar_entries; i++) {
> -               if (mc_ptr) {
> -                       e1000_rar_set(hw, mc_ptr->da_addr, i);
> -                       mc_ptr = mc_ptr->next;
> -               } else {
> -                       E1000_WRITE_REG_ARRAY(hw, RA, i << 1, 0);
> -                       E1000_WRITE_FLUSH();
> -                       E1000_WRITE_REG_ARRAY(hw, RA, (i << 1) + 1, 0);
> -                       E1000_WRITE_FLUSH();
> +       netdev_for_each_mc_addr(mc_ptr, netdev) {
> +               if (i == rar_entries) {
> +                       /* load any remaining addresses into the hash table */
> +                       u32 hash_reg, hash_bit, mta;
> +                       hash_value = e1000_hash_mc_addr(hw, mc_ptr->da_addr);
> +                       hash_reg = (hash_value >> 5) & 0x7F;
> +                       hash_bit = hash_value & 0x1F;
> +                       mta = (1 << hash_bit);
> +                       mcarray[hash_reg] |= mta;
> +               }
> +               else {

nit - else should be in the same line like  "} else {"

> +                       e1000_rar_set(hw, mc_ptr->da_addr, i++);
>                }
>        }
>
> -       /* load any remaining addresses into the hash table */
> -
> -       for (; mc_ptr; mc_ptr = mc_ptr->next) {
> -               u32 hash_reg, hash_bit, mta;
> -               hash_value = e1000_hash_mc_addr(hw, mc_ptr->da_addr);
> -               hash_reg = (hash_value >> 5) & 0x7F;
> -               hash_bit = hash_value & 0x1F;
> -               mta = (1 << hash_bit);
> -               mcarray[hash_reg] |= mta;
> +       for (; i < rar_entries; i++) {
> +               E1000_WRITE_REG_ARRAY(hw, RA, i << 1, 0);
> +               E1000_WRITE_FLUSH();
> +               E1000_WRITE_REG_ARRAY(hw, RA, (i << 1) + 1, 0);
> +               E1000_WRITE_FLUSH();
>        }
>
>        /* write the hash table completely, write from bottom to avoid

otherwise seems okay.  Thanks for your work on cleaning this stuff,
we'll be testing it as part of the net next testing already going on.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jiri Pirko Feb. 23, 2010, 7:32 a.m. UTC | #3
Tue, Feb 23, 2010 at 01:54:13AM CET, jesse.brandeburg@gmail.com wrote:
>On Mon, Feb 22, 2010 at 11:10 AM, Jiri Pirko <jpirko@redhat.com> wrote:
>>
>> Signed-off-by: Jiri Pirko <jpirko@redhat.com>
>> ---
>>  drivers/net/e1000/e1000_main.c |   37 +++++++++++++++++--------------------
>>  1 files changed, 17 insertions(+), 20 deletions(-)
>>
>> diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
>> index 3b14dd7..c99f95c 100644
>> --- a/drivers/net/e1000/e1000_main.c
>> +++ b/drivers/net/e1000/e1000_main.c
>> @@ -2161,29 +2161,26 @@ static void e1000_set_rx_mode(struct net_device *netdev)
>>
>>        WARN_ON(i == rar_entries);
>>
>> -       mc_ptr = netdev->mc_list;
>> -
>> -       for (; i < rar_entries; i++) {
>> -               if (mc_ptr) {
>> -                       e1000_rar_set(hw, mc_ptr->da_addr, i);
>> -                       mc_ptr = mc_ptr->next;
>> -               } else {
>> -                       E1000_WRITE_REG_ARRAY(hw, RA, i << 1, 0);
>> -                       E1000_WRITE_FLUSH();
>> -                       E1000_WRITE_REG_ARRAY(hw, RA, (i << 1) + 1, 0);
>> -                       E1000_WRITE_FLUSH();
>> +       netdev_for_each_mc_addr(mc_ptr, netdev) {
>> +               if (i == rar_entries) {
>> +                       /* load any remaining addresses into the hash table */
>> +                       u32 hash_reg, hash_bit, mta;
>> +                       hash_value = e1000_hash_mc_addr(hw, mc_ptr->da_addr);
>> +                       hash_reg = (hash_value >> 5) & 0x7F;
>> +                       hash_bit = hash_value & 0x1F;
>> +                       mta = (1 << hash_bit);
>> +                       mcarray[hash_reg] |= mta;
>> +               }
>> +               else {
>
>nit - else should be in the same line like  "} else {"

Oh right, but patch is already applied. Will post correction.

>
>> +                       e1000_rar_set(hw, mc_ptr->da_addr, i++);
>>                }
>>        }
>>
>> -       /* load any remaining addresses into the hash table */
>> -
>> -       for (; mc_ptr; mc_ptr = mc_ptr->next) {
>> -               u32 hash_reg, hash_bit, mta;
>> -               hash_value = e1000_hash_mc_addr(hw, mc_ptr->da_addr);
>> -               hash_reg = (hash_value >> 5) & 0x7F;
>> -               hash_bit = hash_value & 0x1F;
>> -               mta = (1 << hash_bit);
>> -               mcarray[hash_reg] |= mta;
>> +       for (; i < rar_entries; i++) {
>> +               E1000_WRITE_REG_ARRAY(hw, RA, i << 1, 0);
>> +               E1000_WRITE_FLUSH();
>> +               E1000_WRITE_REG_ARRAY(hw, RA, (i << 1) + 1, 0);
>> +               E1000_WRITE_FLUSH();
>>        }
>>
>>        /* write the hash table completely, write from bottom to avoid
>
>otherwise seems okay.  Thanks for your work on cleaning this stuff,
>we'll be testing it as part of the net next testing already going on.

Cool, thanks

Jirka
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 3b14dd7..c99f95c 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -2161,29 +2161,26 @@  static void e1000_set_rx_mode(struct net_device *netdev)
 
 	WARN_ON(i == rar_entries);
 
-	mc_ptr = netdev->mc_list;
-
-	for (; i < rar_entries; i++) {
-		if (mc_ptr) {
-			e1000_rar_set(hw, mc_ptr->da_addr, i);
-			mc_ptr = mc_ptr->next;
-		} else {
-			E1000_WRITE_REG_ARRAY(hw, RA, i << 1, 0);
-			E1000_WRITE_FLUSH();
-			E1000_WRITE_REG_ARRAY(hw, RA, (i << 1) + 1, 0);
-			E1000_WRITE_FLUSH();
+	netdev_for_each_mc_addr(mc_ptr, netdev) {
+		if (i == rar_entries) {
+			/* load any remaining addresses into the hash table */
+			u32 hash_reg, hash_bit, mta;
+			hash_value = e1000_hash_mc_addr(hw, mc_ptr->da_addr);
+			hash_reg = (hash_value >> 5) & 0x7F;
+			hash_bit = hash_value & 0x1F;
+			mta = (1 << hash_bit);
+			mcarray[hash_reg] |= mta;
+		}
+		else {
+			e1000_rar_set(hw, mc_ptr->da_addr, i++);
 		}
 	}
 
-	/* load any remaining addresses into the hash table */
-
-	for (; mc_ptr; mc_ptr = mc_ptr->next) {
-		u32 hash_reg, hash_bit, mta;
-		hash_value = e1000_hash_mc_addr(hw, mc_ptr->da_addr);
-		hash_reg = (hash_value >> 5) & 0x7F;
-		hash_bit = hash_value & 0x1F;
-		mta = (1 << hash_bit);
-		mcarray[hash_reg] |= mta;
+	for (; i < rar_entries; i++) {
+		E1000_WRITE_REG_ARRAY(hw, RA, i << 1, 0);
+		E1000_WRITE_FLUSH();
+		E1000_WRITE_REG_ARRAY(hw, RA, (i << 1) + 1, 0);
+		E1000_WRITE_FLUSH();
 	}
 
 	/* write the hash table completely, write from bottom to avoid