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

login
register
mail settings
Submitter Jiri Pirko
Date Feb. 22, 2010, 7:10 p.m.
Message ID <20100222191044.GC4141@psychotron.redhat.com>
Download mbox | patch
Permalink /patch/45994/
State Accepted
Delegated to: David Miller
Headers show

Comments

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

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