projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[powerpc.git]
/
net
/
netrom
/
nr_dev.c
diff --git
a/net/netrom/nr_dev.c
b/net/netrom/nr_dev.c
index
9b8eb54
..
c7b5d93
100644
(file)
--- a/
net/netrom/nr_dev.c
+++ b/
net/netrom/nr_dev.c
@@
-9,7
+9,6
@@
#include <linux/module.h>
#include <linux/proc_fs.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/proc_fs.h>
#include <linux/kernel.h>
-#include <linux/sched.h>
#include <linux/interrupt.h>
#include <linux/fs.h>
#include <linux/types.h>
#include <linux/interrupt.h>
#include <linux/fs.h>
#include <linux/types.h>
@@
-57,8
+56,8
@@
int nr_rx_ip(struct sk_buff *skb, struct net_device *dev)
/* Spoof incoming device */
skb->dev = dev;
/* Spoof incoming device */
skb->dev = dev;
- skb
->mac.raw = skb->nh.raw
;
- skb
->nh.raw = skb->data
;
+ skb
_reset_mac_header(skb)
;
+ skb
_reset_network_header(skb)
;
skb->pkt_type = PACKET_HOST;
netif_rx(skb);
skb->pkt_type = PACKET_HOST;
netif_rx(skb);
@@
-128,25
+127,37
@@
static int nr_header(struct sk_buff *skb, struct net_device *dev, unsigned short
return -37;
}
return -37;
}
-static int nr_set_mac_address(struct net_device *dev, void *addr)
+static int
__must_check
nr_set_mac_address(struct net_device *dev, void *addr)
{
struct sockaddr *sa = addr;
{
struct sockaddr *sa = addr;
+ int err;
+
+ if (!memcmp(dev->dev_addr, sa->sa_data, dev->addr_len))
+ return 0;
+
+ if (dev->flags & IFF_UP) {
+ err = ax25_listen_register((ax25_address *)sa->sa_data, NULL);
+ if (err)
+ return err;
- if (dev->flags & IFF_UP)
ax25_listen_release((ax25_address *)dev->dev_addr, NULL);
ax25_listen_release((ax25_address *)dev->dev_addr, NULL);
+ }
memcpy(dev->dev_addr, sa->sa_data, dev->addr_len);
memcpy(dev->dev_addr, sa->sa_data, dev->addr_len);
- if (dev->flags & IFF_UP)
- ax25_listen_register((ax25_address *)dev->dev_addr, NULL);
-
return 0;
}
static int nr_open(struct net_device *dev)
{
return 0;
}
static int nr_open(struct net_device *dev)
{
+ int err;
+
+ err = ax25_listen_register((ax25_address *)dev->dev_addr, NULL);
+ if (err)
+ return err;
+
netif_start_queue(dev);
netif_start_queue(dev);
- ax25_listen_register((ax25_address *)dev->dev_addr, NULL);
+
return 0;
}
return 0;
}