diff options
Diffstat (limited to 'drivers/tty/ipwireless/network.c')
-rw-r--r-- | drivers/tty/ipwireless/network.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/drivers/tty/ipwireless/network.c b/drivers/tty/ipwireless/network.c index c0dfb642383..f7daeea598e 100644 --- a/drivers/tty/ipwireless/network.c +++ b/drivers/tty/ipwireless/network.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include <linux/ppp_channel.h> | 22 | #include <linux/ppp_channel.h> |
23 | #include <linux/ppp_defs.h> | 23 | #include <linux/ppp_defs.h> |
24 | #include <linux/slab.h> | 24 | #include <linux/slab.h> |
25 | #include <linux/ppp-ioctl.h> | 25 | #include <linux/if_ppp.h> |
26 | #include <linux/skbuff.h> | 26 | #include <linux/skbuff.h> |
27 | 27 | ||
28 | #include "network.h" | 28 | #include "network.h" |
@@ -274,12 +274,7 @@ static void do_go_online(struct work_struct *work_go_online) | |||
274 | network->xaccm[0] = ~0U; | 274 | network->xaccm[0] = ~0U; |
275 | network->xaccm[3] = 0x60000000U; | 275 | network->xaccm[3] = 0x60000000U; |
276 | network->raccm = ~0U; | 276 | network->raccm = ~0U; |
277 | if (ppp_register_channel(channel) < 0) { | 277 | ppp_register_channel(channel); |
278 | printk(KERN_ERR IPWIRELESS_PCCARD_NAME | ||
279 | ": unable to register PPP channel\n"); | ||
280 | kfree(channel); | ||
281 | return; | ||
282 | } | ||
283 | spin_lock_irqsave(&network->lock, flags); | 278 | spin_lock_irqsave(&network->lock, flags); |
284 | network->ppp_channel = channel; | 279 | network->ppp_channel = channel; |
285 | } | 280 | } |
@@ -352,8 +347,6 @@ static struct sk_buff *ipw_packet_received_skb(unsigned char *data, | |||
352 | } | 347 | } |
353 | 348 | ||
354 | skb = dev_alloc_skb(length + 4); | 349 | skb = dev_alloc_skb(length + 4); |
355 | if (skb == NULL) | ||
356 | return NULL; | ||
357 | skb_reserve(skb, 2); | 350 | skb_reserve(skb, 2); |
358 | memcpy(skb_put(skb, length), data, length); | 351 | memcpy(skb_put(skb, length), data, length); |
359 | 352 | ||
@@ -399,8 +392,7 @@ void ipwireless_network_packet_received(struct ipw_network *network, | |||
399 | 392 | ||
400 | /* Send the data to the ppp_generic module. */ | 393 | /* Send the data to the ppp_generic module. */ |
401 | skb = ipw_packet_received_skb(data, length); | 394 | skb = ipw_packet_received_skb(data, length); |
402 | if (skb) | 395 | ppp_input(network->ppp_channel, skb); |
403 | ppp_input(network->ppp_channel, skb); | ||
404 | } else | 396 | } else |
405 | spin_unlock_irqrestore(&network->lock, | 397 | spin_unlock_irqrestore(&network->lock, |
406 | flags); | 398 | flags); |
@@ -438,8 +430,8 @@ void ipwireless_network_free(struct ipw_network *network) | |||
438 | network->shutting_down = 1; | 430 | network->shutting_down = 1; |
439 | 431 | ||
440 | ipwireless_ppp_close(network); | 432 | ipwireless_ppp_close(network); |
441 | flush_work(&network->work_go_online); | 433 | flush_work_sync(&network->work_go_online); |
442 | flush_work(&network->work_go_offline); | 434 | flush_work_sync(&network->work_go_offline); |
443 | 435 | ||
444 | ipwireless_stop_interrupts(network->hardware); | 436 | ipwireless_stop_interrupts(network->hardware); |
445 | ipwireless_associate_network(network->hardware, NULL); | 437 | ipwireless_associate_network(network->hardware, NULL); |