patch-2.4.0-test3 linux/drivers/atm/eni.c
Next file: linux/drivers/atm/eni.h
Previous file: linux/drivers/atm/ambassador.c
Back to the patch index
Back to the overall index
- Lines: 61
- Date:
Thu Jul 6 21:37:24 2000
- Orig file:
v2.4.0-test2/linux/drivers/atm/eni.c
- Orig date:
Fri Jun 23 21:55:08 2000
diff -u --recursive --new-file v2.4.0-test2/linux/drivers/atm/eni.c linux/drivers/atm/eni.c
@@ -1187,14 +1187,12 @@
if (tx->send)
while ((skb = skb_dequeue(&tx->backlog))) {
res = do_tx(skb);
- if (res == enq_ok) atomic_dec(&tx->backlog_len);
- else {
- DPRINTK("re-queuing TX PDU\n");
- skb_queue_head(&tx->backlog,skb);
+ if (res == enq_ok) continue;
+ DPRINTK("re-queuing TX PDU\n");
+ skb_queue_head(&tx->backlog,skb);
requeued++;
- if (res == enq_jam) return;
- else break;
- }
+ if (res == enq_jam) return;
+ break;
}
}
}
@@ -1326,7 +1324,6 @@
tx->send = mem;
tx->words = size >> 2;
skb_queue_head_init(&tx->backlog);
- atomic_set(&tx->backlog_len,0);
for (order = 0; size > (1 << (order+10)); order++);
eni_out((order << MID_SIZE_SHIFT) |
((tx->send-eni_dev->ram) >> (MID_LOC_SKIP+2)),
@@ -2064,6 +2061,8 @@
static int eni_send(struct atm_vcc *vcc,struct sk_buff *skb)
{
+ enum enq_res res;
+
DPRINTK(">eni_send\n");
if (!ENI_VCC(vcc)->tx) {
if (vcc->pop) vcc->pop(vcc,skb);
@@ -2085,8 +2084,11 @@
}
submitted++;
ATM_SKB(skb)->vcc = vcc;
+ tasklet_disable(&ENI_DEV(vcc->dev)->task);
+ res = do_tx(skb);
+ tasklet_enable(&ENI_DEV(vcc->dev)->task);
+ if (res == enq_ok) return 0;
skb_queue_tail(&ENI_VCC(vcc)->tx->backlog,skb);
- atomic_inc(&ENI_VCC(vcc)->tx->backlog_len);
backlogged++;
tasklet_schedule(&ENI_DEV(vcc->dev)->task);
return 0;
@@ -2186,8 +2188,8 @@
tx == eni_dev->ubr ? " (UBR)" : "");
}
if (--left) continue;
- return sprintf(page,"%10sbacklog %d bytes\n","",
- atomic_read(&tx->backlog_len));
+ return sprintf(page,"%10sbacklog %u packets\n","",
+ skb_queue_len(&tx->backlog));
}
for (vcc = dev->vccs; vcc; vcc = vcc->next) {
struct eni_vcc *eni_vcc = ENI_VCC(vcc);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)