Lines Matching refs:s

55 static int rfcomm_send_frame(struct rfcomm_session *s, u8 *data, int len);
56 static int rfcomm_send_sabm(struct rfcomm_session *s, u8 dlci);
57 static int rfcomm_send_disc(struct rfcomm_session *s, u8 dlci);
59 static int rfcomm_send_nsc(struct rfcomm_session *s, int cr, u8 type);
60 static int rfcomm_send_pn(struct rfcomm_session *s, int cr, struct rfcomm_dlc *d);
61 static int rfcomm_send_msc(struct rfcomm_session *s, int cr, u8 dlci, u8 v24_sig);
62 static int rfcomm_send_test(struct rfcomm_session *s, int cr, u8 *pattern, int len);
63 static int rfcomm_send_credits(struct rfcomm_session *s, u8 addr, u8 credits);
66 static void rfcomm_process_connect(struct rfcomm_session *s);
73 static struct rfcomm_session *rfcomm_session_del(struct rfcomm_session *s);
83 #define __session_dir(s) ((s)->initiator ? 0x00 : 0x01) argument
238 struct rfcomm_session *s = timer_container_of(s, t, timer); in rfcomm_session_timeout() local
240 BT_DBG("session %p state %ld", s, s->state); in rfcomm_session_timeout()
242 set_bit(RFCOMM_TIMED_OUT, &s->flags); in rfcomm_session_timeout()
246 static void rfcomm_session_set_timer(struct rfcomm_session *s, long timeout) in rfcomm_session_set_timer() argument
248 BT_DBG("session %p state %ld timeout %ld", s, s->state, timeout); in rfcomm_session_set_timer()
250 mod_timer(&s->timer, jiffies + timeout); in rfcomm_session_set_timer()
253 static void rfcomm_session_clear_timer(struct rfcomm_session *s) in rfcomm_session_clear_timer() argument
255 BT_DBG("session %p state %ld", s, s->state); in rfcomm_session_clear_timer()
257 timer_delete_sync(&s->timer); in rfcomm_session_clear_timer()
331 static void rfcomm_dlc_link(struct rfcomm_session *s, struct rfcomm_dlc *d) in rfcomm_dlc_link() argument
333 BT_DBG("dlc %p session %p", d, s); in rfcomm_dlc_link()
335 rfcomm_session_clear_timer(s); in rfcomm_dlc_link()
337 list_add(&d->list, &s->dlcs); in rfcomm_dlc_link()
338 d->session = s; in rfcomm_dlc_link()
343 struct rfcomm_session *s = d->session; in rfcomm_dlc_unlink() local
345 BT_DBG("dlc %p refcnt %d session %p", d, refcount_read(&d->refcnt), s); in rfcomm_dlc_unlink()
351 if (list_empty(&s->dlcs)) in rfcomm_dlc_unlink()
352 rfcomm_session_set_timer(s, RFCOMM_IDLE_TIMEOUT); in rfcomm_dlc_unlink()
355 static struct rfcomm_dlc *rfcomm_dlc_get(struct rfcomm_session *s, u8 dlci) in rfcomm_dlc_get() argument
359 list_for_each_entry(d, &s->dlcs, list) in rfcomm_dlc_get()
373 struct rfcomm_session *s; in __rfcomm_dlc_open() local
386 s = rfcomm_session_get(src, dst); in __rfcomm_dlc_open()
387 if (!s) { in __rfcomm_dlc_open()
388 s = rfcomm_session_create(src, dst, d->sec_level, &err); in __rfcomm_dlc_open()
389 if (!s) in __rfcomm_dlc_open()
393 dlci = __dlci(__session_dir(s), channel); in __rfcomm_dlc_open()
396 if (rfcomm_dlc_get(s, dlci)) in __rfcomm_dlc_open()
402 d->addr = __addr(s->initiator, dlci); in __rfcomm_dlc_open()
406 rfcomm_dlc_link(s, d); in __rfcomm_dlc_open()
410 d->mtu = s->mtu; in __rfcomm_dlc_open()
411 d->cfc = (s->cfc == RFCOMM_CFC_UNKNOWN) ? 0 : s->cfc; in __rfcomm_dlc_open()
413 if (s->state == BT_CONNECTED) { in __rfcomm_dlc_open()
415 rfcomm_send_pn(s, 1, d); in __rfcomm_dlc_open()
439 struct rfcomm_session *s = d->session; in __rfcomm_dlc_disconn() local
443 rfcomm_send_disc(s, d->dlci); in __rfcomm_dlc_disconn()
453 struct rfcomm_session *s = d->session; in __rfcomm_dlc_close() local
454 if (!s) in __rfcomm_dlc_close()
458 d, d->state, d->dlci, err, s); in __rfcomm_dlc_close()
479 if (s->state != BT_BOUND) { in __rfcomm_dlc_close()
507 struct rfcomm_session *s, *s_list; in rfcomm_dlc_close() local
513 s = d->session; in rfcomm_dlc_close()
514 if (!s) in rfcomm_dlc_close()
521 if (s_list == s) { in rfcomm_dlc_close()
522 list_for_each_entry(d_list, &s->dlcs, list) { in rfcomm_dlc_close()
539 struct rfcomm_session *s; in rfcomm_dlc_exists() local
547 s = rfcomm_session_get(src, dst); in rfcomm_dlc_exists()
548 if (s) { in rfcomm_dlc_exists()
549 dlci = __dlci(__session_dir(s), channel); in rfcomm_dlc_exists()
550 dlc = rfcomm_dlc_get(s, dlci); in rfcomm_dlc_exists()
683 struct rfcomm_session *s = kzalloc(sizeof(*s), GFP_KERNEL); in rfcomm_session_add() local
685 if (!s) in rfcomm_session_add()
688 BT_DBG("session %p sock %p", s, sock); in rfcomm_session_add()
690 timer_setup(&s->timer, rfcomm_session_timeout, 0); in rfcomm_session_add()
692 INIT_LIST_HEAD(&s->dlcs); in rfcomm_session_add()
693 s->state = state; in rfcomm_session_add()
694 s->sock = sock; in rfcomm_session_add()
696 s->mtu = RFCOMM_DEFAULT_MTU; in rfcomm_session_add()
697 s->cfc = disable_cfc ? RFCOMM_CFC_DISABLED : RFCOMM_CFC_UNKNOWN; in rfcomm_session_add()
703 kfree(s); in rfcomm_session_add()
707 list_add(&s->list, &session_list); in rfcomm_session_add()
709 return s; in rfcomm_session_add()
712 static struct rfcomm_session *rfcomm_session_del(struct rfcomm_session *s) in rfcomm_session_del() argument
714 int state = s->state; in rfcomm_session_del()
716 BT_DBG("session %p state %ld", s, s->state); in rfcomm_session_del()
718 list_del(&s->list); in rfcomm_session_del()
720 rfcomm_session_clear_timer(s); in rfcomm_session_del()
721 sock_release(s->sock); in rfcomm_session_del()
722 kfree(s); in rfcomm_session_del()
732 struct rfcomm_session *s, *n; in rfcomm_session_get() local
734 list_for_each_entry_safe(s, n, &session_list, list) { in rfcomm_session_get()
735 chan = l2cap_pi(s->sock->sk)->chan; in rfcomm_session_get()
739 return s; in rfcomm_session_get()
744 static struct rfcomm_session *rfcomm_session_close(struct rfcomm_session *s, in rfcomm_session_close() argument
749 s->state = BT_CLOSED; in rfcomm_session_close()
751 BT_DBG("session %p state %ld err %d", s, s->state, err); in rfcomm_session_close()
754 list_for_each_entry_safe(d, n, &s->dlcs, list) { in rfcomm_session_close()
759 rfcomm_session_clear_timer(s); in rfcomm_session_close()
760 return rfcomm_session_del(s); in rfcomm_session_close()
768 struct rfcomm_session *s = NULL; in rfcomm_session_create() local
798 s = rfcomm_session_add(sock, BT_BOUND); in rfcomm_session_create()
799 if (!s) { in rfcomm_session_create()
804 s->initiator = 1; in rfcomm_session_create()
813 return s; in rfcomm_session_create()
815 return rfcomm_session_del(s); in rfcomm_session_create()
822 void rfcomm_session_getaddr(struct rfcomm_session *s, bdaddr_t *src, bdaddr_t *dst) in rfcomm_session_getaddr() argument
824 struct l2cap_chan *chan = l2cap_pi(s->sock->sk)->chan; in rfcomm_session_getaddr()
832 static int rfcomm_send_frame(struct rfcomm_session *s, u8 *data, int len) in rfcomm_send_frame() argument
837 BT_DBG("session %p len %d", s, len); in rfcomm_send_frame()
841 return kernel_sendmsg(s->sock, &msg, &iv, 1, len); in rfcomm_send_frame()
844 static int rfcomm_send_cmd(struct rfcomm_session *s, struct rfcomm_cmd *cmd) in rfcomm_send_cmd() argument
846 BT_DBG("%p cmd %u", s, cmd->ctrl); in rfcomm_send_cmd()
848 return rfcomm_send_frame(s, (void *) cmd, sizeof(*cmd)); in rfcomm_send_cmd()
851 static int rfcomm_send_sabm(struct rfcomm_session *s, u8 dlci) in rfcomm_send_sabm() argument
855 BT_DBG("%p dlci %d", s, dlci); in rfcomm_send_sabm()
857 cmd.addr = __addr(s->initiator, dlci); in rfcomm_send_sabm()
862 return rfcomm_send_cmd(s, &cmd); in rfcomm_send_sabm()
865 static int rfcomm_send_ua(struct rfcomm_session *s, u8 dlci) in rfcomm_send_ua() argument
869 BT_DBG("%p dlci %d", s, dlci); in rfcomm_send_ua()
871 cmd.addr = __addr(!s->initiator, dlci); in rfcomm_send_ua()
876 return rfcomm_send_cmd(s, &cmd); in rfcomm_send_ua()
879 static int rfcomm_send_disc(struct rfcomm_session *s, u8 dlci) in rfcomm_send_disc() argument
883 BT_DBG("%p dlci %d", s, dlci); in rfcomm_send_disc()
885 cmd.addr = __addr(s->initiator, dlci); in rfcomm_send_disc()
890 return rfcomm_send_cmd(s, &cmd); in rfcomm_send_disc()
915 static int rfcomm_send_dm(struct rfcomm_session *s, u8 dlci) in rfcomm_send_dm() argument
919 BT_DBG("%p dlci %d", s, dlci); in rfcomm_send_dm()
921 cmd.addr = __addr(!s->initiator, dlci); in rfcomm_send_dm()
926 return rfcomm_send_cmd(s, &cmd); in rfcomm_send_dm()
929 static int rfcomm_send_nsc(struct rfcomm_session *s, int cr, u8 type) in rfcomm_send_nsc() argument
935 BT_DBG("%p cr %d type %d", s, cr, type); in rfcomm_send_nsc()
938 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_nsc()
951 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_nsc()
954 static int rfcomm_send_pn(struct rfcomm_session *s, int cr, struct rfcomm_dlc *d) in rfcomm_send_pn() argument
961 BT_DBG("%p cr %d dlci %d mtu %d", s, cr, d->dlci, d->mtu); in rfcomm_send_pn()
964 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_pn()
978 if (s->cfc) { in rfcomm_send_pn()
993 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_pn()
996 int rfcomm_send_rpn(struct rfcomm_session *s, int cr, u8 dlci, in rfcomm_send_rpn() argument
1008 s, cr, dlci, bit_rate, data_bits, stop_bits, parity, in rfcomm_send_rpn()
1012 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_rpn()
1031 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_rpn()
1034 static int rfcomm_send_rls(struct rfcomm_session *s, int cr, u8 dlci, u8 status) in rfcomm_send_rls() argument
1041 BT_DBG("%p cr %d status 0x%x", s, cr, status); in rfcomm_send_rls()
1044 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_rls()
1058 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_rls()
1061 static int rfcomm_send_msc(struct rfcomm_session *s, int cr, u8 dlci, u8 v24_sig) in rfcomm_send_msc() argument
1068 BT_DBG("%p cr %d v24 0x%x", s, cr, v24_sig); in rfcomm_send_msc()
1071 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_msc()
1085 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_msc()
1088 static int rfcomm_send_fcoff(struct rfcomm_session *s, int cr) in rfcomm_send_fcoff() argument
1094 BT_DBG("%p cr %d", s, cr); in rfcomm_send_fcoff()
1097 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_fcoff()
1107 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_fcoff()
1110 static int rfcomm_send_fcon(struct rfcomm_session *s, int cr) in rfcomm_send_fcon() argument
1116 BT_DBG("%p cr %d", s, cr); in rfcomm_send_fcon()
1119 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_fcon()
1129 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_fcon()
1132 static int rfcomm_send_test(struct rfcomm_session *s, int cr, u8 *pattern, int len) in rfcomm_send_test() argument
1134 struct socket *sock = s->sock; in rfcomm_send_test()
1142 BT_DBG("%p cr %d", s, cr); in rfcomm_send_test()
1144 hdr[0] = __addr(s->initiator, 0); in rfcomm_send_test()
1164 static int rfcomm_send_credits(struct rfcomm_session *s, u8 addr, u8 credits) in rfcomm_send_credits() argument
1169 BT_DBG("%p addr %d credits %d", s, addr, credits); in rfcomm_send_credits()
1180 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_credits()
1204 static struct rfcomm_session *rfcomm_recv_ua(struct rfcomm_session *s, u8 dlci) in rfcomm_recv_ua() argument
1206 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); in rfcomm_recv_ua()
1210 struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_ua()
1212 rfcomm_send_dm(s, dlci); in rfcomm_recv_ua()
1213 return s; in rfcomm_recv_ua()
1225 rfcomm_send_msc(s, 1, dlci, d->v24_sig); in rfcomm_recv_ua()
1232 if (list_empty(&s->dlcs)) { in rfcomm_recv_ua()
1233 s->state = BT_DISCONN; in rfcomm_recv_ua()
1234 rfcomm_send_disc(s, 0); in rfcomm_recv_ua()
1235 rfcomm_session_clear_timer(s); in rfcomm_recv_ua()
1242 switch (s->state) { in rfcomm_recv_ua()
1244 s->state = BT_CONNECTED; in rfcomm_recv_ua()
1245 rfcomm_process_connect(s); in rfcomm_recv_ua()
1249 s = rfcomm_session_close(s, ECONNRESET); in rfcomm_recv_ua()
1253 return s; in rfcomm_recv_ua()
1256 static struct rfcomm_session *rfcomm_recv_dm(struct rfcomm_session *s, u8 dlci) in rfcomm_recv_dm() argument
1260 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); in rfcomm_recv_dm()
1264 struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_dm()
1275 if (s->state == BT_CONNECT) in rfcomm_recv_dm()
1280 s = rfcomm_session_close(s, err); in rfcomm_recv_dm()
1282 return s; in rfcomm_recv_dm()
1285 static struct rfcomm_session *rfcomm_recv_disc(struct rfcomm_session *s, in rfcomm_recv_disc() argument
1290 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); in rfcomm_recv_disc()
1293 struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_disc()
1295 rfcomm_send_ua(s, dlci); in rfcomm_recv_disc()
1305 rfcomm_send_dm(s, dlci); in rfcomm_recv_disc()
1308 rfcomm_send_ua(s, 0); in rfcomm_recv_disc()
1310 if (s->state == BT_CONNECT) in rfcomm_recv_disc()
1315 s = rfcomm_session_close(s, err); in rfcomm_recv_disc()
1317 return s; in rfcomm_recv_disc()
1361 static int rfcomm_recv_sabm(struct rfcomm_session *s, u8 dlci) in rfcomm_recv_sabm() argument
1366 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); in rfcomm_recv_sabm()
1369 rfcomm_send_ua(s, 0); in rfcomm_recv_sabm()
1371 if (s->state == BT_OPEN) { in rfcomm_recv_sabm()
1372 s->state = BT_CONNECTED; in rfcomm_recv_sabm()
1373 rfcomm_process_connect(s); in rfcomm_recv_sabm()
1379 d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_sabm()
1390 if (rfcomm_connect_ind(s, channel, &d)) { in rfcomm_recv_sabm()
1392 d->addr = __addr(s->initiator, dlci); in rfcomm_recv_sabm()
1393 rfcomm_dlc_link(s, d); in rfcomm_recv_sabm()
1397 rfcomm_send_dm(s, dlci); in rfcomm_recv_sabm()
1405 struct rfcomm_session *s = d->session; in rfcomm_apply_pn() local
1410 if ((pn->flow_ctrl == 0xf0 && s->cfc != RFCOMM_CFC_DISABLED) || in rfcomm_apply_pn()
1419 if (s->cfc == RFCOMM_CFC_UNKNOWN) in rfcomm_apply_pn()
1420 s->cfc = d->cfc; in rfcomm_apply_pn()
1426 if (cr && d->mtu > s->mtu) in rfcomm_apply_pn()
1427 d->mtu = s->mtu; in rfcomm_apply_pn()
1432 static int rfcomm_recv_pn(struct rfcomm_session *s, int cr, struct sk_buff *skb) in rfcomm_recv_pn() argument
1438 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); in rfcomm_recv_pn()
1443 d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_pn()
1448 rfcomm_send_pn(s, 0, d); in rfcomm_recv_pn()
1456 rfcomm_send_sabm(s, d->dlci); in rfcomm_recv_pn()
1468 if (rfcomm_connect_ind(s, channel, &d)) { in rfcomm_recv_pn()
1470 d->addr = __addr(s->initiator, dlci); in rfcomm_recv_pn()
1471 rfcomm_dlc_link(s, d); in rfcomm_recv_pn()
1476 rfcomm_send_pn(s, 0, d); in rfcomm_recv_pn()
1478 rfcomm_send_dm(s, dlci); in rfcomm_recv_pn()
1484 static int rfcomm_recv_rpn(struct rfcomm_session *s, int cr, int len, struct sk_buff *skb) in rfcomm_recv_rpn() argument
1584 rfcomm_send_rpn(s, 0, dlci, bit_rate, data_bits, stop_bits, in rfcomm_recv_rpn()
1590 static int rfcomm_recv_rls(struct rfcomm_session *s, int cr, struct sk_buff *skb) in rfcomm_recv_rls() argument
1604 rfcomm_send_rls(s, 0, dlci, rls->status); in rfcomm_recv_rls()
1609 static int rfcomm_recv_msc(struct rfcomm_session *s, int cr, struct sk_buff *skb) in rfcomm_recv_msc() argument
1617 d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_msc()
1636 rfcomm_send_msc(s, 0, dlci, msc->v24_sig); in rfcomm_recv_msc()
1645 static int rfcomm_recv_mcc(struct rfcomm_session *s, struct sk_buff *skb) in rfcomm_recv_mcc() argument
1654 BT_DBG("%p type 0x%x cr %d", s, type, cr); in rfcomm_recv_mcc()
1660 rfcomm_recv_pn(s, cr, skb); in rfcomm_recv_mcc()
1664 rfcomm_recv_rpn(s, cr, len, skb); in rfcomm_recv_mcc()
1668 rfcomm_recv_rls(s, cr, skb); in rfcomm_recv_mcc()
1672 rfcomm_recv_msc(s, cr, skb); in rfcomm_recv_mcc()
1677 set_bit(RFCOMM_TX_THROTTLED, &s->flags); in rfcomm_recv_mcc()
1678 rfcomm_send_fcoff(s, 0); in rfcomm_recv_mcc()
1684 clear_bit(RFCOMM_TX_THROTTLED, &s->flags); in rfcomm_recv_mcc()
1685 rfcomm_send_fcon(s, 0); in rfcomm_recv_mcc()
1691 rfcomm_send_test(s, 0, skb->data, skb->len); in rfcomm_recv_mcc()
1699 rfcomm_send_nsc(s, cr, type); in rfcomm_recv_mcc()
1705 static int rfcomm_recv_data(struct rfcomm_session *s, u8 dlci, int pf, struct sk_buff *skb) in rfcomm_recv_data() argument
1709 BT_DBG("session %p state %ld dlci %d pf %d", s, s->state, dlci, pf); in rfcomm_recv_data()
1711 d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_data()
1713 rfcomm_send_dm(s, dlci); in rfcomm_recv_data()
1738 static struct rfcomm_session *rfcomm_recv_frame(struct rfcomm_session *s, in rfcomm_recv_frame() argument
1744 if (!s) { in rfcomm_recv_frame()
1747 return s; in rfcomm_recv_frame()
1760 return s; in rfcomm_recv_frame()
1771 rfcomm_recv_sabm(s, dlci); in rfcomm_recv_frame()
1776 s = rfcomm_recv_disc(s, dlci); in rfcomm_recv_frame()
1781 s = rfcomm_recv_ua(s, dlci); in rfcomm_recv_frame()
1785 s = rfcomm_recv_dm(s, dlci); in rfcomm_recv_frame()
1790 rfcomm_recv_data(s, dlci, __test_pf(hdr->ctrl), skb); in rfcomm_recv_frame()
1791 return s; in rfcomm_recv_frame()
1793 rfcomm_recv_mcc(s, skb); in rfcomm_recv_frame()
1801 return s; in rfcomm_recv_frame()
1806 static void rfcomm_process_connect(struct rfcomm_session *s) in rfcomm_process_connect() argument
1810 BT_DBG("session %p state %ld", s, s->state); in rfcomm_process_connect()
1812 list_for_each_entry_safe(d, n, &s->dlcs, list) { in rfcomm_process_connect()
1814 d->mtu = s->mtu; in rfcomm_process_connect()
1816 rfcomm_send_pn(s, 1, d); in rfcomm_process_connect()
1876 static void rfcomm_process_dlcs(struct rfcomm_session *s) in rfcomm_process_dlcs() argument
1880 BT_DBG("session %p state %ld", s, s->state); in rfcomm_process_dlcs()
1882 list_for_each_entry_safe(d, n, &s->dlcs, list) { in rfcomm_process_dlcs()
1896 rfcomm_send_pn(s, 1, d); in rfcomm_process_dlcs()
1914 rfcomm_send_dm(s, d->dlci); in rfcomm_process_dlcs()
1924 if (test_bit(RFCOMM_TX_THROTTLED, &s->flags)) in rfcomm_process_dlcs()
1933 static struct rfcomm_session *rfcomm_process_rx(struct rfcomm_session *s) in rfcomm_process_rx() argument
1935 struct socket *sock = s->sock; in rfcomm_process_rx()
1939 BT_DBG("session %p state %ld qlen %d", s, s->state, skb_queue_len(&sk->sk_receive_queue)); in rfcomm_process_rx()
1945 s = rfcomm_recv_frame(s, skb); in rfcomm_process_rx()
1946 if (!s) in rfcomm_process_rx()
1953 if (s && (sk->sk_state == BT_CLOSED)) in rfcomm_process_rx()
1954 s = rfcomm_session_close(s, sk->sk_err); in rfcomm_process_rx()
1956 return s; in rfcomm_process_rx()
1959 static void rfcomm_accept_connection(struct rfcomm_session *s) in rfcomm_accept_connection() argument
1961 struct socket *sock = s->sock, *nsock; in rfcomm_accept_connection()
1970 BT_DBG("session %p", s); in rfcomm_accept_connection()
1980 s = rfcomm_session_add(nsock, BT_OPEN); in rfcomm_accept_connection()
1981 if (s) { in rfcomm_accept_connection()
1984 s->mtu = min(l2cap_pi(nsock->sk)->chan->omtu, in rfcomm_accept_connection()
1992 static struct rfcomm_session *rfcomm_check_connection(struct rfcomm_session *s) in rfcomm_check_connection() argument
1994 struct sock *sk = s->sock->sk; in rfcomm_check_connection()
1996 BT_DBG("%p state %ld", s, s->state); in rfcomm_check_connection()
2000 s->state = BT_CONNECT; in rfcomm_check_connection()
2004 s->mtu = min(l2cap_pi(sk)->chan->omtu, l2cap_pi(sk)->chan->imtu) - 5; in rfcomm_check_connection()
2006 rfcomm_send_sabm(s, 0); in rfcomm_check_connection()
2010 s = rfcomm_session_close(s, sk->sk_err); in rfcomm_check_connection()
2013 return s; in rfcomm_check_connection()
2018 struct rfcomm_session *s, *n; in rfcomm_process_sessions() local
2022 list_for_each_entry_safe(s, n, &session_list, list) { in rfcomm_process_sessions()
2023 if (test_and_clear_bit(RFCOMM_TIMED_OUT, &s->flags)) { in rfcomm_process_sessions()
2024 s->state = BT_DISCONN; in rfcomm_process_sessions()
2025 rfcomm_send_disc(s, 0); in rfcomm_process_sessions()
2029 switch (s->state) { in rfcomm_process_sessions()
2031 rfcomm_accept_connection(s); in rfcomm_process_sessions()
2035 s = rfcomm_check_connection(s); in rfcomm_process_sessions()
2039 s = rfcomm_process_rx(s); in rfcomm_process_sessions()
2043 if (s) in rfcomm_process_sessions()
2044 rfcomm_process_dlcs(s); in rfcomm_process_sessions()
2055 struct rfcomm_session *s; in rfcomm_add_listener() local
2092 s = rfcomm_session_add(sock, BT_LISTEN); in rfcomm_add_listener()
2093 if (!s) { in rfcomm_add_listener()
2106 struct rfcomm_session *s, *n; in rfcomm_kill_listener() local
2110 list_for_each_entry_safe(s, n, &session_list, list) in rfcomm_kill_listener()
2111 rfcomm_session_del(s); in rfcomm_kill_listener()
2140 struct rfcomm_session *s; in rfcomm_security_cfm() local
2145 s = rfcomm_session_get(&conn->hdev->bdaddr, &conn->dst); in rfcomm_security_cfm()
2146 if (!s) in rfcomm_security_cfm()
2149 list_for_each_entry_safe(d, n, &s->dlcs, list) { in rfcomm_security_cfm()
2189 struct rfcomm_session *s; in rfcomm_dlc_debugfs_show() local
2193 list_for_each_entry(s, &session_list, list) { in rfcomm_dlc_debugfs_show()
2194 struct l2cap_chan *chan = l2cap_pi(s->sock->sk)->chan; in rfcomm_dlc_debugfs_show()
2196 list_for_each_entry(d, &s->dlcs, list) { in rfcomm_dlc_debugfs_show()