Lines Matching refs:s
54 static int rfcomm_send_frame(struct rfcomm_session *s, u8 *data, int len);
55 static int rfcomm_send_sabm(struct rfcomm_session *s, u8 dlci);
56 static int rfcomm_send_disc(struct rfcomm_session *s, u8 dlci);
58 static int rfcomm_send_nsc(struct rfcomm_session *s, int cr, u8 type);
59 static int rfcomm_send_pn(struct rfcomm_session *s, int cr, struct rfcomm_dlc *d);
60 static int rfcomm_send_msc(struct rfcomm_session *s, int cr, u8 dlci, u8 v24_sig);
61 static int rfcomm_send_test(struct rfcomm_session *s, int cr, u8 *pattern, int len);
62 static int rfcomm_send_credits(struct rfcomm_session *s, u8 addr, u8 credits);
65 static void rfcomm_process_connect(struct rfcomm_session *s);
72 static struct rfcomm_session *rfcomm_session_del(struct rfcomm_session *s);
84 #define __session_dir(s) ((s)->initiator ? 0x00 : 0x01) argument
238 struct rfcomm_session *s = (void *) arg; 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 del_timer_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, atomic_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()
506 struct rfcomm_session *s, *s_list; in rfcomm_dlc_close() local
512 s = d->session; in rfcomm_dlc_close()
513 if (!s) in rfcomm_dlc_close()
520 if (s_list == s) { in rfcomm_dlc_close()
521 list_for_each_entry(d_list, &s->dlcs, list) { in rfcomm_dlc_close()
538 struct rfcomm_session *s; in rfcomm_dlc_exists() local
546 s = rfcomm_session_get(src, dst); in rfcomm_dlc_exists()
547 if (s) { in rfcomm_dlc_exists()
548 dlci = __dlci(__session_dir(s), channel); in rfcomm_dlc_exists()
549 dlc = rfcomm_dlc_get(s, dlci); in rfcomm_dlc_exists()
646 struct rfcomm_session *s = kzalloc(sizeof(*s), GFP_KERNEL); in rfcomm_session_add() local
648 if (!s) in rfcomm_session_add()
651 BT_DBG("session %p sock %p", s, sock); in rfcomm_session_add()
653 setup_timer(&s->timer, rfcomm_session_timeout, (unsigned long) s); in rfcomm_session_add()
655 INIT_LIST_HEAD(&s->dlcs); in rfcomm_session_add()
656 s->state = state; in rfcomm_session_add()
657 s->sock = sock; in rfcomm_session_add()
659 s->mtu = RFCOMM_DEFAULT_MTU; in rfcomm_session_add()
660 s->cfc = disable_cfc ? RFCOMM_CFC_DISABLED : RFCOMM_CFC_UNKNOWN; in rfcomm_session_add()
666 kfree(s); in rfcomm_session_add()
670 list_add(&s->list, &session_list); in rfcomm_session_add()
672 return s; in rfcomm_session_add()
675 static struct rfcomm_session *rfcomm_session_del(struct rfcomm_session *s) in rfcomm_session_del() argument
677 int state = s->state; in rfcomm_session_del()
679 BT_DBG("session %p state %ld", s, s->state); in rfcomm_session_del()
681 list_del(&s->list); in rfcomm_session_del()
683 rfcomm_session_clear_timer(s); in rfcomm_session_del()
684 sock_release(s->sock); in rfcomm_session_del()
685 kfree(s); in rfcomm_session_del()
695 struct rfcomm_session *s; in rfcomm_session_get() local
699 s = list_entry(p, struct rfcomm_session, list); in rfcomm_session_get()
700 chan = l2cap_pi(s->sock->sk)->chan; in rfcomm_session_get()
704 return s; in rfcomm_session_get()
709 static struct rfcomm_session *rfcomm_session_close(struct rfcomm_session *s, in rfcomm_session_close() argument
715 s->state = BT_CLOSED; in rfcomm_session_close()
717 BT_DBG("session %p state %ld err %d", s, s->state, err); in rfcomm_session_close()
720 list_for_each_safe(p, n, &s->dlcs) { in rfcomm_session_close()
726 rfcomm_session_clear_timer(s); in rfcomm_session_close()
727 return rfcomm_session_del(s); in rfcomm_session_close()
735 struct rfcomm_session *s = NULL; in rfcomm_session_create() local
764 s = rfcomm_session_add(sock, BT_BOUND); in rfcomm_session_create()
765 if (!s) { in rfcomm_session_create()
770 s->initiator = 1; in rfcomm_session_create()
779 return s; in rfcomm_session_create()
781 return rfcomm_session_del(s); in rfcomm_session_create()
788 void rfcomm_session_getaddr(struct rfcomm_session *s, bdaddr_t *src, bdaddr_t *dst) in rfcomm_session_getaddr() argument
790 struct l2cap_chan *chan = l2cap_pi(s->sock->sk)->chan; in rfcomm_session_getaddr()
798 static int rfcomm_send_frame(struct rfcomm_session *s, u8 *data, int len) in rfcomm_send_frame() argument
803 BT_DBG("session %p len %d", s, len); in rfcomm_send_frame()
807 return kernel_sendmsg(s->sock, &msg, &iv, 1, len); in rfcomm_send_frame()
810 static int rfcomm_send_cmd(struct rfcomm_session *s, struct rfcomm_cmd *cmd) in rfcomm_send_cmd() argument
812 BT_DBG("%p cmd %u", s, cmd->ctrl); in rfcomm_send_cmd()
814 return rfcomm_send_frame(s, (void *) cmd, sizeof(*cmd)); in rfcomm_send_cmd()
817 static int rfcomm_send_sabm(struct rfcomm_session *s, u8 dlci) in rfcomm_send_sabm() argument
821 BT_DBG("%p dlci %d", s, dlci); in rfcomm_send_sabm()
823 cmd.addr = __addr(s->initiator, dlci); in rfcomm_send_sabm()
828 return rfcomm_send_cmd(s, &cmd); in rfcomm_send_sabm()
831 static int rfcomm_send_ua(struct rfcomm_session *s, u8 dlci) in rfcomm_send_ua() argument
835 BT_DBG("%p dlci %d", s, dlci); in rfcomm_send_ua()
837 cmd.addr = __addr(!s->initiator, dlci); in rfcomm_send_ua()
842 return rfcomm_send_cmd(s, &cmd); in rfcomm_send_ua()
845 static int rfcomm_send_disc(struct rfcomm_session *s, u8 dlci) in rfcomm_send_disc() argument
849 BT_DBG("%p dlci %d", s, dlci); in rfcomm_send_disc()
851 cmd.addr = __addr(s->initiator, dlci); in rfcomm_send_disc()
856 return rfcomm_send_cmd(s, &cmd); in rfcomm_send_disc()
881 static int rfcomm_send_dm(struct rfcomm_session *s, u8 dlci) in rfcomm_send_dm() argument
885 BT_DBG("%p dlci %d", s, dlci); in rfcomm_send_dm()
887 cmd.addr = __addr(!s->initiator, dlci); in rfcomm_send_dm()
892 return rfcomm_send_cmd(s, &cmd); in rfcomm_send_dm()
895 static int rfcomm_send_nsc(struct rfcomm_session *s, int cr, u8 type) in rfcomm_send_nsc() argument
901 BT_DBG("%p cr %d type %d", s, cr, type); in rfcomm_send_nsc()
904 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_nsc()
917 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_nsc()
920 static int rfcomm_send_pn(struct rfcomm_session *s, int cr, struct rfcomm_dlc *d) in rfcomm_send_pn() argument
927 BT_DBG("%p cr %d dlci %d mtu %d", s, cr, d->dlci, d->mtu); in rfcomm_send_pn()
930 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_pn()
944 if (s->cfc) { in rfcomm_send_pn()
959 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_pn()
962 int rfcomm_send_rpn(struct rfcomm_session *s, int cr, u8 dlci, in rfcomm_send_rpn() argument
974 s, cr, dlci, bit_rate, data_bits, stop_bits, parity, in rfcomm_send_rpn()
978 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_rpn()
997 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_rpn()
1000 static int rfcomm_send_rls(struct rfcomm_session *s, int cr, u8 dlci, u8 status) in rfcomm_send_rls() argument
1007 BT_DBG("%p cr %d status 0x%x", s, cr, status); in rfcomm_send_rls()
1010 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_rls()
1024 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_rls()
1027 static int rfcomm_send_msc(struct rfcomm_session *s, int cr, u8 dlci, u8 v24_sig) in rfcomm_send_msc() argument
1034 BT_DBG("%p cr %d v24 0x%x", s, cr, v24_sig); in rfcomm_send_msc()
1037 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_msc()
1051 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_msc()
1054 static int rfcomm_send_fcoff(struct rfcomm_session *s, int cr) in rfcomm_send_fcoff() argument
1060 BT_DBG("%p cr %d", s, cr); in rfcomm_send_fcoff()
1063 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_fcoff()
1073 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_fcoff()
1076 static int rfcomm_send_fcon(struct rfcomm_session *s, int cr) in rfcomm_send_fcon() argument
1082 BT_DBG("%p cr %d", s, cr); in rfcomm_send_fcon()
1085 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_fcon()
1095 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_fcon()
1098 static int rfcomm_send_test(struct rfcomm_session *s, int cr, u8 *pattern, int len) in rfcomm_send_test() argument
1100 struct socket *sock = s->sock; in rfcomm_send_test()
1108 BT_DBG("%p cr %d", s, cr); in rfcomm_send_test()
1110 hdr[0] = __addr(s->initiator, 0); in rfcomm_send_test()
1130 static int rfcomm_send_credits(struct rfcomm_session *s, u8 addr, u8 credits) in rfcomm_send_credits() argument
1135 BT_DBG("%p addr %d credits %d", s, addr, credits); in rfcomm_send_credits()
1146 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_credits()
1170 static struct rfcomm_session *rfcomm_recv_ua(struct rfcomm_session *s, u8 dlci) in rfcomm_recv_ua() argument
1172 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); in rfcomm_recv_ua()
1176 struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_ua()
1178 rfcomm_send_dm(s, dlci); in rfcomm_recv_ua()
1179 return s; in rfcomm_recv_ua()
1191 rfcomm_send_msc(s, 1, dlci, d->v24_sig); in rfcomm_recv_ua()
1198 if (list_empty(&s->dlcs)) { in rfcomm_recv_ua()
1199 s->state = BT_DISCONN; in rfcomm_recv_ua()
1200 rfcomm_send_disc(s, 0); in rfcomm_recv_ua()
1201 rfcomm_session_clear_timer(s); in rfcomm_recv_ua()
1208 switch (s->state) { in rfcomm_recv_ua()
1210 s->state = BT_CONNECTED; in rfcomm_recv_ua()
1211 rfcomm_process_connect(s); in rfcomm_recv_ua()
1215 s = rfcomm_session_close(s, ECONNRESET); in rfcomm_recv_ua()
1219 return s; in rfcomm_recv_ua()
1222 static struct rfcomm_session *rfcomm_recv_dm(struct rfcomm_session *s, u8 dlci) in rfcomm_recv_dm() argument
1226 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); in rfcomm_recv_dm()
1230 struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_dm()
1241 if (s->state == BT_CONNECT) in rfcomm_recv_dm()
1246 s = rfcomm_session_close(s, err); in rfcomm_recv_dm()
1248 return s; in rfcomm_recv_dm()
1251 static struct rfcomm_session *rfcomm_recv_disc(struct rfcomm_session *s, in rfcomm_recv_disc() argument
1256 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); in rfcomm_recv_disc()
1259 struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_disc()
1261 rfcomm_send_ua(s, dlci); in rfcomm_recv_disc()
1271 rfcomm_send_dm(s, dlci); in rfcomm_recv_disc()
1274 rfcomm_send_ua(s, 0); in rfcomm_recv_disc()
1276 if (s->state == BT_CONNECT) in rfcomm_recv_disc()
1281 s = rfcomm_session_close(s, err); in rfcomm_recv_disc()
1283 return s; in rfcomm_recv_disc()
1327 static int rfcomm_recv_sabm(struct rfcomm_session *s, u8 dlci) in rfcomm_recv_sabm() argument
1332 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); in rfcomm_recv_sabm()
1335 rfcomm_send_ua(s, 0); in rfcomm_recv_sabm()
1337 if (s->state == BT_OPEN) { in rfcomm_recv_sabm()
1338 s->state = BT_CONNECTED; in rfcomm_recv_sabm()
1339 rfcomm_process_connect(s); in rfcomm_recv_sabm()
1345 d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_sabm()
1356 if (rfcomm_connect_ind(s, channel, &d)) { in rfcomm_recv_sabm()
1358 d->addr = __addr(s->initiator, dlci); in rfcomm_recv_sabm()
1359 rfcomm_dlc_link(s, d); in rfcomm_recv_sabm()
1363 rfcomm_send_dm(s, dlci); in rfcomm_recv_sabm()
1371 struct rfcomm_session *s = d->session; in rfcomm_apply_pn() local
1376 if ((pn->flow_ctrl == 0xf0 && s->cfc != RFCOMM_CFC_DISABLED) || in rfcomm_apply_pn()
1385 if (s->cfc == RFCOMM_CFC_UNKNOWN) in rfcomm_apply_pn()
1386 s->cfc = d->cfc; in rfcomm_apply_pn()
1392 if (cr && d->mtu > s->mtu) in rfcomm_apply_pn()
1393 d->mtu = s->mtu; in rfcomm_apply_pn()
1398 static int rfcomm_recv_pn(struct rfcomm_session *s, int cr, struct sk_buff *skb) in rfcomm_recv_pn() argument
1404 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); in rfcomm_recv_pn()
1409 d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_pn()
1414 rfcomm_send_pn(s, 0, d); in rfcomm_recv_pn()
1422 rfcomm_send_sabm(s, d->dlci); in rfcomm_recv_pn()
1434 if (rfcomm_connect_ind(s, channel, &d)) { in rfcomm_recv_pn()
1436 d->addr = __addr(s->initiator, dlci); in rfcomm_recv_pn()
1437 rfcomm_dlc_link(s, d); in rfcomm_recv_pn()
1442 rfcomm_send_pn(s, 0, d); in rfcomm_recv_pn()
1444 rfcomm_send_dm(s, dlci); in rfcomm_recv_pn()
1450 static int rfcomm_recv_rpn(struct rfcomm_session *s, int cr, int len, struct sk_buff *skb) in rfcomm_recv_rpn() argument
1550 rfcomm_send_rpn(s, 0, dlci, bit_rate, data_bits, stop_bits, in rfcomm_recv_rpn()
1556 static int rfcomm_recv_rls(struct rfcomm_session *s, int cr, struct sk_buff *skb) in rfcomm_recv_rls() argument
1570 rfcomm_send_rls(s, 0, dlci, rls->status); in rfcomm_recv_rls()
1575 static int rfcomm_recv_msc(struct rfcomm_session *s, int cr, struct sk_buff *skb) in rfcomm_recv_msc() argument
1583 d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_msc()
1602 rfcomm_send_msc(s, 0, dlci, msc->v24_sig); in rfcomm_recv_msc()
1611 static int rfcomm_recv_mcc(struct rfcomm_session *s, struct sk_buff *skb) in rfcomm_recv_mcc() argument
1620 BT_DBG("%p type 0x%x cr %d", s, type, cr); in rfcomm_recv_mcc()
1626 rfcomm_recv_pn(s, cr, skb); in rfcomm_recv_mcc()
1630 rfcomm_recv_rpn(s, cr, len, skb); in rfcomm_recv_mcc()
1634 rfcomm_recv_rls(s, cr, skb); in rfcomm_recv_mcc()
1638 rfcomm_recv_msc(s, cr, skb); in rfcomm_recv_mcc()
1643 set_bit(RFCOMM_TX_THROTTLED, &s->flags); in rfcomm_recv_mcc()
1644 rfcomm_send_fcoff(s, 0); in rfcomm_recv_mcc()
1650 clear_bit(RFCOMM_TX_THROTTLED, &s->flags); in rfcomm_recv_mcc()
1651 rfcomm_send_fcon(s, 0); in rfcomm_recv_mcc()
1657 rfcomm_send_test(s, 0, skb->data, skb->len); in rfcomm_recv_mcc()
1665 rfcomm_send_nsc(s, cr, type); in rfcomm_recv_mcc()
1671 static int rfcomm_recv_data(struct rfcomm_session *s, u8 dlci, int pf, struct sk_buff *skb) in rfcomm_recv_data() argument
1675 BT_DBG("session %p state %ld dlci %d pf %d", s, s->state, dlci, pf); in rfcomm_recv_data()
1677 d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_data()
1679 rfcomm_send_dm(s, dlci); in rfcomm_recv_data()
1704 static struct rfcomm_session *rfcomm_recv_frame(struct rfcomm_session *s, in rfcomm_recv_frame() argument
1710 if (!s) { in rfcomm_recv_frame()
1713 return s; in rfcomm_recv_frame()
1726 return s; in rfcomm_recv_frame()
1737 rfcomm_recv_sabm(s, dlci); in rfcomm_recv_frame()
1742 s = rfcomm_recv_disc(s, dlci); in rfcomm_recv_frame()
1747 s = rfcomm_recv_ua(s, dlci); in rfcomm_recv_frame()
1751 s = rfcomm_recv_dm(s, dlci); in rfcomm_recv_frame()
1756 rfcomm_recv_data(s, dlci, __test_pf(hdr->ctrl), skb); in rfcomm_recv_frame()
1757 return s; in rfcomm_recv_frame()
1759 rfcomm_recv_mcc(s, skb); in rfcomm_recv_frame()
1767 return s; in rfcomm_recv_frame()
1772 static void rfcomm_process_connect(struct rfcomm_session *s) in rfcomm_process_connect() argument
1777 BT_DBG("session %p state %ld", s, s->state); in rfcomm_process_connect()
1779 list_for_each_safe(p, n, &s->dlcs) { in rfcomm_process_connect()
1782 d->mtu = s->mtu; in rfcomm_process_connect()
1784 rfcomm_send_pn(s, 1, d); in rfcomm_process_connect()
1844 static void rfcomm_process_dlcs(struct rfcomm_session *s) in rfcomm_process_dlcs() argument
1849 BT_DBG("session %p state %ld", s, s->state); in rfcomm_process_dlcs()
1851 list_for_each_safe(p, n, &s->dlcs) { in rfcomm_process_dlcs()
1867 rfcomm_send_pn(s, 1, d); in rfcomm_process_dlcs()
1885 rfcomm_send_dm(s, d->dlci); in rfcomm_process_dlcs()
1895 if (test_bit(RFCOMM_TX_THROTTLED, &s->flags)) in rfcomm_process_dlcs()
1904 static struct rfcomm_session *rfcomm_process_rx(struct rfcomm_session *s) in rfcomm_process_rx() argument
1906 struct socket *sock = s->sock; in rfcomm_process_rx()
1910 BT_DBG("session %p state %ld qlen %d", s, s->state, skb_queue_len(&sk->sk_receive_queue)); in rfcomm_process_rx()
1916 s = rfcomm_recv_frame(s, skb); in rfcomm_process_rx()
1917 if (!s) in rfcomm_process_rx()
1924 if (s && (sk->sk_state == BT_CLOSED)) in rfcomm_process_rx()
1925 s = rfcomm_session_close(s, sk->sk_err); in rfcomm_process_rx()
1927 return s; in rfcomm_process_rx()
1930 static void rfcomm_accept_connection(struct rfcomm_session *s) in rfcomm_accept_connection() argument
1932 struct socket *sock = s->sock, *nsock; in rfcomm_accept_connection()
1940 BT_DBG("session %p", s); in rfcomm_accept_connection()
1950 s = rfcomm_session_add(nsock, BT_OPEN); in rfcomm_accept_connection()
1951 if (s) { in rfcomm_accept_connection()
1954 s->mtu = min(l2cap_pi(nsock->sk)->chan->omtu, in rfcomm_accept_connection()
1962 static struct rfcomm_session *rfcomm_check_connection(struct rfcomm_session *s) in rfcomm_check_connection() argument
1964 struct sock *sk = s->sock->sk; in rfcomm_check_connection()
1966 BT_DBG("%p state %ld", s, s->state); in rfcomm_check_connection()
1970 s->state = BT_CONNECT; in rfcomm_check_connection()
1974 s->mtu = min(l2cap_pi(sk)->chan->omtu, l2cap_pi(sk)->chan->imtu) - 5; in rfcomm_check_connection()
1976 rfcomm_send_sabm(s, 0); in rfcomm_check_connection()
1980 s = rfcomm_session_close(s, sk->sk_err); in rfcomm_check_connection()
1983 return s; in rfcomm_check_connection()
1993 struct rfcomm_session *s; in rfcomm_process_sessions() local
1994 s = list_entry(p, struct rfcomm_session, list); in rfcomm_process_sessions()
1996 if (test_and_clear_bit(RFCOMM_TIMED_OUT, &s->flags)) { in rfcomm_process_sessions()
1997 s->state = BT_DISCONN; in rfcomm_process_sessions()
1998 rfcomm_send_disc(s, 0); in rfcomm_process_sessions()
2002 switch (s->state) { in rfcomm_process_sessions()
2004 rfcomm_accept_connection(s); in rfcomm_process_sessions()
2008 s = rfcomm_check_connection(s); in rfcomm_process_sessions()
2012 s = rfcomm_process_rx(s); in rfcomm_process_sessions()
2016 if (s) in rfcomm_process_sessions()
2017 rfcomm_process_dlcs(s); in rfcomm_process_sessions()
2028 struct rfcomm_session *s; in rfcomm_add_listener() local
2064 s = rfcomm_session_add(sock, BT_LISTEN); in rfcomm_add_listener()
2065 if (!s) { in rfcomm_add_listener()
2078 struct rfcomm_session *s; in rfcomm_kill_listener() local
2084 s = list_entry(p, struct rfcomm_session, list); in rfcomm_kill_listener()
2085 rfcomm_session_del(s); in rfcomm_kill_listener()
2115 struct rfcomm_session *s; in rfcomm_security_cfm() local
2121 s = rfcomm_session_get(&conn->hdev->bdaddr, &conn->dst); in rfcomm_security_cfm()
2122 if (!s) in rfcomm_security_cfm()
2125 list_for_each_safe(p, n, &s->dlcs) { in rfcomm_security_cfm()
2167 struct rfcomm_session *s; in rfcomm_dlc_debugfs_show() local
2171 list_for_each_entry(s, &session_list, list) { in rfcomm_dlc_debugfs_show()
2172 struct l2cap_chan *chan = l2cap_pi(s->sock->sk)->chan; in rfcomm_dlc_debugfs_show()
2174 list_for_each_entry(d, &s->dlcs, list) { in rfcomm_dlc_debugfs_show()