diff options
author | Samuel Ortiz <sameo@linux.intel.com> | 2012-10-16 15:04:10 +0200 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2012-10-26 18:26:51 +0200 |
commit | b874dec21d1cb7a08fcbe4e442a789419dd1d51f (patch) | |
tree | 782bbf1e79f93396542b61181d0b8862bcc428a5 /net/nfc | |
parent | NFC: UI frame sending routine implementation (diff) | |
download | linux-b874dec21d1cb7a08fcbe4e442a789419dd1d51f.tar.xz linux-b874dec21d1cb7a08fcbe4e442a789419dd1d51f.zip |
NFC: Implement LLCP connection less Tx path
It simply involves getting the client dsap and ssap and calling the UI
frame building and sending routine.
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'net/nfc')
-rw-r--r-- | net/nfc/llcp/sock.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/net/nfc/llcp/sock.c b/net/nfc/llcp/sock.c index d511a4c2fef6..0fa1e92ceac8 100644 --- a/net/nfc/llcp/sock.c +++ b/net/nfc/llcp/sock.c @@ -608,6 +608,25 @@ static int llcp_sock_sendmsg(struct kiocb *iocb, struct socket *sock, lock_sock(sk); + if (sk->sk_type == SOCK_DGRAM) { + struct sockaddr_nfc_llcp *addr = + (struct sockaddr_nfc_llcp *)msg->msg_name; + + if (msg->msg_namelen < sizeof(*addr)) { + release_sock(sk); + + pr_err("Invalid socket address length %d\n", + msg->msg_namelen); + + return -EINVAL; + } + + release_sock(sk); + + return nfc_llcp_send_ui_frame(llcp_sock, addr->dsap, addr->ssap, + msg, len); + } + if (sk->sk_state != LLCP_CONNECTED) { release_sock(sk); return -ENOTCONN; |