Commit 5eef6669 authored by Samuel Ortiz's avatar Samuel Ortiz

NFC: llcp: Socket miux is a big endian field

The MIUX must be transmitted in big endian and as such we have to convert
it properly.
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent e279f84f
...@@ -420,7 +420,8 @@ int nfc_llcp_send_connect(struct nfc_llcp_sock *sock) ...@@ -420,7 +420,8 @@ int nfc_llcp_send_connect(struct nfc_llcp_sock *sock)
} }
/* If the socket parameters are not set, use the local ones */ /* If the socket parameters are not set, use the local ones */
miux = sock->miux > LLCP_MAX_MIUX ? local->miux : sock->miux; miux = be16_to_cpu(sock->miux) > LLCP_MAX_MIUX ?
local->miux : sock->miux;
rw = sock->rw > LLCP_MAX_RW ? local->rw : sock->rw; rw = sock->rw > LLCP_MAX_RW ? local->rw : sock->rw;
miux_tlv = nfc_llcp_build_tlv(LLCP_TLV_MIUX, (u8 *)&miux, 0, miux_tlv = nfc_llcp_build_tlv(LLCP_TLV_MIUX, (u8 *)&miux, 0,
...@@ -475,7 +476,8 @@ int nfc_llcp_send_cc(struct nfc_llcp_sock *sock) ...@@ -475,7 +476,8 @@ int nfc_llcp_send_cc(struct nfc_llcp_sock *sock)
return -ENODEV; return -ENODEV;
/* If the socket parameters are not set, use the local ones */ /* If the socket parameters are not set, use the local ones */
miux = sock->miux > LLCP_MAX_MIUX ? local->miux : sock->miux; miux = be16_to_cpu(sock->miux) > LLCP_MAX_MIUX ?
local->miux : sock->miux;
rw = sock->rw > LLCP_MAX_RW ? local->rw : sock->rw; rw = sock->rw > LLCP_MAX_RW ? local->rw : sock->rw;
miux_tlv = nfc_llcp_build_tlv(LLCP_TLV_MIUX, (u8 *)&miux, 0, miux_tlv = nfc_llcp_build_tlv(LLCP_TLV_MIUX, (u8 *)&miux, 0,
......
...@@ -124,7 +124,7 @@ struct nfc_llcp_sock { ...@@ -124,7 +124,7 @@ struct nfc_llcp_sock {
char *service_name; char *service_name;
size_t service_name_len; size_t service_name_len;
u8 rw; u8 rw;
u16 miux; __be16 miux;
/* Remote link parameters */ /* Remote link parameters */
......
...@@ -279,7 +279,7 @@ static int nfc_llcp_setsockopt(struct socket *sock, int level, int optname, ...@@ -279,7 +279,7 @@ static int nfc_llcp_setsockopt(struct socket *sock, int level, int optname,
break; break;
} }
llcp_sock->miux = (u16) opt; llcp_sock->miux = cpu_to_be16((u16) opt);
break; break;
...@@ -323,7 +323,8 @@ static int nfc_llcp_getsockopt(struct socket *sock, int level, int optname, ...@@ -323,7 +323,8 @@ static int nfc_llcp_getsockopt(struct socket *sock, int level, int optname,
break; break;
case NFC_LLCP_MIUX: case NFC_LLCP_MIUX:
if (put_user(llcp_sock->miux, (u32 __user *) optval)) if (put_user(be16_to_cpu(llcp_sock->miux),
(u32 __user *) optval))
err = -EFAULT; err = -EFAULT;
break; break;
...@@ -921,7 +922,7 @@ struct sock *nfc_llcp_sock_alloc(struct socket *sock, int type, gfp_t gfp) ...@@ -921,7 +922,7 @@ struct sock *nfc_llcp_sock_alloc(struct socket *sock, int type, gfp_t gfp)
llcp_sock->ssap = 0; llcp_sock->ssap = 0;
llcp_sock->dsap = LLCP_SAP_SDP; llcp_sock->dsap = LLCP_SAP_SDP;
llcp_sock->rw = LLCP_MAX_RW + 1; llcp_sock->rw = LLCP_MAX_RW + 1;
llcp_sock->miux = LLCP_MAX_MIUX + 1; llcp_sock->miux = cpu_to_be16(LLCP_MAX_MIUX + 1);
llcp_sock->remote_rw = LLCP_DEFAULT_RW; llcp_sock->remote_rw = LLCP_DEFAULT_RW;
llcp_sock->remote_miu = LLCP_DEFAULT_MIU; llcp_sock->remote_miu = LLCP_DEFAULT_MIU;
llcp_sock->send_n = llcp_sock->send_ack_n = 0; llcp_sock->send_n = llcp_sock->send_ack_n = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment