Re: Fw: [Patch V2 -next] Adapt s390 qeth & lcs driver code to use RCU

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



ACK, thanks Sachin!

> From: 
> Sachin Sant <sachinp@xxxxxxxxxx> 
> To: 
> netdev@xxxxxxxxxxxxxxx,
> davem@xxxxxxxxxxxxx 
> Cc: 
> Sachin Sant <sachinp@xxxxxxxxxx>,
> linux-s390@xxxxxxxxxxxxxxx,
> linux-next@xxxxxxxxxxxxxxx, Ursula
> Braun1/Germany/IBM@IBMDE,
> eric.dumazet@xxxxxxxxx 
> Date: 
> 19.11.2010 10:40 
> Subject: 
> [Patch V2 -next] Adapt s390 qeth &
> lcs driver code to use RCU
> 
> 
> ______________________________________________________________________
> 
> 
> 
> Commit 1d7138de878d1d4210727c1200193e69596f93b3
> igmp: RCU conversion of in_dev->mc_list
> 
> converted rwlock to RCU.
> 
> Update the s390 network drivers(qeth & lcs) code to adapt to this
> change.
> 
> Signed-off-by : Sachin Sant <sachinp@xxxxxxxxxx>
> ---
> 
> V2 : Changes based on suggestions given by Eric Dumazet
> 
> diff -Naurp a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c
> --- a/drivers/s390/net/lcs.c                 2010-11-19
> 14:37:10.000000000 +0530
> +++ b/drivers/s390/net/lcs.c                 2010-11-19
> 15:03:52.000000000 +0530
> @@ -1188,7 +1188,7 @@ lcs_remove_mc_addresses(struct lcs_card
>                  spin_lock_irqsave(&card->ipm_lock, flags);
>                  list_for_each(l, &card->ipm_list) {
>                                   ipm = list_entry(l, struct
> lcs_ipm_list, list);
> -                                  for (im4 = in4_dev->mc_list; im4 !=
> NULL; im4 = im4->next) {
> +                                  for (im4 =
> rcu_dereference(in4_dev->mc_list); im4 != NULL; im4 =
> rcu_dereference(im4->next_rcu)) {
> 
>  lcs_get_mac_for_ipm(im4->multiaddr, buf, card->dev);
>                                                    if
> ( (ipm->ipm.ip_addr == im4->multiaddr) &&
>                                                         (memcmp(buf,
> &ipm->ipm.mac_addr,
> @@ -1233,7 +1233,7 @@ lcs_set_mc_addresses(struct lcs_card *ca
>                  unsigned long flags;
> 
>                  LCS_DBF_TEXT(4, trace, "setmclst");
> -                 for (im4 = in4_dev->mc_list; im4; im4 = im4->next) {
> +                 for (im4 = rcu_dereference(in4_dev->mc_list); im4;
> im4 = rcu_dereference(im4->next_rcu)) {
>                                   lcs_get_mac_for_ipm(im4->multiaddr,
> buf, card->dev);
>                                   ipm = lcs_check_addr_entry(card,
> im4, buf);
>                                   if (ipm != NULL)
> @@ -1269,10 +1269,10 @@ lcs_register_mc_addresses(void *data)
>                  in4_dev = in_dev_get(card->dev);
>                  if (in4_dev == NULL)
>                                   goto out;
> -                 read_lock(&in4_dev->mc_list_lock);
> +                 rcu_read_lock();
>                  lcs_remove_mc_addresses(card,in4_dev);
>                  lcs_set_mc_addresses(card, in4_dev);
> -                 read_unlock(&in4_dev->mc_list_lock);
> +                 rcu_read_unlock();
>                  in_dev_put(in4_dev);
> 
>                  netif_carrier_off(card->dev);
> diff -Naurp a/drivers/s390/net/qeth_l3_main.c
> b/drivers/s390/net/qeth_l3_main.c
> --- a/drivers/s390/net/qeth_l3_main.c                 2010-11-19
> 14:37:10.000000000 +0530
> +++ b/drivers/s390/net/qeth_l3_main.c                 2010-11-19
> 15:03:32.000000000 +0530
> @@ -1796,7 +1796,7 @@ static void qeth_l3_add_mc(struct qeth_c
>                  char buf[MAX_ADDR_LEN];
> 
>                  QETH_CARD_TEXT(card, 4, "addmc");
> -                 for (im4 = in4_dev->mc_list; im4; im4 = im4->next) {
> +                 for (im4 = rcu_dereference(in4_dev->mc_list); im4 !=
> NULL; im4 = rcu_dereference(im4->next_rcu)) {
> 
> qeth_l3_get_mac_for_ipm(im4->multiaddr, buf, in4_dev->dev);
>                                   ipm =
> qeth_l3_get_addr_buffer(QETH_PROT_IPV4);
>                                   if (!ipm)
> @@ -1828,9 +1828,9 @@ static void qeth_l3_add_vlan_mc(struct q
>                                   in_dev = in_dev_get(netdev);
>                                   if (!in_dev)
>                                                    continue;
> -                                  read_lock(&in_dev->mc_list_lock);
> +                                  rcu_read_lock();
>                                   qeth_l3_add_mc(card, in_dev);
> -                                  read_unlock(&in_dev->mc_list_lock);
> +                                  rcu_read_unlock();
>                                   in_dev_put(in_dev);
>                  }
> }
> @@ -1843,10 +1843,10 @@ static void qeth_l3_add_multicast_ipv4(s
>                  in4_dev = in_dev_get(card->dev);
>                  if (in4_dev == NULL)
>                                   return;
> -                 read_lock(&in4_dev->mc_list_lock);
> +                 rcu_read_lock();
>                  qeth_l3_add_mc(card, in4_dev);
>                  qeth_l3_add_vlan_mc(card);
> -                 read_unlock(&in4_dev->mc_list_lock);
> +                 rcu_read_unlock();
>                  in_dev_put(in4_dev);
> }
> 
> 


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


[Index of Archives]     [Linux Kernel]     [Linux USB Development]     [Yosemite News]     [Linux SCSI]

  Powered by Linux