Lines Matching refs:skb
383 gen_data_b3_resp_for(struct capiminor *mp, struct sk_buff *skb) in gen_data_b3_resp_for() argument
388 u16 datahandle = CAPIMSG_U16(skb->data, CAPIMSG_BASELEN + 4 + 4 + 2); in gen_data_b3_resp_for()
401 static int handle_recv_skb(struct capiminor *mp, struct sk_buff *skb) in handle_recv_skb() argument
403 unsigned int datalen = skb->len - CAPIMSG_LEN(skb->data); in handle_recv_skb()
420 kfree_skb(skb); in handle_recv_skb()
439 nskb = gen_data_b3_resp_for(mp, skb); in handle_recv_skb()
445 datahandle = CAPIMSG_U16(skb->data, CAPIMSG_BASELEN + 4); in handle_recv_skb()
450 skb_pull(skb, CAPIMSG_LEN(skb->data)); in handle_recv_skb()
452 datahandle, skb->len); in handle_recv_skb()
453 ld->ops->receive_buf(tty, skb->data, NULL, skb->len); in handle_recv_skb()
465 kfree_skb(skb); in handle_recv_skb()
477 struct sk_buff *skb; in handle_minor_recv() local
479 while ((skb = skb_dequeue(&mp->inqueue)) != NULL) in handle_minor_recv()
480 if (handle_recv_skb(mp, skb) < 0) { in handle_minor_recv()
481 skb_queue_head(&mp->inqueue, skb); in handle_minor_recv()
489 struct sk_buff *skb; in handle_minor_send() local
506 skb = __skb_dequeue(&mp->outqueue); in handle_minor_send()
507 if (!skb) { in handle_minor_send()
511 len = (u16)skb->len; in handle_minor_send()
516 skb_push(skb, CAPI_DATA_B3_REQ_LEN); in handle_minor_send()
517 memset(skb->data, 0, CAPI_DATA_B3_REQ_LEN); in handle_minor_send()
518 capimsg_setu16(skb->data, 0, CAPI_DATA_B3_REQ_LEN); in handle_minor_send()
519 capimsg_setu16(skb->data, 2, mp->ap->applid); in handle_minor_send()
520 capimsg_setu8 (skb->data, 4, CAPI_DATA_B3); in handle_minor_send()
521 capimsg_setu8 (skb->data, 5, CAPI_REQ); in handle_minor_send()
522 capimsg_setu16(skb->data, 6, atomic_inc_return(&mp->msgid)); in handle_minor_send()
523 capimsg_setu32(skb->data, 8, mp->ncci); /* NCCI */ in handle_minor_send()
524 capimsg_setu32(skb->data, 12, (u32)(long)skb->data);/* Data32 */ in handle_minor_send()
525 capimsg_setu16(skb->data, 16, len); /* Data length */ in handle_minor_send()
526 capimsg_setu16(skb->data, 18, datahandle); in handle_minor_send()
527 capimsg_setu16(skb->data, 20, 0); /* Flags */ in handle_minor_send()
530 skb_pull(skb, CAPI_DATA_B3_REQ_LEN); in handle_minor_send()
533 __skb_queue_head(&mp->outqueue, skb); in handle_minor_send()
539 errcode = capi20_put_message(mp->ap, skb); in handle_minor_send()
548 skb_pull(skb, CAPI_DATA_B3_REQ_LEN); in handle_minor_send()
551 __skb_queue_head(&mp->outqueue, skb); in handle_minor_send()
560 kfree_skb(skb); in handle_minor_send()
568 static void capi_recv_message(struct capi20_appl *ap, struct sk_buff *skb) in capi_recv_message() argument
579 if (CAPIMSG_CMD(skb->data) == CAPI_CONNECT_B3_CONF) { in capi_recv_message()
580 u16 info = CAPIMSG_U16(skb->data, 12); // Info field in capi_recv_message()
582 capincci_alloc(cdev, CAPIMSG_NCCI(skb->data)); in capi_recv_message()
584 if (CAPIMSG_CMD(skb->data) == CAPI_CONNECT_B3_IND) in capi_recv_message()
585 capincci_alloc(cdev, CAPIMSG_NCCI(skb->data)); in capi_recv_message()
587 if (CAPIMSG_COMMAND(skb->data) != CAPI_DATA_B3) { in capi_recv_message()
588 skb_queue_tail(&cdev->recvqueue, skb); in capi_recv_message()
594 skb_queue_tail(&cdev->recvqueue, skb); in capi_recv_message()
599 np = capincci_find(cdev, CAPIMSG_CONTROL(skb->data)); in capi_recv_message()
602 skb_queue_tail(&cdev->recvqueue, skb); in capi_recv_message()
609 skb_queue_tail(&cdev->recvqueue, skb); in capi_recv_message()
613 if (CAPIMSG_SUBCOMMAND(skb->data) == CAPI_IND) { in capi_recv_message()
614 datahandle = CAPIMSG_U16(skb->data, CAPIMSG_BASELEN + 4 + 4 + 2); in capi_recv_message()
616 datahandle, skb->len-CAPIMSG_LEN(skb->data)); in capi_recv_message()
617 skb_queue_tail(&mp->inqueue, skb); in capi_recv_message()
621 } else if (CAPIMSG_SUBCOMMAND(skb->data) == CAPI_CONF) { in capi_recv_message()
623 datahandle = CAPIMSG_U16(skb->data, CAPIMSG_BASELEN + 4); in capi_recv_message()
626 CAPIMSG_U16(skb->data, CAPIMSG_BASELEN + 4 + 2)); in capi_recv_message()
627 kfree_skb(skb); in capi_recv_message()
634 skb_queue_tail(&cdev->recvqueue, skb); in capi_recv_message()
649 struct sk_buff *skb; in capi_read() local
656 skb = skb_dequeue(&cdev->recvqueue); in capi_read()
657 if (!skb) { in capi_read()
661 (skb = skb_dequeue(&cdev->recvqueue))); in capi_read()
665 if (skb->len > count) { in capi_read()
666 skb_queue_head(&cdev->recvqueue, skb); in capi_read()
669 if (copy_to_user(buf, skb->data, skb->len)) { in capi_read()
670 skb_queue_head(&cdev->recvqueue, skb); in capi_read()
673 copied = skb->len; in capi_read()
675 kfree_skb(skb); in capi_read()
684 struct sk_buff *skb; in capi_write() local
690 skb = alloc_skb(count, GFP_USER); in capi_write()
691 if (!skb) in capi_write()
694 if (copy_from_user(skb_put(skb, count), buf, count)) { in capi_write()
695 kfree_skb(skb); in capi_write()
698 mlen = CAPIMSG_LEN(skb->data); in capi_write()
699 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_REQ) { in capi_write()
700 if ((size_t)(mlen + CAPIMSG_DATALEN(skb->data)) != count) { in capi_write()
701 kfree_skb(skb); in capi_write()
706 kfree_skb(skb); in capi_write()
710 CAPIMSG_SETAPPID(skb->data, cdev->ap.applid); in capi_write()
712 if (CAPIMSG_CMD(skb->data) == CAPI_DISCONNECT_B3_RESP) { in capi_write()
714 capincci_free(cdev, CAPIMSG_NCCI(skb->data)); in capi_write()
718 cdev->errcode = capi20_put_message(&cdev->ap, skb); in capi_write()
721 kfree_skb(skb); in capi_write()
1041 struct sk_buff *skb; in capinc_tty_write() local
1046 skb = mp->outskb; in capinc_tty_write()
1047 if (skb) { in capinc_tty_write()
1049 __skb_queue_tail(&mp->outqueue, skb); in capinc_tty_write()
1050 mp->outbytes += skb->len; in capinc_tty_write()
1053 skb = alloc_skb(CAPI_DATA_B3_REQ_LEN + count, GFP_ATOMIC); in capinc_tty_write()
1054 if (!skb) { in capinc_tty_write()
1060 skb_reserve(skb, CAPI_DATA_B3_REQ_LEN); in capinc_tty_write()
1061 memcpy(skb_put(skb, count), buf, count); in capinc_tty_write()
1063 __skb_queue_tail(&mp->outqueue, skb); in capinc_tty_write()
1064 mp->outbytes += skb->len; in capinc_tty_write()
1076 struct sk_buff *skb; in capinc_tty_put_char() local
1082 skb = mp->outskb; in capinc_tty_put_char()
1083 if (skb) { in capinc_tty_put_char()
1084 if (skb_tailroom(skb) > 0) { in capinc_tty_put_char()
1085 *(skb_put(skb, 1)) = ch; in capinc_tty_put_char()
1089 __skb_queue_tail(&mp->outqueue, skb); in capinc_tty_put_char()
1090 mp->outbytes += skb->len; in capinc_tty_put_char()
1094 skb = alloc_skb(CAPI_DATA_B3_REQ_LEN + CAPI_MAX_BLKSIZE, GFP_ATOMIC); in capinc_tty_put_char()
1095 if (skb) { in capinc_tty_put_char()
1096 skb_reserve(skb, CAPI_DATA_B3_REQ_LEN); in capinc_tty_put_char()
1097 *(skb_put(skb, 1)) = ch; in capinc_tty_put_char()
1098 mp->outskb = skb; in capinc_tty_put_char()
1116 struct sk_buff *skb; in capinc_tty_flush_chars() local
1121 skb = mp->outskb; in capinc_tty_flush_chars()
1122 if (skb) { in capinc_tty_flush_chars()
1124 __skb_queue_tail(&mp->outqueue, skb); in capinc_tty_flush_chars()
1125 mp->outbytes += skb->len; in capinc_tty_flush_chars()