Lines Matching refs:skb

47 static void irlap_send_i_frame(struct irlap_cb *self, struct sk_buff *skb,
58 struct sk_buff *skb) in irlap_insert_info() argument
60 struct irda_skb_cb *cb = (struct irda_skb_cb *) skb->cb; in irlap_insert_info()
93 void irlap_queue_xmit(struct irlap_cb *self, struct sk_buff *skb) in irlap_queue_xmit() argument
96 skb->dev = self->netdev; in irlap_queue_xmit()
97 skb_reset_mac_header(skb); in irlap_queue_xmit()
98 skb_reset_network_header(skb); in irlap_queue_xmit()
99 skb_reset_transport_header(skb); in irlap_queue_xmit()
100 skb->protocol = htons(ETH_P_IRDA); in irlap_queue_xmit()
101 skb->priority = TC_PRIO_BESTEFFORT; in irlap_queue_xmit()
103 irlap_insert_info(self, skb); in irlap_queue_xmit()
108 dev_kfree_skb(skb); in irlap_queue_xmit()
112 dev_queue_xmit(skb); in irlap_queue_xmit()
172 static void irlap_recv_snrm_cmd(struct irlap_cb *self, struct sk_buff *skb, in irlap_recv_snrm_cmd() argument
177 if (pskb_may_pull(skb,sizeof(struct snrm_frame))) { in irlap_recv_snrm_cmd()
178 frame = (struct snrm_frame *) skb->data; in irlap_recv_snrm_cmd()
200 irlap_do_event(self, RECV_SNRM_CMD, skb, info); in irlap_recv_snrm_cmd()
203 irlap_do_event(self, RECV_SNRM_CMD, skb, NULL); in irlap_recv_snrm_cmd()
408 struct sk_buff *skb, in irlap_recv_discovery_xid_rsp() argument
419 if (!pskb_may_pull(skb, sizeof(struct xid_frame))) { in irlap_recv_discovery_xid_rsp()
424 xid = (struct xid_frame *) skb->data; in irlap_recv_discovery_xid_rsp()
448 discovery_info = skb_pull(skb, sizeof(struct xid_frame)); in irlap_recv_discovery_xid_rsp()
466 skb->data[skb->len] = '\0'; in irlap_recv_discovery_xid_rsp()
472 irlap_do_event(self, RECV_DISCOVERY_XID_RSP, skb, info); in irlap_recv_discovery_xid_rsp()
482 struct sk_buff *skb, in irlap_recv_discovery_xid_cmd() argument
490 if (!pskb_may_pull(skb, sizeof(struct xid_frame))) { in irlap_recv_discovery_xid_cmd()
495 xid = (struct xid_frame *) skb->data; in irlap_recv_discovery_xid_cmd()
526 discovery_info = skb_pull(skb, sizeof(struct xid_frame)); in irlap_recv_discovery_xid_cmd()
534 !pskb_may_pull(skb, 3)) { in irlap_recv_discovery_xid_cmd()
565 skb->data[skb->len] = '\0'; in irlap_recv_discovery_xid_cmd()
573 irlap_do_event(self, RECV_DISCOVERY_XID_CMD, skb, info); in irlap_recv_discovery_xid_cmd()
632 struct sk_buff *skb, in irlap_recv_rr_frame() argument
635 info->nr = skb->data[1] >> 5; in irlap_recv_rr_frame()
639 irlap_do_event(self, RECV_RR_CMD, skb, info); in irlap_recv_rr_frame()
641 irlap_do_event(self, RECV_RR_RSP, skb, info); in irlap_recv_rr_frame()
650 static void irlap_recv_rnr_frame(struct irlap_cb *self, struct sk_buff *skb, in irlap_recv_rnr_frame() argument
653 info->nr = skb->data[1] >> 5; in irlap_recv_rnr_frame()
658 irlap_do_event(self, RECV_RNR_CMD, skb, info); in irlap_recv_rnr_frame()
660 irlap_do_event(self, RECV_RNR_RSP, skb, info); in irlap_recv_rnr_frame()
663 static void irlap_recv_rej_frame(struct irlap_cb *self, struct sk_buff *skb, in irlap_recv_rej_frame() argument
666 info->nr = skb->data[1] >> 5; in irlap_recv_rej_frame()
670 irlap_do_event(self, RECV_REJ_CMD, skb, info); in irlap_recv_rej_frame()
672 irlap_do_event(self, RECV_REJ_RSP, skb, info); in irlap_recv_rej_frame()
675 static void irlap_recv_srej_frame(struct irlap_cb *self, struct sk_buff *skb, in irlap_recv_srej_frame() argument
678 info->nr = skb->data[1] >> 5; in irlap_recv_srej_frame()
682 irlap_do_event(self, RECV_SREJ_CMD, skb, info); in irlap_recv_srej_frame()
684 irlap_do_event(self, RECV_SREJ_RSP, skb, info); in irlap_recv_srej_frame()
687 static void irlap_recv_disc_frame(struct irlap_cb *self, struct sk_buff *skb, in irlap_recv_disc_frame() argument
692 irlap_do_event(self, RECV_DISC_CMD, skb, info); in irlap_recv_disc_frame()
694 irlap_do_event(self, RECV_RD_RSP, skb, info); in irlap_recv_disc_frame()
704 struct sk_buff *skb, in irlap_recv_ua_frame() argument
707 irlap_do_event(self, RECV_UA_RSP, skb, info); in irlap_recv_ua_frame()
716 void irlap_send_data_primary(struct irlap_cb *self, struct sk_buff *skb) in irlap_send_data_primary() argument
720 if (skb->data[1] == I_FRAME) { in irlap_send_data_primary()
726 skb->data[1] = I_FRAME | (self->vs << 1); in irlap_send_data_primary()
732 skb_get(skb); in irlap_send_data_primary()
733 skb_queue_tail(&self->wx_list, skb); in irlap_send_data_primary()
736 tx_skb = skb_clone(skb, GFP_ATOMIC); in irlap_send_data_primary()
748 irlap_send_ui_frame(self, skb_get(skb), self->caddr, CMD_FRAME); in irlap_send_data_primary()
757 void irlap_send_data_primary_poll(struct irlap_cb *self, struct sk_buff *skb) in irlap_send_data_primary_poll() argument
766 if (skb->data[1] == I_FRAME) { in irlap_send_data_primary_poll()
772 skb->data[1] = I_FRAME | (self->vs << 1); in irlap_send_data_primary_poll()
778 skb_get(skb); in irlap_send_data_primary_poll()
779 skb_queue_tail(&self->wx_list, skb); in irlap_send_data_primary_poll()
782 tx_skb = skb_clone(skb, GFP_ATOMIC); in irlap_send_data_primary_poll()
803 irlap_send_ui_frame(self, skb_get(skb), self->caddr, CMD_FRAME); in irlap_send_data_primary_poll()
808 skb->data[1] |= PF_BIT; in irlap_send_data_primary_poll()
810 irlap_send_ui_frame(self, skb_get(skb), self->caddr, CMD_FRAME); in irlap_send_data_primary_poll()
868 struct sk_buff *skb) in irlap_send_data_secondary_final() argument
874 IRDA_ASSERT(skb != NULL, return;); in irlap_send_data_secondary_final()
877 if (skb->data[1] == I_FRAME) { in irlap_send_data_secondary_final()
883 skb->data[1] = I_FRAME | (self->vs << 1); in irlap_send_data_secondary_final()
889 skb_get(skb); in irlap_send_data_secondary_final()
890 skb_queue_tail(&self->wx_list, skb); in irlap_send_data_secondary_final()
892 tx_skb = skb_clone(skb, GFP_ATOMIC); in irlap_send_data_secondary_final()
905 irlap_send_ui_frame(self, skb_get(skb), self->caddr, RSP_FRAME); in irlap_send_data_secondary_final()
909 skb->data[1] |= PF_BIT; in irlap_send_data_secondary_final()
910 irlap_send_ui_frame(self, skb_get(skb), self->caddr, RSP_FRAME); in irlap_send_data_secondary_final()
929 void irlap_send_data_secondary(struct irlap_cb *self, struct sk_buff *skb) in irlap_send_data_secondary() argument
934 if (skb->data[1] == I_FRAME) { in irlap_send_data_secondary()
940 skb->data[1] = I_FRAME | (self->vs << 1); in irlap_send_data_secondary()
946 skb_get(skb); in irlap_send_data_secondary()
947 skb_queue_tail(&self->wx_list, skb); in irlap_send_data_secondary()
949 tx_skb = skb_clone(skb, GFP_ATOMIC); in irlap_send_data_secondary()
960 irlap_send_ui_frame(self, skb_get(skb), self->caddr, RSP_FRAME); in irlap_send_data_secondary()
975 struct sk_buff *skb; in irlap_resend_rejected_frames() local
981 skb_queue_walk(&self->wx_list, skb) { in irlap_resend_rejected_frames()
988 tx_skb = skb_copy(skb, GFP_ATOMIC); in irlap_resend_rejected_frames()
1000 if (skb_queue_is_last(&self->wx_list, skb)) in irlap_resend_rejected_frames()
1015 skb = skb_dequeue( &self->txq); in irlap_resend_rejected_frames()
1016 IRDA_ASSERT(skb != NULL, return;); in irlap_resend_rejected_frames()
1024 irlap_send_data_primary(self, skb); in irlap_resend_rejected_frames()
1026 irlap_send_data_primary_poll(self, skb); in irlap_resend_rejected_frames()
1028 kfree_skb(skb); in irlap_resend_rejected_frames()
1037 struct sk_buff *skb; in irlap_resend_rejected_frame() local
1043 skb = skb_peek(&self->wx_list); in irlap_resend_rejected_frame()
1044 if (skb != NULL) { in irlap_resend_rejected_frame()
1051 tx_skb = skb_copy(skb, GFP_ATOMIC); in irlap_resend_rejected_frame()
1073 void irlap_send_ui_frame(struct irlap_cb *self, struct sk_buff *skb, in irlap_send_ui_frame() argument
1078 IRDA_ASSERT(skb != NULL, return;); in irlap_send_ui_frame()
1081 skb->data[0] = caddr | ((command) ? CMD_FRAME : 0); in irlap_send_ui_frame()
1083 irlap_queue_xmit(self, skb); in irlap_send_ui_frame()
1091 static void irlap_send_i_frame(struct irlap_cb *self, struct sk_buff *skb, in irlap_send_i_frame() argument
1095 skb->data[0] = self->caddr; in irlap_send_i_frame()
1096 skb->data[0] |= (command) ? CMD_FRAME : 0; in irlap_send_i_frame()
1099 skb->data[1] |= (self->vr << 5); /* insert nr */ in irlap_send_i_frame()
1101 irlap_queue_xmit(self, skb); in irlap_send_i_frame()
1111 struct sk_buff *skb, in irlap_recv_i_frame() argument
1114 info->nr = skb->data[1] >> 5; /* Next to receive */ in irlap_recv_i_frame()
1115 info->pf = skb->data[1] & PF_BIT; /* Final bit */ in irlap_recv_i_frame()
1116 info->ns = (skb->data[1] >> 1) & 0x07; /* Next to send */ in irlap_recv_i_frame()
1120 irlap_do_event(self, RECV_I_CMD, skb, info); in irlap_recv_i_frame()
1122 irlap_do_event(self, RECV_I_RSP, skb, info); in irlap_recv_i_frame()
1131 static void irlap_recv_ui_frame(struct irlap_cb *self, struct sk_buff *skb, in irlap_recv_ui_frame() argument
1134 info->pf = skb->data[1] & PF_BIT; /* Final bit */ in irlap_recv_ui_frame()
1136 irlap_do_event(self, RECV_UI_FRAME, skb, info); in irlap_recv_ui_frame()
1145 static void irlap_recv_frmr_frame(struct irlap_cb *self, struct sk_buff *skb, in irlap_recv_frmr_frame() argument
1153 IRDA_ASSERT(skb != NULL, return;); in irlap_recv_frmr_frame()
1156 if (!pskb_may_pull(skb, 4)) { in irlap_recv_frmr_frame()
1161 frame = skb->data; in irlap_recv_frmr_frame()
1184 irlap_do_event(self, RECV_FRMR_RSP, skb, info); in irlap_recv_frmr_frame()
1233 static void irlap_recv_test_frame(struct irlap_cb *self, struct sk_buff *skb, in irlap_recv_test_frame() argument
1238 if (!pskb_may_pull(skb, sizeof(*frame))) { in irlap_recv_test_frame()
1242 frame = (struct test_frame *) skb->data; in irlap_recv_test_frame()
1246 if (skb->len < sizeof(struct test_frame)) { in irlap_recv_test_frame()
1264 irlap_do_event(self, RECV_TEST_CMD, skb, info); in irlap_recv_test_frame()
1266 irlap_do_event(self, RECV_TEST_RSP, skb, info); in irlap_recv_test_frame()
1285 int irlap_driver_rcv(struct sk_buff *skb, struct net_device *dev, in irlap_driver_rcv() argument
1307 if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL) { in irlap_driver_rcv()
1313 if (!pskb_may_pull(skb, 2)) { in irlap_driver_rcv()
1318 command = skb->data[0] & CMD_FRAME; in irlap_driver_rcv()
1319 info.caddr = skb->data[0] & CBROADCAST; in irlap_driver_rcv()
1321 info.pf = skb->data[1] & PF_BIT; in irlap_driver_rcv()
1322 info.control = skb->data[1] & ~PF_BIT; /* Mask away poll/final bit */ in irlap_driver_rcv()
1337 irlap_recv_i_frame(self, skb, &info, command); in irlap_driver_rcv()
1351 irlap_recv_rr_frame(self, skb, &info, command); in irlap_driver_rcv()
1354 irlap_recv_rnr_frame(self, skb, &info, command); in irlap_driver_rcv()
1357 irlap_recv_rej_frame(self, skb, &info, command); in irlap_driver_rcv()
1360 irlap_recv_srej_frame(self, skb, &info, command); in irlap_driver_rcv()
1374 irlap_recv_discovery_xid_rsp(self, skb, &info); in irlap_driver_rcv()
1377 irlap_recv_discovery_xid_cmd(self, skb, &info); in irlap_driver_rcv()
1380 irlap_recv_snrm_cmd(self, skb, &info); in irlap_driver_rcv()
1383 irlap_do_event(self, RECV_DM_RSP, skb, &info); in irlap_driver_rcv()
1386 irlap_recv_disc_frame(self, skb, &info, command); in irlap_driver_rcv()
1389 irlap_recv_test_frame(self, skb, &info, command); in irlap_driver_rcv()
1392 irlap_recv_ua_frame(self, skb, &info); in irlap_driver_rcv()
1395 irlap_recv_frmr_frame(self, skb, &info); in irlap_driver_rcv()
1398 irlap_recv_ui_frame(self, skb, &info); in irlap_driver_rcv()
1409 dev_kfree_skb(skb); in irlap_driver_rcv()