patch-2.4.22 linux-2.4.22/drivers/atm/fore200e.c
Next file: linux-2.4.22/drivers/atm/he.c
Previous file: linux-2.4.22/drivers/atm/eni.c
Back to the patch index
Back to the overall index
- Lines: 64
- Date:
2003-08-25 04:44:41.000000000 -0700
- Orig file:
linux-2.4.21/drivers/atm/fore200e.c
- Orig date:
2003-06-13 07:51:32.000000000 -0700
diff -urN linux-2.4.21/drivers/atm/fore200e.c linux-2.4.22/drivers/atm/fore200e.c
@@ -1077,13 +1077,16 @@
static struct atm_vcc*
fore200e_find_vcc(struct fore200e* fore200e, struct rpd* rpd)
{
+ unsigned long flags;
struct atm_vcc* vcc;
+ spin_lock_irqsave(&fore200e->atm_dev->lock, flags);
for (vcc = fore200e->atm_dev->vccs; vcc; vcc = vcc->next) {
if (vcc->vpi == rpd->atm_header.vpi && vcc->vci == rpd->atm_header.vci)
break;
}
+ spin_unlock_irqrestore(&fore200e->atm_dev->lock, flags);
return vcc;
}
@@ -1354,9 +1357,13 @@
static int
fore200e_walk_vccs(struct atm_vcc *vcc, short *vpi, int *vci)
{
+ unsigned long flags;
struct atm_vcc* walk;
/* find a free VPI */
+
+ spin_lock_irqsave(&vcc->dev->lock, flags);
+
if (*vpi == ATM_VPI_ANY) {
for (*vpi = 0, walk = vcc->dev->vccs; walk; walk = walk->next) {
@@ -1380,6 +1387,8 @@
}
}
+ spin_unlock_irqrestore(&vcc->dev->lock, flags);
+
return 0;
}
@@ -2640,6 +2649,7 @@
static int
fore200e_proc_read(struct atm_dev *dev,loff_t* pos,char* page)
{
+ unsigned long flags;
struct fore200e* fore200e = FORE200E_DEV(dev);
int len, left = *pos;
@@ -2886,6 +2896,7 @@
len = sprintf(page,"\n"
" VCCs:\n address\tVPI.VCI:AAL\t(min/max tx PDU size) (min/max rx PDU size)\n");
+ spin_lock_irqsave(&fore200e->atm_dev->lock, flags);
for (vcc = fore200e->atm_dev->vccs; vcc; vcc = vcc->next) {
fore200e_vcc = FORE200E_VCC(vcc);
@@ -2900,6 +2911,7 @@
fore200e_vcc->rx_max_pdu
);
}
+ spin_unlock_irqrestore(&fore200e->atm_dev->lock, flags);
return len;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)