aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/uapi/linux/nfc.h7
-rw-r--r--net/nfc/llcp/sock.c23
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;