shdlc 126 net/nfc/hci/llc_shdlc.c static struct sk_buff *llc_shdlc_alloc_skb(struct llc_shdlc *shdlc, shdlc 131 net/nfc/hci/llc_shdlc.c skb = alloc_skb(shdlc->tx_headroom + SHDLC_LLC_HEAD_ROOM + shdlc 132 net/nfc/hci/llc_shdlc.c shdlc->tx_tailroom + payload_len, GFP_KERNEL); shdlc 134 net/nfc/hci/llc_shdlc.c skb_reserve(skb, shdlc->tx_headroom + SHDLC_LLC_HEAD_ROOM); shdlc 140 net/nfc/hci/llc_shdlc.c static int llc_shdlc_send_s_frame(struct llc_shdlc *shdlc, shdlc 148 net/nfc/hci/llc_shdlc.c skb = llc_shdlc_alloc_skb(shdlc, 0); shdlc 154 net/nfc/hci/llc_shdlc.c r = shdlc->xmit_to_drv(shdlc->hdev, skb); shdlc 162 net/nfc/hci/llc_shdlc.c static int llc_shdlc_send_u_frame(struct llc_shdlc *shdlc, shdlc 172 net/nfc/hci/llc_shdlc.c r = shdlc->xmit_to_drv(shdlc->hdev, skb); shdlc 183 net/nfc/hci/llc_shdlc.c static void llc_shdlc_reset_t2(struct llc_shdlc *shdlc, int y_nr) shdlc 186 net/nfc/hci/llc_shdlc.c int dnr = shdlc->dnr; /* MUST initially be < y_nr */ shdlc 193 net/nfc/hci/llc_shdlc.c skb = skb_dequeue(&shdlc->ack_pending_q); shdlc 199 net/nfc/hci/llc_shdlc.c if (skb_queue_empty(&shdlc->ack_pending_q)) { shdlc 200 net/nfc/hci/llc_shdlc.c if (shdlc->t2_active) { shdlc 201 net/nfc/hci/llc_shdlc.c del_timer_sync(&shdlc->t2_timer); shdlc 202 net/nfc/hci/llc_shdlc.c shdlc->t2_active = false; shdlc 208 net/nfc/hci/llc_shdlc.c skb = skb_peek(&shdlc->ack_pending_q); shdlc 210 net/nfc/hci/llc_shdlc.c mod_timer(&shdlc->t2_timer, *(unsigned long *)skb->cb + shdlc 212 net/nfc/hci/llc_shdlc.c shdlc->t2_active = true; shdlc 223 net/nfc/hci/llc_shdlc.c static void llc_shdlc_rcv_i_frame(struct llc_shdlc *shdlc, shdlc 231 net/nfc/hci/llc_shdlc.c if (shdlc->state != SHDLC_CONNECTED) shdlc 234 net/nfc/hci/llc_shdlc.c if (x_ns != shdlc->nr) { shdlc 235 net/nfc/hci/llc_shdlc.c llc_shdlc_send_s_frame(shdlc, S_FRAME_REJ, shdlc->nr); shdlc 239 net/nfc/hci/llc_shdlc.c if (shdlc->t1_active == false) { shdlc 240 net/nfc/hci/llc_shdlc.c shdlc->t1_active = true; shdlc 241 net/nfc/hci/llc_shdlc.c mod_timer(&shdlc->t1_timer, jiffies + shdlc 242 net/nfc/hci/llc_shdlc.c msecs_to_jiffies(SHDLC_T1_VALUE_MS(shdlc->w))); shdlc 247 net/nfc/hci/llc_shdlc.c shdlc->rcv_to_hci(shdlc->hdev, skb); shdlc 251 net/nfc/hci/llc_shdlc.c shdlc->nr = (shdlc->nr + 1) % 8; shdlc 253 net/nfc/hci/llc_shdlc.c if (llc_shdlc_x_lt_y_lteq_z(shdlc->dnr, y_nr, shdlc->ns)) { shdlc 254 net/nfc/hci/llc_shdlc.c llc_shdlc_reset_t2(shdlc, y_nr); shdlc 256 net/nfc/hci/llc_shdlc.c shdlc->dnr = y_nr; shdlc 263 net/nfc/hci/llc_shdlc.c static void llc_shdlc_rcv_ack(struct llc_shdlc *shdlc, int y_nr) shdlc 267 net/nfc/hci/llc_shdlc.c if (llc_shdlc_x_lt_y_lteq_z(shdlc->dnr, y_nr, shdlc->ns)) { shdlc 268 net/nfc/hci/llc_shdlc.c llc_shdlc_reset_t2(shdlc, y_nr); shdlc 269 net/nfc/hci/llc_shdlc.c shdlc->dnr = y_nr; shdlc 273 net/nfc/hci/llc_shdlc.c static void llc_shdlc_requeue_ack_pending(struct llc_shdlc *shdlc) shdlc 277 net/nfc/hci/llc_shdlc.c pr_debug("ns reset to %d\n", shdlc->dnr); shdlc 279 net/nfc/hci/llc_shdlc.c while ((skb = skb_dequeue_tail(&shdlc->ack_pending_q))) { shdlc 281 net/nfc/hci/llc_shdlc.c skb_queue_head(&shdlc->send_q, skb); shdlc 283 net/nfc/hci/llc_shdlc.c shdlc->ns = shdlc->dnr; shdlc 286 net/nfc/hci/llc_shdlc.c static void llc_shdlc_rcv_rej(struct llc_shdlc *shdlc, int y_nr) shdlc 292 net/nfc/hci/llc_shdlc.c if (llc_shdlc_x_lteq_y_lt_z(shdlc->dnr, y_nr, shdlc->ns)) { shdlc 293 net/nfc/hci/llc_shdlc.c if (shdlc->t2_active) { shdlc 294 net/nfc/hci/llc_shdlc.c del_timer_sync(&shdlc->t2_timer); shdlc 295 net/nfc/hci/llc_shdlc.c shdlc->t2_active = false; shdlc 299 net/nfc/hci/llc_shdlc.c if (shdlc->dnr != y_nr) { shdlc 300 net/nfc/hci/llc_shdlc.c while ((shdlc->dnr = ((shdlc->dnr + 1) % 8)) != y_nr) { shdlc 301 net/nfc/hci/llc_shdlc.c skb = skb_dequeue(&shdlc->ack_pending_q); shdlc 306 net/nfc/hci/llc_shdlc.c llc_shdlc_requeue_ack_pending(shdlc); shdlc 311 net/nfc/hci/llc_shdlc.c static void llc_shdlc_rcv_s_frame(struct llc_shdlc *shdlc, shdlc 316 net/nfc/hci/llc_shdlc.c if (shdlc->state != SHDLC_CONNECTED) shdlc 321 net/nfc/hci/llc_shdlc.c llc_shdlc_rcv_ack(shdlc, nr); shdlc 322 net/nfc/hci/llc_shdlc.c if (shdlc->rnr == true) { /* see SHDLC 10.7.7 */ shdlc 323 net/nfc/hci/llc_shdlc.c shdlc->rnr = false; shdlc 324 net/nfc/hci/llc_shdlc.c if (shdlc->send_q.qlen == 0) { shdlc 325 net/nfc/hci/llc_shdlc.c skb = llc_shdlc_alloc_skb(shdlc, 0); shdlc 327 net/nfc/hci/llc_shdlc.c skb_queue_tail(&shdlc->send_q, skb); shdlc 332 net/nfc/hci/llc_shdlc.c llc_shdlc_rcv_rej(shdlc, nr); shdlc 335 net/nfc/hci/llc_shdlc.c llc_shdlc_rcv_ack(shdlc, nr); shdlc 336 net/nfc/hci/llc_shdlc.c shdlc->rnr = true; shdlc 343 net/nfc/hci/llc_shdlc.c static void llc_shdlc_connect_complete(struct llc_shdlc *shdlc, int r) shdlc 347 net/nfc/hci/llc_shdlc.c del_timer_sync(&shdlc->connect_timer); shdlc 350 net/nfc/hci/llc_shdlc.c shdlc->ns = 0; shdlc 351 net/nfc/hci/llc_shdlc.c shdlc->nr = 0; shdlc 352 net/nfc/hci/llc_shdlc.c shdlc->dnr = 0; shdlc 354 net/nfc/hci/llc_shdlc.c shdlc->state = SHDLC_HALF_CONNECTED; shdlc 356 net/nfc/hci/llc_shdlc.c shdlc->state = SHDLC_DISCONNECTED; shdlc 359 net/nfc/hci/llc_shdlc.c shdlc->connect_result = r; shdlc 361 net/nfc/hci/llc_shdlc.c wake_up(shdlc->connect_wq); shdlc 364 net/nfc/hci/llc_shdlc.c static int llc_shdlc_connect_initiate(struct llc_shdlc *shdlc) shdlc 370 net/nfc/hci/llc_shdlc.c skb = llc_shdlc_alloc_skb(shdlc, 2); shdlc 377 net/nfc/hci/llc_shdlc.c return llc_shdlc_send_u_frame(shdlc, skb, U_FRAME_RSET); shdlc 380 net/nfc/hci/llc_shdlc.c static int llc_shdlc_connect_send_ua(struct llc_shdlc *shdlc) shdlc 386 net/nfc/hci/llc_shdlc.c skb = llc_shdlc_alloc_skb(shdlc, 0); shdlc 390 net/nfc/hci/llc_shdlc.c return llc_shdlc_send_u_frame(shdlc, skb, U_FRAME_UA); shdlc 393 net/nfc/hci/llc_shdlc.c static void llc_shdlc_rcv_u_frame(struct llc_shdlc *shdlc, shdlc 405 net/nfc/hci/llc_shdlc.c switch (shdlc->state) { shdlc 421 net/nfc/hci/llc_shdlc.c shdlc->w = w; shdlc 422 net/nfc/hci/llc_shdlc.c shdlc->srej_support = srej_support; shdlc 423 net/nfc/hci/llc_shdlc.c r = llc_shdlc_connect_send_ua(shdlc); shdlc 424 net/nfc/hci/llc_shdlc.c llc_shdlc_connect_complete(shdlc, r); shdlc 438 net/nfc/hci/llc_shdlc.c shdlc->hard_fault = -ECONNRESET; shdlc 445 net/nfc/hci/llc_shdlc.c if ((shdlc->state == SHDLC_CONNECTING && shdlc 446 net/nfc/hci/llc_shdlc.c shdlc->connect_tries > 0) || shdlc 447 net/nfc/hci/llc_shdlc.c (shdlc->state == SHDLC_NEGOTIATING)) { shdlc 448 net/nfc/hci/llc_shdlc.c llc_shdlc_connect_complete(shdlc, 0); shdlc 449 net/nfc/hci/llc_shdlc.c shdlc->state = SHDLC_CONNECTED; shdlc 459 net/nfc/hci/llc_shdlc.c static void llc_shdlc_handle_rcv_queue(struct llc_shdlc *shdlc) shdlc 468 net/nfc/hci/llc_shdlc.c if (shdlc->rcv_q.qlen) shdlc 469 net/nfc/hci/llc_shdlc.c pr_debug("rcvQlen=%d\n", shdlc->rcv_q.qlen); shdlc 471 net/nfc/hci/llc_shdlc.c while ((skb = skb_dequeue(&shdlc->rcv_q)) != NULL) { shdlc 477 net/nfc/hci/llc_shdlc.c if (shdlc->state == SHDLC_HALF_CONNECTED) shdlc 478 net/nfc/hci/llc_shdlc.c shdlc->state = SHDLC_CONNECTED; shdlc 482 net/nfc/hci/llc_shdlc.c llc_shdlc_rcv_i_frame(shdlc, skb, ns, nr); shdlc 485 net/nfc/hci/llc_shdlc.c if (shdlc->state == SHDLC_HALF_CONNECTED) shdlc 486 net/nfc/hci/llc_shdlc.c shdlc->state = SHDLC_CONNECTED; shdlc 490 net/nfc/hci/llc_shdlc.c llc_shdlc_rcv_s_frame(shdlc, s_frame_type, nr); shdlc 495 net/nfc/hci/llc_shdlc.c llc_shdlc_rcv_u_frame(shdlc, skb, u_frame_modifier); shdlc 518 net/nfc/hci/llc_shdlc.c static void llc_shdlc_handle_send_queue(struct llc_shdlc *shdlc) shdlc 524 net/nfc/hci/llc_shdlc.c if (shdlc->send_q.qlen) shdlc 527 net/nfc/hci/llc_shdlc.c shdlc->send_q.qlen, shdlc->ns, shdlc->dnr, shdlc 528 net/nfc/hci/llc_shdlc.c shdlc->rnr == false ? "false" : "true", shdlc 529 net/nfc/hci/llc_shdlc.c shdlc->w - llc_shdlc_w_used(shdlc->ns, shdlc->dnr), shdlc 530 net/nfc/hci/llc_shdlc.c shdlc->ack_pending_q.qlen); shdlc 532 net/nfc/hci/llc_shdlc.c while (shdlc->send_q.qlen && shdlc->ack_pending_q.qlen < shdlc->w && shdlc 533 net/nfc/hci/llc_shdlc.c (shdlc->rnr == false)) { shdlc 535 net/nfc/hci/llc_shdlc.c if (shdlc->t1_active) { shdlc 536 net/nfc/hci/llc_shdlc.c del_timer_sync(&shdlc->t1_timer); shdlc 537 net/nfc/hci/llc_shdlc.c shdlc->t1_active = false; shdlc 541 net/nfc/hci/llc_shdlc.c skb = skb_dequeue(&shdlc->send_q); shdlc 543 net/nfc/hci/llc_shdlc.c *(u8 *)skb_push(skb, 1) = SHDLC_CONTROL_HEAD_I | (shdlc->ns << 3) | shdlc 544 net/nfc/hci/llc_shdlc.c shdlc->nr; shdlc 546 net/nfc/hci/llc_shdlc.c pr_debug("Sending I-Frame %d, waiting to rcv %d\n", shdlc->ns, shdlc 547 net/nfc/hci/llc_shdlc.c shdlc->nr); shdlc 550 net/nfc/hci/llc_shdlc.c r = shdlc->xmit_to_drv(shdlc->hdev, skb); shdlc 552 net/nfc/hci/llc_shdlc.c shdlc->hard_fault = r; shdlc 556 net/nfc/hci/llc_shdlc.c shdlc->ns = (shdlc->ns + 1) % 8; shdlc 561 net/nfc/hci/llc_shdlc.c skb_queue_tail(&shdlc->ack_pending_q, skb); shdlc 563 net/nfc/hci/llc_shdlc.c if (shdlc->t2_active == false) { shdlc 564 net/nfc/hci/llc_shdlc.c shdlc->t2_active = true; shdlc 565 net/nfc/hci/llc_shdlc.c mod_timer(&shdlc->t2_timer, time_sent + shdlc 574 net/nfc/hci/llc_shdlc.c struct llc_shdlc *shdlc = from_timer(shdlc, t, connect_timer); shdlc 578 net/nfc/hci/llc_shdlc.c schedule_work(&shdlc->sm_work); shdlc 583 net/nfc/hci/llc_shdlc.c struct llc_shdlc *shdlc = from_timer(shdlc, t, t1_timer); shdlc 587 net/nfc/hci/llc_shdlc.c schedule_work(&shdlc->sm_work); shdlc 592 net/nfc/hci/llc_shdlc.c struct llc_shdlc *shdlc = from_timer(shdlc, t, t2_timer); shdlc 596 net/nfc/hci/llc_shdlc.c schedule_work(&shdlc->sm_work); shdlc 601 net/nfc/hci/llc_shdlc.c struct llc_shdlc *shdlc = container_of(work, struct llc_shdlc, sm_work); shdlc 606 net/nfc/hci/llc_shdlc.c mutex_lock(&shdlc->state_mutex); shdlc 608 net/nfc/hci/llc_shdlc.c switch (shdlc->state) { shdlc 610 net/nfc/hci/llc_shdlc.c skb_queue_purge(&shdlc->rcv_q); shdlc 611 net/nfc/hci/llc_shdlc.c skb_queue_purge(&shdlc->send_q); shdlc 612 net/nfc/hci/llc_shdlc.c skb_queue_purge(&shdlc->ack_pending_q); shdlc 615 net/nfc/hci/llc_shdlc.c if (shdlc->hard_fault) { shdlc 616 net/nfc/hci/llc_shdlc.c llc_shdlc_connect_complete(shdlc, shdlc->hard_fault); shdlc 620 net/nfc/hci/llc_shdlc.c if (shdlc->connect_tries++ < 5) shdlc 621 net/nfc/hci/llc_shdlc.c r = llc_shdlc_connect_initiate(shdlc); shdlc 625 net/nfc/hci/llc_shdlc.c llc_shdlc_connect_complete(shdlc, r); shdlc 627 net/nfc/hci/llc_shdlc.c mod_timer(&shdlc->connect_timer, jiffies + shdlc 630 net/nfc/hci/llc_shdlc.c shdlc->state = SHDLC_NEGOTIATING; shdlc 634 net/nfc/hci/llc_shdlc.c if (timer_pending(&shdlc->connect_timer) == 0) { shdlc 635 net/nfc/hci/llc_shdlc.c shdlc->state = SHDLC_CONNECTING; shdlc 636 net/nfc/hci/llc_shdlc.c schedule_work(&shdlc->sm_work); shdlc 639 net/nfc/hci/llc_shdlc.c llc_shdlc_handle_rcv_queue(shdlc); shdlc 641 net/nfc/hci/llc_shdlc.c if (shdlc->hard_fault) { shdlc 642 net/nfc/hci/llc_shdlc.c llc_shdlc_connect_complete(shdlc, shdlc->hard_fault); shdlc 648 net/nfc/hci/llc_shdlc.c llc_shdlc_handle_rcv_queue(shdlc); shdlc 649 net/nfc/hci/llc_shdlc.c llc_shdlc_handle_send_queue(shdlc); shdlc 651 net/nfc/hci/llc_shdlc.c if (shdlc->t1_active && timer_pending(&shdlc->t1_timer) == 0) { shdlc 655 net/nfc/hci/llc_shdlc.c shdlc->t1_active = false; shdlc 656 net/nfc/hci/llc_shdlc.c r = llc_shdlc_send_s_frame(shdlc, S_FRAME_RR, shdlc 657 net/nfc/hci/llc_shdlc.c shdlc->nr); shdlc 659 net/nfc/hci/llc_shdlc.c shdlc->hard_fault = r; shdlc 662 net/nfc/hci/llc_shdlc.c if (shdlc->t2_active && timer_pending(&shdlc->t2_timer) == 0) { shdlc 666 net/nfc/hci/llc_shdlc.c shdlc->t2_active = false; shdlc 668 net/nfc/hci/llc_shdlc.c llc_shdlc_requeue_ack_pending(shdlc); shdlc 669 net/nfc/hci/llc_shdlc.c llc_shdlc_handle_send_queue(shdlc); shdlc 672 net/nfc/hci/llc_shdlc.c if (shdlc->hard_fault) shdlc 673 net/nfc/hci/llc_shdlc.c shdlc->llc_failure(shdlc->hdev, shdlc->hard_fault); shdlc 678 net/nfc/hci/llc_shdlc.c mutex_unlock(&shdlc->state_mutex); shdlc 685 net/nfc/hci/llc_shdlc.c static int llc_shdlc_connect(struct llc_shdlc *shdlc) shdlc 691 net/nfc/hci/llc_shdlc.c mutex_lock(&shdlc->state_mutex); shdlc 693 net/nfc/hci/llc_shdlc.c shdlc->state = SHDLC_CONNECTING; shdlc 694 net/nfc/hci/llc_shdlc.c shdlc->connect_wq = &connect_wq; shdlc 695 net/nfc/hci/llc_shdlc.c shdlc->connect_tries = 0; shdlc 696 net/nfc/hci/llc_shdlc.c shdlc->connect_result = 1; shdlc 698 net/nfc/hci/llc_shdlc.c mutex_unlock(&shdlc->state_mutex); shdlc 700 net/nfc/hci/llc_shdlc.c schedule_work(&shdlc->sm_work); shdlc 702 net/nfc/hci/llc_shdlc.c wait_event(connect_wq, shdlc->connect_result != 1); shdlc 704 net/nfc/hci/llc_shdlc.c return shdlc->connect_result; shdlc 707 net/nfc/hci/llc_shdlc.c static void llc_shdlc_disconnect(struct llc_shdlc *shdlc) shdlc 711 net/nfc/hci/llc_shdlc.c mutex_lock(&shdlc->state_mutex); shdlc 713 net/nfc/hci/llc_shdlc.c shdlc->state = SHDLC_DISCONNECTED; shdlc 715 net/nfc/hci/llc_shdlc.c mutex_unlock(&shdlc->state_mutex); shdlc 717 net/nfc/hci/llc_shdlc.c schedule_work(&shdlc->sm_work); shdlc 725 net/nfc/hci/llc_shdlc.c static void llc_shdlc_recv_frame(struct llc_shdlc *shdlc, struct sk_buff *skb) shdlc 729 net/nfc/hci/llc_shdlc.c shdlc->hard_fault = -EREMOTEIO; shdlc 732 net/nfc/hci/llc_shdlc.c skb_queue_tail(&shdlc->rcv_q, skb); shdlc 735 net/nfc/hci/llc_shdlc.c schedule_work(&shdlc->sm_work); shdlc 743 net/nfc/hci/llc_shdlc.c struct llc_shdlc *shdlc; shdlc 748 net/nfc/hci/llc_shdlc.c shdlc = kzalloc(sizeof(struct llc_shdlc), GFP_KERNEL); shdlc 749 net/nfc/hci/llc_shdlc.c if (shdlc == NULL) shdlc 752 net/nfc/hci/llc_shdlc.c mutex_init(&shdlc->state_mutex); shdlc 753 net/nfc/hci/llc_shdlc.c shdlc->state = SHDLC_DISCONNECTED; shdlc 755 net/nfc/hci/llc_shdlc.c timer_setup(&shdlc->connect_timer, llc_shdlc_connect_timeout, 0); shdlc 756 net/nfc/hci/llc_shdlc.c timer_setup(&shdlc->t1_timer, llc_shdlc_t1_timeout, 0); shdlc 757 net/nfc/hci/llc_shdlc.c timer_setup(&shdlc->t2_timer, llc_shdlc_t2_timeout, 0); shdlc 759 net/nfc/hci/llc_shdlc.c shdlc->w = SHDLC_MAX_WINDOW; shdlc 760 net/nfc/hci/llc_shdlc.c shdlc->srej_support = SHDLC_SREJ_SUPPORT; shdlc 762 net/nfc/hci/llc_shdlc.c skb_queue_head_init(&shdlc->rcv_q); shdlc 763 net/nfc/hci/llc_shdlc.c skb_queue_head_init(&shdlc->send_q); shdlc 764 net/nfc/hci/llc_shdlc.c skb_queue_head_init(&shdlc->ack_pending_q); shdlc 766 net/nfc/hci/llc_shdlc.c INIT_WORK(&shdlc->sm_work, llc_shdlc_sm_work); shdlc 768 net/nfc/hci/llc_shdlc.c shdlc->hdev = hdev; shdlc 769 net/nfc/hci/llc_shdlc.c shdlc->xmit_to_drv = xmit_to_drv; shdlc 770 net/nfc/hci/llc_shdlc.c shdlc->rcv_to_hci = rcv_to_hci; shdlc 771 net/nfc/hci/llc_shdlc.c shdlc->tx_headroom = tx_headroom; shdlc 772 net/nfc/hci/llc_shdlc.c shdlc->tx_tailroom = tx_tailroom; shdlc 773 net/nfc/hci/llc_shdlc.c shdlc->llc_failure = llc_failure; shdlc 775 net/nfc/hci/llc_shdlc.c return shdlc; shdlc 780 net/nfc/hci/llc_shdlc.c struct llc_shdlc *shdlc = nfc_llc_get_data(llc); shdlc 782 net/nfc/hci/llc_shdlc.c skb_queue_purge(&shdlc->rcv_q); shdlc 783 net/nfc/hci/llc_shdlc.c skb_queue_purge(&shdlc->send_q); shdlc 784 net/nfc/hci/llc_shdlc.c skb_queue_purge(&shdlc->ack_pending_q); shdlc 786 net/nfc/hci/llc_shdlc.c kfree(shdlc); shdlc 791 net/nfc/hci/llc_shdlc.c struct llc_shdlc *shdlc = nfc_llc_get_data(llc); shdlc 793 net/nfc/hci/llc_shdlc.c return llc_shdlc_connect(shdlc); shdlc 798 net/nfc/hci/llc_shdlc.c struct llc_shdlc *shdlc = nfc_llc_get_data(llc); shdlc 800 net/nfc/hci/llc_shdlc.c llc_shdlc_disconnect(shdlc); shdlc 807 net/nfc/hci/llc_shdlc.c struct llc_shdlc *shdlc = nfc_llc_get_data(llc); shdlc 809 net/nfc/hci/llc_shdlc.c llc_shdlc_recv_frame(shdlc, skb); shdlc 814 net/nfc/hci/llc_shdlc.c struct llc_shdlc *shdlc = nfc_llc_get_data(llc); shdlc 816 net/nfc/hci/llc_shdlc.c skb_queue_tail(&shdlc->send_q, skb); shdlc 818 net/nfc/hci/llc_shdlc.c schedule_work(&shdlc->sm_work);