Lines Matching refs:card
144 static void handle_dtrace_data(capidrv_contr *card,
332 static capidrv_plci *new_plci(capidrv_contr *card, int chan) in new_plci() argument
345 plcip->next = card->plci_list; in new_plci()
346 card->plci_list = plcip; in new_plci()
347 card->bchans[chan].plcip = plcip; in new_plci()
352 static capidrv_plci *find_plci_by_plci(capidrv_contr *card, u32 plci) in find_plci_by_plci() argument
355 for (p = card->plci_list; p; p = p->next) in find_plci_by_plci()
361 static capidrv_plci *find_plci_by_msgid(capidrv_contr *card, u16 msgid) in find_plci_by_msgid() argument
364 for (p = card->plci_list; p; p = p->next) in find_plci_by_msgid()
370 static capidrv_plci *find_plci_by_ncci(capidrv_contr *card, u32 ncci) in find_plci_by_ncci() argument
373 for (p = card->plci_list; p; p = p->next) in find_plci_by_ncci()
379 static void free_plci(capidrv_contr *card, capidrv_plci *plcip) in free_plci() argument
383 for (pp = &card->plci_list; *pp; pp = &(*pp)->next) { in free_plci()
386 card->bchans[plcip->chan].plcip = NULL; in free_plci()
387 card->bchans[plcip->chan].disconnecting = 0; in free_plci()
388 card->bchans[plcip->chan].incoming = 0; in free_plci()
394 card->contrnr, plcip, plcip->plci); in free_plci()
399 static inline capidrv_ncci *new_ncci(capidrv_contr *card, in new_ncci() argument
419 card->bchans[plcip->chan].nccip = nccip; in new_ncci()
424 static inline capidrv_ncci *find_ncci(capidrv_contr *card, u32 ncci) in find_ncci() argument
429 if ((plcip = find_plci_by_ncci(card, ncci)) == NULL) in find_ncci()
438 static inline capidrv_ncci *find_ncci_by_msgid(capidrv_contr *card, in find_ncci_by_msgid() argument
444 if ((plcip = find_plci_by_ncci(card, ncci)) == NULL) in find_ncci_by_msgid()
453 static void free_ncci(capidrv_contr *card, struct capidrv_ncci *nccip) in free_ncci() argument
463 card->bchans[nccip->chan].nccip = NULL; in free_ncci()
504 static void send_message(capidrv_contr *card, _cmsg *cmsg) in send_message() argument
545 static void listen_change_state(capidrv_contr *card, int event) in listen_change_state() argument
549 if (card->state == p->actstate && p->event == event) { in listen_change_state()
552 card->contrnr, card->state, p->nextstate); in listen_change_state()
553 card->state = p->nextstate; in listen_change_state()
559 card->contrnr, card->state, event); in listen_change_state()
565 static void p0(capidrv_contr *card, capidrv_plci *plci) in p0() argument
569 card->bchans[plci->chan].contr = NULL; in p0()
571 cmd.driver = card->myid; in p0()
573 card->interface.statcallb(&cmd); in p0()
574 free_plci(card, plci); in p0()
583 void (*changefunc)(capidrv_contr *card, capidrv_plci *plci);
640 static void plci_change_state(capidrv_contr *card, capidrv_plci *plci, int event) in plci_change_state() argument
647 card->contrnr, plci->plci, plci->state, p->nextstate); in plci_change_state()
650 p->changefunc(card, plci); in plci_change_state()
656 card->contrnr, plci->plci, plci->state, event); in plci_change_state()
663 static void n0(capidrv_contr *card, capidrv_ncci *ncci) in n0() argument
669 card->msgid++, in n0()
676 plci_change_state(card, ncci->plcip, EV_PLCI_DISCONNECT_REQ); in n0()
677 send_message(card, &cmsg); in n0()
680 cmd.driver = card->myid; in n0()
682 card->interface.statcallb(&cmd); in n0()
683 free_ncci(card, ncci); in n0()
692 void (*changefunc)(capidrv_contr *card, capidrv_ncci *ncci);
729 static void ncci_change_state(capidrv_contr *card, capidrv_ncci *ncci, int event) in ncci_change_state() argument
736 card->contrnr, ncci->ncci, ncci->state, p->nextstate); in ncci_change_state()
745 p->changefunc(card, ncci); in ncci_change_state()
751 card->contrnr, ncci->ncci, ncci->state, event); in ncci_change_state()
756 static inline int new_bchan(capidrv_contr *card) in new_bchan() argument
759 for (i = 0; i < card->nbchan; i++) { in new_bchan()
760 if (card->bchans[i].plcip == NULL) { in new_bchan()
761 card->bchans[i].disconnecting = 0; in new_bchan()
967 capidrv_contr *card = findcontrbynumber(cmsg->adr.adrController & 0x7f); in handle_controller() local
969 if (!card) { in handle_controller()
980 card->contrnr, cmsg->Info, capi_info2str(cmsg->Info), card->cipmask); in handle_controller()
982 listen_change_state(card, EV_LISTEN_CONF_ERROR); in handle_controller()
983 } else if (card->cipmask == 0) { in handle_controller()
984 listen_change_state(card, EV_LISTEN_CONF_EMPTY); in handle_controller()
986 listen_change_state(card, EV_LISTEN_CONF_OK); in handle_controller()
1009 handle_dtrace_data(card, direction, 1, data, len); in handle_controller()
1013 handle_dtrace_data(card, direction, 0, data, len); in handle_controller()
1017 card->contrnr, in handle_controller()
1034 card->contrnr, in handle_controller()
1052 card->contrnr, in handle_controller()
1060 card->contrnr, in handle_controller()
1065 static void handle_incoming_call(capidrv_contr *card, _cmsg *cmsg) in handle_incoming_call() argument
1072 if ((chan = new_bchan(card)) == -1) { in handle_incoming_call()
1073 printk(KERN_ERR "capidrv-%d: incoming call on not existing bchan ?\n", card->contrnr); in handle_incoming_call()
1076 bchan = &card->bchans[chan]; in handle_incoming_call()
1077 if ((plcip = new_plci(card, chan)) == NULL) { in handle_incoming_call()
1078 printk(KERN_ERR "capidrv-%d: incoming call: no memory, sorry.\n", card->contrnr); in handle_incoming_call()
1083 plci_change_state(card, plcip, EV_PLCI_CONNECT_IND); in handle_incoming_call()
1086 cmd.driver = card->myid; in handle_incoming_call()
1101 card->contrnr, in handle_incoming_call()
1109 card->contrnr, in handle_incoming_call()
1114 switch (card->interface.statcallb(&cmd)) { in handle_incoming_call()
1124 plci_change_state(card, plcip, EV_PLCI_CONNECT_REJECT); in handle_incoming_call()
1125 send_message(card, cmsg); in handle_incoming_call()
1127 card->contrnr, in handle_incoming_call()
1145 card->contrnr, in handle_incoming_call()
1152 card->msgid++, in handle_incoming_call()
1160 send_message(card, cmsg); in handle_incoming_call()
1163 card->contrnr, in handle_incoming_call()
1174 plci_change_state(card, plcip, EV_PLCI_CONNECT_REJECT); in handle_incoming_call()
1175 send_message(card, cmsg); in handle_incoming_call()
1183 plci_change_state(card, plcip, EV_PLCI_CONNECT_REJECT); in handle_incoming_call()
1184 send_message(card, cmsg); in handle_incoming_call()
1192 capidrv_contr *card = findcontrbynumber(cmsg->adr.adrController & 0x7f); in handle_plci() local
1197 if (!card) { in handle_plci()
1208 card->contrnr, in handle_plci()
1212 if (!(plcip = find_plci_by_plci(card, cmsg->adr.adrPLCI))) { in handle_plci()
1214 send_message(card, cmsg); in handle_plci()
1217 card->bchans[plcip->chan].disconnecting = 1; in handle_plci()
1218 plci_change_state(card, plcip, EV_PLCI_DISCONNECT_IND); in handle_plci()
1220 plci_change_state(card, plcip, EV_PLCI_DISCONNECT_RESP); in handle_plci()
1221 send_message(card, cmsg); in handle_plci()
1227 card->contrnr, in handle_plci()
1232 if (!(plcip = find_plci_by_plci(card, cmsg->adr.adrPLCI))) in handle_plci()
1235 card->bchans[plcip->chan].disconnecting = 1; in handle_plci()
1241 card->contrnr, in handle_plci()
1249 handle_incoming_call(card, cmsg); in handle_plci()
1255 card->contrnr, in handle_plci()
1260 if (!(plcip = find_plci_by_msgid(card, cmsg->Messagenumber))) in handle_plci()
1265 plci_change_state(card, plcip, EV_PLCI_CONNECT_CONF_ERROR); in handle_plci()
1267 plci_change_state(card, plcip, EV_PLCI_CONNECT_CONF_OK); in handle_plci()
1273 if (!(plcip = find_plci_by_plci(card, cmsg->adr.adrPLCI))) in handle_plci()
1276 if (card->bchans[plcip->chan].incoming) { in handle_plci()
1278 plci_change_state(card, plcip, EV_PLCI_CONNECT_ACTIVE_IND); in handle_plci()
1279 send_message(card, cmsg); in handle_plci()
1283 send_message(card, cmsg); in handle_plci()
1285 nccip = new_ncci(card, plcip, cmsg->adr.adrPLCI); in handle_plci()
1288 printk(KERN_ERR "capidrv-%d: no mem for ncci, sorry\n", card->contrnr); in handle_plci()
1293 card->msgid++, in handle_plci()
1298 plci_change_state(card, plcip, in handle_plci()
1300 ncci_change_state(card, nccip, EV_NCCI_CONNECT_B3_REQ); in handle_plci()
1301 send_message(card, cmsg); in handle_plci()
1303 cmd.driver = card->myid; in handle_plci()
1305 card->interface.statcallb(&cmd); in handle_plci()
1311 if (!(plcip = find_plci_by_plci(card, cmsg->adr.adrPLCI))) in handle_plci()
1317 cmd.driver = card->myid; in handle_plci()
1325 card->interface.statcallb(&cmd); in handle_plci()
1332 card->contrnr, cdb->buf); in handle_plci()
1336 card->contrnr, cmsg->InfoNumber); in handle_plci()
1354 card->contrnr, in handle_plci()
1361 card->contrnr, in handle_plci()
1367 card->contrnr, in handle_plci()
1375 capidrv_contr *card = findcontrbynumber(cmsg->adr.adrController & 0x7f); in handle_ncci() local
1381 if (!card) { in handle_ncci()
1390 if (!(nccip = find_ncci(card, cmsg->adr.adrNCCI))) in handle_ncci()
1394 ncci_change_state(card, nccip, EV_NCCI_CONNECT_B3_ACTIVE_IND); in handle_ncci()
1395 send_message(card, cmsg); in handle_ncci()
1398 cmd.driver = card->myid; in handle_ncci()
1400 card->interface.statcallb(&cmd); in handle_ncci()
1403 card->contrnr, nccip->chan, nccip->ncci); in handle_ncci()
1411 plcip = find_plci_by_ncci(card, cmsg->adr.adrNCCI); in handle_ncci()
1413 nccip = new_ncci(card, plcip, cmsg->adr.adrNCCI); in handle_ncci()
1415 ncci_change_state(card, nccip, EV_NCCI_CONNECT_B3_IND); in handle_ncci()
1418 card->msgid++, in handle_ncci()
1423 ncci_change_state(card, nccip, EV_NCCI_CONNECT_B3_RESP); in handle_ncci()
1424 send_message(card, cmsg); in handle_ncci()
1427 printk(KERN_ERR "capidrv-%d: no mem for ncci, sorry\n", card->contrnr); in handle_ncci()
1430 card->contrnr, in handle_ncci()
1436 card->msgid++, in handle_ncci()
1441 send_message(card, cmsg); in handle_ncci()
1446 if (!(nccip = find_ncci_by_msgid(card, in handle_ncci()
1454 card->contrnr, in handle_ncci()
1461 ncci_change_state(card, nccip, EV_NCCI_CONNECT_B3_CONF_ERROR); in handle_ncci()
1463 ncci_change_state(card, nccip, EV_NCCI_CONNECT_B3_CONF_OK); in handle_ncci()
1468 send_message(card, cmsg); in handle_ncci()
1480 if (!(nccip = find_ncci(card, cmsg->adr.adrNCCI))) in handle_ncci()
1487 cmd.driver = card->myid; in handle_ncci()
1490 card->interface.statcallb(&cmd); in handle_ncci()
1494 if (!(nccip = find_ncci(card, cmsg->adr.adrNCCI))) in handle_ncci()
1497 card->bchans[nccip->chan].disconnecting = 1; in handle_ncci()
1498 ncci_change_state(card, nccip, EV_NCCI_DISCONNECT_B3_IND); in handle_ncci()
1500 ncci_change_state(card, nccip, EV_NCCI_DISCONNECT_B3_RESP); in handle_ncci()
1501 send_message(card, cmsg); in handle_ncci()
1505 if (!(nccip = find_ncci(card, cmsg->adr.adrNCCI))) in handle_ncci()
1509 card->contrnr, in handle_ncci()
1513 ncci_change_state(card, nccip, EV_NCCI_DISCONNECT_B3_CONF_ERROR); in handle_ncci()
1518 if (!(nccip = find_ncci(card, cmsg->adr.adrNCCI))) in handle_ncci()
1520 ncci_change_state(card, nccip, EV_NCCI_RESET_B3_IND); in handle_ncci()
1522 send_message(card, cmsg); in handle_ncci()
1535 card->contrnr, in handle_ncci()
1542 card->contrnr, in handle_ncci()
1548 card->contrnr, in handle_ncci()
1556 capidrv_contr *card = findcontrbynumber(cmsg->adr.adrController & 0x7f); in handle_data() local
1559 if (!card) { in handle_data()
1566 if (!(nccip = find_ncci(card, cmsg->adr.adrNCCI))) { in handle_data()
1568 card->contrnr, in handle_data()
1575 card->interface.rcvcallb_skb(card->myid, nccip->chan, skb); in handle_data()
1577 send_message(card, cmsg); in handle_data()
1623 #define PUTBYTE_TO_STATUS(card, byte) \ argument
1625 *(card)->q931_write++ = (byte); \
1626 if ((card)->q931_write > (card)->q931_end) \
1627 (card)->q931_write = (card)->q931_buf; \
1630 static void handle_dtrace_data(capidrv_contr *card, in handle_dtrace_data() argument
1638 card->contrnr, len); in handle_dtrace_data()
1643 PUTBYTE_TO_STATUS(card, 'D'); in handle_dtrace_data()
1644 PUTBYTE_TO_STATUS(card, '2'); in handle_dtrace_data()
1645 PUTBYTE_TO_STATUS(card, send ? '>' : '<'); in handle_dtrace_data()
1646 PUTBYTE_TO_STATUS(card, ':'); in handle_dtrace_data()
1648 PUTBYTE_TO_STATUS(card, 'D'); in handle_dtrace_data()
1649 PUTBYTE_TO_STATUS(card, '3'); in handle_dtrace_data()
1650 PUTBYTE_TO_STATUS(card, send ? '>' : '<'); in handle_dtrace_data()
1651 PUTBYTE_TO_STATUS(card, ':'); in handle_dtrace_data()
1655 PUTBYTE_TO_STATUS(card, ' '); in handle_dtrace_data()
1656 PUTBYTE_TO_STATUS(card, hex_asc_hi(*p)); in handle_dtrace_data()
1657 PUTBYTE_TO_STATUS(card, hex_asc_lo(*p)); in handle_dtrace_data()
1659 PUTBYTE_TO_STATUS(card, '\n'); in handle_dtrace_data()
1662 cmd.driver = card->myid; in handle_dtrace_data()
1664 card->interface.statcallb(&cmd); in handle_dtrace_data()
1671 static int capidrv_ioctl(isdn_ctrl *c, capidrv_contr *card) in capidrv_ioctl() argument
1677 card->contrnr, debugmode); in capidrv_ioctl()
1681 card->contrnr, c->arg); in capidrv_ioctl()
1786 static int capidrv_command(isdn_ctrl *c, capidrv_contr *card) in capidrv_command() argument
1795 return capidrv_ioctl(c, card); in capidrv_command()
1804 card->contrnr, in capidrv_command()
1811 bchan = &card->bchans[c->arg % card->nbchan]; in capidrv_command()
1815 card->contrnr, in capidrv_command()
1832 …printk(KERN_ERR "capidrv-%d: WARNING: invalid leased linedefinition \"%s\"\n", card->contrnr, bcha… in capidrv_command()
1838 printk(KERN_DEBUG "capidrv-%d: connecting leased line\n", card->contrnr); in capidrv_command()
1851 card->msgid++, in capidrv_command()
1852 card->contrnr, /* adr */ in capidrv_command()
1873 if ((plcip = new_plci(card, (c->arg % card->nbchan))) == NULL) { in capidrv_command()
1875 cmd.driver = card->myid; in capidrv_command()
1876 cmd.arg = (c->arg % card->nbchan); in capidrv_command()
1877 card->interface.statcallb(&cmd); in capidrv_command()
1882 plci_change_state(card, plcip, EV_PLCI_CONNECT_REQ); in capidrv_command()
1883 send_message(card, &cmdcmsg); in capidrv_command()
1889 bchan = &card->bchans[c->arg % card->nbchan]; in capidrv_command()
1892 card->contrnr, in capidrv_command()
1897 card->msgid++, in capidrv_command()
1916 card->contrnr); in capidrv_command()
1919 plci_change_state(card, bchan->plcip, EV_PLCI_CONNECT_RESP); in capidrv_command()
1920 send_message(card, &cmdcmsg); in capidrv_command()
1926 card->contrnr, in capidrv_command()
1933 card->contrnr, in capidrv_command()
1935 bchan = &card->bchans[c->arg % card->nbchan]; in capidrv_command()
1940 card->contrnr, in capidrv_command()
1948 card->msgid++, in capidrv_command()
1952 ncci_change_state(card, bchan->nccip, EV_NCCI_DISCONNECT_B3_REQ); in capidrv_command()
1953 send_message(card, &cmdcmsg); in capidrv_command()
1969 card->msgid++, in capidrv_command()
1976 plci_change_state(card, bchan->plcip, EV_PLCI_DISCONNECT_REQ); in capidrv_command()
1977 send_message(card, &cmdcmsg); in capidrv_command()
1981 card->contrnr, in capidrv_command()
1987 card->contrnr, in capidrv_command()
1995 card->contrnr, in capidrv_command()
1997 bchan = &card->bchans[(c->arg & 0xff) % card->nbchan]; in capidrv_command()
2004 card->contrnr, in capidrv_command()
2006 bchan = &card->bchans[(c->arg & 0xff) % card->nbchan]; in capidrv_command()
2013 card->contrnr, in capidrv_command()
2015 bchan = &card->bchans[c->arg % card->nbchan]; in capidrv_command()
2022 card->contrnr, c->arg); in capidrv_command()
2023 bchan = &card->bchans[c->arg % card->nbchan]; in capidrv_command()
2029 card->contrnr, c->command); in capidrv_command()
2037 capidrv_contr *card = findcontrbydriverid(c->driver); in if_command() local
2039 if (card) in if_command()
2040 return capidrv_command(c, card); in if_command()
2052 capidrv_contr *card = findcontrbydriverid(id); in if_sendbuf() local
2061 if (!card) { in if_sendbuf()
2068 card->contrnr, len, skb, doack); in if_sendbuf()
2069 bchan = &card->bchans[channel % card->nbchan]; in if_sendbuf()
2073 card->contrnr, card->name, channel); in if_sendbuf()
2094 capi_fill_DATA_B3_REQ(&sendcmsg, global.ap.applid, card->msgid++, in if_sendbuf()
2107 card->contrnr); in if_sendbuf()
2115 card->contrnr); in if_sendbuf()
2120 card->contrnr, skb_headroom(skb), msglen); in if_sendbuf()
2130 card->contrnr, errcode, capi_info2str(errcode)); in if_sendbuf()
2143 card->contrnr, errcode, capi_info2str(errcode)); in if_sendbuf()
2152 capidrv_contr *card = findcontrbydriverid(id); in if_readstat() local
2156 if (!card) { in if_readstat()
2163 if (put_user(*card->q931_read++, p)) in if_readstat()
2165 if (card->q931_read > card->q931_end) in if_readstat()
2166 card->q931_read = card->q931_buf; in if_readstat()
2172 static void enable_dchannel_trace(capidrv_contr *card) in enable_dchannel_trace() argument
2176 u16 contr = card->contrnr; in enable_dchannel_trace()
2183 card->name, errcode); in enable_dchannel_trace()
2188 card->name, manufacturer); in enable_dchannel_trace()
2194 card->name, errcode); in enable_dchannel_trace()
2203 printk(KERN_INFO "%s: D2 trace enabled\n", card->name); in enable_dchannel_trace()
2205 card->msgid++, in enable_dchannel_trace()
2212 printk(KERN_INFO "%s: D3 trace enabled\n", card->name); in enable_dchannel_trace()
2214 card->msgid++, in enable_dchannel_trace()
2221 send_message(card, &cmdcmsg); in enable_dchannel_trace()
2225 static void send_listen(capidrv_contr *card) in send_listen() argument
2228 card->msgid++, in send_listen()
2229 card->contrnr, /* controller */ in send_listen()
2231 card->cipmask, in send_listen()
2232 card->cipmask2, in send_listen()
2234 listen_change_state(card, EV_LISTEN_REQ); in send_listen()
2235 send_message(card, &cmdcmsg); in send_listen()
2240 capidrv_contr *card = (capidrv_contr *)x; in listentimerfunc() local
2241 if (card->state != ST_LISTEN_NONE && card->state != ST_LISTEN_ACTIVE) in listentimerfunc()
2242 printk(KERN_ERR "%s: controller dead ??\n", card->name); in listentimerfunc()
2243 send_listen(card); in listentimerfunc()
2244 mod_timer(&card->listentimer, jiffies + 60 * HZ); in listentimerfunc()
2250 capidrv_contr *card; in capidrv_addcontr() local
2261 if (!(card = kzalloc(sizeof(capidrv_contr), GFP_ATOMIC))) { in capidrv_addcontr()
2266 card->owner = THIS_MODULE; in capidrv_addcontr()
2267 init_timer(&card->listentimer); in capidrv_addcontr()
2268 strcpy(card->name, id); in capidrv_addcontr()
2269 card->contrnr = contr; in capidrv_addcontr()
2270 card->nbchan = profp->nbchannel; in capidrv_addcontr()
2271 card->bchans = kmalloc(sizeof(capidrv_bchan) * card->nbchan, GFP_ATOMIC); in capidrv_addcontr()
2272 if (!card->bchans) { in capidrv_addcontr()
2275 module_put(card->owner); in capidrv_addcontr()
2276 kfree(card); in capidrv_addcontr()
2279 card->interface.channels = profp->nbchannel; in capidrv_addcontr()
2280 card->interface.maxbufsize = 2048; in capidrv_addcontr()
2281 card->interface.command = if_command; in capidrv_addcontr()
2282 card->interface.writebuf_skb = if_sendbuf; in capidrv_addcontr()
2283 card->interface.writecmd = NULL; in capidrv_addcontr()
2284 card->interface.readstat = if_readstat; in capidrv_addcontr()
2285 card->interface.features = in capidrv_addcontr()
2294 card->interface.features |= in capidrv_addcontr()
2299 card->interface.features |= ISDN_FEATURE_L2_MODEM; in capidrv_addcontr()
2300 card->interface.hl_hdrlen = 22; /* len of DATA_B3_REQ */ in capidrv_addcontr()
2301 strncpy(card->interface.id, id, sizeof(card->interface.id) - 1); in capidrv_addcontr()
2304 card->q931_read = card->q931_buf; in capidrv_addcontr()
2305 card->q931_write = card->q931_buf; in capidrv_addcontr()
2306 card->q931_end = card->q931_buf + sizeof(card->q931_buf) - 1; in capidrv_addcontr()
2308 if (!register_isdn(&card->interface)) { in capidrv_addcontr()
2310 kfree(card->bchans); in capidrv_addcontr()
2311 module_put(card->owner); in capidrv_addcontr()
2312 kfree(card); in capidrv_addcontr()
2315 card->myid = card->interface.channels; in capidrv_addcontr()
2316 memset(card->bchans, 0, sizeof(capidrv_bchan) * card->nbchan); in capidrv_addcontr()
2317 for (i = 0; i < card->nbchan; i++) { in capidrv_addcontr()
2318 card->bchans[i].contr = card; in capidrv_addcontr()
2322 card->next = global.contr_list; in capidrv_addcontr()
2323 global.contr_list = card; in capidrv_addcontr()
2328 cmd.driver = card->myid; in capidrv_addcontr()
2329 card->interface.statcallb(&cmd); in capidrv_addcontr()
2331 card->cipmask = 0x1FFF03FF; /* any */ in capidrv_addcontr()
2332 card->cipmask2 = 0; in capidrv_addcontr()
2334 card->listentimer.data = (unsigned long)card; in capidrv_addcontr()
2335 card->listentimer.function = listentimerfunc; in capidrv_addcontr()
2336 send_listen(card); in capidrv_addcontr()
2337 mod_timer(&card->listentimer, jiffies + 60 * HZ); in capidrv_addcontr()
2340 card->name, card->nbchan); in capidrv_addcontr()
2342 enable_dchannel_trace(card); in capidrv_addcontr()
2349 capidrv_contr **pp, *card; in capidrv_delcontr() local
2354 for (card = global.contr_list; card; card = card->next) { in capidrv_delcontr()
2355 if (card->contrnr == contr) in capidrv_delcontr()
2358 if (!card) { in capidrv_delcontr()
2369 del_timer(&card->listentimer); in capidrv_delcontr()
2373 card->contrnr, card->myid); in capidrv_delcontr()
2376 cmd.driver = card->myid; in capidrv_delcontr()
2377 card->interface.statcallb(&cmd); in capidrv_delcontr()
2379 while (card->nbchan) { in capidrv_delcontr()
2382 cmd.driver = card->myid; in capidrv_delcontr()
2383 cmd.arg = card->nbchan - 1; in capidrv_delcontr()
2387 card->contrnr, card->myid, cmd.arg); in capidrv_delcontr()
2388 card->interface.statcallb(&cmd); in capidrv_delcontr()
2390 if (card->bchans[card->nbchan - 1].nccip) in capidrv_delcontr()
2391 free_ncci(card, card->bchans[card->nbchan - 1].nccip); in capidrv_delcontr()
2392 if (card->bchans[card->nbchan - 1].plcip) in capidrv_delcontr()
2393 free_plci(card, card->bchans[card->nbchan - 1].plcip); in capidrv_delcontr()
2394 if (card->plci_list) in capidrv_delcontr()
2396 card->nbchan--; in capidrv_delcontr()
2398 kfree(card->bchans); in capidrv_delcontr()
2399 card->bchans = NULL; in capidrv_delcontr()
2403 card->contrnr, card->myid); in capidrv_delcontr()
2406 cmd.driver = card->myid; in capidrv_delcontr()
2407 card->interface.statcallb(&cmd); in capidrv_delcontr()
2411 card->contrnr, card->myid); in capidrv_delcontr()
2415 if (*pp == card) { in capidrv_delcontr()
2417 card->next = NULL; in capidrv_delcontr()
2424 module_put(card->owner); in capidrv_delcontr()
2425 printk(KERN_INFO "%s: now down.\n", card->name); in capidrv_delcontr()
2426 kfree(card); in capidrv_delcontr()