diff options
-rw-r--r-- | include/uapi/linux/nfc.h | 7 | ||||
-rw-r--r-- | net/nfc/llcp/sock.c | 23 |
2 files changed, 27 insertions, 3 deletions
diff --git a/include/uapi/linux/nfc.h b/include/uapi/linux/nfc.h index 7440bc81a04b..7c6f627a717d 100644 --- a/include/uapi/linux/nfc.h +++ b/include/uapi/linux/nfc.h | |||
@@ -233,7 +233,10 @@ struct sockaddr_nfc_llcp { | |||
233 | #define NFC_LLCP_DIRECTION_TX 0x01 | 233 | #define NFC_LLCP_DIRECTION_TX 0x01 |
234 | 234 | ||
235 | /* socket option names */ | 235 | /* socket option names */ |
236 | #define NFC_LLCP_RW 0 | 236 | #define NFC_LLCP_RW 0 |
237 | #define NFC_LLCP_MIUX 1 | 237 | #define NFC_LLCP_MIUX 1 |
238 | #define NFC_LLCP_REMOTE_MIU 2 | ||
239 | #define NFC_LLCP_REMOTE_LTO 3 | ||
240 | #define NFC_LLCP_REMOTE_RW 4 | ||
238 | 241 | ||
239 | #endif /*__LINUX_NFC_H */ | 242 | #endif /*__LINUX_NFC_H */ |
diff --git a/net/nfc/llcp/sock.c b/net/nfc/llcp/sock.c index 641c535be3d4..fd01ac6e0bf4 100644 --- a/net/nfc/llcp/sock.c +++ b/net/nfc/llcp/sock.c | |||
@@ -303,7 +303,7 @@ static int nfc_llcp_getsockopt(struct socket *sock, int level, int optname, | |||
303 | struct sock *sk = sock->sk; | 303 | struct sock *sk = sock->sk; |
304 | struct nfc_llcp_sock *llcp_sock = nfc_llcp_sock(sk); | 304 | struct nfc_llcp_sock *llcp_sock = nfc_llcp_sock(sk); |
305 | int len, err = 0; | 305 | int len, err = 0; |
306 | u16 miux; | 306 | u16 miux, remote_miu; |
307 | u8 rw; | 307 | u8 rw; |
308 | 308 | ||
309 | pr_debug("%p optname %d\n", sk, optname); | 309 | pr_debug("%p optname %d\n", sk, optname); |
@@ -339,6 +339,27 @@ static int nfc_llcp_getsockopt(struct socket *sock, int level, int optname, | |||
339 | 339 | ||
340 | break; | 340 | break; |
341 | 341 | ||
342 | case NFC_LLCP_REMOTE_MIU: | ||
343 | remote_miu = llcp_sock->remote_miu > LLCP_MAX_MIU ? | ||
344 | local->remote_miu : llcp_sock->remote_miu; | ||
345 | |||
346 | if (put_user(remote_miu, (u32 __user *) optval)) | ||
347 | err = -EFAULT; | ||
348 | |||
349 | break; | ||
350 | |||
351 | case NFC_LLCP_REMOTE_LTO: | ||
352 | if (put_user(local->remote_lto / 10, (u32 __user *) optval)) | ||
353 | err = -EFAULT; | ||
354 | |||
355 | break; | ||
356 | |||
357 | case NFC_LLCP_REMOTE_RW: | ||
358 | if (put_user(llcp_sock->remote_rw, (u32 __user *) optval)) | ||
359 | err = -EFAULT; | ||
360 | |||
361 | break; | ||
362 | |||
342 | default: | 363 | default: |
343 | err = -ENOPROTOOPT; | 364 | err = -ENOPROTOOPT; |
344 | break; | 365 | break; |