diff options
Diffstat (limited to 'drivers/isdn/gigaset/common.c')
| -rw-r--r-- | drivers/isdn/gigaset/common.c | 36 |
1 files changed, 12 insertions, 24 deletions
diff --git a/drivers/isdn/gigaset/common.c b/drivers/isdn/gigaset/common.c index f6f45f221920..5d4befb81057 100644 --- a/drivers/isdn/gigaset/common.c +++ b/drivers/isdn/gigaset/common.c | |||
| @@ -399,8 +399,8 @@ static void gigaset_freebcs(struct bc_state *bcs) | |||
| 399 | gig_dbg(DEBUG_INIT, "clearing bcs[%d]->at_state", bcs->channel); | 399 | gig_dbg(DEBUG_INIT, "clearing bcs[%d]->at_state", bcs->channel); |
| 400 | clear_at_state(&bcs->at_state); | 400 | clear_at_state(&bcs->at_state); |
| 401 | gig_dbg(DEBUG_INIT, "freeing bcs[%d]->skb", bcs->channel); | 401 | gig_dbg(DEBUG_INIT, "freeing bcs[%d]->skb", bcs->channel); |
| 402 | dev_kfree_skb(bcs->skb); | 402 | dev_kfree_skb(bcs->rx_skb); |
| 403 | bcs->skb = NULL; | 403 | bcs->rx_skb = NULL; |
| 404 | 404 | ||
| 405 | for (i = 0; i < AT_NUM; ++i) { | 405 | for (i = 0; i < AT_NUM; ++i) { |
| 406 | kfree(bcs->commands[i]); | 406 | kfree(bcs->commands[i]); |
| @@ -634,19 +634,10 @@ static struct bc_state *gigaset_initbcs(struct bc_state *bcs, | |||
| 634 | bcs->emptycount = 0; | 634 | bcs->emptycount = 0; |
| 635 | #endif | 635 | #endif |
| 636 | 636 | ||
| 637 | gig_dbg(DEBUG_INIT, "allocating bcs[%d]->skb", channel); | 637 | bcs->rx_bufsize = 0; |
| 638 | bcs->fcs = PPP_INITFCS; | 638 | bcs->rx_skb = NULL; |
| 639 | bcs->rx_fcs = PPP_INITFCS; | ||
| 639 | bcs->inputstate = 0; | 640 | bcs->inputstate = 0; |
| 640 | if (cs->ignoreframes) { | ||
| 641 | bcs->skb = NULL; | ||
| 642 | } else { | ||
| 643 | bcs->skb = dev_alloc_skb(SBUFSIZE + cs->hw_hdr_len); | ||
| 644 | if (bcs->skb != NULL) | ||
| 645 | skb_reserve(bcs->skb, cs->hw_hdr_len); | ||
| 646 | else | ||
| 647 | pr_err("out of memory\n"); | ||
| 648 | } | ||
| 649 | |||
| 650 | bcs->channel = channel; | 641 | bcs->channel = channel; |
| 651 | bcs->cs = cs; | 642 | bcs->cs = cs; |
| 652 | 643 | ||
| @@ -658,16 +649,15 @@ static struct bc_state *gigaset_initbcs(struct bc_state *bcs, | |||
| 658 | for (i = 0; i < AT_NUM; ++i) | 649 | for (i = 0; i < AT_NUM; ++i) |
| 659 | bcs->commands[i] = NULL; | 650 | bcs->commands[i] = NULL; |
| 660 | 651 | ||
| 652 | spin_lock_init(&bcs->aplock); | ||
| 653 | bcs->ap = NULL; | ||
| 654 | bcs->apconnstate = 0; | ||
| 655 | |||
| 661 | gig_dbg(DEBUG_INIT, " setting up bcs[%d]->hw", channel); | 656 | gig_dbg(DEBUG_INIT, " setting up bcs[%d]->hw", channel); |
| 662 | if (cs->ops->initbcshw(bcs)) | 657 | if (cs->ops->initbcshw(bcs)) |
| 663 | return bcs; | 658 | return bcs; |
| 664 | 659 | ||
| 665 | gig_dbg(DEBUG_INIT, " failed"); | 660 | gig_dbg(DEBUG_INIT, " failed"); |
| 666 | |||
| 667 | gig_dbg(DEBUG_INIT, " freeing bcs[%d]->skb", channel); | ||
| 668 | dev_kfree_skb(bcs->skb); | ||
| 669 | bcs->skb = NULL; | ||
| 670 | |||
| 671 | return NULL; | 661 | return NULL; |
| 672 | } | 662 | } |
| 673 | 663 | ||
| @@ -839,14 +829,12 @@ void gigaset_bcs_reinit(struct bc_state *bcs) | |||
| 839 | bcs->emptycount = 0; | 829 | bcs->emptycount = 0; |
| 840 | #endif | 830 | #endif |
| 841 | 831 | ||
| 842 | bcs->fcs = PPP_INITFCS; | 832 | bcs->rx_fcs = PPP_INITFCS; |
| 843 | bcs->chstate = 0; | 833 | bcs->chstate = 0; |
| 844 | 834 | ||
| 845 | bcs->ignore = cs->ignoreframes; | 835 | bcs->ignore = cs->ignoreframes; |
| 846 | if (bcs->ignore) { | 836 | dev_kfree_skb(bcs->rx_skb); |
| 847 | dev_kfree_skb(bcs->skb); | 837 | bcs->rx_skb = NULL; |
| 848 | bcs->skb = NULL; | ||
| 849 | } | ||
| 850 | 838 | ||
| 851 | cs->ops->reinitbcshw(bcs); | 839 | cs->ops->reinitbcshw(bcs); |
| 852 | } | 840 | } |
