Home | History | Annotate | Download | only in netbt

Lines Matching defs:dlc

226 	 * but it will call us back right away (there are no DLC's) so
299 * So, if it is in an open state with DLC's attached then
306 struct rfcomm_dlc *dlc;
318 dlc = LIST_FIRST(&rs->rs_dlcs);
320 rfcomm_dlc_close(dlc, ETIMEDOUT);
388 struct rfcomm_dlc *dlc;
402 dlc = LIST_FIRST(&rs->rs_dlcs);
404 rfcomm_dlc_close(dlc, err);
449 struct rfcomm_dlc *dlc;
464 dlc = credit->rc_dlc;
465 if (dlc != NULL) {
466 dlc->rd_pending--;
467 (*dlc->rd_proto->complete)
468 (dlc->rd_upper, credit->rc_len);
475 && dlc->rd_state == RFCOMM_DLC_OPEN) {
476 rfcomm_dlc_start(dlc);
483 if ((dlc->rd_flags & RFCOMM_DLC_SHUTDOWN)
484 && dlc->rd_txbuf == NULL && dlc->rd_pending == 0) {
485 dlc->rd_state = RFCOMM_DLC_WAIT_DISCONNECT;
487 dlc->rd_dlci);
488 callout_schedule(&dlc->rd_timeout,
516 struct rfcomm_dlc *dlc, *next;
534 while ((dlc = next) != NULL) {
535 next = LIST_NEXT(dlc, rd_next);
537 switch (dlc->rd_state) {
539 if ((mode & dlc->rd_mode) != dlc->rd_mode) {
540 rfcomm_dlc_close(dlc, ECONNABORTED);
543 RFCOMM_FRAME_SABM, dlc->rd_dlci);
545 rfcomm_dlc_close(dlc, err);
547 dlc->rd_state = RFCOMM_DLC_WAIT_RECV_UA;
548 callout_schedule(&dlc->rd_timeout,
567 if ((mode & dlc->rd_mode) != dlc->rd_mode) {
569 RFCOMM_FRAME_DM, dlc->rd_dlci);
570 rfcomm_dlc_close(dlc, ECONNABORTED);
575 RFCOMM_FRAME_UA, dlc->rd_dlci);
578 RFCOMM_FRAME_DM, dlc->rd_dlci);
579 dlc, err);
583 err = rfcomm_dlc_open(dlc);
586 RFCOMM_FRAME_DM, dlc->rd_dlci);
587 rfcomm_dlc_close(dlc, err);
595 (*dlc->rd_proto->linkmode)(dlc->rd_upper, mode);
723 struct rfcomm_dlc *dlc;
731 LIST_FOREACH(dlc, &rs->rs_dlcs, rd_next) {
732 if (dlc->rd_state == RFCOMM_DLC_WAIT_SESSION)
733 rfcomm_dlc_connect(dlc);
751 * look for our DLC - this may exist if we received PN
754 dlc = rfcomm_dlc_lookup(rs, dlci);
755 if (dlc == NULL) {
756 dlc = rfcomm_dlc_newconn(rs, dlci);
757 if (dlc == NULL)
762 * ..but if this DLC is not waiting to connect, they did
765 if (dlc->rd_state != RFCOMM_DLC_WAIT_CONNECT)
769 err = rfcomm_dlc_setmode(dlc);
771 dlc->rd_state = RFCOMM_DLC_WAIT_SEND_UA;
772 (*dlc->rd_proto->connecting)(dlc->rd_upper);
783 err = rfcomm_dlc_open(dlc);
790 rfcomm_dlc_close(dlc, err);
799 struct rfcomm_dlc *dlc;
809 * automatically. We wont bother to close any DLC's
819 dlc = rfcomm_dlc_lookup(rs, dlci);
820 if (dlc == NULL) {
825 rfcomm_dlc_close(dlc, 0);
838 struct rfcomm_dlc *dlc;
847 LIST_FOREACH(dlc, &rs->rs_dlcs, rd_next) {
848 if (dlc->rd_state == RFCOMM_DLC_WAIT_SESSION)
849 rfcomm_dlc_connect(dlc);
868 * If we have no DLC on this dlci, we may have aborted
872 dlc = rfcomm_dlc_lookup(rs, dlci);
873 if (dlc == NULL)
876 switch (dlc->rd_state) {
878 rfcomm_dlc_open(dlc);
882 rfcomm_dlc_close(dlc, 0);
901 * If this does not apply to a known DLC then we may ignore it.
906 struct rfcomm_dlc *dlc;
910 dlc = rfcomm_dlc_lookup(rs, dlci);
911 if (dlc == NULL)
914 if (dlc->rd_state == RFCOMM_DLC_WAIT_CONNECT)
915 rfcomm_dlc_close(dlc, ECONNREFUSED);
917 rfcomm_dlc_close(dlc, ECONNRESET);
927 struct rfcomm_dlc *dlc;
944 dlc = rfcomm_dlc_lookup(rs, dlci);
945 if (dlc == NULL) {
946 DPRINTF("UIH received for non existent DLC, discarded\n");
951 if (dlc->rd_state != RFCOMM_DLC_OPEN) {
952 DPRINTF("non-open DLC (state = %d), discarded\n",
953 dlc->rd_state);
968 dlc->rd_txcred += credits;
970 if (credits > 0 && dlc->rd_txbuf != NULL)
971 rfcomm_dlc_start(dlc);
977 if (dlc->rd_rxcred == 0) {
982 if (len > dlc->rd_rxsize) {
987 dlc->rd_rxcred--;
988 dlc->rd_rxsize -= len;
991 (*dlc->rd_proto->input)(dlc->rd_upper, m);
1164 struct rfcomm_dlc *dlc;
1175 dlc = rfcomm_dlc_lookup(rs, RFCOMM_DLCI(msc.address));
1178 if (dlc != NULL)
1179 callout_stop(&dlc->rd_timeout);
1184 if (dlc == NULL) {
1198 dlc->rd_rmodem = msc.modem;
1316 struct rfcomm_dlc *dlc;
1330 dlc = rfcomm_dlc_lookup(rs, pn.dlci);
1333 * If there is no DLC present, this is a new
1336 if (dlc == NULL) {
1337 dlc = rfcomm_dlc_newconn(rs, pn.dlci);
1338 if (dlc == NULL)
1346 dlc->rd_mtu = pn.mtu;
1349 /* credits are only set before DLC is open */
1350 if (dlc->rd_state == RFCOMM_DLC_WAIT_CONNECT
1353 dlc->rd_txcred = pn.credits & 0x07;
1355 dlc->rd_rxcred = (dlc->rd_rxsize / dlc->rd_mtu);
1356 dlc->rd_rxcred = uimin(dlc->rd_rxcred,
1360 pn.credits = dlc->rd_rxcred;
1377 /* ignore responses with no matching DLC */
1378 if (dlc == NULL)
1381 callout_stop(&dlc->rd_timeout);
1384 if (pn.mtu < RFCOMM_MTU_MIN || pn.mtu > dlc->rd_mtu) {
1385 dlc->rd_state = RFCOMM_DLC_WAIT_DISCONNECT;
1391 callout_schedule(&dlc->rd_timeout,
1395 dlc->rd_mtu = pn.mtu;
1397 /* if DLC is not waiting to connect, we are done */
1398 if (dlc->rd_state != RFCOMM_DLC_WAIT_CONNECT)
1404 dlc->rd_txcred = (pn.credits & 0x07);
1407 callout_schedule(&dlc->rd_timeout, rfcomm_ack_timeout * hz);
1410 err = rfcomm_dlc_setmode(dlc);
1412 dlc->rd_state = RFCOMM_DLC_WAIT_SEND_SABM;
1413 (*dlc->rd_proto->connecting)(dlc->rd_upper);
1424 dlc->rd_state = RFCOMM_DLC_WAIT_RECV_UA;
1429 rfcomm_dlc_close(dlc, err);
1439 struct rfcomm_dlc *dlc, *next;
1447 while ((dlc = next) != NULL) {
1448 next = LIST_NEXT(dlc, rd_next);
1449 rfcomm_dlc_close(dlc, ECONNABORTED);
1521 * UIH frame is per DLC data or Multiplexer Control Commands
1522 * when no DLC is given. Data mbuf is optional (just credits
1526 rfcomm_session_send_uih(struct rfcomm_session *rs, struct rfcomm_dlc *dlc,
1547 credit->rc_dlc = dlc;
1574 (dlc ? dlc->rd_dlci : 0));
1609 dlc ? dlc->rd_dlci : 0, m0->m_pkthdr.len, credit->rc_len,