NFC: Move LLCP MIU extension value to socket structure
The MIU extension value can be received during the PAX or during the connection establishment process. It's definitely a connection related value rather than a link one. Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
parent
7a06e586b9
commit
93d7e490b7
net/nfc/llcp
|
@ -183,6 +183,9 @@ int nfc_llcp_parse_connection_tlv(struct nfc_llcp_sock *sock,
|
||||||
pr_debug("type 0x%x length %d\n", type, length);
|
pr_debug("type 0x%x length %d\n", type, length);
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
case LLCP_TLV_MIUX:
|
||||||
|
sock->miu = llcp_tlv_miux(tlv) + 128;
|
||||||
|
break;
|
||||||
case LLCP_TLV_RW:
|
case LLCP_TLV_RW:
|
||||||
sock->rw = llcp_tlv_rw(tlv);
|
sock->rw = llcp_tlv_rw(tlv);
|
||||||
break;
|
break;
|
||||||
|
@ -197,7 +200,7 @@ int nfc_llcp_parse_connection_tlv(struct nfc_llcp_sock *sock,
|
||||||
tlv += length + 2;
|
tlv += length + 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
pr_debug("sock %p rw %d\n", sock, sock->rw);
|
pr_debug("sock %p rw %d miu %d\n", sock, sock->rw, sock->miu);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -505,7 +508,7 @@ int nfc_llcp_send_i_frame(struct nfc_llcp_sock *sock,
|
||||||
|
|
||||||
while (remaining_len > 0) {
|
while (remaining_len > 0) {
|
||||||
|
|
||||||
frag_len = min_t(size_t, local->remote_miu, remaining_len);
|
frag_len = min_t(size_t, sock->miu, remaining_len);
|
||||||
|
|
||||||
pr_debug("Fragment %zd bytes remaining %zd",
|
pr_debug("Fragment %zd bytes remaining %zd",
|
||||||
frag_len, remaining_len);
|
frag_len, remaining_len);
|
||||||
|
|
|
@ -655,6 +655,7 @@ static void nfc_llcp_recv_connect(struct nfc_llcp_local *local,
|
||||||
new_sock = nfc_llcp_sock(new_sk);
|
new_sock = nfc_llcp_sock(new_sk);
|
||||||
new_sock->dev = local->dev;
|
new_sock->dev = local->dev;
|
||||||
new_sock->local = nfc_llcp_local_get(local);
|
new_sock->local = nfc_llcp_local_get(local);
|
||||||
|
new_sock->miu = local->remote_miu;
|
||||||
new_sock->nfc_protocol = sock->nfc_protocol;
|
new_sock->nfc_protocol = sock->nfc_protocol;
|
||||||
new_sock->ssap = sock->ssap;
|
new_sock->ssap = sock->ssap;
|
||||||
new_sock->dsap = ssap;
|
new_sock->dsap = ssap;
|
||||||
|
|
|
@ -102,6 +102,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 miu;
|
||||||
|
|
||||||
/* Link variables */
|
/* Link variables */
|
||||||
u8 send_n;
|
u8 send_n;
|
||||||
|
|
|
@ -477,6 +477,7 @@ static int llcp_sock_connect(struct socket *sock, struct sockaddr *_addr,
|
||||||
|
|
||||||
llcp_sock->dev = dev;
|
llcp_sock->dev = dev;
|
||||||
llcp_sock->local = nfc_llcp_local_get(local);
|
llcp_sock->local = nfc_llcp_local_get(local);
|
||||||
|
llcp_sock->miu = llcp_sock->local->remote_miu;
|
||||||
llcp_sock->ssap = nfc_llcp_get_local_ssap(local);
|
llcp_sock->ssap = nfc_llcp_get_local_ssap(local);
|
||||||
if (llcp_sock->ssap == LLCP_SAP_MAX) {
|
if (llcp_sock->ssap == LLCP_SAP_MAX) {
|
||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
|
@ -679,6 +680,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_DEFAULT_RW;
|
llcp_sock->rw = LLCP_DEFAULT_RW;
|
||||||
|
llcp_sock->miu = LLCP_DEFAULT_MIU;
|
||||||
llcp_sock->send_n = llcp_sock->send_ack_n = 0;
|
llcp_sock->send_n = llcp_sock->send_ack_n = 0;
|
||||||
llcp_sock->recv_n = llcp_sock->recv_ack_n = 0;
|
llcp_sock->recv_n = llcp_sock->recv_ack_n = 0;
|
||||||
llcp_sock->remote_ready = 1;
|
llcp_sock->remote_ready = 1;
|
||||||
|
|
Loading…
Reference in New Issue