|
@@ -304,7 +304,6 @@ static void gigaset_modem_fill(unsigned long data)
|
|
struct cardstate *cs = (struct cardstate *) data;
|
|
struct cardstate *cs = (struct cardstate *) data;
|
|
struct bc_state *bcs = &cs->bcs[0]; /* only one channel */
|
|
struct bc_state *bcs = &cs->bcs[0]; /* only one channel */
|
|
struct cmdbuf_t *cb;
|
|
struct cmdbuf_t *cb;
|
|
- int again;
|
|
|
|
|
|
|
|
gig_dbg(DEBUG_OUTPUT, "modem_fill");
|
|
gig_dbg(DEBUG_OUTPUT, "modem_fill");
|
|
|
|
|
|
@@ -313,36 +312,33 @@ static void gigaset_modem_fill(unsigned long data)
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- do {
|
|
|
|
- again = 0;
|
|
|
|
- if (!bcs->tx_skb) { /* no skb is being sent */
|
|
|
|
- cb = cs->cmdbuf;
|
|
|
|
- if (cb) { /* commands to send? */
|
|
|
|
- gig_dbg(DEBUG_OUTPUT, "modem_fill: cb");
|
|
|
|
- if (send_cb(cs, cb) < 0) {
|
|
|
|
- gig_dbg(DEBUG_OUTPUT,
|
|
|
|
- "modem_fill: send_cb failed");
|
|
|
|
- again = 1; /* no callback will be
|
|
|
|
- called! */
|
|
|
|
- }
|
|
|
|
- } else { /* skbs to send? */
|
|
|
|
- bcs->tx_skb = skb_dequeue(&bcs->squeue);
|
|
|
|
- if (bcs->tx_skb)
|
|
|
|
- gig_dbg(DEBUG_INTR,
|
|
|
|
- "Dequeued skb (Adr: %lx)!",
|
|
|
|
- (unsigned long) bcs->tx_skb);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (bcs->tx_skb) {
|
|
|
|
- gig_dbg(DEBUG_OUTPUT, "modem_fill: tx_skb");
|
|
|
|
- if (write_modem(cs) < 0) {
|
|
|
|
|
|
+again:
|
|
|
|
+ if (!bcs->tx_skb) { /* no skb is being sent */
|
|
|
|
+ cb = cs->cmdbuf;
|
|
|
|
+ if (cb) { /* commands to send? */
|
|
|
|
+ gig_dbg(DEBUG_OUTPUT, "modem_fill: cb");
|
|
|
|
+ if (send_cb(cs, cb) < 0) {
|
|
gig_dbg(DEBUG_OUTPUT,
|
|
gig_dbg(DEBUG_OUTPUT,
|
|
- "modem_fill: write_modem failed");
|
|
|
|
- again = 1; /* no callback will be called! */
|
|
|
|
|
|
+ "modem_fill: send_cb failed");
|
|
|
|
+ goto again; /* no callback will be called! */
|
|
}
|
|
}
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
- } while (again);
|
|
|
|
|
|
+
|
|
|
|
+ /* skbs to send? */
|
|
|
|
+ bcs->tx_skb = skb_dequeue(&bcs->squeue);
|
|
|
|
+ if (!bcs->tx_skb)
|
|
|
|
+ return;
|
|
|
|
+
|
|
|
|
+ gig_dbg(DEBUG_INTR, "Dequeued skb (Adr: %lx)!",
|
|
|
|
+ (unsigned long) bcs->tx_skb);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ gig_dbg(DEBUG_OUTPUT, "modem_fill: tx_skb");
|
|
|
|
+ if (write_modem(cs) < 0) {
|
|
|
|
+ gig_dbg(DEBUG_OUTPUT, "modem_fill: write_modem failed");
|
|
|
|
+ goto again; /* no callback will be called! */
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|