Lines Matching refs:skb
136 static void cmtp_send_capimsg(struct cmtp_session *session, struct sk_buff *skb) in cmtp_send_capimsg() argument
138 struct cmtp_scb *scb = (void *) skb->cb; in cmtp_send_capimsg()
140 BT_DBG("session %p skb %p len %d", session, skb, skb->len); in cmtp_send_capimsg()
143 scb->data = (CAPIMSG_COMMAND(skb->data) == CAPI_DATA_B3); in cmtp_send_capimsg()
145 skb_queue_tail(&session->transmit, skb); in cmtp_send_capimsg()
154 struct sk_buff *skb; in cmtp_send_interopmsg() local
159 skb = alloc_skb(CAPI_MSG_BASELEN + 6 + len, GFP_ATOMIC); in cmtp_send_interopmsg()
160 if (!skb) { in cmtp_send_interopmsg()
165 s = skb_put(skb, CAPI_MSG_BASELEN + 6 + len); in cmtp_send_interopmsg()
183 cmtp_send_capimsg(session, skb); in cmtp_send_interopmsg()
186 static void cmtp_recv_interopmsg(struct cmtp_session *session, struct sk_buff *skb) in cmtp_recv_interopmsg() argument
193 BT_DBG("session %p skb %p len %d", session, skb, skb->len); in cmtp_recv_interopmsg()
195 switch (CAPIMSG_SUBCOMMAND(skb->data)) { in cmtp_recv_interopmsg()
197 if (skb->len < CAPI_MSG_BASELEN + 10) in cmtp_recv_interopmsg()
200 func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 5); in cmtp_recv_interopmsg()
201 info = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 8); in cmtp_recv_interopmsg()
205 msgnum = CAPIMSG_MSGID(skb->data); in cmtp_recv_interopmsg()
211 application->mapping = CAPIMSG_APPID(skb->data); in cmtp_recv_interopmsg()
218 appl = CAPIMSG_APPID(skb->data); in cmtp_recv_interopmsg()
230 if (skb->len < CAPI_MSG_BASELEN + 11 + sizeof(capi_profile)) in cmtp_recv_interopmsg()
233 controller = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 11); in cmtp_recv_interopmsg()
234 msgnum = CAPIMSG_MSGID(skb->data); in cmtp_recv_interopmsg()
244 skb->data + CAPI_MSG_BASELEN + 11, in cmtp_recv_interopmsg()
253 if (skb->len < CAPI_MSG_BASELEN + 15) in cmtp_recv_interopmsg()
258 skb->data[CAPI_MSG_BASELEN + 14]); in cmtp_recv_interopmsg()
262 skb->data + CAPI_MSG_BASELEN + 15, len); in cmtp_recv_interopmsg()
268 if (skb->len < CAPI_MSG_BASELEN + 32) in cmtp_recv_interopmsg()
272 ctrl->version.majorversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 16); in cmtp_recv_interopmsg()
273 ctrl->version.minorversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 20); in cmtp_recv_interopmsg()
274 ctrl->version.majormanuversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 24); in cmtp_recv_interopmsg()
275 ctrl->version.minormanuversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 28); in cmtp_recv_interopmsg()
281 if (skb->len < CAPI_MSG_BASELEN + 17) in cmtp_recv_interopmsg()
286 skb->data[CAPI_MSG_BASELEN + 16]); in cmtp_recv_interopmsg()
290 skb->data + CAPI_MSG_BASELEN + 17, len); in cmtp_recv_interopmsg()
299 if (skb->len < CAPI_MSG_BASELEN + 6) in cmtp_recv_interopmsg()
302 func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 3); in cmtp_recv_interopmsg()
305 int len = min_t(uint, skb->len - CAPI_MSG_BASELEN - 6, in cmtp_recv_interopmsg()
306 skb->data[CAPI_MSG_BASELEN + 5]); in cmtp_recv_interopmsg()
307 appl = CAPIMSG_APPID(skb->data); in cmtp_recv_interopmsg()
308 msgnum = CAPIMSG_MSGID(skb->data); in cmtp_recv_interopmsg()
310 skb->data + CAPI_MSG_BASELEN + 6, len); in cmtp_recv_interopmsg()
316 kfree_skb(skb); in cmtp_recv_interopmsg()
319 void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb) in cmtp_recv_capimsg() argument
326 BT_DBG("session %p skb %p len %d", session, skb, skb->len); in cmtp_recv_capimsg()
328 if (skb->len < CAPI_MSG_BASELEN) in cmtp_recv_capimsg()
331 if (CAPIMSG_COMMAND(skb->data) == CAPI_INTEROPERABILITY) { in cmtp_recv_capimsg()
332 cmtp_recv_interopmsg(session, skb); in cmtp_recv_capimsg()
337 kfree_skb(skb); in cmtp_recv_capimsg()
341 appl = CAPIMSG_APPID(skb->data); in cmtp_recv_capimsg()
342 contr = CAPIMSG_CONTROL(skb->data); in cmtp_recv_capimsg()
347 CAPIMSG_SETAPPID(skb->data, appl); in cmtp_recv_capimsg()
350 kfree_skb(skb); in cmtp_recv_capimsg()
356 CAPIMSG_SETCONTROL(skb->data, contr); in cmtp_recv_capimsg()
359 capi_ctr_handle_message(ctrl, appl, skb); in cmtp_recv_capimsg()
474 static u16 cmtp_send_message(struct capi_ctr *ctrl, struct sk_buff *skb) in cmtp_send_message() argument
481 BT_DBG("ctrl %p skb %p", ctrl, skb); in cmtp_send_message()
483 appl = CAPIMSG_APPID(skb->data); in cmtp_send_message()
484 contr = CAPIMSG_CONTROL(skb->data); in cmtp_send_message()
492 CAPIMSG_SETAPPID(skb->data, application->mapping); in cmtp_send_message()
496 CAPIMSG_SETCONTROL(skb->data, contr); in cmtp_send_message()
499 cmtp_send_capimsg(session, skb); in cmtp_send_message()