Lines Matching refs:self
155 struct lsap_cb *self; in irlmp_open_lsap() local
171 self = kzalloc(sizeof(struct lsap_cb), GFP_ATOMIC); in irlmp_open_lsap()
172 if (self == NULL) in irlmp_open_lsap()
175 self->magic = LMP_LSAP_MAGIC; in irlmp_open_lsap()
176 self->slsap_sel = slsap_sel; in irlmp_open_lsap()
181 self->dlsap_sel = LSAP_CONNLESS; in irlmp_open_lsap()
182 self->pid = pid; in irlmp_open_lsap()
185 self->dlsap_sel = LSAP_ANY; in irlmp_open_lsap()
188 init_timer(&self->watchdog_timer); in irlmp_open_lsap()
190 self->notify = *notify; in irlmp_open_lsap()
192 self->lsap_state = LSAP_DISCONNECTED; in irlmp_open_lsap()
195 hashbin_insert(irlmp->unconnected_lsaps, (irda_queue_t *) self, in irlmp_open_lsap()
196 (long) self, NULL); in irlmp_open_lsap()
198 return self; in irlmp_open_lsap()
207 static void __irlmp_close_lsap(struct lsap_cb *self) in __irlmp_close_lsap() argument
209 IRDA_ASSERT(self != NULL, return;); in __irlmp_close_lsap()
210 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return;); in __irlmp_close_lsap()
215 self->magic = 0; in __irlmp_close_lsap()
216 del_timer(&self->watchdog_timer); /* Important! */ in __irlmp_close_lsap()
218 if (self->conn_skb) in __irlmp_close_lsap()
219 dev_kfree_skb(self->conn_skb); in __irlmp_close_lsap()
221 kfree(self); in __irlmp_close_lsap()
230 void irlmp_close_lsap(struct lsap_cb *self) in irlmp_close_lsap() argument
235 IRDA_ASSERT(self != NULL, return;); in irlmp_close_lsap()
236 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return;); in irlmp_close_lsap()
242 lap = self->lap; in irlmp_close_lsap()
249 if(self->lsap_state != LSAP_DISCONNECTED) { in irlmp_close_lsap()
250 self->lsap_state = LSAP_DISCONNECTED; in irlmp_close_lsap()
251 irlmp_do_lap_event(self->lap, in irlmp_close_lsap()
255 lsap = hashbin_remove(lap->lsaps, (long) self, NULL); in irlmp_close_lsap()
260 self->lap = NULL; in irlmp_close_lsap()
263 lsap = hashbin_remove(irlmp->unconnected_lsaps, (long) self, in irlmp_close_lsap()
271 __irlmp_close_lsap(self); in irlmp_close_lsap()
368 int irlmp_connect_request(struct lsap_cb *self, __u8 dlsap_sel, in irlmp_connect_request() argument
377 IRDA_ASSERT(self != NULL, return -EBADR;); in irlmp_connect_request()
378 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return -EBADR;); in irlmp_connect_request()
381 __func__, self->slsap_sel, dlsap_sel, saddr, daddr); in irlmp_connect_request()
383 if (test_bit(0, &self->connected)) { in irlmp_connect_request()
407 self->dlsap_sel = dlsap_sel; in irlmp_connect_request()
466 self->lap = lap; in irlmp_connect_request()
472 lsap = hashbin_remove(irlmp->unconnected_lsaps, (long) self, NULL); in irlmp_connect_request()
479 hashbin_insert(self->lap->lsaps, (irda_queue_t *) self, (long) self, in irlmp_connect_request()
482 set_bit(0, &self->connected); /* TRUE */ in irlmp_connect_request()
488 self->qos = *qos; in irlmp_connect_request()
490 irlmp_do_lsap_event(self, LM_CONNECT_REQUEST, tx_skb); in irlmp_connect_request()
511 void irlmp_connect_indication(struct lsap_cb *self, struct sk_buff *skb) in irlmp_connect_indication() argument
517 IRDA_ASSERT(self != NULL, return;); in irlmp_connect_indication()
518 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return;); in irlmp_connect_indication()
520 IRDA_ASSERT(self->lap != NULL, return;); in irlmp_connect_indication()
523 __func__, self->slsap_sel, self->dlsap_sel); in irlmp_connect_indication()
530 self->qos = *self->lap->qos; in irlmp_connect_indication()
532 max_seg_size = self->lap->qos->data_size.value-LMP_HEADER; in irlmp_connect_indication()
533 lap_header_size = IRLAP_GET_HEADER_SIZE(self->lap->irlap); in irlmp_connect_indication()
539 if (self->notify.connect_indication) { in irlmp_connect_indication()
542 self->notify.connect_indication(self->notify.instance, self, in irlmp_connect_indication()
543 &self->qos, max_seg_size, in irlmp_connect_indication()
554 int irlmp_connect_response(struct lsap_cb *self, struct sk_buff *userdata) in irlmp_connect_response() argument
556 IRDA_ASSERT(self != NULL, return -1;); in irlmp_connect_response()
557 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return -1;); in irlmp_connect_response()
564 __func__, self->slsap_sel, self->dlsap_sel); in irlmp_connect_response()
570 irlmp_do_lsap_event(self, LM_CONNECT_RESPONSE, userdata); in irlmp_connect_response()
584 void irlmp_connect_confirm(struct lsap_cb *self, struct sk_buff *skb) in irlmp_connect_confirm() argument
591 IRDA_ASSERT(self != NULL, return;); in irlmp_connect_confirm()
592 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return;); in irlmp_connect_confirm()
593 IRDA_ASSERT(self->lap != NULL, return;); in irlmp_connect_confirm()
595 self->qos = *self->lap->qos; in irlmp_connect_confirm()
597 max_seg_size = self->lap->qos->data_size.value-LMP_HEADER; in irlmp_connect_confirm()
598 lap_header_size = IRLAP_GET_HEADER_SIZE(self->lap->irlap); in irlmp_connect_confirm()
607 if (self->notify.connect_confirm) { in irlmp_connect_confirm()
610 self->notify.connect_confirm(self->notify.instance, self, in irlmp_connect_confirm()
611 &self->qos, max_seg_size, in irlmp_connect_confirm()
677 int irlmp_disconnect_request(struct lsap_cb *self, struct sk_buff *userdata) in irlmp_disconnect_request() argument
681 IRDA_ASSERT(self != NULL, return -1;); in irlmp_disconnect_request()
682 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return -1;); in irlmp_disconnect_request()
689 if (! test_and_clear_bit(0, &self->connected)) { in irlmp_disconnect_request()
701 irlmp_do_lsap_event(self, LM_DISCONNECT_REQUEST, userdata); in irlmp_disconnect_request()
710 IRDA_ASSERT(self->lap != NULL, return -1;); in irlmp_disconnect_request()
711 IRDA_ASSERT(self->lap->magic == LMP_LAP_MAGIC, return -1;); in irlmp_disconnect_request()
712 IRDA_ASSERT(self->lap->lsaps != NULL, return -1;); in irlmp_disconnect_request()
714 lsap = hashbin_remove(self->lap->lsaps, (long) self, NULL); in irlmp_disconnect_request()
716 self->lap->cache.valid = FALSE; in irlmp_disconnect_request()
721 IRDA_ASSERT(lsap == self, return -1;); in irlmp_disconnect_request()
723 hashbin_insert(irlmp->unconnected_lsaps, (irda_queue_t *) self, in irlmp_disconnect_request()
724 (long) self, NULL); in irlmp_disconnect_request()
727 self->dlsap_sel = LSAP_ANY; in irlmp_disconnect_request()
728 self->lap = NULL; in irlmp_disconnect_request()
739 void irlmp_disconnect_indication(struct lsap_cb *self, LM_REASON reason, in irlmp_disconnect_indication() argument
746 IRDA_ASSERT(self != NULL, return;); in irlmp_disconnect_indication()
747 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return;); in irlmp_disconnect_indication()
750 __func__, self->slsap_sel, self->dlsap_sel); in irlmp_disconnect_indication()
756 if (! test_and_clear_bit(0, &self->connected)) { in irlmp_disconnect_indication()
764 IRDA_ASSERT(self->lap != NULL, return;); in irlmp_disconnect_indication()
765 IRDA_ASSERT(self->lap->lsaps != NULL, return;); in irlmp_disconnect_indication()
767 lsap = hashbin_remove(self->lap->lsaps, (long) self, NULL); in irlmp_disconnect_indication()
769 self->lap->cache.valid = FALSE; in irlmp_disconnect_indication()
773 IRDA_ASSERT(lsap == self, return;); in irlmp_disconnect_indication()
777 self->dlsap_sel = LSAP_ANY; in irlmp_disconnect_indication()
778 self->lap = NULL; in irlmp_disconnect_indication()
783 if (self->notify.disconnect_indication) { in irlmp_disconnect_indication()
787 self->notify.disconnect_indication(self->notify.instance, in irlmp_disconnect_indication()
788 self, reason, skb); in irlmp_disconnect_indication()
1106 int irlmp_data_request(struct lsap_cb *self, struct sk_buff *userdata) in irlmp_data_request() argument
1110 IRDA_ASSERT(self != NULL, return -1;); in irlmp_data_request()
1111 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return -1;); in irlmp_data_request()
1117 ret = irlmp_do_lsap_event(self, LM_DATA_REQUEST, userdata); in irlmp_data_request()
1132 void irlmp_data_indication(struct lsap_cb *self, struct sk_buff *skb) in irlmp_data_indication() argument
1137 if (self->notify.data_indication) { in irlmp_data_indication()
1140 self->notify.data_indication(self->notify.instance, self, skb); in irlmp_data_indication()
1147 int irlmp_udata_request(struct lsap_cb *self, struct sk_buff *userdata) in irlmp_udata_request() argument
1157 ret = irlmp_do_lsap_event(self, LM_UDATA_REQUEST, userdata); in irlmp_udata_request()
1171 void irlmp_udata_indication(struct lsap_cb *self, struct sk_buff *skb) in irlmp_udata_indication() argument
1173 IRDA_ASSERT(self != NULL, return;); in irlmp_udata_indication()
1174 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return;); in irlmp_udata_indication()
1180 if (self->notify.udata_indication) { in irlmp_udata_indication()
1183 self->notify.udata_indication(self->notify.instance, self, in irlmp_udata_indication()
1192 int irlmp_connless_data_request(struct lsap_cb *self, struct sk_buff *userdata, in irlmp_connless_data_request() argument
1206 if(self != NULL) in irlmp_connless_data_request()
1207 userdata->data[0] = self->pid; in irlmp_connless_data_request()
1245 void irlmp_connless_data_indication(struct lsap_cb *self, struct sk_buff *skb) in irlmp_connless_data_indication() argument
1247 IRDA_ASSERT(self != NULL, return;); in irlmp_connless_data_indication()
1248 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return;); in irlmp_connless_data_indication()
1254 if (self->notify.udata_indication) { in irlmp_connless_data_indication()
1257 self->notify.udata_indication(self->notify.instance, self, in irlmp_connless_data_indication()
1270 void irlmp_status_indication(struct lap_cb *self, in irlmp_status_indication() argument
1277 curr = (struct lsap_cb *) hashbin_get_first( self->lsaps); in irlmp_status_indication()
1278 while (NULL != hashbin_find_next(self->lsaps, (long) curr, NULL, in irlmp_status_indication()
1304 void irlmp_flow_indication(struct lap_cb *self, LOCAL_FLOW flow) in irlmp_flow_indication() argument
1310 IRDA_ASSERT(self->magic == LMP_LAP_MAGIC, return;); in irlmp_flow_indication()
1315 lsap_todo = HASHBIN_GET_SIZE(self->lsaps); in irlmp_flow_indication()
1323 (IRLAP_GET_TX_QUEUE_LEN(self->irlap) < LAP_HIGH_THRESHOLD)) { in irlmp_flow_indication()
1325 next = self->flow_next; in irlmp_flow_indication()
1328 next = (struct lsap_cb *) hashbin_get_first(self->lsaps); in irlmp_flow_indication()
1330 curr = hashbin_find_next(self->lsaps, (long) next, NULL, in irlmp_flow_indication()
1331 (void *) &self->flow_next); in irlmp_flow_indication()
1336 __func__, curr, next, self->flow_next, lsap_todo, in irlmp_flow_indication()
1337 IRLAP_GET_TX_QUEUE_LEN(self->irlap)); in irlmp_flow_indication()
1631 struct lsap_cb *self; in irlmp_slsap_inuse() local
1666 self = (struct lsap_cb *) hashbin_get_first(lap->lsaps); in irlmp_slsap_inuse()
1667 while (self != NULL) { in irlmp_slsap_inuse()
1668 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, in irlmp_slsap_inuse()
1671 if ((self->slsap_sel == slsap_sel)) { in irlmp_slsap_inuse()
1673 self->slsap_sel); in irlmp_slsap_inuse()
1676 self = (struct lsap_cb*) hashbin_get_next(lap->lsaps); in irlmp_slsap_inuse()
1693 self = (struct lsap_cb *) hashbin_get_first(irlmp->unconnected_lsaps); in irlmp_slsap_inuse()
1694 while (self != NULL) { in irlmp_slsap_inuse()
1695 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, goto erruncon;); in irlmp_slsap_inuse()
1696 if ((self->slsap_sel == slsap_sel)) { in irlmp_slsap_inuse()
1698 self->slsap_sel); in irlmp_slsap_inuse()
1701 self = (struct lsap_cb*) hashbin_get_next(irlmp->unconnected_lsaps); in irlmp_slsap_inuse()
1916 struct lsap_cb *self = v; in irlmp_seq_show() local
1923 self = v; in irlmp_seq_show()
1924 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, return -EINVAL; ); in irlmp_seq_show()
1926 irlsap_state[ self->lsap_state]); in irlmp_seq_show()
1929 self->slsap_sel, self->dlsap_sel); in irlmp_seq_show()
1930 seq_printf(seq, "(%s)", self->notify.name); in irlmp_seq_show()
1950 for (self = (struct lsap_cb *) hashbin_get_first(lap->lsaps); in irlmp_seq_show()
1951 self != NULL; in irlmp_seq_show()
1952 self = (struct lsap_cb *)hashbin_get_next(lap->lsaps)) { in irlmp_seq_show()
1953 IRDA_ASSERT(self->magic == LMP_LSAP_MAGIC, in irlmp_seq_show()
1956 irlsap_state[ self->lsap_state]); in irlmp_seq_show()
1959 self->slsap_sel, self->dlsap_sel); in irlmp_seq_show()
1960 seq_printf(seq, "(%s)", self->notify.name); in irlmp_seq_show()