diff options
Diffstat (limited to 'drivers/net/hamradio/6pack.c')
| -rw-r--r-- | drivers/net/hamradio/6pack.c | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/drivers/net/hamradio/6pack.c b/drivers/net/hamradio/6pack.c index 9d5721287d6f..0f501d2ca935 100644 --- a/drivers/net/hamradio/6pack.c +++ b/drivers/net/hamradio/6pack.c | |||
| @@ -99,9 +99,6 @@ struct sixpack { | |||
| 99 | unsigned int rx_count; | 99 | unsigned int rx_count; |
| 100 | unsigned int rx_count_cooked; | 100 | unsigned int rx_count_cooked; |
| 101 | 101 | ||
| 102 | /* 6pack interface statistics. */ | ||
| 103 | struct net_device_stats stats; | ||
| 104 | |||
| 105 | int mtu; /* Our mtu (to spot changes!) */ | 102 | int mtu; /* Our mtu (to spot changes!) */ |
| 106 | int buffsize; /* Max buffers sizes */ | 103 | int buffsize; /* Max buffers sizes */ |
| 107 | 104 | ||
| @@ -237,7 +234,7 @@ static void sp_encaps(struct sixpack *sp, unsigned char *icp, int len) | |||
| 237 | return; | 234 | return; |
| 238 | 235 | ||
| 239 | out_drop: | 236 | out_drop: |
| 240 | sp->stats.tx_dropped++; | 237 | sp->dev->stats.tx_dropped++; |
| 241 | netif_start_queue(sp->dev); | 238 | netif_start_queue(sp->dev); |
| 242 | if (net_ratelimit()) | 239 | if (net_ratelimit()) |
| 243 | printk(KERN_DEBUG "%s: %s - dropped.\n", sp->dev->name, msg); | 240 | printk(KERN_DEBUG "%s: %s - dropped.\n", sp->dev->name, msg); |
| @@ -252,7 +249,7 @@ static int sp_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 252 | spin_lock_bh(&sp->lock); | 249 | spin_lock_bh(&sp->lock); |
| 253 | /* We were not busy, so we are now... :-) */ | 250 | /* We were not busy, so we are now... :-) */ |
| 254 | netif_stop_queue(dev); | 251 | netif_stop_queue(dev); |
| 255 | sp->stats.tx_bytes += skb->len; | 252 | dev->stats.tx_bytes += skb->len; |
| 256 | sp_encaps(sp, skb->data, skb->len); | 253 | sp_encaps(sp, skb->data, skb->len); |
| 257 | spin_unlock_bh(&sp->lock); | 254 | spin_unlock_bh(&sp->lock); |
| 258 | 255 | ||
| @@ -298,18 +295,14 @@ static int sp_header(struct sk_buff *skb, struct net_device *dev, | |||
| 298 | return 0; | 295 | return 0; |
| 299 | } | 296 | } |
| 300 | 297 | ||
| 301 | static struct net_device_stats *sp_get_stats(struct net_device *dev) | ||
| 302 | { | ||
| 303 | struct sixpack *sp = netdev_priv(dev); | ||
| 304 | return &sp->stats; | ||
| 305 | } | ||
| 306 | |||
| 307 | static int sp_set_mac_address(struct net_device *dev, void *addr) | 298 | static int sp_set_mac_address(struct net_device *dev, void *addr) |
| 308 | { | 299 | { |
| 309 | struct sockaddr_ax25 *sa = addr; | 300 | struct sockaddr_ax25 *sa = addr; |
| 310 | 301 | ||
| 311 | netif_tx_lock_bh(dev); | 302 | netif_tx_lock_bh(dev); |
| 303 | netif_addr_lock(dev); | ||
| 312 | memcpy(dev->dev_addr, &sa->sax25_call, AX25_ADDR_LEN); | 304 | memcpy(dev->dev_addr, &sa->sax25_call, AX25_ADDR_LEN); |
| 305 | netif_addr_unlock(dev); | ||
| 313 | netif_tx_unlock_bh(dev); | 306 | netif_tx_unlock_bh(dev); |
| 314 | 307 | ||
| 315 | return 0; | 308 | return 0; |
| @@ -338,7 +331,6 @@ static void sp_setup(struct net_device *dev) | |||
| 338 | dev->destructor = free_netdev; | 331 | dev->destructor = free_netdev; |
| 339 | dev->stop = sp_close; | 332 | dev->stop = sp_close; |
| 340 | 333 | ||
| 341 | dev->get_stats = sp_get_stats; | ||
| 342 | dev->set_mac_address = sp_set_mac_address; | 334 | dev->set_mac_address = sp_set_mac_address; |
| 343 | dev->hard_header_len = AX25_MAX_HEADER_LEN; | 335 | dev->hard_header_len = AX25_MAX_HEADER_LEN; |
| 344 | dev->header_ops = &sp_header_ops; | 336 | dev->header_ops = &sp_header_ops; |
| @@ -370,7 +362,7 @@ static void sp_bump(struct sixpack *sp, char cmd) | |||
| 370 | 362 | ||
| 371 | count = sp->rcount + 1; | 363 | count = sp->rcount + 1; |
| 372 | 364 | ||
| 373 | sp->stats.rx_bytes += count; | 365 | sp->dev->stats.rx_bytes += count; |
| 374 | 366 | ||
| 375 | if ((skb = dev_alloc_skb(count)) == NULL) | 367 | if ((skb = dev_alloc_skb(count)) == NULL) |
| 376 | goto out_mem; | 368 | goto out_mem; |
| @@ -382,12 +374,12 @@ static void sp_bump(struct sixpack *sp, char cmd) | |||
| 382 | skb->protocol = ax25_type_trans(skb, sp->dev); | 374 | skb->protocol = ax25_type_trans(skb, sp->dev); |
| 383 | netif_rx(skb); | 375 | netif_rx(skb); |
| 384 | sp->dev->last_rx = jiffies; | 376 | sp->dev->last_rx = jiffies; |
| 385 | sp->stats.rx_packets++; | 377 | sp->dev->stats.rx_packets++; |
| 386 | 378 | ||
| 387 | return; | 379 | return; |
| 388 | 380 | ||
| 389 | out_mem: | 381 | out_mem: |
| 390 | sp->stats.rx_dropped++; | 382 | sp->dev->stats.rx_dropped++; |
| 391 | } | 383 | } |
| 392 | 384 | ||
| 393 | 385 | ||
| @@ -436,7 +428,7 @@ static void sixpack_write_wakeup(struct tty_struct *tty) | |||
| 436 | if (sp->xleft <= 0) { | 428 | if (sp->xleft <= 0) { |
| 437 | /* Now serial buffer is almost free & we can start | 429 | /* Now serial buffer is almost free & we can start |
| 438 | * transmission of another packet */ | 430 | * transmission of another packet */ |
| 439 | sp->stats.tx_packets++; | 431 | sp->dev->stats.tx_packets++; |
| 440 | clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags); | 432 | clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags); |
| 441 | sp->tx_enable = 0; | 433 | sp->tx_enable = 0; |
| 442 | netif_wake_queue(sp->dev); | 434 | netif_wake_queue(sp->dev); |
| @@ -484,7 +476,7 @@ static void sixpack_receive_buf(struct tty_struct *tty, | |||
| 484 | count--; | 476 | count--; |
| 485 | if (fp && *fp++) { | 477 | if (fp && *fp++) { |
| 486 | if (!test_and_set_bit(SIXPF_ERROR, &sp->flags)) | 478 | if (!test_and_set_bit(SIXPF_ERROR, &sp->flags)) |
| 487 | sp->stats.rx_errors++; | 479 | sp->dev->stats.rx_errors++; |
| 488 | continue; | 480 | continue; |
| 489 | } | 481 | } |
| 490 | } | 482 | } |
| @@ -783,7 +775,7 @@ static int sixpack_ioctl(struct tty_struct *tty, struct file *file, | |||
| 783 | return err; | 775 | return err; |
| 784 | } | 776 | } |
| 785 | 777 | ||
| 786 | static struct tty_ldisc sp_ldisc = { | 778 | static struct tty_ldisc_ops sp_ldisc = { |
| 787 | .owner = THIS_MODULE, | 779 | .owner = THIS_MODULE, |
| 788 | .magic = TTY_LDISC_MAGIC, | 780 | .magic = TTY_LDISC_MAGIC, |
| 789 | .name = "6pack", | 781 | .name = "6pack", |
