dlc 60 netbt/hci_ioctl.c struct rfcomm_dlc *dlc;
dlc 107 netbt/hci_ioctl.c LIST_FOREACH(dlc, &rs->rs_dlcs, rd_next) {
dlc 111 netbt/hci_ioctl.c dlc->rd_raddr.bt_channel, dlc->rd_dlci,
dlc 112 netbt/hci_ioctl.c dlc->rd_state, dlc->rd_flags,
dlc 113 netbt/hci_ioctl.c dlc->rd_rxcred, (unsigned long)dlc->rd_rxsize,
dlc 114 netbt/hci_ioctl.c dlc->rd_txcred, dlc->rd_pending,
dlc 115 netbt/hci_ioctl.c (dlc->rd_txbuf ? dlc->rd_txbuf->m_pkthdr.len : 0));
dlc 125 netbt/hci_ioctl.c LIST_FOREACH(dlc, &rs->rs_dlcs, rd_next)
dlc 126 netbt/hci_ioctl.c printf("+DLC channel=%d\n", dlc->rd_laddr.bt_channel);
dlc 56 netbt/rfcomm_dlc.c struct rfcomm_dlc *dlc;
dlc 58 netbt/rfcomm_dlc.c LIST_FOREACH(dlc, &rs->rs_dlcs, rd_next) {
dlc 59 netbt/rfcomm_dlc.c if (dlc->rd_dlci == dlci)
dlc 63 netbt/rfcomm_dlc.c return dlc;
dlc 75 netbt/rfcomm_dlc.c struct rfcomm_dlc *new, *dlc, *any, *best;
dlc 99 netbt/rfcomm_dlc.c LIST_FOREACH(dlc, &ls->rs_dlcs, rd_next) {
dlc 100 netbt/rfcomm_dlc.c if (dlc->rd_laddr.bt_channel == chan)
dlc 101 netbt/rfcomm_dlc.c best = dlc;
dlc 106 netbt/rfcomm_dlc.c LIST_FOREACH(dlc, &ls->rs_dlcs, rd_next) {
dlc 107 netbt/rfcomm_dlc.c if (dlc->rd_laddr.bt_channel == chan)
dlc 108 netbt/rfcomm_dlc.c any = dlc;
dlc 113 netbt/rfcomm_dlc.c dlc = best ? best : any;
dlc 120 netbt/rfcomm_dlc.c if (dlc != NULL)
dlc 121 netbt/rfcomm_dlc.c new = (*dlc->rd_proto->newconn)(dlc->rd_upper, &laddr, &raddr);
dlc 130 netbt/rfcomm_dlc.c new->rd_mode = dlc->rd_mode;
dlc 151 netbt/rfcomm_dlc.c rfcomm_dlc_close(struct rfcomm_dlc *dlc, int err)
dlc 156 netbt/rfcomm_dlc.c KASSERT(dlc->rd_state != RFCOMM_DLC_CLOSED);
dlc 159 netbt/rfcomm_dlc.c rs = dlc->rd_session;
dlc 161 netbt/rfcomm_dlc.c if (credit->rc_dlc == dlc)
dlc 164 netbt/rfcomm_dlc.c timeout_del(&dlc->rd_timeout);
dlc 166 netbt/rfcomm_dlc.c LIST_REMOVE(dlc, rd_next);
dlc 167 netbt/rfcomm_dlc.c dlc->rd_session = NULL;
dlc 168 netbt/rfcomm_dlc.c dlc->rd_state = RFCOMM_DLC_CLOSED;
dlc 170 netbt/rfcomm_dlc.c (*dlc->rd_proto->disconnected)(dlc->rd_upper, err);
dlc 197 netbt/rfcomm_dlc.c struct rfcomm_dlc *dlc = arg;
dlc 202 netbt/rfcomm_dlc.c if (dlc->rd_state != RFCOMM_DLC_CLOSED)
dlc 203 netbt/rfcomm_dlc.c rfcomm_dlc_close(dlc, ETIMEDOUT);
dlc 204 netbt/rfcomm_dlc.c else if (dlc->rd_flags & RFCOMM_DLC_DETACH)
dlc 205 netbt/rfcomm_dlc.c free(dlc, M_BLUETOOTH);
dlc 218 netbt/rfcomm_dlc.c rfcomm_dlc_setmode(struct rfcomm_dlc *dlc)
dlc 222 netbt/rfcomm_dlc.c KASSERT(dlc->rd_session != NULL);
dlc 223 netbt/rfcomm_dlc.c KASSERT(dlc->rd_session->rs_state == RFCOMM_SESSION_OPEN);
dlc 225 netbt/rfcomm_dlc.c DPRINTF("dlci %d, auth %s, encrypt %s, secure %s\n", dlc->rd_dlci,
dlc 226 netbt/rfcomm_dlc.c (dlc->rd_mode & RFCOMM_LM_AUTH ? "yes" : "no"),
dlc 227 netbt/rfcomm_dlc.c (dlc->rd_mode & RFCOMM_LM_ENCRYPT ? "yes" : "no"),
dlc 228 netbt/rfcomm_dlc.c (dlc->rd_mode & RFCOMM_LM_SECURE ? "yes" : "no"));
dlc 230 netbt/rfcomm_dlc.c if (dlc->rd_mode & RFCOMM_LM_AUTH)
dlc 233 netbt/rfcomm_dlc.c if (dlc->rd_mode & RFCOMM_LM_ENCRYPT)
dlc 236 netbt/rfcomm_dlc.c if (dlc->rd_mode & RFCOMM_LM_SECURE)
dlc 239 netbt/rfcomm_dlc.c return l2cap_setopt(dlc->rd_session->rs_l2cap, SO_L2CAP_LM, &mode);
dlc 248 netbt/rfcomm_dlc.c rfcomm_dlc_connect(struct rfcomm_dlc *dlc)
dlc 253 netbt/rfcomm_dlc.c KASSERT(dlc->rd_session != NULL);
dlc 254 netbt/rfcomm_dlc.c KASSERT(dlc->rd_session->rs_state == RFCOMM_SESSION_OPEN);
dlc 255 netbt/rfcomm_dlc.c KASSERT(dlc->rd_state == RFCOMM_DLC_WAIT_SESSION);
dlc 264 netbt/rfcomm_dlc.c pn.dlci = dlc->rd_dlci;
dlc 265 netbt/rfcomm_dlc.c pn.priority = dlc->rd_dlci | 0x07;
dlc 266 netbt/rfcomm_dlc.c pn.mtu = htole16(dlc->rd_mtu);
dlc 269 netbt/rfcomm_dlc.c dlc->rd_rxcred = (dlc->rd_rxsize / dlc->rd_mtu);
dlc 270 netbt/rfcomm_dlc.c dlc->rd_rxcred = min(dlc->rd_rxcred, RFCOMM_CREDITS_DEFAULT);
dlc 271 netbt/rfcomm_dlc.c pn.credits = dlc->rd_rxcred;
dlc 273 netbt/rfcomm_dlc.c err = rfcomm_session_send_mcc(dlc->rd_session, 1,
dlc 278 netbt/rfcomm_dlc.c dlc->rd_state = RFCOMM_DLC_WAIT_CONNECT;
dlc 279 netbt/rfcomm_dlc.c timeout_add(&dlc->rd_timeout, rfcomm_mcc_timeout * hz);
dlc 290 netbt/rfcomm_dlc.c rfcomm_dlc_open(struct rfcomm_dlc *dlc)
dlc 295 netbt/rfcomm_dlc.c KASSERT(dlc->rd_session != NULL);
dlc 296 netbt/rfcomm_dlc.c KASSERT(dlc->rd_session->rs_state == RFCOMM_SESSION_OPEN);
dlc 299 netbt/rfcomm_dlc.c msc.address = RFCOMM_MKADDRESS(1, dlc->rd_dlci);
dlc 300 netbt/rfcomm_dlc.c msc.modem = dlc->rd_lmodem & 0xfe; /* EA = 0 */
dlc 303 netbt/rfcomm_dlc.c err = rfcomm_session_send_mcc(dlc->rd_session, 1,
dlc 308 netbt/rfcomm_dlc.c timeout_add(&dlc->rd_timeout, rfcomm_mcc_timeout * hz);
dlc 310 netbt/rfcomm_dlc.c dlc->rd_state = RFCOMM_DLC_OPEN;
dlc 311 netbt/rfcomm_dlc.c (*dlc->rd_proto->connected)(dlc->rd_upper);
dlc 327 netbt/rfcomm_dlc.c rfcomm_dlc_start(struct rfcomm_dlc *dlc)
dlc 329 netbt/rfcomm_dlc.c struct rfcomm_session *rs = dlc->rd_session;
dlc 335 netbt/rfcomm_dlc.c KASSERT(dlc->rd_state == RFCOMM_DLC_OPEN);
dlc 339 netbt/rfcomm_dlc.c len = dlc->rd_mtu;
dlc 341 netbt/rfcomm_dlc.c credits = (dlc->rd_rxsize / dlc->rd_mtu);
dlc 342 netbt/rfcomm_dlc.c credits -= dlc->rd_rxcred;
dlc 348 netbt/rfcomm_dlc.c if (dlc->rd_txcred == 0)
dlc 354 netbt/rfcomm_dlc.c if (dlc->rd_rmodem & RFCOMM_MSC_FC)
dlc 357 netbt/rfcomm_dlc.c if (dlc->rd_pending > RFCOMM_CREDITS_DEFAULT)
dlc 361 netbt/rfcomm_dlc.c if (dlc->rd_txbuf == NULL)
dlc 373 netbt/rfcomm_dlc.c && dlc->rd_rxcred > RFCOMM_CREDITS_DEFAULT)
dlc 381 netbt/rfcomm_dlc.c m = dlc->rd_txbuf;
dlc 383 netbt/rfcomm_dlc.c dlc->rd_txbuf = m_split(m, len, M_DONTWAIT);
dlc 384 netbt/rfcomm_dlc.c if (dlc->rd_txbuf == NULL) {
dlc 385 netbt/rfcomm_dlc.c dlc->rd_txbuf = m;
dlc 389 netbt/rfcomm_dlc.c dlc->rd_txbuf = NULL;
dlc 395 netbt/rfcomm_dlc.c dlc->rd_dlci, len, credits, dlc->rd_rxcred);
dlc 397 netbt/rfcomm_dlc.c if (rfcomm_session_send_uih(rs, dlc, credits, m)) {
dlc 399 netbt/rfcomm_dlc.c __func__, len, dlc->rd_dlci);
dlc 404 netbt/rfcomm_dlc.c dlc->rd_pending++;
dlc 408 netbt/rfcomm_dlc.c dlc->rd_txcred--;
dlc 411 netbt/rfcomm_dlc.c dlc->rd_rxcred += credits;
dlc 303 netbt/rfcomm_session.c struct rfcomm_dlc *dlc;
dlc 315 netbt/rfcomm_session.c dlc = LIST_FIRST(&rs->rs_dlcs);
dlc 317 netbt/rfcomm_session.c rfcomm_dlc_close(dlc, ETIMEDOUT);
dlc 381 netbt/rfcomm_session.c struct rfcomm_dlc *dlc;
dlc 388 netbt/rfcomm_session.c dlc = LIST_FIRST(&rs->rs_dlcs);
dlc 390 netbt/rfcomm_session.c rfcomm_dlc_close(dlc, err);
dlc 435 netbt/rfcomm_session.c struct rfcomm_dlc *dlc;
dlc 451 netbt/rfcomm_session.c dlc = credit->rc_dlc;
dlc 452 netbt/rfcomm_session.c if (dlc != NULL) {
dlc 453 netbt/rfcomm_session.c dlc->rd_pending--;
dlc 454 netbt/rfcomm_session.c (*dlc->rd_proto->complete)
dlc 455 netbt/rfcomm_session.c (dlc->rd_upper, credit->rc_len);
dlc 462 netbt/rfcomm_session.c && dlc->rd_state == RFCOMM_DLC_OPEN) {
dlc 463 netbt/rfcomm_session.c rfcomm_dlc_start(dlc);
dlc 470 netbt/rfcomm_session.c if ((dlc->rd_flags & RFCOMM_DLC_SHUTDOWN)
dlc 471 netbt/rfcomm_session.c && dlc->rd_txbuf == NULL && dlc->rd_pending == 0) {
dlc 472 netbt/rfcomm_session.c dlc->rd_state = RFCOMM_DLC_WAIT_DISCONNECT;
dlc 474 netbt/rfcomm_session.c dlc->rd_dlci);
dlc 475 netbt/rfcomm_session.c timeout_add(&dlc->rd_timeout,
dlc 503 netbt/rfcomm_session.c struct rfcomm_dlc *dlc, *next;
dlc 521 netbt/rfcomm_session.c while ((dlc = next) != NULL) {
dlc 522 netbt/rfcomm_session.c next = LIST_NEXT(dlc, rd_next);
dlc 524 netbt/rfcomm_session.c switch (dlc->rd_state) {
dlc 526 netbt/rfcomm_session.c if ((mode & dlc->rd_mode) != dlc->rd_mode) {
dlc 527 netbt/rfcomm_session.c rfcomm_dlc_close(dlc, ECONNABORTED);
dlc 530 netbt/rfcomm_session.c RFCOMM_FRAME_SABM, dlc->rd_dlci);
dlc 532 netbt/rfcomm_session.c rfcomm_dlc_close(dlc, err);
dlc 534 netbt/rfcomm_session.c dlc->rd_state = RFCOMM_DLC_WAIT_RECV_UA;
dlc 535 netbt/rfcomm_session.c timeout_add(&dlc->rd_timeout,
dlc 554 netbt/rfcomm_session.c if ((mode & dlc->rd_mode) != dlc->rd_mode) {
dlc 556 netbt/rfcomm_session.c RFCOMM_FRAME_DM, dlc->rd_dlci);
dlc 557 netbt/rfcomm_session.c rfcomm_dlc_close(dlc, ECONNABORTED);
dlc 562 netbt/rfcomm_session.c RFCOMM_FRAME_UA, dlc->rd_dlci);
dlc 565 netbt/rfcomm_session.c RFCOMM_FRAME_DM, dlc->rd_dlci);
dlc 566 netbt/rfcomm_session.c rfcomm_dlc_close(dlc, err);
dlc 570 netbt/rfcomm_session.c err = rfcomm_dlc_open(dlc);
dlc 573 netbt/rfcomm_session.c RFCOMM_FRAME_DM, dlc->rd_dlci);
dlc 574 netbt/rfcomm_session.c rfcomm_dlc_close(dlc, err);
dlc 582 netbt/rfcomm_session.c (*dlc->rd_proto->linkmode)(dlc->rd_upper, mode);
dlc 710 netbt/rfcomm_session.c struct rfcomm_dlc *dlc;
dlc 718 netbt/rfcomm_session.c LIST_FOREACH(dlc, &rs->rs_dlcs, rd_next) {
dlc 719 netbt/rfcomm_session.c if (dlc->rd_state == RFCOMM_DLC_WAIT_SESSION)
dlc 720 netbt/rfcomm_session.c rfcomm_dlc_connect(dlc);
dlc 741 netbt/rfcomm_session.c dlc = rfcomm_dlc_lookup(rs, dlci);
dlc 742 netbt/rfcomm_session.c if (dlc == NULL) {
dlc 743 netbt/rfcomm_session.c dlc = rfcomm_dlc_newconn(rs, dlci);
dlc 744 netbt/rfcomm_session.c if (dlc == NULL)
dlc 752 netbt/rfcomm_session.c if (dlc->rd_state != RFCOMM_DLC_WAIT_CONNECT)
dlc 756 netbt/rfcomm_session.c err = rfcomm_dlc_setmode(dlc);
dlc 758 netbt/rfcomm_session.c dlc->rd_state = RFCOMM_DLC_WAIT_SEND_UA;
dlc 759 netbt/rfcomm_session.c (*dlc->rd_proto->connecting)(dlc->rd_upper);
dlc 770 netbt/rfcomm_session.c err = rfcomm_dlc_open(dlc);
dlc 777 netbt/rfcomm_session.c rfcomm_dlc_close(dlc, err);
dlc 786 netbt/rfcomm_session.c struct rfcomm_dlc *dlc;
dlc 806 netbt/rfcomm_session.c dlc = rfcomm_dlc_lookup(rs, dlci);
dlc 807 netbt/rfcomm_session.c if (dlc == NULL) {
dlc 812 netbt/rfcomm_session.c rfcomm_dlc_close(dlc, ECONNRESET);
dlc 825 netbt/rfcomm_session.c struct rfcomm_dlc *dlc;
dlc 834 netbt/rfcomm_session.c LIST_FOREACH(dlc, &rs->rs_dlcs, rd_next) {
dlc 835 netbt/rfcomm_session.c if (dlc->rd_state == RFCOMM_DLC_WAIT_SESSION)
dlc 836 netbt/rfcomm_session.c rfcomm_dlc_connect(dlc);
dlc 859 netbt/rfcomm_session.c dlc = rfcomm_dlc_lookup(rs, dlci);
dlc 860 netbt/rfcomm_session.c if (dlc == NULL)
dlc 863 netbt/rfcomm_session.c switch (dlc->rd_state) {
dlc 865 netbt/rfcomm_session.c rfcomm_dlc_open(dlc);
dlc 869 netbt/rfcomm_session.c rfcomm_dlc_close(dlc, 0);
dlc 893 netbt/rfcomm_session.c struct rfcomm_dlc *dlc;
dlc 897 netbt/rfcomm_session.c dlc = rfcomm_dlc_lookup(rs, dlci);
dlc 898 netbt/rfcomm_session.c if (dlc == NULL)
dlc 901 netbt/rfcomm_session.c if (dlc->rd_state == RFCOMM_DLC_WAIT_CONNECT)
dlc 902 netbt/rfcomm_session.c rfcomm_dlc_close(dlc, ECONNREFUSED);
dlc 904 netbt/rfcomm_session.c rfcomm_dlc_close(dlc, ECONNRESET);
dlc 914 netbt/rfcomm_session.c struct rfcomm_dlc *dlc;
dlc 931 netbt/rfcomm_session.c dlc = rfcomm_dlc_lookup(rs, dlci);
dlc 932 netbt/rfcomm_session.c if (dlc == NULL) {
dlc 938 netbt/rfcomm_session.c if (dlc->rd_state != RFCOMM_DLC_OPEN) {
dlc 940 netbt/rfcomm_session.c dlc->rd_state);
dlc 955 netbt/rfcomm_session.c dlc->rd_txcred += credits;
dlc 957 netbt/rfcomm_session.c if (credits > 0 && dlc->rd_txbuf != NULL)
dlc 958 netbt/rfcomm_session.c rfcomm_dlc_start(dlc);
dlc 964 netbt/rfcomm_session.c if (dlc->rd_rxcred == 0) {
dlc 969 netbt/rfcomm_session.c if (len > dlc->rd_rxsize) {
dlc 974 netbt/rfcomm_session.c dlc->rd_rxcred--;
dlc 975 netbt/rfcomm_session.c dlc->rd_rxsize -= len;
dlc 978 netbt/rfcomm_session.c (*dlc->rd_proto->input)(dlc->rd_upper, m);
dlc 1151 netbt/rfcomm_session.c struct rfcomm_dlc *dlc;
dlc 1162 netbt/rfcomm_session.c dlc = rfcomm_dlc_lookup(rs, RFCOMM_DLCI(msc.address));
dlc 1165 netbt/rfcomm_session.c if (dlc != NULL)
dlc 1166 netbt/rfcomm_session.c timeout_del(&dlc->rd_timeout);
dlc 1171 netbt/rfcomm_session.c if (dlc == NULL) {
dlc 1185 netbt/rfcomm_session.c dlc->rd_rmodem = msc.modem;
dlc 1301 netbt/rfcomm_session.c struct rfcomm_dlc *dlc;
dlc 1315 netbt/rfcomm_session.c dlc = rfcomm_dlc_lookup(rs, pn.dlci);
dlc 1321 netbt/rfcomm_session.c if (dlc == NULL) {
dlc 1322 netbt/rfcomm_session.c dlc = rfcomm_dlc_newconn(rs, pn.dlci);
dlc 1323 netbt/rfcomm_session.c if (dlc == NULL)
dlc 1331 netbt/rfcomm_session.c dlc->rd_mtu = pn.mtu;
dlc 1335 netbt/rfcomm_session.c if (dlc->rd_state == RFCOMM_DLC_WAIT_CONNECT
dlc 1338 netbt/rfcomm_session.c dlc->rd_txcred = pn.credits & 0x07;
dlc 1340 netbt/rfcomm_session.c dlc->rd_rxcred = (dlc->rd_rxsize / dlc->rd_mtu);
dlc 1341 netbt/rfcomm_session.c dlc->rd_rxcred = min(dlc->rd_rxcred,
dlc 1345 netbt/rfcomm_session.c pn.credits = dlc->rd_rxcred;
dlc 1363 netbt/rfcomm_session.c if (dlc == NULL)
dlc 1366 netbt/rfcomm_session.c timeout_del(&dlc->rd_timeout);
dlc 1368 netbt/rfcomm_session.c if (pn.mtu > RFCOMM_MTU_MAX || pn.mtu > dlc->rd_mtu) {
dlc 1369 netbt/rfcomm_session.c dlc->rd_state = RFCOMM_DLC_WAIT_DISCONNECT;
dlc 1375 netbt/rfcomm_session.c timeout_add(&dlc->rd_timeout,
dlc 1379 netbt/rfcomm_session.c dlc->rd_mtu = pn.mtu;
dlc 1382 netbt/rfcomm_session.c if (dlc->rd_state != RFCOMM_DLC_WAIT_CONNECT)
dlc 1388 netbt/rfcomm_session.c dlc->rd_txcred = (pn.credits & 0x07);
dlc 1391 netbt/rfcomm_session.c timeout_add(&dlc->rd_timeout, rfcomm_ack_timeout * hz);
dlc 1394 netbt/rfcomm_session.c err = rfcomm_dlc_setmode(dlc);
dlc 1396 netbt/rfcomm_session.c dlc->rd_state = RFCOMM_DLC_WAIT_SEND_SABM;
dlc 1397 netbt/rfcomm_session.c (*dlc->rd_proto->connecting)(dlc->rd_upper);
dlc 1408 netbt/rfcomm_session.c dlc->rd_state = RFCOMM_DLC_WAIT_RECV_UA;
dlc 1413 netbt/rfcomm_session.c rfcomm_dlc_close(dlc, err);
dlc 1423 netbt/rfcomm_session.c struct rfcomm_dlc *dlc, *next;
dlc 1431 netbt/rfcomm_session.c while ((dlc = next) != NULL) {
dlc 1432 netbt/rfcomm_session.c next = LIST_NEXT(dlc, rd_next);
dlc 1433 netbt/rfcomm_session.c rfcomm_dlc_close(dlc, ECONNABORTED);
dlc 1510 netbt/rfcomm_session.c rfcomm_session_send_uih(struct rfcomm_session *rs, struct rfcomm_dlc *dlc,
dlc 1531 netbt/rfcomm_session.c credit->rc_dlc = dlc;
dlc 1558 netbt/rfcomm_session.c (dlc ? dlc->rd_dlci : 0));
dlc 1593 netbt/rfcomm_session.c dlc ? dlc->rd_dlci : 0, m0->m_pkthdr.len, credit->rc_len,
dlc 66 netbt/rfcomm_upper.c struct rfcomm_dlc *dlc;
dlc 72 netbt/rfcomm_upper.c dlc = malloc(sizeof(struct rfcomm_dlc), M_BLUETOOTH, M_NOWAIT);
dlc 73 netbt/rfcomm_upper.c if (dlc == NULL)
dlc 75 netbt/rfcomm_upper.c bzero(dlc, sizeof *dlc);
dlc 77 netbt/rfcomm_upper.c dlc->rd_state = RFCOMM_DLC_CLOSED;
dlc 78 netbt/rfcomm_upper.c dlc->rd_mtu = rfcomm_mtu_default;
dlc 80 netbt/rfcomm_upper.c dlc->rd_proto = proto;
dlc 81 netbt/rfcomm_upper.c dlc->rd_upper = upper;
dlc 83 netbt/rfcomm_upper.c dlc->rd_laddr.bt_len = sizeof(struct sockaddr_bt);
dlc 84 netbt/rfcomm_upper.c dlc->rd_laddr.bt_family = AF_BLUETOOTH;
dlc 85 netbt/rfcomm_upper.c dlc->rd_laddr.bt_psm = L2CAP_PSM_RFCOMM;
dlc 87 netbt/rfcomm_upper.c dlc->rd_raddr.bt_len = sizeof(struct sockaddr_bt);
dlc 88 netbt/rfcomm_upper.c dlc->rd_raddr.bt_family = AF_BLUETOOTH;
dlc 89 netbt/rfcomm_upper.c dlc->rd_raddr.bt_psm = L2CAP_PSM_RFCOMM;
dlc 91 netbt/rfcomm_upper.c dlc->rd_lmodem = RFCOMM_MSC_RTC | RFCOMM_MSC_RTR | RFCOMM_MSC_DV;
dlc 93 netbt/rfcomm_upper.c timeout_set(&dlc->rd_timeout, rfcomm_dlc_timeout, dlc);
dlc 95 netbt/rfcomm_upper.c *handle = dlc;
dlc 105 netbt/rfcomm_upper.c rfcomm_bind(struct rfcomm_dlc *dlc, struct sockaddr_bt *addr)
dlc 108 netbt/rfcomm_upper.c memcpy(&dlc->rd_laddr, addr, sizeof(struct sockaddr_bt));
dlc 118 netbt/rfcomm_upper.c rfcomm_sockaddr(struct rfcomm_dlc *dlc, struct sockaddr_bt *addr)
dlc 121 netbt/rfcomm_upper.c memcpy(addr, &dlc->rd_laddr, sizeof(struct sockaddr_bt));
dlc 131 netbt/rfcomm_upper.c rfcomm_connect(struct rfcomm_dlc *dlc, struct sockaddr_bt *dest)
dlc 136 netbt/rfcomm_upper.c if (dlc->rd_state != RFCOMM_DLC_CLOSED)
dlc 139 netbt/rfcomm_upper.c memcpy(&dlc->rd_raddr, dest, sizeof(struct sockaddr_bt));
dlc 141 netbt/rfcomm_upper.c if (dlc->rd_raddr.bt_channel < RFCOMM_CHANNEL_MIN
dlc 142 netbt/rfcomm_upper.c || dlc->rd_raddr.bt_channel > RFCOMM_CHANNEL_MAX
dlc 143 netbt/rfcomm_upper.c || bdaddr_any(&dlc->rd_raddr.bt_bdaddr))
dlc 146 netbt/rfcomm_upper.c if (dlc->rd_raddr.bt_psm == L2CAP_PSM_ANY)
dlc 147 netbt/rfcomm_upper.c dlc->rd_raddr.bt_psm = L2CAP_PSM_RFCOMM;
dlc 148 netbt/rfcomm_upper.c else if (dlc->rd_raddr.bt_psm != L2CAP_PSM_RFCOMM
dlc 149 netbt/rfcomm_upper.c && (dlc->rd_raddr.bt_psm < 0x1001
dlc 150 netbt/rfcomm_upper.c || L2CAP_PSM_INVALID(dlc->rd_raddr.bt_psm)))
dlc 158 netbt/rfcomm_upper.c rs = rfcomm_session_lookup(&dlc->rd_laddr, &dlc->rd_raddr);
dlc 161 netbt/rfcomm_upper.c &dlc->rd_laddr);
dlc 168 netbt/rfcomm_upper.c err = l2cap_connect(rs->rs_l2cap, &dlc->rd_raddr);
dlc 181 netbt/rfcomm_upper.c dlc->rd_dlci = RFCOMM_MKDLCI(IS_INITIATOR(rs) ? 0:1, dest->bt_channel);
dlc 182 netbt/rfcomm_upper.c if (rfcomm_dlc_lookup(rs, dlc->rd_dlci))
dlc 185 netbt/rfcomm_upper.c l2cap_sockaddr(rs->rs_l2cap, &dlc->rd_laddr);
dlc 190 netbt/rfcomm_upper.c dlc->rd_session = rs;
dlc 191 netbt/rfcomm_upper.c dlc->rd_state = RFCOMM_DLC_WAIT_SESSION;
dlc 192 netbt/rfcomm_upper.c LIST_INSERT_HEAD(&rs->rs_dlcs, dlc, rd_next);
dlc 195 netbt/rfcomm_upper.c err = rfcomm_dlc_connect(dlc);
dlc 206 netbt/rfcomm_upper.c rfcomm_peeraddr(struct rfcomm_dlc *dlc, struct sockaddr_bt *addr)
dlc 209 netbt/rfcomm_upper.c memcpy(addr, &dlc->rd_raddr, sizeof(struct sockaddr_bt));
dlc 219 netbt/rfcomm_upper.c rfcomm_disconnect(struct rfcomm_dlc *dlc, int linger)
dlc 221 netbt/rfcomm_upper.c struct rfcomm_session *rs = dlc->rd_session;
dlc 224 netbt/rfcomm_upper.c KASSERT(dlc != NULL);
dlc 226 netbt/rfcomm_upper.c switch (dlc->rd_state) {
dlc 233 netbt/rfcomm_upper.c RFCOMM_FRAME_DM, dlc->rd_dlci);
dlc 239 netbt/rfcomm_upper.c rfcomm_dlc_close(dlc, 0);
dlc 243 netbt/rfcomm_upper.c if (dlc->rd_txbuf != NULL && linger != 0) {
dlc 244 netbt/rfcomm_upper.c dlc->rd_flags |= RFCOMM_DLC_SHUTDOWN;
dlc 250 netbt/rfcomm_upper.c dlc->rd_state = RFCOMM_DLC_WAIT_DISCONNECT;
dlc 252 netbt/rfcomm_upper.c dlc->rd_dlci);
dlc 253 netbt/rfcomm_upper.c timeout_add(&dlc->rd_timeout, rfcomm_ack_timeout * hz);
dlc 261 netbt/rfcomm_upper.c UNKNOWN(dlc->rd_state);
dlc 276 netbt/rfcomm_upper.c struct rfcomm_dlc *dlc = *handle;
dlc 278 netbt/rfcomm_upper.c if (dlc->rd_state != RFCOMM_DLC_CLOSED)
dlc 279 netbt/rfcomm_upper.c rfcomm_dlc_close(dlc, 0);
dlc 281 netbt/rfcomm_upper.c if (dlc->rd_txbuf != NULL) {
dlc 282 netbt/rfcomm_upper.c m_freem(dlc->rd_txbuf);
dlc 283 netbt/rfcomm_upper.c dlc->rd_txbuf = NULL;
dlc 286 netbt/rfcomm_upper.c dlc->rd_upper = NULL;
dlc 293 netbt/rfcomm_upper.c if (timeout_triggered(&dlc->rd_timeout))
dlc 294 netbt/rfcomm_upper.c dlc->rd_flags |= RFCOMM_DLC_DETACH;
dlc 296 netbt/rfcomm_upper.c free(dlc, M_BLUETOOTH);
dlc 309 netbt/rfcomm_upper.c rfcomm_listen(struct rfcomm_dlc *dlc)
dlc 315 netbt/rfcomm_upper.c if (dlc->rd_state != RFCOMM_DLC_CLOSED)
dlc 318 netbt/rfcomm_upper.c if (dlc->rd_laddr.bt_channel < RFCOMM_CHANNEL_MIN
dlc 319 netbt/rfcomm_upper.c || dlc->rd_laddr.bt_channel > RFCOMM_CHANNEL_MAX)
dlc 322 netbt/rfcomm_upper.c if (dlc->rd_laddr.bt_psm == L2CAP_PSM_ANY)
dlc 323 netbt/rfcomm_upper.c dlc->rd_laddr.bt_psm = L2CAP_PSM_RFCOMM;
dlc 324 netbt/rfcomm_upper.c else if (dlc->rd_laddr.bt_psm != L2CAP_PSM_RFCOMM
dlc 325 netbt/rfcomm_upper.c && (dlc->rd_laddr.bt_psm < 0x1001
dlc 326 netbt/rfcomm_upper.c || L2CAP_PSM_INVALID(dlc->rd_laddr.bt_psm)))
dlc 333 netbt/rfcomm_upper.c if (addr.bt_psm != dlc->rd_laddr.bt_psm)
dlc 336 netbt/rfcomm_upper.c if (bdaddr_same(&dlc->rd_laddr.bt_bdaddr, &addr.bt_bdaddr))
dlc 346 netbt/rfcomm_upper.c &dlc->rd_laddr);
dlc 359 netbt/rfcomm_upper.c dlc->rd_session = rs;
dlc 360 netbt/rfcomm_upper.c dlc->rd_state = RFCOMM_DLC_LISTEN;
dlc 361 netbt/rfcomm_upper.c LIST_INSERT_HEAD(&rs->rs_dlcs, dlc, rd_next);
dlc 374 netbt/rfcomm_upper.c rfcomm_send(struct rfcomm_dlc *dlc, struct mbuf *m)
dlc 377 netbt/rfcomm_upper.c if (dlc->rd_txbuf != NULL) {
dlc 378 netbt/rfcomm_upper.c dlc->rd_txbuf->m_pkthdr.len += m->m_pkthdr.len;
dlc 379 netbt/rfcomm_upper.c m_cat(dlc->rd_txbuf, m);
dlc 381 netbt/rfcomm_upper.c dlc->rd_txbuf = m;
dlc 384 netbt/rfcomm_upper.c if (dlc->rd_state == RFCOMM_DLC_OPEN)
dlc 385 netbt/rfcomm_upper.c rfcomm_dlc_start(dlc);
dlc 400 netbt/rfcomm_upper.c rfcomm_rcvd(struct rfcomm_dlc *dlc, size_t space)
dlc 403 netbt/rfcomm_upper.c KASSERT(dlc != NULL);
dlc 405 netbt/rfcomm_upper.c dlc->rd_rxsize = space;
dlc 411 netbt/rfcomm_upper.c if (dlc->rd_state == RFCOMM_DLC_OPEN
dlc 412 netbt/rfcomm_upper.c && (dlc->rd_session->rs_flags & RFCOMM_SESSION_CFC))
dlc 413 netbt/rfcomm_upper.c rfcomm_dlc_start(dlc);
dlc 424 netbt/rfcomm_upper.c rfcomm_setopt(struct rfcomm_dlc *dlc, int opt, void *addr)
dlc 434 netbt/rfcomm_upper.c else if (dlc->rd_state == RFCOMM_DLC_CLOSED)
dlc 435 netbt/rfcomm_upper.c dlc->rd_mtu = mtu;
dlc 451 netbt/rfcomm_upper.c dlc->rd_mode = mode;
dlc 453 netbt/rfcomm_upper.c if (dlc->rd_state == RFCOMM_DLC_OPEN)
dlc 454 netbt/rfcomm_upper.c err = rfcomm_dlc_setmode(dlc);
dlc 471 netbt/rfcomm_upper.c rfcomm_getopt(struct rfcomm_dlc *dlc, int opt, void *addr)
dlc 477 netbt/rfcomm_upper.c *(uint16_t *)addr = dlc->rd_mtu;
dlc 483 netbt/rfcomm_upper.c fc->lmodem = dlc->rd_lmodem;
dlc 484 netbt/rfcomm_upper.c fc->rmodem = dlc->rd_rmodem;
dlc 485 netbt/rfcomm_upper.c fc->tx_cred = max(dlc->rd_txcred, 0xff);
dlc 486 netbt/rfcomm_upper.c fc->rx_cred = max(dlc->rd_rxcred, 0xff);
dlc 487 netbt/rfcomm_upper.c if (dlc->rd_session
dlc 488 netbt/rfcomm_upper.c && (dlc->rd_session->rs_flags & RFCOMM_SESSION_CFC))
dlc 494 netbt/rfcomm_upper.c *(int *)addr = dlc->rd_mode;