Lines Matching refs:self
64 static void __iriap_close(struct iriap_cb *self);
65 static int iriap_register_lsap(struct iriap_cb *self, __u8 slsap_sel, int mode);
81 static inline void iriap_start_watchdog_timer(struct iriap_cb *self, in iriap_start_watchdog_timer() argument
84 irda_start_timer(&self->watchdog_timer, timeout, self, in iriap_start_watchdog_timer()
176 struct iriap_cb *self; in iriap_open() local
178 self = kzalloc(sizeof(*self), GFP_ATOMIC); in iriap_open()
179 if (!self) in iriap_open()
186 self->magic = IAS_MAGIC; in iriap_open()
187 self->mode = mode; in iriap_open()
189 iriap_register_lsap(self, slsap_sel, mode); in iriap_open()
191 self->confirm = callback; in iriap_open()
192 self->priv = priv; in iriap_open()
196 self->max_header_size = LMP_MAX_HEADER; in iriap_open()
198 init_timer(&self->watchdog_timer); in iriap_open()
200 hashbin_insert(iriap, (irda_queue_t *) self, (long) self, NULL); in iriap_open()
203 iriap_next_client_state(self, S_DISCONNECT); in iriap_open()
204 iriap_next_call_state(self, S_MAKE_CALL); in iriap_open()
205 iriap_next_server_state(self, R_DISCONNECT); in iriap_open()
206 iriap_next_r_connect_state(self, R_WAITING); in iriap_open()
208 return self; in iriap_open()
218 static void __iriap_close(struct iriap_cb *self) in __iriap_close() argument
220 IRDA_ASSERT(self != NULL, return;); in __iriap_close()
221 IRDA_ASSERT(self->magic == IAS_MAGIC, return;); in __iriap_close()
223 del_timer(&self->watchdog_timer); in __iriap_close()
225 if (self->request_skb) in __iriap_close()
226 dev_kfree_skb(self->request_skb); in __iriap_close()
228 self->magic = 0; in __iriap_close()
230 kfree(self); in __iriap_close()
238 void iriap_close(struct iriap_cb *self) in iriap_close() argument
242 IRDA_ASSERT(self != NULL, return;); in iriap_close()
243 IRDA_ASSERT(self->magic == IAS_MAGIC, return;); in iriap_close()
245 if (self->lsap) { in iriap_close()
246 irlmp_close_lsap(self->lsap); in iriap_close()
247 self->lsap = NULL; in iriap_close()
250 entry = (struct iriap_cb *) hashbin_remove(iriap, (long) self, NULL); in iriap_close()
251 IRDA_ASSERT(entry == self, return;); in iriap_close()
253 __iriap_close(self); in iriap_close()
257 static int iriap_register_lsap(struct iriap_cb *self, __u8 slsap_sel, int mode) in iriap_register_lsap() argument
266 notify.instance = self; in iriap_register_lsap()
272 self->lsap = irlmp_open_lsap(slsap_sel, ¬ify, 0); in iriap_register_lsap()
273 if (self->lsap == NULL) { in iriap_register_lsap()
278 self->slsap_sel = self->lsap->slsap_sel; in iriap_register_lsap()
293 struct iriap_cb *self; in iriap_disconnect_indication() local
298 self = instance; in iriap_disconnect_indication()
300 IRDA_ASSERT(self != NULL, return;); in iriap_disconnect_indication()
301 IRDA_ASSERT(self->magic == IAS_MAGIC, return;); in iriap_disconnect_indication()
305 del_timer(&self->watchdog_timer); in iriap_disconnect_indication()
311 if (self->mode == IAS_CLIENT) { in iriap_disconnect_indication()
315 iriap_do_client_event(self, IAP_LM_DISCONNECT_INDICATION, in iriap_disconnect_indication()
322 if (self->confirm) in iriap_disconnect_indication()
323 self->confirm(IAS_DISCONNECT, 0, NULL, self->priv); in iriap_disconnect_indication()
326 iriap_do_server_event(self, IAP_LM_DISCONNECT_INDICATION, in iriap_disconnect_indication()
328 iriap_close(self); in iriap_disconnect_indication()
335 static void iriap_disconnect_request(struct iriap_cb *self) in iriap_disconnect_request() argument
339 IRDA_ASSERT(self != NULL, return;); in iriap_disconnect_request()
340 IRDA_ASSERT(self->magic == IAS_MAGIC, return;); in iriap_disconnect_request()
354 irlmp_disconnect_request(self->lsap, tx_skb); in iriap_disconnect_request()
363 int iriap_getvaluebyclass_request(struct iriap_cb *self, in iriap_getvaluebyclass_request() argument
371 IRDA_ASSERT(self != NULL, return -1;); in iriap_getvaluebyclass_request()
372 IRDA_ASSERT(self->magic == IAS_MAGIC, return -1;); in iriap_getvaluebyclass_request()
378 self->daddr = daddr; in iriap_getvaluebyclass_request()
379 self->saddr = saddr; in iriap_getvaluebyclass_request()
384 self->operation = GET_VALUE_BY_CLASS; in iriap_getvaluebyclass_request()
387 iriap_start_watchdog_timer(self, 10*HZ); in iriap_getvaluebyclass_request()
392 skb_len = self->max_header_size+2+name_len+1+attr_len+4; in iriap_getvaluebyclass_request()
398 skb_reserve(tx_skb, self->max_header_size); in iriap_getvaluebyclass_request()
409 iriap_do_client_event(self, IAP_CALL_REQUEST_GVBC, tx_skb); in iriap_getvaluebyclass_request()
425 static void iriap_getvaluebyclass_confirm(struct iriap_cb *self, in iriap_getvaluebyclass_confirm() argument
438 IRDA_ASSERT(self != NULL, return;); in iriap_getvaluebyclass_confirm()
439 IRDA_ASSERT(self->magic == IAS_MAGIC, return;); in iriap_getvaluebyclass_confirm()
492 iriap_disconnect_request(self); in iriap_getvaluebyclass_confirm()
520 iriap_disconnect_request(self); in iriap_getvaluebyclass_confirm()
525 if (self->confirm) in iriap_getvaluebyclass_confirm()
526 self->confirm(IAS_SUCCESS, obj_id, value, self->priv); in iriap_getvaluebyclass_confirm()
539 static void iriap_getvaluebyclass_response(struct iriap_cb *self, in iriap_getvaluebyclass_response() argument
550 IRDA_ASSERT(self != NULL, return;); in iriap_getvaluebyclass_response()
551 IRDA_ASSERT(self->magic == IAS_MAGIC, return;); in iriap_getvaluebyclass_response()
563 tx_skb = alloc_skb(value->len + self->max_header_size + 32, in iriap_getvaluebyclass_response()
569 skb_reserve(tx_skb, self->max_header_size); in iriap_getvaluebyclass_response()
618 iriap_do_r_connect_event(self, IAP_CALL_RESPONSE, tx_skb); in iriap_getvaluebyclass_response()
630 static void iriap_getvaluebyclass_indication(struct iriap_cb *self, in iriap_getvaluebyclass_indication() argument
642 IRDA_ASSERT(self != NULL, return;); in iriap_getvaluebyclass_indication()
643 IRDA_ASSERT(self->magic == IAS_MAGIC, return;); in iriap_getvaluebyclass_indication()
668 iriap_getvaluebyclass_response(self, 0x1235, IAS_CLASS_UNKNOWN, in iriap_getvaluebyclass_indication()
677 iriap_getvaluebyclass_response(self, obj->id, in iriap_getvaluebyclass_indication()
684 iriap_getvaluebyclass_response(self, obj->id, IAS_SUCCESS, in iriap_getvaluebyclass_indication()
694 void iriap_send_ack(struct iriap_cb *self) in iriap_send_ack() argument
699 IRDA_ASSERT(self != NULL, return;); in iriap_send_ack()
700 IRDA_ASSERT(self->magic == IAS_MAGIC, return;); in iriap_send_ack()
707 skb_reserve(tx_skb, self->max_header_size); in iriap_send_ack()
712 frame[0] = IAP_LST | IAP_ACK | self->operation; in iriap_send_ack()
714 irlmp_data_request(self->lsap, tx_skb); in iriap_send_ack()
717 void iriap_connect_request(struct iriap_cb *self) in iriap_connect_request() argument
721 IRDA_ASSERT(self != NULL, return;); in iriap_connect_request()
722 IRDA_ASSERT(self->magic == IAS_MAGIC, return;); in iriap_connect_request()
724 ret = irlmp_connect_request(self->lsap, LSAP_IAS, in iriap_connect_request()
725 self->saddr, self->daddr, in iriap_connect_request()
729 self->confirm(IAS_DISCONNECT, 0, NULL, self->priv); in iriap_connect_request()
744 struct iriap_cb *self; in iriap_connect_confirm() local
746 self = instance; in iriap_connect_confirm()
748 IRDA_ASSERT(self != NULL, return;); in iriap_connect_confirm()
749 IRDA_ASSERT(self->magic == IAS_MAGIC, return;); in iriap_connect_confirm()
752 self->max_data_size = max_seg_size; in iriap_connect_confirm()
753 self->max_header_size = max_header_size; in iriap_connect_confirm()
755 del_timer(&self->watchdog_timer); in iriap_connect_confirm()
757 iriap_do_client_event(self, IAP_LM_CONNECT_CONFIRM, skb); in iriap_connect_confirm()
774 struct iriap_cb *self, *new; in iriap_connect_indication() local
776 self = instance; in iriap_connect_indication()
779 IRDA_ASSERT(self != NULL, goto out;); in iriap_connect_indication()
780 IRDA_ASSERT(self->magic == IAS_MAGIC, goto out;); in iriap_connect_indication()
790 new->lsap = irlmp_dup(self->lsap, new); in iriap_connect_indication()
800 irlmp_listen(self->lsap); in iriap_connect_indication()
818 struct iriap_cb *self; in iriap_data_indication() local
822 self = instance; in iriap_data_indication()
825 IRDA_ASSERT(self != NULL, goto out;); in iriap_data_indication()
826 IRDA_ASSERT(self->magic == IAS_MAGIC, goto out;); in iriap_data_indication()
830 if (self->mode == IAS_SERVER) { in iriap_data_indication()
833 iriap_do_r_connect_event(self, IAP_RECV_F_LST, skb); in iriap_data_indication()
856 iriap_do_call_event(self, IAP_RECV_F_LST, NULL); in iriap_data_indication()
860 iriap_getvaluebyclass_confirm(self, skb); in iriap_data_indication()
865 iriap_disconnect_request(self); in iriap_data_indication()
871 if (self->confirm) in iriap_data_indication()
872 self->confirm(IAS_CLASS_UNKNOWN, 0, NULL, in iriap_data_indication()
873 self->priv); in iriap_data_indication()
878 iriap_disconnect_request(self); in iriap_data_indication()
884 if (self->confirm) in iriap_data_indication()
885 self->confirm(IAS_ATTRIB_UNKNOWN, 0, NULL, in iriap_data_indication()
886 self->priv); in iriap_data_indication()
908 void iriap_call_indication(struct iriap_cb *self, struct sk_buff *skb) in iriap_call_indication() argument
913 IRDA_ASSERT(self != NULL, return;); in iriap_call_indication()
914 IRDA_ASSERT(self->magic == IAS_MAGIC, return;); in iriap_call_indication()
933 iriap_getvaluebyclass_indication(self, skb); in iriap_call_indication()
947 struct iriap_cb *self = (struct iriap_cb *) data; in iriap_watchdog_timer_expired() local
949 IRDA_ASSERT(self != NULL, return;); in iriap_watchdog_timer_expired()
950 IRDA_ASSERT(self->magic == IAS_MAGIC, return;); in iriap_watchdog_timer_expired()