Lines Matching refs:tlv

44 static u8 llcp_tlv8(u8 *tlv, u8 type)  in llcp_tlv8()  argument
46 if (tlv[0] != type || tlv[1] != llcp_tlv_length[tlv[0]]) in llcp_tlv8()
49 return tlv[2]; in llcp_tlv8()
52 static u16 llcp_tlv16(u8 *tlv, u8 type) in llcp_tlv16() argument
54 if (tlv[0] != type || tlv[1] != llcp_tlv_length[tlv[0]]) in llcp_tlv16()
57 return be16_to_cpu(*((__be16 *)(tlv + 2))); in llcp_tlv16()
61 static u8 llcp_tlv_version(u8 *tlv) in llcp_tlv_version() argument
63 return llcp_tlv8(tlv, LLCP_TLV_VERSION); in llcp_tlv_version()
66 static u16 llcp_tlv_miux(u8 *tlv) in llcp_tlv_miux() argument
68 return llcp_tlv16(tlv, LLCP_TLV_MIUX) & 0x7ff; in llcp_tlv_miux()
71 static u16 llcp_tlv_wks(u8 *tlv) in llcp_tlv_wks() argument
73 return llcp_tlv16(tlv, LLCP_TLV_WKS); in llcp_tlv_wks()
76 static u16 llcp_tlv_lto(u8 *tlv) in llcp_tlv_lto() argument
78 return llcp_tlv8(tlv, LLCP_TLV_LTO); in llcp_tlv_lto()
81 static u8 llcp_tlv_opt(u8 *tlv) in llcp_tlv_opt() argument
83 return llcp_tlv8(tlv, LLCP_TLV_OPT); in llcp_tlv_opt()
86 static u8 llcp_tlv_rw(u8 *tlv) in llcp_tlv_rw() argument
88 return llcp_tlv8(tlv, LLCP_TLV_RW) & 0xf; in llcp_tlv_rw()
93 u8 *tlv, length; in nfc_llcp_build_tlv() local
107 tlv = kzalloc(2 + length, GFP_KERNEL); in nfc_llcp_build_tlv()
108 if (tlv == NULL) in nfc_llcp_build_tlv()
109 return tlv; in nfc_llcp_build_tlv()
111 tlv[0] = type; in nfc_llcp_build_tlv()
112 tlv[1] = length; in nfc_llcp_build_tlv()
113 memcpy(tlv + 2, value, length); in nfc_llcp_build_tlv()
115 return tlv; in nfc_llcp_build_tlv()
130 sdres->tlv = nfc_llcp_build_tlv(LLCP_TLV_SDRES, value, 2, in nfc_llcp_build_sdres_tlv()
132 if (sdres->tlv == NULL) { in nfc_llcp_build_sdres_tlv()
161 sdreq->tlv = kzalloc(sdreq->tlv_len + 1, GFP_KERNEL); in nfc_llcp_build_sdreq_tlv()
162 if (sdreq->tlv == NULL) { in nfc_llcp_build_sdreq_tlv()
167 sdreq->tlv[0] = LLCP_TLV_SDREQ; in nfc_llcp_build_sdreq_tlv()
168 sdreq->tlv[1] = sdreq->tlv_len - 2; in nfc_llcp_build_sdreq_tlv()
169 sdreq->tlv[2] = tid; in nfc_llcp_build_sdreq_tlv()
172 sdreq->uri = sdreq->tlv + 3; in nfc_llcp_build_sdreq_tlv()
184 kfree(sdp->tlv); in nfc_llcp_free_sdp_tlv()
203 u8 *tlv = tlv_array, type, length, offset = 0; in nfc_llcp_parse_gb_tlv() local
211 type = tlv[0]; in nfc_llcp_parse_gb_tlv()
212 length = tlv[1]; in nfc_llcp_parse_gb_tlv()
218 local->remote_version = llcp_tlv_version(tlv); in nfc_llcp_parse_gb_tlv()
221 local->remote_miu = llcp_tlv_miux(tlv) + 128; in nfc_llcp_parse_gb_tlv()
224 local->remote_wks = llcp_tlv_wks(tlv); in nfc_llcp_parse_gb_tlv()
227 local->remote_lto = llcp_tlv_lto(tlv) * 10; in nfc_llcp_parse_gb_tlv()
230 local->remote_opt = llcp_tlv_opt(tlv); in nfc_llcp_parse_gb_tlv()
238 tlv += length + 2; in nfc_llcp_parse_gb_tlv()
252 u8 *tlv = tlv_array, type, length, offset = 0; in nfc_llcp_parse_connection_tlv() local
260 type = tlv[0]; in nfc_llcp_parse_connection_tlv()
261 length = tlv[1]; in nfc_llcp_parse_connection_tlv()
267 sock->remote_miu = llcp_tlv_miux(tlv) + 128; in nfc_llcp_parse_connection_tlv()
270 sock->remote_rw = llcp_tlv_rw(tlv); in nfc_llcp_parse_connection_tlv()
280 tlv += length + 2; in nfc_llcp_parse_connection_tlv()
306 static struct sk_buff *llcp_add_tlv(struct sk_buff *pdu, u8 *tlv, in llcp_add_tlv() argument
311 if (tlv == NULL) in llcp_add_tlv()
314 memcpy(skb_put(pdu, tlv_length), tlv, tlv_length); in llcp_add_tlv()
553 memcpy(skb_put(skb, sdp->tlv_len), sdp->tlv, sdp->tlv_len); in nfc_llcp_send_snl_sdres()
585 memcpy(skb_put(skb, sdreq->tlv_len), sdreq->tlv, in nfc_llcp_send_snl_sdreq()