• Home
  • Raw
  • Download

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 = from_timer(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 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, 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()
647 struct rfcomm_session *s = kzalloc(sizeof(*s), GFP_KERNEL); in rfcomm_session_add() local
649 if (!s) in rfcomm_session_add()
652 BT_DBG("session %p sock %p", s, sock); in rfcomm_session_add()
654 timer_setup(&s->timer, rfcomm_session_timeout, 0); in rfcomm_session_add()
656 INIT_LIST_HEAD(&s->dlcs); in rfcomm_session_add()
657 s->state = state; in rfcomm_session_add()
658 s->sock = sock; in rfcomm_session_add()
660 s->mtu = RFCOMM_DEFAULT_MTU; in rfcomm_session_add()
661 s->cfc = disable_cfc ? RFCOMM_CFC_DISABLED : RFCOMM_CFC_UNKNOWN; in rfcomm_session_add()
667 kfree(s); in rfcomm_session_add()
671 list_add(&s->list, &session_list); in rfcomm_session_add()
673 return s; in rfcomm_session_add()
676 static struct rfcomm_session *rfcomm_session_del(struct rfcomm_session *s) in rfcomm_session_del() argument
678 int state = s->state; in rfcomm_session_del()
680 BT_DBG("session %p state %ld", s, s->state); in rfcomm_session_del()
682 list_del(&s->list); in rfcomm_session_del()
684 rfcomm_session_clear_timer(s); in rfcomm_session_del()
685 sock_release(s->sock); in rfcomm_session_del()
686 kfree(s); in rfcomm_session_del()
696 struct rfcomm_session *s, *n; in rfcomm_session_get() local
698 list_for_each_entry_safe(s, n, &session_list, list) { in rfcomm_session_get()
699 chan = l2cap_pi(s->sock->sk)->chan; in rfcomm_session_get()
703 return s; in rfcomm_session_get()
708 static struct rfcomm_session *rfcomm_session_close(struct rfcomm_session *s, in rfcomm_session_close() argument
713 s->state = BT_CLOSED; in rfcomm_session_close()
715 BT_DBG("session %p state %ld err %d", s, s->state, err); in rfcomm_session_close()
718 list_for_each_entry_safe(d, n, &s->dlcs, list) { in rfcomm_session_close()
723 rfcomm_session_clear_timer(s); in rfcomm_session_close()
724 return rfcomm_session_del(s); in rfcomm_session_close()
732 struct rfcomm_session *s = NULL; in rfcomm_session_create() local
761 s = rfcomm_session_add(sock, BT_BOUND); in rfcomm_session_create()
762 if (!s) { in rfcomm_session_create()
767 s->initiator = 1; in rfcomm_session_create()
776 return s; in rfcomm_session_create()
778 return rfcomm_session_del(s); in rfcomm_session_create()
785 void rfcomm_session_getaddr(struct rfcomm_session *s, bdaddr_t *src, bdaddr_t *dst) in rfcomm_session_getaddr() argument
787 struct l2cap_chan *chan = l2cap_pi(s->sock->sk)->chan; in rfcomm_session_getaddr()
795 static int rfcomm_send_frame(struct rfcomm_session *s, u8 *data, int len) in rfcomm_send_frame() argument
800 BT_DBG("session %p len %d", s, len); in rfcomm_send_frame()
804 return kernel_sendmsg(s->sock, &msg, &iv, 1, len); in rfcomm_send_frame()
807 static int rfcomm_send_cmd(struct rfcomm_session *s, struct rfcomm_cmd *cmd) in rfcomm_send_cmd() argument
809 BT_DBG("%p cmd %u", s, cmd->ctrl); in rfcomm_send_cmd()
811 return rfcomm_send_frame(s, (void *) cmd, sizeof(*cmd)); in rfcomm_send_cmd()
814 static int rfcomm_send_sabm(struct rfcomm_session *s, u8 dlci) in rfcomm_send_sabm() argument
818 BT_DBG("%p dlci %d", s, dlci); in rfcomm_send_sabm()
820 cmd.addr = __addr(s->initiator, dlci); in rfcomm_send_sabm()
825 return rfcomm_send_cmd(s, &cmd); in rfcomm_send_sabm()
828 static int rfcomm_send_ua(struct rfcomm_session *s, u8 dlci) in rfcomm_send_ua() argument
832 BT_DBG("%p dlci %d", s, dlci); in rfcomm_send_ua()
834 cmd.addr = __addr(!s->initiator, dlci); in rfcomm_send_ua()
839 return rfcomm_send_cmd(s, &cmd); in rfcomm_send_ua()
842 static int rfcomm_send_disc(struct rfcomm_session *s, u8 dlci) in rfcomm_send_disc() argument
846 BT_DBG("%p dlci %d", s, dlci); in rfcomm_send_disc()
848 cmd.addr = __addr(s->initiator, dlci); in rfcomm_send_disc()
853 return rfcomm_send_cmd(s, &cmd); in rfcomm_send_disc()
878 static int rfcomm_send_dm(struct rfcomm_session *s, u8 dlci) in rfcomm_send_dm() argument
882 BT_DBG("%p dlci %d", s, dlci); in rfcomm_send_dm()
884 cmd.addr = __addr(!s->initiator, dlci); in rfcomm_send_dm()
889 return rfcomm_send_cmd(s, &cmd); in rfcomm_send_dm()
892 static int rfcomm_send_nsc(struct rfcomm_session *s, int cr, u8 type) in rfcomm_send_nsc() argument
898 BT_DBG("%p cr %d type %d", s, cr, type); in rfcomm_send_nsc()
901 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_nsc()
914 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_nsc()
917 static int rfcomm_send_pn(struct rfcomm_session *s, int cr, struct rfcomm_dlc *d) in rfcomm_send_pn() argument
924 BT_DBG("%p cr %d dlci %d mtu %d", s, cr, d->dlci, d->mtu); in rfcomm_send_pn()
927 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_pn()
941 if (s->cfc) { in rfcomm_send_pn()
956 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_pn()
959 int rfcomm_send_rpn(struct rfcomm_session *s, int cr, u8 dlci, in rfcomm_send_rpn() argument
971 s, cr, dlci, bit_rate, data_bits, stop_bits, parity, in rfcomm_send_rpn()
975 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_rpn()
994 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_rpn()
997 static int rfcomm_send_rls(struct rfcomm_session *s, int cr, u8 dlci, u8 status) in rfcomm_send_rls() argument
1004 BT_DBG("%p cr %d status 0x%x", s, cr, status); in rfcomm_send_rls()
1007 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_rls()
1021 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_rls()
1024 static int rfcomm_send_msc(struct rfcomm_session *s, int cr, u8 dlci, u8 v24_sig) in rfcomm_send_msc() argument
1031 BT_DBG("%p cr %d v24 0x%x", s, cr, v24_sig); in rfcomm_send_msc()
1034 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_msc()
1048 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_msc()
1051 static int rfcomm_send_fcoff(struct rfcomm_session *s, int cr) in rfcomm_send_fcoff() argument
1057 BT_DBG("%p cr %d", s, cr); in rfcomm_send_fcoff()
1060 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_fcoff()
1070 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_fcoff()
1073 static int rfcomm_send_fcon(struct rfcomm_session *s, int cr) in rfcomm_send_fcon() argument
1079 BT_DBG("%p cr %d", s, cr); in rfcomm_send_fcon()
1082 hdr->addr = __addr(s->initiator, 0); in rfcomm_send_fcon()
1092 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_fcon()
1095 static int rfcomm_send_test(struct rfcomm_session *s, int cr, u8 *pattern, int len) in rfcomm_send_test() argument
1097 struct socket *sock = s->sock; in rfcomm_send_test()
1105 BT_DBG("%p cr %d", s, cr); in rfcomm_send_test()
1107 hdr[0] = __addr(s->initiator, 0); in rfcomm_send_test()
1127 static int rfcomm_send_credits(struct rfcomm_session *s, u8 addr, u8 credits) in rfcomm_send_credits() argument
1132 BT_DBG("%p addr %d credits %d", s, addr, credits); in rfcomm_send_credits()
1143 return rfcomm_send_frame(s, buf, ptr - buf); in rfcomm_send_credits()
1167 static struct rfcomm_session *rfcomm_recv_ua(struct rfcomm_session *s, u8 dlci) in rfcomm_recv_ua() argument
1169 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); in rfcomm_recv_ua()
1173 struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_ua()
1175 rfcomm_send_dm(s, dlci); in rfcomm_recv_ua()
1176 return s; in rfcomm_recv_ua()
1188 rfcomm_send_msc(s, 1, dlci, d->v24_sig); in rfcomm_recv_ua()
1195 if (list_empty(&s->dlcs)) { in rfcomm_recv_ua()
1196 s->state = BT_DISCONN; in rfcomm_recv_ua()
1197 rfcomm_send_disc(s, 0); in rfcomm_recv_ua()
1198 rfcomm_session_clear_timer(s); in rfcomm_recv_ua()
1205 switch (s->state) { in rfcomm_recv_ua()
1207 s->state = BT_CONNECTED; in rfcomm_recv_ua()
1208 rfcomm_process_connect(s); in rfcomm_recv_ua()
1212 s = rfcomm_session_close(s, ECONNRESET); in rfcomm_recv_ua()
1216 return s; in rfcomm_recv_ua()
1219 static struct rfcomm_session *rfcomm_recv_dm(struct rfcomm_session *s, u8 dlci) in rfcomm_recv_dm() argument
1223 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); in rfcomm_recv_dm()
1227 struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_dm()
1238 if (s->state == BT_CONNECT) in rfcomm_recv_dm()
1243 s = rfcomm_session_close(s, err); in rfcomm_recv_dm()
1245 return s; in rfcomm_recv_dm()
1248 static struct rfcomm_session *rfcomm_recv_disc(struct rfcomm_session *s, in rfcomm_recv_disc() argument
1253 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); in rfcomm_recv_disc()
1256 struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_disc()
1258 rfcomm_send_ua(s, dlci); in rfcomm_recv_disc()
1268 rfcomm_send_dm(s, dlci); in rfcomm_recv_disc()
1271 rfcomm_send_ua(s, 0); in rfcomm_recv_disc()
1273 if (s->state == BT_CONNECT) in rfcomm_recv_disc()
1278 s = rfcomm_session_close(s, err); in rfcomm_recv_disc()
1280 return s; in rfcomm_recv_disc()
1324 static int rfcomm_recv_sabm(struct rfcomm_session *s, u8 dlci) in rfcomm_recv_sabm() argument
1329 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); in rfcomm_recv_sabm()
1332 rfcomm_send_ua(s, 0); in rfcomm_recv_sabm()
1334 if (s->state == BT_OPEN) { in rfcomm_recv_sabm()
1335 s->state = BT_CONNECTED; in rfcomm_recv_sabm()
1336 rfcomm_process_connect(s); in rfcomm_recv_sabm()
1342 d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_sabm()
1353 if (rfcomm_connect_ind(s, channel, &d)) { in rfcomm_recv_sabm()
1355 d->addr = __addr(s->initiator, dlci); in rfcomm_recv_sabm()
1356 rfcomm_dlc_link(s, d); in rfcomm_recv_sabm()
1360 rfcomm_send_dm(s, dlci); in rfcomm_recv_sabm()
1368 struct rfcomm_session *s = d->session; in rfcomm_apply_pn() local
1373 if ((pn->flow_ctrl == 0xf0 && s->cfc != RFCOMM_CFC_DISABLED) || in rfcomm_apply_pn()
1382 if (s->cfc == RFCOMM_CFC_UNKNOWN) in rfcomm_apply_pn()
1383 s->cfc = d->cfc; in rfcomm_apply_pn()
1389 if (cr && d->mtu > s->mtu) in rfcomm_apply_pn()
1390 d->mtu = s->mtu; in rfcomm_apply_pn()
1395 static int rfcomm_recv_pn(struct rfcomm_session *s, int cr, struct sk_buff *skb) in rfcomm_recv_pn() argument
1401 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); in rfcomm_recv_pn()
1406 d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_pn()
1411 rfcomm_send_pn(s, 0, d); in rfcomm_recv_pn()
1419 rfcomm_send_sabm(s, d->dlci); in rfcomm_recv_pn()
1431 if (rfcomm_connect_ind(s, channel, &d)) { in rfcomm_recv_pn()
1433 d->addr = __addr(s->initiator, dlci); in rfcomm_recv_pn()
1434 rfcomm_dlc_link(s, d); in rfcomm_recv_pn()
1439 rfcomm_send_pn(s, 0, d); in rfcomm_recv_pn()
1441 rfcomm_send_dm(s, dlci); in rfcomm_recv_pn()
1447 static int rfcomm_recv_rpn(struct rfcomm_session *s, int cr, int len, struct sk_buff *skb) in rfcomm_recv_rpn() argument
1547 rfcomm_send_rpn(s, 0, dlci, bit_rate, data_bits, stop_bits, in rfcomm_recv_rpn()
1553 static int rfcomm_recv_rls(struct rfcomm_session *s, int cr, struct sk_buff *skb) in rfcomm_recv_rls() argument
1567 rfcomm_send_rls(s, 0, dlci, rls->status); in rfcomm_recv_rls()
1572 static int rfcomm_recv_msc(struct rfcomm_session *s, int cr, struct sk_buff *skb) in rfcomm_recv_msc() argument
1580 d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_msc()
1599 rfcomm_send_msc(s, 0, dlci, msc->v24_sig); in rfcomm_recv_msc()
1608 static int rfcomm_recv_mcc(struct rfcomm_session *s, struct sk_buff *skb) in rfcomm_recv_mcc() argument
1617 BT_DBG("%p type 0x%x cr %d", s, type, cr); in rfcomm_recv_mcc()
1623 rfcomm_recv_pn(s, cr, skb); in rfcomm_recv_mcc()
1627 rfcomm_recv_rpn(s, cr, len, skb); in rfcomm_recv_mcc()
1631 rfcomm_recv_rls(s, cr, skb); in rfcomm_recv_mcc()
1635 rfcomm_recv_msc(s, cr, skb); in rfcomm_recv_mcc()
1640 set_bit(RFCOMM_TX_THROTTLED, &s->flags); in rfcomm_recv_mcc()
1641 rfcomm_send_fcoff(s, 0); in rfcomm_recv_mcc()
1647 clear_bit(RFCOMM_TX_THROTTLED, &s->flags); in rfcomm_recv_mcc()
1648 rfcomm_send_fcon(s, 0); in rfcomm_recv_mcc()
1654 rfcomm_send_test(s, 0, skb->data, skb->len); in rfcomm_recv_mcc()
1662 rfcomm_send_nsc(s, cr, type); in rfcomm_recv_mcc()
1668 static int rfcomm_recv_data(struct rfcomm_session *s, u8 dlci, int pf, struct sk_buff *skb) in rfcomm_recv_data() argument
1672 BT_DBG("session %p state %ld dlci %d pf %d", s, s->state, dlci, pf); in rfcomm_recv_data()
1674 d = rfcomm_dlc_get(s, dlci); in rfcomm_recv_data()
1676 rfcomm_send_dm(s, dlci); in rfcomm_recv_data()
1701 static struct rfcomm_session *rfcomm_recv_frame(struct rfcomm_session *s, in rfcomm_recv_frame() argument
1707 if (!s) { in rfcomm_recv_frame()
1710 return s; in rfcomm_recv_frame()
1723 return s; in rfcomm_recv_frame()
1734 rfcomm_recv_sabm(s, dlci); in rfcomm_recv_frame()
1739 s = rfcomm_recv_disc(s, dlci); in rfcomm_recv_frame()
1744 s = rfcomm_recv_ua(s, dlci); in rfcomm_recv_frame()
1748 s = rfcomm_recv_dm(s, dlci); in rfcomm_recv_frame()
1753 rfcomm_recv_data(s, dlci, __test_pf(hdr->ctrl), skb); in rfcomm_recv_frame()
1754 return s; in rfcomm_recv_frame()
1756 rfcomm_recv_mcc(s, skb); in rfcomm_recv_frame()
1764 return s; in rfcomm_recv_frame()
1769 static void rfcomm_process_connect(struct rfcomm_session *s) in rfcomm_process_connect() argument
1773 BT_DBG("session %p state %ld", s, s->state); in rfcomm_process_connect()
1775 list_for_each_entry_safe(d, n, &s->dlcs, list) { in rfcomm_process_connect()
1777 d->mtu = s->mtu; in rfcomm_process_connect()
1779 rfcomm_send_pn(s, 1, d); in rfcomm_process_connect()
1839 static void rfcomm_process_dlcs(struct rfcomm_session *s) in rfcomm_process_dlcs() argument
1843 BT_DBG("session %p state %ld", s, s->state); in rfcomm_process_dlcs()
1845 list_for_each_entry_safe(d, n, &s->dlcs, list) { in rfcomm_process_dlcs()
1859 rfcomm_send_pn(s, 1, d); in rfcomm_process_dlcs()
1877 rfcomm_send_dm(s, d->dlci); in rfcomm_process_dlcs()
1887 if (test_bit(RFCOMM_TX_THROTTLED, &s->flags)) in rfcomm_process_dlcs()
1896 static struct rfcomm_session *rfcomm_process_rx(struct rfcomm_session *s) in rfcomm_process_rx() argument
1898 struct socket *sock = s->sock; in rfcomm_process_rx()
1902 BT_DBG("session %p state %ld qlen %d", s, s->state, skb_queue_len(&sk->sk_receive_queue)); in rfcomm_process_rx()
1908 s = rfcomm_recv_frame(s, skb); in rfcomm_process_rx()
1909 if (!s) in rfcomm_process_rx()
1916 if (s && (sk->sk_state == BT_CLOSED)) in rfcomm_process_rx()
1917 s = rfcomm_session_close(s, sk->sk_err); in rfcomm_process_rx()
1919 return s; in rfcomm_process_rx()
1922 static void rfcomm_accept_connection(struct rfcomm_session *s) in rfcomm_accept_connection() argument
1924 struct socket *sock = s->sock, *nsock; in rfcomm_accept_connection()
1932 BT_DBG("session %p", s); in rfcomm_accept_connection()
1942 s = rfcomm_session_add(nsock, BT_OPEN); in rfcomm_accept_connection()
1943 if (s) { in rfcomm_accept_connection()
1946 s->mtu = min(l2cap_pi(nsock->sk)->chan->omtu, in rfcomm_accept_connection()
1954 static struct rfcomm_session *rfcomm_check_connection(struct rfcomm_session *s) in rfcomm_check_connection() argument
1956 struct sock *sk = s->sock->sk; in rfcomm_check_connection()
1958 BT_DBG("%p state %ld", s, s->state); in rfcomm_check_connection()
1962 s->state = BT_CONNECT; in rfcomm_check_connection()
1966 s->mtu = min(l2cap_pi(sk)->chan->omtu, l2cap_pi(sk)->chan->imtu) - 5; in rfcomm_check_connection()
1968 rfcomm_send_sabm(s, 0); in rfcomm_check_connection()
1972 s = rfcomm_session_close(s, sk->sk_err); in rfcomm_check_connection()
1975 return s; in rfcomm_check_connection()
1980 struct rfcomm_session *s, *n; in rfcomm_process_sessions() local
1984 list_for_each_entry_safe(s, n, &session_list, list) { in rfcomm_process_sessions()
1985 if (test_and_clear_bit(RFCOMM_TIMED_OUT, &s->flags)) { in rfcomm_process_sessions()
1986 s->state = BT_DISCONN; in rfcomm_process_sessions()
1987 rfcomm_send_disc(s, 0); in rfcomm_process_sessions()
1991 switch (s->state) { in rfcomm_process_sessions()
1993 rfcomm_accept_connection(s); in rfcomm_process_sessions()
1997 s = rfcomm_check_connection(s); in rfcomm_process_sessions()
2001 s = rfcomm_process_rx(s); in rfcomm_process_sessions()
2005 if (s) in rfcomm_process_sessions()
2006 rfcomm_process_dlcs(s); in rfcomm_process_sessions()
2017 struct rfcomm_session *s; in rfcomm_add_listener() local
2053 s = rfcomm_session_add(sock, BT_LISTEN); in rfcomm_add_listener()
2054 if (!s) { in rfcomm_add_listener()
2067 struct rfcomm_session *s, *n; in rfcomm_kill_listener() local
2071 list_for_each_entry_safe(s, n, &session_list, list) in rfcomm_kill_listener()
2072 rfcomm_session_del(s); in rfcomm_kill_listener()
2101 struct rfcomm_session *s; in rfcomm_security_cfm() local
2106 s = rfcomm_session_get(&conn->hdev->bdaddr, &conn->dst); in rfcomm_security_cfm()
2107 if (!s) in rfcomm_security_cfm()
2110 list_for_each_entry_safe(d, n, &s->dlcs, list) { in rfcomm_security_cfm()
2150 struct rfcomm_session *s; in rfcomm_dlc_debugfs_show() local
2154 list_for_each_entry(s, &session_list, list) { in rfcomm_dlc_debugfs_show()
2155 struct l2cap_chan *chan = l2cap_pi(s->sock->sk)->chan; in rfcomm_dlc_debugfs_show()
2157 list_for_each_entry(d, &s->dlcs, list) { in rfcomm_dlc_debugfs_show()