Lines Matching refs:self

47 static void irlap_send_i_frame(struct irlap_cb *self, struct sk_buff *skb,
57 static inline void irlap_insert_info(struct irlap_cb *self, in irlap_insert_info() argument
67 cb->mtt = self->mtt_required; in irlap_insert_info()
68 cb->next_speed = self->speed; in irlap_insert_info()
71 self->mtt_required = 0; in irlap_insert_info()
77 cb->xbofs = self->bofs_count; in irlap_insert_info()
78 cb->next_xbofs = self->next_bofs; in irlap_insert_info()
79 cb->xbofs_delay = self->xbofs_delay; in irlap_insert_info()
82 self->xbofs_delay = 0; in irlap_insert_info()
84 self->bofs_count = self->next_bofs; 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()
103 irlap_insert_info(self, skb); in irlap_queue_xmit()
105 if (unlikely(self->mode & IRDA_MODE_MONITOR)) { in irlap_queue_xmit()
107 self->netdev->name); in irlap_queue_xmit()
120 void irlap_send_snrm_frame(struct irlap_cb *self, struct qos_info *qos) in irlap_send_snrm_frame() argument
126 IRDA_ASSERT(self != NULL, return;); in irlap_send_snrm_frame()
127 IRDA_ASSERT(self->magic == LAP_MAGIC, return;); in irlap_send_snrm_frame()
142 frame->caddr = CMD_FRAME | self->caddr; in irlap_send_snrm_frame()
152 frame->saddr = cpu_to_le32(self->saddr); in irlap_send_snrm_frame()
153 frame->daddr = cpu_to_le32(self->daddr); in irlap_send_snrm_frame()
155 frame->ncaddr = self->caddr; in irlap_send_snrm_frame()
157 ret = irlap_insert_qos_negotiation_params(self, tx_skb); in irlap_send_snrm_frame()
163 irlap_queue_xmit(self, tx_skb); in irlap_send_snrm_frame()
172 static void irlap_recv_snrm_cmd(struct irlap_cb *self, struct sk_buff *skb, in irlap_recv_snrm_cmd() argument
195 if (info->saddr != self->saddr) { 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()
213 void irlap_send_ua_response_frame(struct irlap_cb *self, struct qos_info *qos) in irlap_send_ua_response_frame() argument
221 IRDA_ASSERT(self != NULL, return;); in irlap_send_ua_response_frame()
222 IRDA_ASSERT(self->magic == LAP_MAGIC, return;); in irlap_send_ua_response_frame()
234 frame->caddr = self->caddr; in irlap_send_ua_response_frame()
237 frame->saddr = cpu_to_le32(self->saddr); in irlap_send_ua_response_frame()
238 frame->daddr = cpu_to_le32(self->daddr); in irlap_send_ua_response_frame()
242 ret = irlap_insert_qos_negotiation_params(self, tx_skb); in irlap_send_ua_response_frame()
249 irlap_queue_xmit(self, tx_skb); in irlap_send_ua_response_frame()
259 void irlap_send_dm_frame( struct irlap_cb *self) in irlap_send_dm_frame() argument
264 IRDA_ASSERT(self != NULL, return;); in irlap_send_dm_frame()
265 IRDA_ASSERT(self->magic == LAP_MAGIC, return;); in irlap_send_dm_frame()
273 if (self->state == LAP_NDM) in irlap_send_dm_frame()
276 frame->caddr = self->caddr; in irlap_send_dm_frame()
280 irlap_queue_xmit(self, tx_skb); in irlap_send_dm_frame()
289 void irlap_send_disc_frame(struct irlap_cb *self) in irlap_send_disc_frame() argument
294 IRDA_ASSERT(self != NULL, return;); in irlap_send_disc_frame()
295 IRDA_ASSERT(self->magic == LAP_MAGIC, return;); in irlap_send_disc_frame()
303 frame->caddr = self->caddr | CMD_FRAME; in irlap_send_disc_frame()
306 irlap_queue_xmit(self, tx_skb); in irlap_send_disc_frame()
315 void irlap_send_discovery_xid_frame(struct irlap_cb *self, int S, __u8 s, in irlap_send_discovery_xid_frame() argument
326 IRDA_ASSERT(self != NULL, return;); in irlap_send_discovery_xid_frame()
327 IRDA_ASSERT(self->magic == LAP_MAGIC, return;); in irlap_send_discovery_xid_frame()
347 frame->saddr = cpu_to_le32(self->saddr); in irlap_send_discovery_xid_frame()
398 irlap_queue_xmit(self, tx_skb); in irlap_send_discovery_xid_frame()
407 static void irlap_recv_discovery_xid_rsp(struct irlap_cb *self, in irlap_recv_discovery_xid_rsp() argument
416 IRDA_ASSERT(self != NULL, return;); in irlap_recv_discovery_xid_rsp()
417 IRDA_ASSERT(self->magic == LAP_MAGIC, return;); in irlap_recv_discovery_xid_rsp()
430 if ((info->saddr != self->saddr) && (info->saddr != BROADCAST)) { in irlap_recv_discovery_xid_rsp()
442 discovery->data.saddr = self->saddr; in irlap_recv_discovery_xid_rsp()
472 irlap_do_event(self, RECV_DISCOVERY_XID_RSP, skb, info); in irlap_recv_discovery_xid_rsp()
481 static void irlap_recv_discovery_xid_cmd(struct irlap_cb *self, in irlap_recv_discovery_xid_cmd() argument
501 if ((info->saddr != self->saddr) && (info->saddr != BROADCAST)) { in irlap_recv_discovery_xid_cmd()
548 discovery->data.saddr = self->saddr; in irlap_recv_discovery_xid_cmd()
573 irlap_do_event(self, RECV_DISCOVERY_XID_CMD, skb, info); in irlap_recv_discovery_xid_cmd()
582 void irlap_send_rr_frame(struct irlap_cb *self, int command) in irlap_send_rr_frame() argument
593 frame->caddr = self->caddr; in irlap_send_rr_frame()
596 frame->control = RR | PF_BIT | (self->vr << 5); in irlap_send_rr_frame()
598 irlap_queue_xmit(self, tx_skb); in irlap_send_rr_frame()
607 void irlap_send_rd_frame(struct irlap_cb *self) in irlap_send_rd_frame() argument
618 frame->caddr = self->caddr; in irlap_send_rd_frame()
621 irlap_queue_xmit(self, tx_skb); in irlap_send_rd_frame()
631 static inline void irlap_recv_rr_frame(struct irlap_cb *self, in irlap_recv_rr_frame() argument
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
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
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
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()
703 static inline void irlap_recv_ua_frame(struct irlap_cb *self, 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
726 skb->data[1] = I_FRAME | (self->vs << 1); in irlap_send_data_primary()
733 skb_queue_tail(&self->wx_list, skb); in irlap_send_data_primary()
741 self->vs = (self->vs + 1) % 8; in irlap_send_data_primary()
742 self->ack_required = FALSE; in irlap_send_data_primary()
743 self->window -= 1; in irlap_send_data_primary()
745 irlap_send_i_frame( self, tx_skb, CMD_FRAME); in irlap_send_data_primary()
748 irlap_send_ui_frame(self, skb_get(skb), self->caddr, CMD_FRAME); in irlap_send_data_primary()
749 self->window -= 1; 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
763 del_timer(&self->poll_timer); in irlap_send_data_primary_poll()
772 skb->data[1] = I_FRAME | (self->vs << 1); in irlap_send_data_primary_poll()
779 skb_queue_tail(&self->wx_list, skb); in irlap_send_data_primary_poll()
794 self->vs = (self->vs + 1) % 8; in irlap_send_data_primary_poll()
795 self->ack_required = FALSE; in irlap_send_data_primary_poll()
797 irlap_next_state(self, LAP_NRM_P); in irlap_send_data_primary_poll()
798 irlap_send_i_frame(self, tx_skb, CMD_FRAME); in irlap_send_data_primary_poll()
802 if (self->ack_required) { 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()
804 irlap_next_state(self, LAP_NRM_P); in irlap_send_data_primary_poll()
805 irlap_send_rr_frame(self, CMD_FRAME); in irlap_send_data_primary_poll()
806 self->ack_required = FALSE; in irlap_send_data_primary_poll()
809 irlap_next_state(self, LAP_NRM_P); 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()
816 transmission_time = self->final_timeout; in irlap_send_data_primary_poll()
819 self->window = self->window_size; in irlap_send_data_primary_poll()
825 transmission_time -= (self->final_timeout * self->bytes_left in irlap_send_data_primary_poll()
826 / self->line_capacity); in irlap_send_data_primary_poll()
828 __func__, self->final_timeout, self->bytes_left, in irlap_send_data_primary_poll()
829 self->line_capacity, transmission_time); in irlap_send_data_primary_poll()
832 self->bytes_left = self->line_capacity; in irlap_send_data_primary_poll()
849 irlap_start_final_timer(self, self->final_timeout + transmission_time); in irlap_send_data_primary_poll()
867 void irlap_send_data_secondary_final(struct irlap_cb *self, in irlap_send_data_secondary_final() argument
872 IRDA_ASSERT(self != NULL, return;); in irlap_send_data_secondary_final()
873 IRDA_ASSERT(self->magic == LAP_MAGIC, return;); in irlap_send_data_secondary_final()
883 skb->data[1] = I_FRAME | (self->vs << 1); in irlap_send_data_secondary_final()
890 skb_queue_tail(&self->wx_list, skb); in irlap_send_data_secondary_final()
899 self->vs = (self->vs + 1) % 8; in irlap_send_data_secondary_final()
900 self->ack_required = FALSE; in irlap_send_data_secondary_final()
902 irlap_send_i_frame(self, tx_skb, RSP_FRAME); in irlap_send_data_secondary_final()
904 if (self->ack_required) { 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()
906 irlap_send_rr_frame(self, RSP_FRAME); in irlap_send_data_secondary_final()
907 self->ack_required = FALSE; 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()
914 self->window = self->window_size; in irlap_send_data_secondary_final()
917 self->bytes_left = self->line_capacity; in irlap_send_data_secondary_final()
920 irlap_start_wd_timer(self, self->wd_timeout); 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
940 skb->data[1] = I_FRAME | (self->vs << 1); in irlap_send_data_secondary()
947 skb_queue_tail(&self->wx_list, skb); in irlap_send_data_secondary()
954 self->vs = (self->vs + 1) % 8; in irlap_send_data_secondary()
955 self->ack_required = FALSE; in irlap_send_data_secondary()
956 self->window -= 1; in irlap_send_data_secondary()
958 irlap_send_i_frame(self, tx_skb, RSP_FRAME); in irlap_send_data_secondary()
960 irlap_send_ui_frame(self, skb_get(skb), self->caddr, RSP_FRAME); in irlap_send_data_secondary()
961 self->window -= 1; in irlap_send_data_secondary()
972 void irlap_resend_rejected_frames(struct irlap_cb *self, int command) in irlap_resend_rejected_frames() argument
977 IRDA_ASSERT(self != NULL, return;); in irlap_resend_rejected_frames()
978 IRDA_ASSERT(self->magic == LAP_MAGIC, return;); in irlap_resend_rejected_frames()
981 skb_queue_walk(&self->wx_list, skb) { in irlap_resend_rejected_frames()
982 irlap_wait_min_turn_around(self, &self->qos_tx); in irlap_resend_rejected_frames()
1000 if (skb_queue_is_last(&self->wx_list, skb)) in irlap_resend_rejected_frames()
1005 irlap_send_i_frame(self, tx_skb, command); in irlap_resend_rejected_frames()
1011 while (!skb_queue_empty(&self->txq)) { in irlap_resend_rejected_frames()
1014 if (self->window > 0) { in irlap_resend_rejected_frames()
1015 skb = skb_dequeue( &self->txq); in irlap_resend_rejected_frames()
1022 if ((self->window > 1) && in irlap_resend_rejected_frames()
1023 !skb_queue_empty(&self->txq)) { 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()
1034 void irlap_resend_rejected_frame(struct irlap_cb *self, int command) in irlap_resend_rejected_frame() argument
1039 IRDA_ASSERT(self != NULL, return;); in irlap_resend_rejected_frame()
1040 IRDA_ASSERT(self->magic == LAP_MAGIC, return;); in irlap_resend_rejected_frame()
1043 skb = skb_peek(&self->wx_list); in irlap_resend_rejected_frame()
1045 irlap_wait_min_turn_around(self, &self->qos_tx); in irlap_resend_rejected_frame()
1063 irlap_send_i_frame(self, tx_skb, command); 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
1076 IRDA_ASSERT(self != NULL, return;); in irlap_send_ui_frame()
1077 IRDA_ASSERT(self->magic == LAP_MAGIC, return;); 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()
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()
1110 static inline void irlap_recv_i_frame(struct irlap_cb *self, in irlap_recv_i_frame() argument
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
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
1151 IRDA_ASSERT(self != NULL, return;); in irlap_recv_frmr_frame()
1152 IRDA_ASSERT(self->magic == LAP_MAGIC, return;); in irlap_recv_frmr_frame()
1184 irlap_do_event(self, RECV_FRMR_RSP, skb, info); in irlap_recv_frmr_frame()
1193 void irlap_send_test_frame(struct irlap_cb *self, __u8 caddr, __u32 daddr, in irlap_send_test_frame() argument
1210 frame->saddr = cpu_to_le32(self->saddr); in irlap_send_test_frame()
1223 irlap_wait_min_turn_around(self, &self->qos_tx); in irlap_send_test_frame()
1224 irlap_queue_xmit(self, tx_skb); in irlap_send_test_frame()
1233 static void irlap_recv_test_frame(struct irlap_cb *self, struct sk_buff *skb, in irlap_recv_test_frame() argument
1257 if ((info->saddr != self->saddr) && 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()
1289 struct irlap_cb *self; in irlap_driver_rcv() local
1298 self = (struct irlap_cb *) dev->atalk_ptr; in irlap_driver_rcv()
1301 if (!self || self->magic != LAP_MAGIC) in irlap_driver_rcv()
1327 if ((info.caddr != self->caddr) && (info.caddr != CBROADCAST)) { 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()