Lines Matching refs:self
117 static inline void irlmp_next_lap_state(struct lap_cb *self, in irlmp_next_lap_state() argument
123 self->lap_state = state; in irlmp_next_lap_state()
126 static inline void irlmp_next_lsap_state(struct lsap_cb *self, in irlmp_next_lsap_state() argument
133 self->lsap_state = state; in irlmp_next_lsap_state()
137 int irlmp_do_lsap_event(struct lsap_cb *self, IRLMP_EVENT event, in irlmp_do_lsap_event() argument
140 IRDA_ASSERT(self != NULL, return -1;); in irlmp_do_lsap_event()
141 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return -1;); in irlmp_do_lsap_event()
144 __func__, irlmp_event[event], irlsap_state[self->lsap_state]); in irlmp_do_lsap_event()
146 return (*lsap_state[self->lsap_state]) (self, event, skb); in irlmp_do_lsap_event()
155 void irlmp_do_lap_event(struct lap_cb *self, IRLMP_EVENT event, in irlmp_do_lap_event() argument
158 IRDA_ASSERT(self != NULL, return;); in irlmp_do_lap_event()
159 IRDA_ASSERT(self->magic == LMP_LAP_MAGIC, return;); in irlmp_do_lap_event()
163 irlmp_state[self->lap_state]); in irlmp_do_lap_event()
165 (*lap_state[self->lap_state]) (self, event, skb); in irlmp_do_lap_event()
181 struct lsap_cb *self = (struct lsap_cb *) data; in irlmp_watchdog_timer_expired() local
183 IRDA_ASSERT(self != NULL, return;); in irlmp_watchdog_timer_expired()
184 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return;); in irlmp_watchdog_timer_expired()
186 irlmp_do_lsap_event(self, LM_WATCHDOG_TIMEOUT, NULL); in irlmp_watchdog_timer_expired()
191 struct lap_cb *self = (struct lap_cb *) data; in irlmp_idle_timer_expired() local
193 IRDA_ASSERT(self != NULL, return;); in irlmp_idle_timer_expired()
194 IRDA_ASSERT(self->magic == LMP_LAP_MAGIC, return;); in irlmp_idle_timer_expired()
196 irlmp_do_lap_event(self, LM_LAP_IDLE_TIMEOUT, NULL); in irlmp_idle_timer_expired()
248 static void irlmp_state_standby(struct lap_cb *self, IRLMP_EVENT event, in irlmp_state_standby() argument
251 IRDA_ASSERT(self->irlap != NULL, return;); in irlmp_state_standby()
257 irlap_discovery_request(self->irlap, &irlmp->discovery_cmd); in irlmp_state_standby()
264 irlmp_next_lap_state(self, LAP_ACTIVE); in irlmp_state_standby()
267 irlap_connect_response(self->irlap, skb); in irlmp_state_standby()
272 irlmp_next_lap_state(self, LAP_U_CONNECT); in irlmp_state_standby()
275 irlap_connect_request(self->irlap, self->daddr, NULL, 0); in irlmp_state_standby()
281 irlmp_next_lap_state(self, LAP_STANDBY); in irlmp_state_standby()
297 static void irlmp_state_u_connect(struct lap_cb *self, IRLMP_EVENT event, in irlmp_state_u_connect() argument
308 irlmp_next_lap_state(self, LAP_ACTIVE); in irlmp_state_u_connect()
311 irlap_connect_response(self->irlap, skb); in irlmp_state_u_connect()
314 irlmp_do_all_lsap_event(self->lsaps, LM_LAP_CONNECT_CONFIRM); in irlmp_state_u_connect()
319 if (HASHBIN_GET_SIZE(self->lsaps) == 0) { in irlmp_state_u_connect()
321 irlmp_start_idle_timer(self, LM_IDLE_TIMEOUT); in irlmp_state_u_connect()
329 irlmp_next_lap_state(self, LAP_ACTIVE); in irlmp_state_u_connect()
332 irlmp_do_all_lsap_event(self->lsaps, LM_LAP_CONNECT_CONFIRM); in irlmp_state_u_connect()
337 if (HASHBIN_GET_SIZE(self->lsaps) == 0) { in irlmp_state_u_connect()
339 irlmp_start_idle_timer(self, LM_IDLE_TIMEOUT); in irlmp_state_u_connect()
344 irlmp_next_lap_state(self, LAP_STANDBY); in irlmp_state_u_connect()
347 irlmp_do_all_lsap_event(self->lsaps, in irlmp_state_u_connect()
355 if (HASHBIN_GET_SIZE(self->lsaps) <= 1) { in irlmp_state_u_connect()
356 irlap_disconnect_request(self->irlap); in irlmp_state_u_connect()
372 static void irlmp_state_active(struct lap_cb *self, IRLMP_EVENT event, in irlmp_state_active() argument
385 irlap_clear_disconnect(self->irlap); in irlmp_state_active()
393 irlmp_do_all_lsap_event(self->lsaps, LM_LAP_CONNECT_CONFIRM); in irlmp_state_active()
407 if (HASHBIN_GET_SIZE(self->lsaps) > 0) { in irlmp_state_active()
409 irlmp_start_idle_timer(self, sysctl_lap_keepalive_time * HZ / 1000); in irlmp_state_active()
423 irlap_disconnect_request(self->irlap); in irlmp_state_active()
427 if (HASHBIN_GET_SIZE(self->lsaps) == 0) { in irlmp_state_active()
429 irlap_disconnect_request(self->irlap); in irlmp_state_active()
433 irlmp_next_lap_state(self, LAP_STANDBY); in irlmp_state_active()
441 irlmp_stop_idle_timer(self); in irlmp_state_active()
446 irlmp_do_all_lsap_event(self->lsaps, in irlmp_state_active()
477 static int irlmp_state_disconnected(struct lsap_cb *self, IRLMP_EVENT event, in irlmp_state_disconnected() argument
482 IRDA_ASSERT(self != NULL, return -1;); in irlmp_state_disconnected()
483 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return -1;); in irlmp_state_disconnected()
491 irlmp_connless_data_indication(self, skb); in irlmp_state_disconnected()
497 if (self->conn_skb) { in irlmp_state_disconnected()
504 self->conn_skb = skb; in irlmp_state_disconnected()
506 irlmp_next_lsap_state(self, LSAP_SETUP_PEND); in irlmp_state_disconnected()
509 irlmp_start_watchdog_timer(self, 5*HZ); in irlmp_state_disconnected()
511 irlmp_do_lap_event(self->lap, LM_LAP_CONNECT_REQUEST, NULL); in irlmp_state_disconnected()
514 if (self->conn_skb) { in irlmp_state_disconnected()
521 self->conn_skb = skb; in irlmp_state_disconnected()
523 irlmp_next_lsap_state(self, LSAP_CONNECT_PEND); in irlmp_state_disconnected()
536 irlmp_start_watchdog_timer(self, 1*HZ); in irlmp_state_disconnected()
538 irlmp_do_lap_event(self->lap, LM_LAP_CONNECT_REQUEST, NULL); in irlmp_state_disconnected()
542 __func__, irlmp_event[event], self->slsap_sel); in irlmp_state_disconnected()
554 static int irlmp_state_connect(struct lsap_cb *self, IRLMP_EVENT event, in irlmp_state_connect() argument
560 IRDA_ASSERT(self != NULL, return -1;); in irlmp_state_connect()
561 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return -1;); in irlmp_state_connect()
569 lsap = hashbin_remove(irlmp->unconnected_lsaps, (long) self, in irlmp_state_connect()
572 IRDA_ASSERT(lsap == self, return -1;); in irlmp_state_connect()
573 IRDA_ASSERT(self->lap != NULL, return -1;); in irlmp_state_connect()
574 IRDA_ASSERT(self->lap->lsaps != NULL, return -1;); in irlmp_state_connect()
576 hashbin_insert(self->lap->lsaps, (irda_queue_t *) self, in irlmp_state_connect()
577 (long) self, NULL); in irlmp_state_connect()
579 set_bit(0, &self->connected); /* TRUE */ in irlmp_state_connect()
581 irlmp_send_lcf_pdu(self->lap, self->dlsap_sel, in irlmp_state_connect()
582 self->slsap_sel, CONNECT_CNF, skb); in irlmp_state_connect()
584 del_timer(&self->watchdog_timer); in irlmp_state_connect()
586 irlmp_next_lsap_state(self, LSAP_DATA_TRANSFER_READY); in irlmp_state_connect()
594 self->lap = NULL; in irlmp_state_connect()
595 self->dlsap_sel = LSAP_ANY; in irlmp_state_connect()
596 irlmp_next_lsap_state(self, LSAP_DISCONNECTED); in irlmp_state_connect()
602 __func__, irlmp_event[event], self->slsap_sel); in irlmp_state_connect()
614 static int irlmp_state_connect_pend(struct lsap_cb *self, IRLMP_EVENT event, in irlmp_state_connect_pend() argument
620 IRDA_ASSERT(self != NULL, return -1;); in irlmp_state_connect_pend()
621 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return -1;); in irlmp_state_connect_pend()
639 irlmp_next_lsap_state(self, LSAP_CONNECT); in irlmp_state_connect_pend()
641 tx_skb = self->conn_skb; in irlmp_state_connect_pend()
642 self->conn_skb = NULL; in irlmp_state_connect_pend()
644 irlmp_connect_indication(self, tx_skb); in irlmp_state_connect_pend()
655 self->lap = NULL; in irlmp_state_connect_pend()
656 self->dlsap_sel = LSAP_ANY; in irlmp_state_connect_pend()
657 if(self->conn_skb) in irlmp_state_connect_pend()
658 dev_kfree_skb(self->conn_skb); in irlmp_state_connect_pend()
659 self->conn_skb = NULL; in irlmp_state_connect_pend()
660 irlmp_next_lsap_state(self, LSAP_DISCONNECTED); in irlmp_state_connect_pend()
666 __func__, irlmp_event[event], self->slsap_sel); in irlmp_state_connect_pend()
678 static int irlmp_state_dtr(struct lsap_cb *self, IRLMP_EVENT event, in irlmp_state_dtr() argument
684 IRDA_ASSERT(self != NULL, return -1;); in irlmp_state_dtr()
685 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return -1;); in irlmp_state_dtr()
686 IRDA_ASSERT(self->lap != NULL, return -1;); in irlmp_state_dtr()
690 irlmp_send_data_pdu(self->lap, self->dlsap_sel, in irlmp_state_dtr()
691 self->slsap_sel, FALSE, skb); in irlmp_state_dtr()
694 irlmp_data_indication(self, skb); in irlmp_state_dtr()
698 irlmp_send_data_pdu(self->lap, self->dlsap_sel, in irlmp_state_dtr()
699 self->slsap_sel, TRUE, skb); in irlmp_state_dtr()
702 irlmp_udata_indication(self, skb); in irlmp_state_dtr()
715 irlmp_send_lcf_pdu(self->lap, self->dlsap_sel, self->slsap_sel, in irlmp_state_dtr()
717 irlmp_next_lsap_state(self, LSAP_DISCONNECTED); in irlmp_state_dtr()
722 if (self->lap) { in irlmp_state_dtr()
725 irlmp_do_lap_event(self->lap, in irlmp_state_dtr()
731 irlmp_next_lsap_state(self, LSAP_DISCONNECTED); in irlmp_state_dtr()
733 reason = irlmp_convert_lap_reason(self->lap->reason); in irlmp_state_dtr()
735 irlmp_disconnect_indication(self, reason, NULL); in irlmp_state_dtr()
738 irlmp_next_lsap_state(self, LSAP_DISCONNECTED); in irlmp_state_dtr()
740 IRDA_ASSERT(self->lap != NULL, return -1;); in irlmp_state_dtr()
741 IRDA_ASSERT(self->lap->magic == LMP_LAP_MAGIC, return -1;); in irlmp_state_dtr()
749 irlmp_do_lap_event(self->lap, LM_LAP_DISCONNECT_REQUEST, NULL); in irlmp_state_dtr()
751 irlmp_disconnect_indication(self, reason, skb); in irlmp_state_dtr()
755 __func__, irlmp_event[event], self->slsap_sel); in irlmp_state_dtr()
768 static int irlmp_state_setup(struct lsap_cb *self, IRLMP_EVENT event, in irlmp_state_setup() argument
774 IRDA_ASSERT(self != NULL, return -1;); in irlmp_state_setup()
775 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return -1;); in irlmp_state_setup()
779 irlmp_next_lsap_state(self, LSAP_DATA_TRANSFER_READY); in irlmp_state_setup()
781 del_timer(&self->watchdog_timer); in irlmp_state_setup()
783 irlmp_connect_confirm(self, skb); in irlmp_state_setup()
786 irlmp_next_lsap_state(self, LSAP_DISCONNECTED); in irlmp_state_setup()
788 IRDA_ASSERT(self->lap != NULL, return -1;); in irlmp_state_setup()
789 IRDA_ASSERT(self->lap->magic == LMP_LAP_MAGIC, return -1;); in irlmp_state_setup()
797 irlmp_do_lap_event(self->lap, LM_LAP_DISCONNECT_REQUEST, NULL); in irlmp_state_setup()
799 irlmp_disconnect_indication(self, reason, skb); in irlmp_state_setup()
802 irlmp_next_lsap_state(self, LSAP_DISCONNECTED); in irlmp_state_setup()
804 del_timer(&self->watchdog_timer); in irlmp_state_setup()
806 IRDA_ASSERT(self->lap != NULL, return -1;); in irlmp_state_setup()
807 IRDA_ASSERT(self->lap->magic == LMP_LAP_MAGIC, return -1;); in irlmp_state_setup()
809 reason = irlmp_convert_lap_reason(self->lap->reason); in irlmp_state_setup()
811 irlmp_disconnect_indication(self, reason, skb); in irlmp_state_setup()
816 IRDA_ASSERT(self->lap != NULL, return -1;); in irlmp_state_setup()
817 irlmp_do_lap_event(self->lap, LM_LAP_DISCONNECT_REQUEST, NULL); in irlmp_state_setup()
818 irlmp_next_lsap_state(self, LSAP_DISCONNECTED); in irlmp_state_setup()
820 irlmp_disconnect_indication(self, LM_CONNECT_FAILURE, NULL); in irlmp_state_setup()
824 __func__, irlmp_event[event], self->slsap_sel); in irlmp_state_setup()
838 static int irlmp_state_setup_pend(struct lsap_cb *self, IRLMP_EVENT event, in irlmp_state_setup_pend() argument
845 IRDA_ASSERT(self != NULL, return -1;); in irlmp_state_setup_pend()
850 IRDA_ASSERT(self->conn_skb != NULL, return -1;); in irlmp_state_setup_pend()
852 tx_skb = self->conn_skb; in irlmp_state_setup_pend()
853 self->conn_skb = NULL; in irlmp_state_setup_pend()
855 irlmp_send_lcf_pdu(self->lap, self->dlsap_sel, in irlmp_state_setup_pend()
856 self->slsap_sel, CONNECT_CMD, tx_skb); in irlmp_state_setup_pend()
860 irlmp_next_lsap_state(self, LSAP_SETUP); in irlmp_state_setup_pend()
865 IRDA_ASSERT(self->lap != NULL, return -1;); in irlmp_state_setup_pend()
866 irlmp_do_lap_event(self->lap, LM_LAP_DISCONNECT_REQUEST, NULL); in irlmp_state_setup_pend()
867 irlmp_next_lsap_state(self, LSAP_DISCONNECTED); in irlmp_state_setup_pend()
869 irlmp_disconnect_indication(self, LM_CONNECT_FAILURE, NULL); in irlmp_state_setup_pend()
872 del_timer( &self->watchdog_timer); in irlmp_state_setup_pend()
874 irlmp_next_lsap_state(self, LSAP_DISCONNECTED); in irlmp_state_setup_pend()
876 reason = irlmp_convert_lap_reason(self->lap->reason); in irlmp_state_setup_pend()
878 irlmp_disconnect_indication(self, reason, NULL); in irlmp_state_setup_pend()
882 __func__, irlmp_event[event], self->slsap_sel); in irlmp_state_setup_pend()