diff options
Diffstat (limited to 'net/core/netpoll.c')
| -rw-r--r-- | net/core/netpoll.c | 35 |
1 files changed, 9 insertions, 26 deletions
diff --git a/net/core/netpoll.c b/net/core/netpoll.c index 06be2431753e..18d9cbda3a39 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c | |||
| @@ -539,7 +539,7 @@ int __netpoll_rx(struct sk_buff *skb) | |||
| 539 | { | 539 | { |
| 540 | int proto, len, ulen; | 540 | int proto, len, ulen; |
| 541 | int hits = 0; | 541 | int hits = 0; |
| 542 | struct iphdr *iph; | 542 | const struct iphdr *iph; |
| 543 | struct udphdr *uh; | 543 | struct udphdr *uh; |
| 544 | struct netpoll_info *npinfo = skb->dev->npinfo; | 544 | struct netpoll_info *npinfo = skb->dev->npinfo; |
| 545 | struct netpoll *np, *tmp; | 545 | struct netpoll *np, *tmp; |
| @@ -698,32 +698,8 @@ int netpoll_parse_options(struct netpoll *np, char *opt) | |||
| 698 | 698 | ||
| 699 | if (*cur != 0) { | 699 | if (*cur != 0) { |
| 700 | /* MAC address */ | 700 | /* MAC address */ |
| 701 | if ((delim = strchr(cur, ':')) == NULL) | 701 | if (!mac_pton(cur, np->remote_mac)) |
| 702 | goto parse_failed; | ||
| 703 | *delim = 0; | ||
| 704 | np->remote_mac[0] = simple_strtol(cur, NULL, 16); | ||
| 705 | cur = delim + 1; | ||
| 706 | if ((delim = strchr(cur, ':')) == NULL) | ||
| 707 | goto parse_failed; | ||
| 708 | *delim = 0; | ||
| 709 | np->remote_mac[1] = simple_strtol(cur, NULL, 16); | ||
| 710 | cur = delim + 1; | ||
| 711 | if ((delim = strchr(cur, ':')) == NULL) | ||
| 712 | goto parse_failed; | ||
| 713 | *delim = 0; | ||
| 714 | np->remote_mac[2] = simple_strtol(cur, NULL, 16); | ||
| 715 | cur = delim + 1; | ||
| 716 | if ((delim = strchr(cur, ':')) == NULL) | ||
| 717 | goto parse_failed; | 702 | goto parse_failed; |
| 718 | *delim = 0; | ||
| 719 | np->remote_mac[3] = simple_strtol(cur, NULL, 16); | ||
| 720 | cur = delim + 1; | ||
| 721 | if ((delim = strchr(cur, ':')) == NULL) | ||
| 722 | goto parse_failed; | ||
| 723 | *delim = 0; | ||
| 724 | np->remote_mac[4] = simple_strtol(cur, NULL, 16); | ||
| 725 | cur = delim + 1; | ||
| 726 | np->remote_mac[5] = simple_strtol(cur, NULL, 16); | ||
| 727 | } | 703 | } |
| 728 | 704 | ||
| 729 | netpoll_print_options(np); | 705 | netpoll_print_options(np); |
| @@ -816,6 +792,13 @@ int netpoll_setup(struct netpoll *np) | |||
| 816 | return -ENODEV; | 792 | return -ENODEV; |
| 817 | } | 793 | } |
| 818 | 794 | ||
| 795 | if (ndev->master) { | ||
| 796 | printk(KERN_ERR "%s: %s is a slave device, aborting.\n", | ||
| 797 | np->name, np->dev_name); | ||
| 798 | err = -EBUSY; | ||
| 799 | goto put; | ||
| 800 | } | ||
| 801 | |||
| 819 | if (!netif_running(ndev)) { | 802 | if (!netif_running(ndev)) { |
| 820 | unsigned long atmost, atleast; | 803 | unsigned long atmost, atleast; |
| 821 | 804 | ||
