Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bfbf3c0968498f5232c02965cf41695edae1bc4d
Commit:     bfbf3c0968498f5232c02965cf41695edae1bc4d
Parent:     74da9d88bf5ffd31aed61a0b19519684ad744ded
Author:     Matthias Kaehlcke <[EMAIL PROTECTED]>
AuthorDate: Thu Apr 26 01:41:49 2007 -0700
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Thu Apr 26 01:41:49 2007 -0700

    [ATM]: Use mutex instead of binary semaphore in FORE Systems 200E-series 
driver
    
    (akpm: remove CVS control string too)
    
    Signed-off-by: Matthias Kaehlcke <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 drivers/atm/fore200e.c |   20 +++++++++-----------
 drivers/atm/fore200e.h |    2 +-
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c
index a7c0ed3..405ee5e 100644
--- a/drivers/atm/fore200e.c
+++ b/drivers/atm/fore200e.c
@@ -1,6 +1,4 @@
 /*
-  $Id: fore200e.c,v 1.5 2000/04/14 10:10:34 davem Exp $
-
   A FORE Systems 200E-series driver for ATM on Linux.
   Christophe Lizzi ([EMAIL PROTECTED]), October 1999-March 2003.
 
@@ -1502,9 +1500,9 @@ fore200e_open(struct atm_vcc *vcc)
     /* pseudo-CBR bandwidth requested? */
     if ((vcc->qos.txtp.traffic_class == ATM_CBR) && (vcc->qos.txtp.max_pcr > 
0)) {
        
-       down(&fore200e->rate_sf);
+       mutex_lock(&fore200e->rate_mtx);
        if (fore200e->available_cell_rate < vcc->qos.txtp.max_pcr) {
-           up(&fore200e->rate_sf);
+           mutex_unlock(&fore200e->rate_mtx);
 
            kfree(fore200e_vcc);
            vc_map->vcc = NULL;
@@ -1513,7 +1511,7 @@ fore200e_open(struct atm_vcc *vcc)
 
        /* reserve bandwidth */
        fore200e->available_cell_rate -= vcc->qos.txtp.max_pcr;
-       up(&fore200e->rate_sf);
+       mutex_unlock(&fore200e->rate_mtx);
     }
     
     vcc->itf = vcc->dev->number;
@@ -1599,9 +1597,9 @@ fore200e_close(struct atm_vcc* vcc)
     /* release reserved bandwidth, if any */
     if ((vcc->qos.txtp.traffic_class == ATM_CBR) && (vcc->qos.txtp.max_pcr > 
0)) {
 
-       down(&fore200e->rate_sf);
+       mutex_lock(&fore200e->rate_mtx);
        fore200e->available_cell_rate += vcc->qos.txtp.max_pcr;
-       up(&fore200e->rate_sf);
+       mutex_unlock(&fore200e->rate_mtx);
 
        clear_bit(ATM_VF_HASQOS, &vcc->flags);
     }
@@ -2064,16 +2062,16 @@ fore200e_change_qos(struct atm_vcc* vcc,struct atm_qos* 
qos, int flags)
 
     if ((qos->txtp.traffic_class == ATM_CBR) && (qos->txtp.max_pcr > 0)) {
 
-       down(&fore200e->rate_sf);
+       mutex_lock(&fore200e->rate_mtx);
        if (fore200e->available_cell_rate + vcc->qos.txtp.max_pcr < 
qos->txtp.max_pcr) {
-           up(&fore200e->rate_sf);
+           mutex_unlock(&fore200e->rate_mtx);
            return -EAGAIN;
        }
 
        fore200e->available_cell_rate += vcc->qos.txtp.max_pcr;
        fore200e->available_cell_rate -= qos->txtp.max_pcr;
 
-       up(&fore200e->rate_sf);
+       mutex_unlock(&fore200e->rate_mtx);
        
        memcpy(&vcc->qos, qos, sizeof(struct atm_qos));
        
@@ -2459,7 +2457,7 @@ fore200e_initialize(struct fore200e* fore200e)
 
     DPRINTK(2, "device %s being initialized\n", fore200e->name);
 
-    init_MUTEX(&fore200e->rate_sf);
+    mutex_init(&fore200e->rate_mtx);
     spin_lock_init(&fore200e->q_lock);
 
     cpq = fore200e->cp_queues = fore200e->virt_base + 
FORE200E_CP_QUEUES_OFFSET;
diff --git a/drivers/atm/fore200e.h b/drivers/atm/fore200e.h
index f9abfda..b85a546 100644
--- a/drivers/atm/fore200e.h
+++ b/drivers/atm/fore200e.h
@@ -869,7 +869,7 @@ typedef struct fore200e {
 
     struct stats*              stats;                  /* last snapshot of the 
stats         */
     
-    struct semaphore           rate_sf;                /* protects rate 
reservation ops      */
+    struct mutex               rate_mtx;               /* protects rate 
reservation ops      */
     spinlock_t                 q_lock;                 /* protects queue ops   
              */
 #ifdef FORE200E_USE_TASKLET
     struct tasklet_struct      tx_tasklet;             /* performs tx 
interrupt work         */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to