patch-2.4.23 linux-2.4.23/drivers/atm/idt77252.c
Next file: linux-2.4.23/drivers/block/Config.in
Previous file: linux-2.4.23/drivers/atm/he.c
Back to the patch index
Back to the overall index
- Lines: 55
- Date:
2003-11-28 10:26:19.000000000 -0800
- Orig file:
linux-2.4.22/drivers/atm/idt77252.c
- Orig date:
2003-08-25 04:44:41.000000000 -0700
diff -urN linux-2.4.22/drivers/atm/idt77252.c linux-2.4.23/drivers/atm/idt77252.c
@@ -2404,37 +2404,43 @@
static int
idt77252_find_vcc(struct atm_vcc *vcc, short *vpi, int *vci)
{
- unsigned long flags;
+ struct sock *s;
struct atm_vcc *walk;
- spin_lock_irqsave(&vcc->dev->lock, flags);
+ read_lock(&vcc_sklist_lock);
if (*vpi == ATM_VPI_ANY) {
*vpi = 0;
- walk = vcc->dev->vccs;
- while (walk) {
+ s = vcc_sklist;
+ while (s) {
+ walk = s->protinfo.af_atm;
+ if (walk->dev != vcc->dev)
+ continue;
if ((walk->vci == *vci) && (walk->vpi == *vpi)) {
(*vpi)++;
- walk = vcc->dev->vccs;
+ s = vcc_sklist;
continue;
}
- walk = walk->next;
+ s = s->next;
}
}
if (*vci == ATM_VCI_ANY) {
*vci = ATM_NOT_RSV_VCI;
- walk = vcc->dev->vccs;
- while (walk) {
+ s = vcc_sklist;
+ while (s) {
+ walk = s->protinfo.af_atm;
+ if (walk->dev != vcc->dev)
+ continue;
if ((walk->vci == *vci) && (walk->vpi == *vpi)) {
(*vci)++;
- walk = vcc->dev->vccs;
+ s = vcc_sklist;
continue;
}
- walk = walk->next;
+ s = s->next;
}
}
- spin_unlock_irqrestore(&vcc->dev->lock, flags);
+ read_unlock(&vcc_sklist_lock);
return 0;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)