git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
drivers/net/usb/asix.c: Fix unaligned accesses
[safe/jmp/linux-2.6]
/
drivers
/
net
/
e100.c
diff --git
a/drivers/net/e100.c
b/drivers/net/e100.c
index
c0cd576
..
b194bad
100644
(file)
--- a/
drivers/net/e100.c
+++ b/
drivers/net/e100.c
@@
-168,6
+168,7
@@
#include <linux/ethtool.h>
#include <linux/string.h>
#include <linux/firmware.h>
#include <linux/ethtool.h>
#include <linux/string.h>
#include <linux/firmware.h>
+#include <linux/rtnetlink.h>
#include <asm/unaligned.h>
#include <asm/unaligned.h>
@@
-1545,16
+1546,16
@@
static int e100_hw_init(struct nic *nic)
static void e100_multi(struct nic *nic, struct cb *cb, struct sk_buff *skb)
{
struct net_device *netdev = nic->netdev;
static void e100_multi(struct nic *nic, struct cb *cb, struct sk_buff *skb)
{
struct net_device *netdev = nic->netdev;
- struct
dev_mc_list *list
;
+ struct
netdev_hw_addr *ha
;
u16 i, count = min(netdev_mc_count(netdev), E100_MAX_MULTICAST_ADDRS);
cb->command = cpu_to_le16(cb_multi);
cb->u.multi.count = cpu_to_le16(count * ETH_ALEN);
i = 0;
u16 i, count = min(netdev_mc_count(netdev), E100_MAX_MULTICAST_ADDRS);
cb->command = cpu_to_le16(cb_multi);
cb->u.multi.count = cpu_to_le16(count * ETH_ALEN);
i = 0;
- netdev_for_each_mc_addr(
list
, netdev) {
+ netdev_for_each_mc_addr(
ha
, netdev) {
if (i == count)
break;
if (i == count)
break;
- memcpy(&cb->u.multi.addr[i++ * ETH_ALEN], &
list->dmi_
addr,
+ memcpy(&cb->u.multi.addr[i++ * ETH_ALEN], &
ha->
addr,
ETH_ALEN);
}
}
ETH_ALEN);
}
}
@@
-1763,7
+1764,6
@@
static netdev_tx_t e100_xmit_frame(struct sk_buff *skb,
return NETDEV_TX_BUSY;
}
return NETDEV_TX_BUSY;
}
- netdev->trans_start = jiffies;
return NETDEV_TX_OK;
}
return NETDEV_TX_OK;
}
@@
-2280,8
+2280,13
@@
static void e100_tx_timeout_task(struct work_struct *work)
netif_printk(nic, tx_err, KERN_DEBUG, nic->netdev,
"scb.status=0x%02X\n", ioread8(&nic->csr->scb.status));
netif_printk(nic, tx_err, KERN_DEBUG, nic->netdev,
"scb.status=0x%02X\n", ioread8(&nic->csr->scb.status));
- e100_down(netdev_priv(netdev));
- e100_up(netdev_priv(netdev));
+
+ rtnl_lock();
+ if (netif_running(netdev)) {
+ e100_down(netdev_priv(netdev));
+ e100_up(netdev_priv(netdev));
+ }
+ rtnl_unlock();
}
static int e100_loopback_test(struct nic *nic, enum loopback loopback_mode)
}
static int e100_loopback_test(struct nic *nic, enum loopback loopback_mode)