diff options
author | Gustavo F. Padovan <padovan@profusion.mobi> | 2011-02-04 00:02:31 -0500 |
---|---|---|
committer | Gustavo F. Padovan <padovan@profusion.mobi> | 2011-02-07 22:43:31 -0500 |
commit | 6898325923f9571fbede3372dc490faa43b3258a (patch) | |
tree | bdfaadcad5862da390747be596d7a9581c414e94 /net/bluetooth | |
parent | 4e34c50bfe5ba87da1622cc7c6ed10712da255ad (diff) |
Bluetooth: move l2cap_sock_recvmsg() to l2cap_sock.c
It causes the move of the declaration of 3 functions to l2cap.h:
l2cap_get_ident(), l2cap_send_cmd(), l2cap_build_conf_req()
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
Diffstat (limited to 'net/bluetooth')
-rw-r--r-- | net/bluetooth/l2cap_core.c | 49 | ||||
-rw-r--r-- | net/bluetooth/l2cap_sock.c | 42 |
2 files changed, 45 insertions, 46 deletions
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index 97327457b52d..3a0e42be89ea 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c | |||
@@ -72,7 +72,6 @@ static void l2cap_busy_work(struct work_struct *work); | |||
72 | 72 | ||
73 | static void l2cap_sock_close(struct sock *sk); | 73 | static void l2cap_sock_close(struct sock *sk); |
74 | 74 | ||
75 | static int l2cap_build_conf_req(struct sock *sk, void *data); | ||
76 | static struct sk_buff *l2cap_build_cmd(struct l2cap_conn *conn, | 75 | static struct sk_buff *l2cap_build_cmd(struct l2cap_conn *conn, |
77 | u8 code, u8 ident, u16 dlen, void *data); | 76 | u8 code, u8 ident, u16 dlen, void *data); |
78 | 77 | ||
@@ -311,7 +310,7 @@ static inline int l2cap_check_security(struct sock *sk) | |||
311 | auth_type); | 310 | auth_type); |
312 | } | 311 | } |
313 | 312 | ||
314 | static inline u8 l2cap_get_ident(struct l2cap_conn *conn) | 313 | u8 l2cap_get_ident(struct l2cap_conn *conn) |
315 | { | 314 | { |
316 | u8 id; | 315 | u8 id; |
317 | 316 | ||
@@ -333,7 +332,7 @@ static inline u8 l2cap_get_ident(struct l2cap_conn *conn) | |||
333 | return id; | 332 | return id; |
334 | } | 333 | } |
335 | 334 | ||
336 | static inline void l2cap_send_cmd(struct l2cap_conn *conn, u8 ident, u8 code, u16 len, void *data) | 335 | void l2cap_send_cmd(struct l2cap_conn *conn, u8 ident, u8 code, u16 len, void *data) |
337 | { | 336 | { |
338 | struct sk_buff *skb = l2cap_build_cmd(conn, code, ident, len, data); | 337 | struct sk_buff *skb = l2cap_build_cmd(conn, code, ident, len, data); |
339 | u8 flags; | 338 | u8 flags; |
@@ -1469,48 +1468,6 @@ done: | |||
1469 | return err; | 1468 | return err; |
1470 | } | 1469 | } |
1471 | 1470 | ||
1472 | int l2cap_sock_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len, int flags) | ||
1473 | { | ||
1474 | struct sock *sk = sock->sk; | ||
1475 | |||
1476 | lock_sock(sk); | ||
1477 | |||
1478 | if (sk->sk_state == BT_CONNECT2 && bt_sk(sk)->defer_setup) { | ||
1479 | struct l2cap_conn_rsp rsp; | ||
1480 | struct l2cap_conn *conn = l2cap_pi(sk)->conn; | ||
1481 | u8 buf[128]; | ||
1482 | |||
1483 | sk->sk_state = BT_CONFIG; | ||
1484 | |||
1485 | rsp.scid = cpu_to_le16(l2cap_pi(sk)->dcid); | ||
1486 | rsp.dcid = cpu_to_le16(l2cap_pi(sk)->scid); | ||
1487 | rsp.result = cpu_to_le16(L2CAP_CR_SUCCESS); | ||
1488 | rsp.status = cpu_to_le16(L2CAP_CS_NO_INFO); | ||
1489 | l2cap_send_cmd(l2cap_pi(sk)->conn, l2cap_pi(sk)->ident, | ||
1490 | L2CAP_CONN_RSP, sizeof(rsp), &rsp); | ||
1491 | |||
1492 | if (l2cap_pi(sk)->conf_state & L2CAP_CONF_REQ_SENT) { | ||
1493 | release_sock(sk); | ||
1494 | return 0; | ||
1495 | } | ||
1496 | |||
1497 | l2cap_pi(sk)->conf_state |= L2CAP_CONF_REQ_SENT; | ||
1498 | l2cap_send_cmd(conn, l2cap_get_ident(conn), L2CAP_CONF_REQ, | ||
1499 | l2cap_build_conf_req(sk, buf), buf); | ||
1500 | l2cap_pi(sk)->num_conf_req++; | ||
1501 | |||
1502 | release_sock(sk); | ||
1503 | return 0; | ||
1504 | } | ||
1505 | |||
1506 | release_sock(sk); | ||
1507 | |||
1508 | if (sock->type == SOCK_STREAM) | ||
1509 | return bt_sock_stream_recvmsg(iocb, sock, msg, len, flags); | ||
1510 | |||
1511 | return bt_sock_recvmsg(iocb, sock, msg, len, flags); | ||
1512 | } | ||
1513 | |||
1514 | int l2cap_sock_shutdown(struct socket *sock, int how) | 1471 | int l2cap_sock_shutdown(struct socket *sock, int how) |
1515 | { | 1472 | { |
1516 | struct sock *sk = sock->sk; | 1473 | struct sock *sk = sock->sk; |
@@ -1760,7 +1717,7 @@ static inline __u8 l2cap_select_mode(__u8 mode, __u16 remote_feat_mask) | |||
1760 | } | 1717 | } |
1761 | } | 1718 | } |
1762 | 1719 | ||
1763 | static int l2cap_build_conf_req(struct sock *sk, void *data) | 1720 | int l2cap_build_conf_req(struct sock *sk, void *data) |
1764 | { | 1721 | { |
1765 | struct l2cap_pinfo *pi = l2cap_pi(sk); | 1722 | struct l2cap_pinfo *pi = l2cap_pi(sk); |
1766 | struct l2cap_conf_req *req = data; | 1723 | struct l2cap_conf_req *req = data; |
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c index e2f14f1783f6..fa2bc5d85560 100644 --- a/net/bluetooth/l2cap_sock.c +++ b/net/bluetooth/l2cap_sock.c | |||
@@ -681,6 +681,48 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, ch | |||
681 | return err; | 681 | return err; |
682 | } | 682 | } |
683 | 683 | ||
684 | static int l2cap_sock_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len, int flags) | ||
685 | { | ||
686 | struct sock *sk = sock->sk; | ||
687 | |||
688 | lock_sock(sk); | ||
689 | |||
690 | if (sk->sk_state == BT_CONNECT2 && bt_sk(sk)->defer_setup) { | ||
691 | struct l2cap_conn_rsp rsp; | ||
692 | struct l2cap_conn *conn = l2cap_pi(sk)->conn; | ||
693 | u8 buf[128]; | ||
694 | |||
695 | sk->sk_state = BT_CONFIG; | ||
696 | |||
697 | rsp.scid = cpu_to_le16(l2cap_pi(sk)->dcid); | ||
698 | rsp.dcid = cpu_to_le16(l2cap_pi(sk)->scid); | ||
699 | rsp.result = cpu_to_le16(L2CAP_CR_SUCCESS); | ||
700 | rsp.status = cpu_to_le16(L2CAP_CS_NO_INFO); | ||
701 | l2cap_send_cmd(l2cap_pi(sk)->conn, l2cap_pi(sk)->ident, | ||
702 | L2CAP_CONN_RSP, sizeof(rsp), &rsp); | ||
703 | |||
704 | if (l2cap_pi(sk)->conf_state & L2CAP_CONF_REQ_SENT) { | ||
705 | release_sock(sk); | ||
706 | return 0; | ||
707 | } | ||
708 | |||
709 | l2cap_pi(sk)->conf_state |= L2CAP_CONF_REQ_SENT; | ||
710 | l2cap_send_cmd(conn, l2cap_get_ident(conn), L2CAP_CONF_REQ, | ||
711 | l2cap_build_conf_req(sk, buf), buf); | ||
712 | l2cap_pi(sk)->num_conf_req++; | ||
713 | |||
714 | release_sock(sk); | ||
715 | return 0; | ||
716 | } | ||
717 | |||
718 | release_sock(sk); | ||
719 | |||
720 | if (sock->type == SOCK_STREAM) | ||
721 | return bt_sock_stream_recvmsg(iocb, sock, msg, len, flags); | ||
722 | |||
723 | return bt_sock_recvmsg(iocb, sock, msg, len, flags); | ||
724 | } | ||
725 | |||
684 | static int l2cap_sock_release(struct socket *sock) | 726 | static int l2cap_sock_release(struct socket *sock) |
685 | { | 727 | { |
686 | struct sock *sk = sock->sk; | 728 | struct sock *sk = sock->sk; |