lkml.org 
[lkml]   [2007]   [Apr]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] use spinlock instead of binary mutex in idt77252 driver
    use spinlock instead of binary mutex in idt77252 driver

    Signed-off-by: Matthias Kaehlcke <matthias.kaehlcke@gmail.com>

    --

    diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c
    index b4b8014..e3cf141 100644
    --- a/drivers/atm/idt77252.c
    +++ b/drivers/atm/idt77252.c
    @@ -2430,7 +2430,7 @@ idt77252_open(struct atm_vcc *vcc)

    set_bit(ATM_VF_ADDR, &vcc->flags);

    - down(&card->mutex);
    + mutex_lock(&card->mutex);

    OPRINTK("%s: opening vpi.vci: %d.%d\n", card->name, vpi, vci);

    @@ -2441,7 +2441,7 @@ idt77252_open(struct atm_vcc *vcc)
    break;
    default:
    printk("%s: Unsupported AAL: %d\n", card->name, vcc->qos.aal);
    - up(&card->mutex);
    + mutex_unlock(&card->mutex);
    return -EPROTONOSUPPORT;
    }

    @@ -2450,7 +2450,7 @@ idt77252_open(struct atm_vcc *vcc)
    card->vcs[index] = kzalloc(sizeof(struct vc_map), GFP_KERNEL);
    if (!card->vcs[index]) {
    printk("%s: can't alloc vc in open()\n", card->name);
    - up(&card->mutex);
    + mutex_unlock(&card->mutex);
    return -ENOMEM;
    }
    card->vcs[index]->card = card;
    @@ -2479,14 +2479,14 @@ idt77252_open(struct atm_vcc *vcc)
    if (inuse) {
    printk("%s: %s vci already in use.\n", card->name,
    inuse == 1 ? "tx" : inuse == 2 ? "rx" : "tx and rx");
    - up(&card->mutex);
    + mutex_unlock(&card->mutex);
    return -EADDRINUSE;
    }

    if (vcc->qos.txtp.traffic_class != ATM_NONE) {
    error = idt77252_init_tx(card, vc, vcc, &vcc->qos);
    if (error) {
    - up(&card->mutex);
    + mutex_unlock(&card->mutex);
    return error;
    }
    }
    @@ -2494,14 +2494,14 @@ idt77252_open(struct atm_vcc *vcc)
    if (vcc->qos.rxtp.traffic_class != ATM_NONE) {
    error = idt77252_init_rx(card, vc, vcc, &vcc->qos);
    if (error) {
    - up(&card->mutex);
    + mutex_unlock(&card->mutex);
    return error;
    }
    }

    set_bit(ATM_VF_READY, &vcc->flags);

    - up(&card->mutex);
    + mutex_unlock(&card->mutex);
    return 0;
    }

    @@ -2515,7 +2515,7 @@ idt77252_close(struct atm_vcc *vcc)
    unsigned long addr;
    unsigned long timeout;

    - down(&card->mutex);
    + mutex_lock(&card->mutex);

    IPRINTK("%s: idt77252_close: vc = %d (%d.%d)\n",
    card->name, vc->index, vcc->vpi, vcc->vci);
    @@ -2586,7 +2586,7 @@ done:
    free_scq(card, vc->scq);
    }

    - up(&card->mutex);
    + mutex_unlock(&card->mutex);
    }

    static int
    @@ -2597,7 +2597,7 @@ idt77252_change_qos(struct atm_vcc *vcc, struct atm_qos *qos, int flags)
    struct vc_map *vc = vcc->dev_data;
    int error = 0;

    - down(&card->mutex);
    + mutex_lock(&card->mutex);

    if (qos->txtp.traffic_class != ATM_NONE) {
    if (!test_bit(VCF_TX, &vc->flags)) {
    @@ -2643,7 +2643,7 @@ idt77252_change_qos(struct atm_vcc *vcc, struct atm_qos *qos, int flags)
    set_bit(ATM_VF_HASQOS, &vcc->flags);

    out:
    - up(&card->mutex);
    + mutex_unlock(&card->mutex);
    return error;
    }

    @@ -3703,7 +3703,7 @@ idt77252_init_one(struct pci_dev *pcidev, const struct pci_device_id *id)
    membase = pci_resource_start(pcidev, 1);
    srambase = pci_resource_start(pcidev, 2);

    - init_MUTEX(&card->mutex);
    + mutex_init(&card->mutex);
    spin_lock_init(&card->cmd_lock);
    spin_lock_init(&card->tst_lock);

    diff --git a/drivers/atm/idt77252.h b/drivers/atm/idt77252.h
    index 544b397..a3b2f74 100644
    --- a/drivers/atm/idt77252.h
    +++ b/drivers/atm/idt77252.h
    @@ -359,7 +359,7 @@ struct idt77252_dev
    unsigned long srambase; /* SAR's sram base address */
    void __iomem *fbq[4]; /* FBQ fill addresses */

    - struct semaphore mutex;
    + struct mutex mutex;
    spinlock_t cmd_lock; /* for r/w utility/sram */

    unsigned long softstat;
    --
    Matthias Kaehlcke
    Linux Application Developer
    Barcelona

    Insanity: doing the same thing over and over
    again and expecting different results
    (Albert Einstein)
    .''`.
    using free software / Debian GNU/Linux | http://debian.org : :' :
    `. `'`
    gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4 `-
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2007-04-22 23:39    [W:0.026 / U:29.868 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site