From eb0f865dc2dcc54fd3929cebcb9748ba60c39937 Mon Sep 17 00:00:00 2001 From: Daniel Walker Date: Fri, 28 Mar 2008 14:41:28 -0700 Subject: [PATCH] --- yaml --- r: 90467 b: refs/heads/master c: a5af6ad3a0d4f5c6d0a3535d46fc1b26eeff0816 h: refs/heads/master i: 90465: abdc8ad8429653c1c0641c04f9d038cc5c7884bf 90463: f53cb9bd77e00e66b3e7e988c1baaf25183a2d40 v: v3 --- [refs] | 2 +- trunk/drivers/net/ehea/ehea.h | 2 +- trunk/drivers/net/ehea/ehea_main.c | 44 ++++++++++++++++-------------- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/[refs] b/[refs] index 2c2f6d31504b..541f594291e9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: da59cde4825bd42f305efb8e6335f1b58ab8d88c +refs/heads/master: a5af6ad3a0d4f5c6d0a3535d46fc1b26eeff0816 diff --git a/trunk/drivers/net/ehea/ehea.h b/trunk/drivers/net/ehea/ehea.h index b5c8eb96bd26..26acd05c80b5 100644 --- a/trunk/drivers/net/ehea/ehea.h +++ b/trunk/drivers/net/ehea/ehea.h @@ -452,7 +452,7 @@ struct ehea_port { struct vlan_group *vgrp; struct ehea_eq *qp_eq; struct work_struct reset_task; - struct semaphore port_lock; + struct mutex port_lock; char int_aff_name[EHEA_IRQ_NAME_SIZE]; int allmulti; /* Indicates IFF_ALLMULTI state */ int promisc; /* Indicates IFF_PROMISC state */ diff --git a/trunk/drivers/net/ehea/ehea_main.c b/trunk/drivers/net/ehea/ehea_main.c index 73dd6f9dfbbe..0c1c360a85ca 100644 --- a/trunk/drivers/net/ehea/ehea_main.c +++ b/trunk/drivers/net/ehea/ehea_main.c @@ -2543,7 +2543,7 @@ static int ehea_open(struct net_device *dev) int ret; struct ehea_port *port = netdev_priv(dev); - down(&port->port_lock); + mutex_lock(&port->port_lock); if (netif_msg_ifup(port)) ehea_info("enabling port %s", dev->name); @@ -2554,7 +2554,7 @@ static int ehea_open(struct net_device *dev) netif_start_queue(dev); } - up(&port->port_lock); + mutex_unlock(&port->port_lock); return ret; } @@ -2600,11 +2600,11 @@ static int ehea_stop(struct net_device *dev) ehea_info("disabling port %s", dev->name); flush_scheduled_work(); - down(&port->port_lock); + mutex_lock(&port->port_lock); netif_stop_queue(dev); port_napi_disable(port); ret = ehea_down(dev); - up(&port->port_lock); + mutex_unlock(&port->port_lock); return ret; } @@ -2802,7 +2802,7 @@ static void ehea_reset_port(struct work_struct *work) struct net_device *dev = port->netdev; port->resets++; - down(&port->port_lock); + mutex_lock(&port->port_lock); netif_stop_queue(dev); port_napi_disable(port); @@ -2822,7 +2822,7 @@ static void ehea_reset_port(struct work_struct *work) netif_wake_queue(dev); out: - up(&port->port_lock); + mutex_unlock(&port->port_lock); return; } @@ -2839,21 +2839,23 @@ static void ehea_rereg_mrs(struct work_struct *work) /* Shutdown all ports */ for (i = 0; i < EHEA_MAX_PORTS; i++) { struct ehea_port *port = adapter->port[i]; + struct net_device *dev; - if (port) { - struct net_device *dev = port->netdev; + if (!port) + continue; - if (dev->flags & IFF_UP) { - down(&port->port_lock); - netif_stop_queue(dev); - ret = ehea_stop_qps(dev); - if (ret) { - up(&port->port_lock); - goto out; - } - port_napi_disable(port); - up(&port->port_lock); + dev = port->netdev; + + if (dev->flags & IFF_UP) { + mutex_lock(&port->port_lock); + netif_stop_queue(dev); + ret = ehea_stop_qps(dev); + if (ret) { + mutex_unlock(&port->port_lock); + goto out; } + port_napi_disable(port); + mutex_unlock(&port->port_lock); } } @@ -2893,12 +2895,12 @@ static void ehea_rereg_mrs(struct work_struct *work) struct net_device *dev = port->netdev; if (dev->flags & IFF_UP) { - down(&port->port_lock); + mutex_lock(&port->port_lock); port_napi_enable(port); ret = ehea_restart_qps(dev); if (!ret) netif_wake_queue(dev); - up(&port->port_lock); + mutex_unlock(&port->port_lock); } } } @@ -3064,7 +3066,7 @@ struct ehea_port *ehea_setup_single_port(struct ehea_adapter *adapter, port = netdev_priv(dev); - sema_init(&port->port_lock, 1); + mutex_init(&port->port_lock); port->state = EHEA_PORT_DOWN; port->sig_comp_iv = sq_entries / 10;