diff options
-rw-r--r-- | net/irda/irttp.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/net/irda/irttp.c b/net/irda/irttp.c index 7069e4a58257..ce4647542b9e 100644 --- a/net/irda/irttp.c +++ b/net/irda/irttp.c | |||
@@ -369,6 +369,20 @@ static int irttp_param_max_sdu_size(void *instance, irda_param_t *param, | |||
369 | /* Everything is happily mixed up. Waiting for next clean up - Jean II */ | 369 | /* Everything is happily mixed up. Waiting for next clean up - Jean II */ |
370 | 370 | ||
371 | /* | 371 | /* |
372 | * Initialization, that has to be done on new tsap | ||
373 | * instance allocation and on duplication | ||
374 | */ | ||
375 | static void irttp_init_tsap(struct tsap_cb *tsap) | ||
376 | { | ||
377 | spin_lock_init(&tsap->lock); | ||
378 | init_timer(&tsap->todo_timer); | ||
379 | |||
380 | skb_queue_head_init(&tsap->rx_queue); | ||
381 | skb_queue_head_init(&tsap->tx_queue); | ||
382 | skb_queue_head_init(&tsap->rx_fragments); | ||
383 | } | ||
384 | |||
385 | /* | ||
372 | * Function irttp_open_tsap (stsap, notify) | 386 | * Function irttp_open_tsap (stsap, notify) |
373 | * | 387 | * |
374 | * Create TSAP connection endpoint, | 388 | * Create TSAP connection endpoint, |
@@ -395,10 +409,11 @@ struct tsap_cb *irttp_open_tsap(__u8 stsap_sel, int credit, notify_t *notify) | |||
395 | IRDA_DEBUG(0, "%s(), unable to kmalloc!\n", __FUNCTION__); | 409 | IRDA_DEBUG(0, "%s(), unable to kmalloc!\n", __FUNCTION__); |
396 | return NULL; | 410 | return NULL; |
397 | } | 411 | } |
398 | spin_lock_init(&self->lock); | 412 | |
413 | /* Initialize internal objects */ | ||
414 | irttp_init_tsap(self); | ||
399 | 415 | ||
400 | /* Initialise todo timer */ | 416 | /* Initialise todo timer */ |
401 | init_timer(&self->todo_timer); | ||
402 | self->todo_timer.data = (unsigned long) self; | 417 | self->todo_timer.data = (unsigned long) self; |
403 | self->todo_timer.function = &irttp_todo_expired; | 418 | self->todo_timer.function = &irttp_todo_expired; |
404 | 419 | ||
@@ -418,9 +433,6 @@ struct tsap_cb *irttp_open_tsap(__u8 stsap_sel, int credit, notify_t *notify) | |||
418 | self->magic = TTP_TSAP_MAGIC; | 433 | self->magic = TTP_TSAP_MAGIC; |
419 | self->connected = FALSE; | 434 | self->connected = FALSE; |
420 | 435 | ||
421 | skb_queue_head_init(&self->rx_queue); | ||
422 | skb_queue_head_init(&self->tx_queue); | ||
423 | skb_queue_head_init(&self->rx_fragments); | ||
424 | /* | 436 | /* |
425 | * Create LSAP at IrLMP layer | 437 | * Create LSAP at IrLMP layer |
426 | */ | 438 | */ |
@@ -1455,12 +1467,9 @@ struct tsap_cb *irttp_dup(struct tsap_cb *orig, void *instance) | |||
1455 | 1467 | ||
1456 | /* Not everything should be copied */ | 1468 | /* Not everything should be copied */ |
1457 | new->notify.instance = instance; | 1469 | new->notify.instance = instance; |
1458 | spin_lock_init(&new->lock); | ||
1459 | init_timer(&new->todo_timer); | ||
1460 | 1470 | ||
1461 | skb_queue_head_init(&new->rx_queue); | 1471 | /* Initialize internal objects */ |
1462 | skb_queue_head_init(&new->tx_queue); | 1472 | irttp_init_tsap(new); |
1463 | skb_queue_head_init(&new->rx_fragments); | ||
1464 | 1473 | ||
1465 | /* This is locked */ | 1474 | /* This is locked */ |
1466 | hashbin_insert(irttp->tsaps, (irda_queue_t *) new, (long) new, NULL); | 1475 | hashbin_insert(irttp->tsaps, (irda_queue_t *) new, (long) new, NULL); |