aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2009-07-16 23:21:24 -0400
committerDavid S. Miller <davem@davemloft.net>2009-07-16 23:21:24 -0400
commitda8120355e80ddaf534adb8ed910871d97512d56 (patch)
tree9958a6c33e29b5af5faccf6650e98729151618a2 /drivers/net
parentc86ae82605ef92594a0de809a8c588ae955fed63 (diff)
parent7fefe6a88494b00b151b5ca7bb84daaa781bbca7 (diff)
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: drivers/net/wireless/orinoco/main.c
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/8139too.c1
-rw-r--r--drivers/net/arm/ixp4xx_eth.c4
-rw-r--r--drivers/net/atl1c/atl1c.h8
-rw-r--r--drivers/net/atl1c/atl1c_main.c2
-rw-r--r--drivers/net/atlx/atl2.c2
-rw-r--r--drivers/net/bonding/bond_main.c12
-rw-r--r--drivers/net/cs89x0.c7
-rw-r--r--drivers/net/e100.c3
-rw-r--r--drivers/net/ehea/ehea_main.c2
-rw-r--r--drivers/net/fec.c1
-rw-r--r--drivers/net/gianfar.c2
-rw-r--r--drivers/net/igb/igb_main.c77
-rw-r--r--drivers/net/isa-skeleton.c5
-rw-r--r--drivers/net/ixgbe/ixgbe_dcb_nl.c6
-rw-r--r--drivers/net/phy/phy_device.c4
-rw-r--r--drivers/net/plip.c3
-rw-r--r--drivers/net/ps3_gelic_net.c1
-rw-r--r--drivers/net/ps3_gelic_wireless.c1
-rw-r--r--drivers/net/sky2.c9
-rw-r--r--drivers/net/smc91x.c1
-rw-r--r--drivers/net/smsc911x.c1
-rw-r--r--drivers/net/sunvnet.c2
-rw-r--r--drivers/net/usb/cdc_eem.c2
-rw-r--r--drivers/net/usb/kaweth.c3
-rw-r--r--drivers/net/usb/pegasus.c3
-rw-r--r--drivers/net/via-rhine.c1
-rw-r--r--drivers/net/wireless/orinoco/main.c2
27 files changed, 97 insertions, 68 deletions
diff --git a/drivers/net/8139too.c b/drivers/net/8139too.c
index 1a223cd1933a..b39ec98345ea 100644
--- a/drivers/net/8139too.c
+++ b/drivers/net/8139too.c
@@ -908,6 +908,7 @@ static const struct net_device_ops rtl8139_netdev_ops = {
908 .ndo_open = rtl8139_open, 908 .ndo_open = rtl8139_open,
909 .ndo_stop = rtl8139_close, 909 .ndo_stop = rtl8139_close,
910 .ndo_get_stats = rtl8139_get_stats, 910 .ndo_get_stats = rtl8139_get_stats,
911 .ndo_change_mtu = eth_change_mtu,
911 .ndo_validate_addr = eth_validate_addr, 912 .ndo_validate_addr = eth_validate_addr,
912 .ndo_set_mac_address = rtl8139_set_mac_address, 913 .ndo_set_mac_address = rtl8139_set_mac_address,
913 .ndo_start_xmit = rtl8139_start_xmit, 914 .ndo_start_xmit = rtl8139_start_xmit,
diff --git a/drivers/net/arm/ixp4xx_eth.c b/drivers/net/arm/ixp4xx_eth.c
index 6f42ad728915..3fe09876e76d 100644
--- a/drivers/net/arm/ixp4xx_eth.c
+++ b/drivers/net/arm/ixp4xx_eth.c
@@ -1142,7 +1142,9 @@ static const struct net_device_ops ixp4xx_netdev_ops = {
1142 .ndo_start_xmit = eth_xmit, 1142 .ndo_start_xmit = eth_xmit,
1143 .ndo_set_multicast_list = eth_set_mcast_list, 1143 .ndo_set_multicast_list = eth_set_mcast_list,
1144 .ndo_do_ioctl = eth_ioctl, 1144 .ndo_do_ioctl = eth_ioctl,
1145 1145 .ndo_change_mtu = eth_change_mtu,
1146 .ndo_set_mac_address = eth_mac_addr,
1147 .ndo_validate_addr = eth_validate_addr,
1146}; 1148};
1147 1149
1148static int __devinit eth_init_one(struct platform_device *pdev) 1150static int __devinit eth_init_one(struct platform_device *pdev)
diff --git a/drivers/net/atl1c/atl1c.h b/drivers/net/atl1c/atl1c.h
index e1658ef3fcdf..2a1120ad2e74 100644
--- a/drivers/net/atl1c/atl1c.h
+++ b/drivers/net/atl1c/atl1c.h
@@ -188,14 +188,14 @@ struct atl1c_tpd_ext_desc {
188#define RRS_HDS_TYPE_DATA 2 188#define RRS_HDS_TYPE_DATA 2
189 189
190#define RRS_IS_NO_HDS_TYPE(flag) \ 190#define RRS_IS_NO_HDS_TYPE(flag) \
191 (((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == 0) 191 ((((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK) == 0)
192 192
193#define RRS_IS_HDS_HEAD(flag) \ 193#define RRS_IS_HDS_HEAD(flag) \
194 (((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == \ 194 ((((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK) == \
195 RRS_HDS_TYPE_HEAD) 195 RRS_HDS_TYPE_HEAD)
196 196
197#define RRS_IS_HDS_DATA(flag) \ 197#define RRS_IS_HDS_DATA(flag) \
198 (((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == \ 198 ((((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK) == \
199 RRS_HDS_TYPE_DATA) 199 RRS_HDS_TYPE_DATA)
200 200
201/* rrs word 3 bit 0:31 */ 201/* rrs word 3 bit 0:31 */
@@ -245,7 +245,7 @@ struct atl1c_tpd_ext_desc {
245#define RRS_PACKET_TYPE_802_3 1 245#define RRS_PACKET_TYPE_802_3 1
246#define RRS_PACKET_TYPE_ETH 0 246#define RRS_PACKET_TYPE_ETH 0
247#define RRS_PACKET_IS_ETH(word) \ 247#define RRS_PACKET_IS_ETH(word) \
248 (((word) >> RRS_PACKET_TYPE_SHIFT) & RRS_PACKET_TYPE_MASK == \ 248 ((((word) >> RRS_PACKET_TYPE_SHIFT) & RRS_PACKET_TYPE_MASK) == \
249 RRS_PACKET_TYPE_ETH) 249 RRS_PACKET_TYPE_ETH)
250#define RRS_RXD_IS_VALID(word) \ 250#define RRS_RXD_IS_VALID(word) \
251 ((((word) >> RRS_RXD_UPDATED_SHIFT) & RRS_RXD_UPDATED_MASK) == 1) 251 ((((word) >> RRS_RXD_UPDATED_SHIFT) & RRS_RXD_UPDATED_MASK) == 1)
diff --git a/drivers/net/atl1c/atl1c_main.c b/drivers/net/atl1c/atl1c_main.c
index cd547a205fb9..a383122679de 100644
--- a/drivers/net/atl1c/atl1c_main.c
+++ b/drivers/net/atl1c/atl1c_main.c
@@ -1689,7 +1689,7 @@ static void atl1c_clean_rx_irq(struct atl1c_adapter *adapter, u8 que,
1689 if (likely(RRS_RXD_IS_VALID(rrs->word3))) { 1689 if (likely(RRS_RXD_IS_VALID(rrs->word3))) {
1690 rfd_num = (rrs->word0 >> RRS_RX_RFD_CNT_SHIFT) & 1690 rfd_num = (rrs->word0 >> RRS_RX_RFD_CNT_SHIFT) &
1691 RRS_RX_RFD_CNT_MASK; 1691 RRS_RX_RFD_CNT_MASK;
1692 if (unlikely(rfd_num) != 1) 1692 if (unlikely(rfd_num != 1))
1693 /* TODO support mul rfd*/ 1693 /* TODO support mul rfd*/
1694 if (netif_msg_rx_err(adapter)) 1694 if (netif_msg_rx_err(adapter))
1695 dev_warn(&pdev->dev, 1695 dev_warn(&pdev->dev,
diff --git a/drivers/net/atlx/atl2.c b/drivers/net/atlx/atl2.c
index c734b1983ec1..204db961029e 100644
--- a/drivers/net/atlx/atl2.c
+++ b/drivers/net/atlx/atl2.c
@@ -2071,7 +2071,7 @@ static int atl2_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
2071 if (wol->wolopts & (WAKE_ARP | WAKE_MAGICSECURE)) 2071 if (wol->wolopts & (WAKE_ARP | WAKE_MAGICSECURE))
2072 return -EOPNOTSUPP; 2072 return -EOPNOTSUPP;
2073 2073
2074 if (wol->wolopts & (WAKE_MCAST|WAKE_BCAST|WAKE_MCAST)) 2074 if (wol->wolopts & (WAKE_UCAST | WAKE_BCAST | WAKE_MCAST))
2075 return -EOPNOTSUPP; 2075 return -EOPNOTSUPP;
2076 2076
2077 /* these settings will always override what we currently have */ 2077 /* these settings will always override what we currently have */
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 66596d80b505..3bf0cc61e92c 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1459,8 +1459,16 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
1459 * ether type (eg ARPHRD_ETHER and ARPHRD_INFINIBAND) share the same bond 1459 * ether type (eg ARPHRD_ETHER and ARPHRD_INFINIBAND) share the same bond
1460 */ 1460 */
1461 if (bond->slave_cnt == 0) { 1461 if (bond->slave_cnt == 0) {
1462 if (slave_dev->type != ARPHRD_ETHER) 1462 if (bond_dev->type != slave_dev->type) {
1463 bond_setup_by_slave(bond_dev, slave_dev); 1463 dev_close(bond_dev);
1464 pr_debug("%s: change device type from %d to %d\n",
1465 bond_dev->name, bond_dev->type, slave_dev->type);
1466 if (slave_dev->type != ARPHRD_ETHER)
1467 bond_setup_by_slave(bond_dev, slave_dev);
1468 else
1469 ether_setup(bond_dev);
1470 dev_open(bond_dev);
1471 }
1464 } else if (bond_dev->type != slave_dev->type) { 1472 } else if (bond_dev->type != slave_dev->type) {
1465 pr_err(DRV_NAME ": %s ether type (%d) is different " 1473 pr_err(DRV_NAME ": %s ether type (%d) is different "
1466 "from other slaves (%d), can not enslave it.\n", 1474 "from other slaves (%d), can not enslave it.\n",
diff --git a/drivers/net/cs89x0.c b/drivers/net/cs89x0.c
index e5948970a42a..ecf88abbf99e 100644
--- a/drivers/net/cs89x0.c
+++ b/drivers/net/cs89x0.c
@@ -1524,6 +1524,7 @@ static void net_timeout(struct net_device *dev)
1524static int net_send_packet(struct sk_buff *skb, struct net_device *dev) 1524static int net_send_packet(struct sk_buff *skb, struct net_device *dev)
1525{ 1525{
1526 struct net_local *lp = netdev_priv(dev); 1526 struct net_local *lp = netdev_priv(dev);
1527 unsigned long flags;
1527 1528
1528 if (net_debug > 3) { 1529 if (net_debug > 3) {
1529 printk("%s: sent %d byte packet of type %x\n", 1530 printk("%s: sent %d byte packet of type %x\n",
@@ -1535,7 +1536,7 @@ static int net_send_packet(struct sk_buff *skb, struct net_device *dev)
1535 ask the chip to start transmitting before the 1536 ask the chip to start transmitting before the
1536 whole packet has been completely uploaded. */ 1537 whole packet has been completely uploaded. */
1537 1538
1538 spin_lock_irq(&lp->lock); 1539 spin_lock_irqsave(&lp->lock, flags);
1539 netif_stop_queue(dev); 1540 netif_stop_queue(dev);
1540 1541
1541 /* initiate a transmit sequence */ 1542 /* initiate a transmit sequence */
@@ -1549,13 +1550,13 @@ static int net_send_packet(struct sk_buff *skb, struct net_device *dev)
1549 * we're waiting for TxOk, so return 1 and requeue this packet. 1550 * we're waiting for TxOk, so return 1 and requeue this packet.
1550 */ 1551 */
1551 1552
1552 spin_unlock_irq(&lp->lock); 1553 spin_unlock_irqrestore(&lp->lock, flags);
1553 if (net_debug) printk("cs89x0: Tx buffer not free!\n"); 1554 if (net_debug) printk("cs89x0: Tx buffer not free!\n");
1554 return NETDEV_TX_BUSY; 1555 return NETDEV_TX_BUSY;
1555 } 1556 }
1556 /* Write the contents of the packet */ 1557 /* Write the contents of the packet */
1557 writewords(dev->base_addr, TX_FRAME_PORT,skb->data,(skb->len+1) >>1); 1558 writewords(dev->base_addr, TX_FRAME_PORT,skb->data,(skb->len+1) >>1);
1558 spin_unlock_irq(&lp->lock); 1559 spin_unlock_irqrestore(&lp->lock, flags);
1559 lp->stats.tx_bytes += skb->len; 1560 lp->stats.tx_bytes += skb->len;
1560 dev->trans_start = jiffies; 1561 dev->trans_start = jiffies;
1561 dev_kfree_skb (skb); 1562 dev_kfree_skb (skb);
diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index a150d58ec60d..569df19f0df5 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -1897,6 +1897,9 @@ static int e100_rx_indicate(struct nic *nic, struct rx *rx,
1897 1897
1898 if (ioread8(&nic->csr->scb.status) & rus_no_res) 1898 if (ioread8(&nic->csr->scb.status) & rus_no_res)
1899 nic->ru_running = RU_SUSPENDED; 1899 nic->ru_running = RU_SUSPENDED;
1900 pci_dma_sync_single_for_device(nic->pdev, rx->dma_addr,
1901 sizeof(struct rfd),
1902 PCI_DMA_BIDIRECTIONAL);
1900 return -ENODATA; 1903 return -ENODATA;
1901 } 1904 }
1902 1905
diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c
index 147c4b088fb3..e8d46cc1bec2 100644
--- a/drivers/net/ehea/ehea_main.c
+++ b/drivers/net/ehea/ehea_main.c
@@ -3080,7 +3080,9 @@ static const struct net_device_ops ehea_netdev_ops = {
3080 .ndo_poll_controller = ehea_netpoll, 3080 .ndo_poll_controller = ehea_netpoll,
3081#endif 3081#endif
3082 .ndo_get_stats = ehea_get_stats, 3082 .ndo_get_stats = ehea_get_stats,
3083 .ndo_change_mtu = eth_change_mtu,
3083 .ndo_set_mac_address = ehea_set_mac_addr, 3084 .ndo_set_mac_address = ehea_set_mac_addr,
3085 .ndo_validate_addr = eth_validate_addr,
3084 .ndo_set_multicast_list = ehea_set_multicast_list, 3086 .ndo_set_multicast_list = ehea_set_multicast_list,
3085 .ndo_change_mtu = ehea_change_mtu, 3087 .ndo_change_mtu = ehea_change_mtu,
3086 .ndo_vlan_rx_register = ehea_vlan_rx_register, 3088 .ndo_vlan_rx_register = ehea_vlan_rx_register,
diff --git a/drivers/net/fec.c b/drivers/net/fec.c
index 08f1edb83f27..e3d99fe53ce6 100644
--- a/drivers/net/fec.c
+++ b/drivers/net/fec.c
@@ -1642,6 +1642,7 @@ static const struct net_device_ops fec_netdev_ops = {
1642 .ndo_stop = fec_enet_close, 1642 .ndo_stop = fec_enet_close,
1643 .ndo_start_xmit = fec_enet_start_xmit, 1643 .ndo_start_xmit = fec_enet_start_xmit,
1644 .ndo_set_multicast_list = set_multicast_list, 1644 .ndo_set_multicast_list = set_multicast_list,
1645 .ndo_change_mtu = eth_change_mtu,
1645 .ndo_validate_addr = eth_validate_addr, 1646 .ndo_validate_addr = eth_validate_addr,
1646 .ndo_tx_timeout = fec_timeout, 1647 .ndo_tx_timeout = fec_timeout,
1647 .ndo_set_mac_address = fec_set_mac_address, 1648 .ndo_set_mac_address = fec_set_mac_address,
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
index 21f5b0af78c9..b2db449966e2 100644
--- a/drivers/net/gianfar.c
+++ b/drivers/net/gianfar.c
@@ -156,6 +156,8 @@ static const struct net_device_ops gfar_netdev_ops = {
156 .ndo_tx_timeout = gfar_timeout, 156 .ndo_tx_timeout = gfar_timeout,
157 .ndo_do_ioctl = gfar_ioctl, 157 .ndo_do_ioctl = gfar_ioctl,
158 .ndo_vlan_rx_register = gfar_vlan_rx_register, 158 .ndo_vlan_rx_register = gfar_vlan_rx_register,
159 .ndo_set_mac_address = eth_mac_addr,
160 .ndo_validate_addr = eth_validate_addr,
159#ifdef CONFIG_NET_POLL_CONTROLLER 161#ifdef CONFIG_NET_POLL_CONTROLLER
160 .ndo_poll_controller = gfar_netpoll, 162 .ndo_poll_controller = gfar_netpoll,
161#endif 163#endif
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
index be480292aba1..adb09d32625d 100644
--- a/drivers/net/igb/igb_main.c
+++ b/drivers/net/igb/igb_main.c
@@ -127,14 +127,48 @@ static void igb_restore_vlan(struct igb_adapter *);
127static void igb_ping_all_vfs(struct igb_adapter *); 127static void igb_ping_all_vfs(struct igb_adapter *);
128static void igb_msg_task(struct igb_adapter *); 128static void igb_msg_task(struct igb_adapter *);
129static int igb_rcv_msg_from_vf(struct igb_adapter *, u32); 129static int igb_rcv_msg_from_vf(struct igb_adapter *, u32);
130static inline void igb_set_rah_pool(struct e1000_hw *, int , int);
131static void igb_set_mc_list_pools(struct igb_adapter *, int, u16); 130static void igb_set_mc_list_pools(struct igb_adapter *, int, u16);
132static void igb_vmm_control(struct igb_adapter *); 131static void igb_vmm_control(struct igb_adapter *);
133static inline void igb_set_vmolr(struct e1000_hw *, int);
134static inline int igb_set_vf_rlpml(struct igb_adapter *, int, int);
135static int igb_set_vf_mac(struct igb_adapter *adapter, int, unsigned char *); 132static int igb_set_vf_mac(struct igb_adapter *adapter, int, unsigned char *);
136static void igb_restore_vf_multicasts(struct igb_adapter *adapter); 133static void igb_restore_vf_multicasts(struct igb_adapter *adapter);
137 134
135static inline void igb_set_vmolr(struct e1000_hw *hw, int vfn)
136{
137 u32 reg_data;
138
139 reg_data = rd32(E1000_VMOLR(vfn));
140 reg_data |= E1000_VMOLR_BAM | /* Accept broadcast */
141 E1000_VMOLR_ROPE | /* Accept packets matched in UTA */
142 E1000_VMOLR_ROMPE | /* Accept packets matched in MTA */
143 E1000_VMOLR_AUPE | /* Accept untagged packets */
144 E1000_VMOLR_STRVLAN; /* Strip vlan tags */
145 wr32(E1000_VMOLR(vfn), reg_data);
146}
147
148static inline int igb_set_vf_rlpml(struct igb_adapter *adapter, int size,
149 int vfn)
150{
151 struct e1000_hw *hw = &adapter->hw;
152 u32 vmolr;
153
154 vmolr = rd32(E1000_VMOLR(vfn));
155 vmolr &= ~E1000_VMOLR_RLPML_MASK;
156 vmolr |= size | E1000_VMOLR_LPE;
157 wr32(E1000_VMOLR(vfn), vmolr);
158
159 return 0;
160}
161
162static inline void igb_set_rah_pool(struct e1000_hw *hw, int pool, int entry)
163{
164 u32 reg_data;
165
166 reg_data = rd32(E1000_RAH(entry));
167 reg_data &= ~E1000_RAH_POOL_MASK;
168 reg_data |= E1000_RAH_POOL_1 << pool;;
169 wr32(E1000_RAH(entry), reg_data);
170}
171
138#ifdef CONFIG_PM 172#ifdef CONFIG_PM
139static int igb_suspend(struct pci_dev *, pm_message_t); 173static int igb_suspend(struct pci_dev *, pm_message_t);
140static int igb_resume(struct pci_dev *); 174static int igb_resume(struct pci_dev *);
@@ -5418,43 +5452,6 @@ static void igb_io_resume(struct pci_dev *pdev)
5418 igb_get_hw_control(adapter); 5452 igb_get_hw_control(adapter);
5419} 5453}
5420 5454
5421static inline void igb_set_vmolr(struct e1000_hw *hw, int vfn)
5422{
5423 u32 reg_data;
5424
5425 reg_data = rd32(E1000_VMOLR(vfn));
5426 reg_data |= E1000_VMOLR_BAM | /* Accept broadcast */
5427 E1000_VMOLR_ROPE | /* Accept packets matched in UTA */
5428 E1000_VMOLR_ROMPE | /* Accept packets matched in MTA */
5429 E1000_VMOLR_AUPE | /* Accept untagged packets */
5430 E1000_VMOLR_STRVLAN; /* Strip vlan tags */
5431 wr32(E1000_VMOLR(vfn), reg_data);
5432}
5433
5434static inline int igb_set_vf_rlpml(struct igb_adapter *adapter, int size,
5435 int vfn)
5436{
5437 struct e1000_hw *hw = &adapter->hw;
5438 u32 vmolr;
5439
5440 vmolr = rd32(E1000_VMOLR(vfn));
5441 vmolr &= ~E1000_VMOLR_RLPML_MASK;
5442 vmolr |= size | E1000_VMOLR_LPE;
5443 wr32(E1000_VMOLR(vfn), vmolr);
5444
5445 return 0;
5446}
5447
5448static inline void igb_set_rah_pool(struct e1000_hw *hw, int pool, int entry)
5449{
5450 u32 reg_data;
5451
5452 reg_data = rd32(E1000_RAH(entry));
5453 reg_data &= ~E1000_RAH_POOL_MASK;
5454 reg_data |= E1000_RAH_POOL_1 << pool;;
5455 wr32(E1000_RAH(entry), reg_data);
5456}
5457
5458static void igb_set_mc_list_pools(struct igb_adapter *adapter, 5455static void igb_set_mc_list_pools(struct igb_adapter *adapter,
5459 int entry_count, u16 total_rar_filters) 5456 int entry_count, u16 total_rar_filters)
5460{ 5457{
diff --git a/drivers/net/isa-skeleton.c b/drivers/net/isa-skeleton.c
index 86d2300af379..9706e64e367b 100644
--- a/drivers/net/isa-skeleton.c
+++ b/drivers/net/isa-skeleton.c
@@ -430,7 +430,8 @@ static int net_send_packet(struct sk_buff *skb, struct net_device *dev)
430 * hardware interrupt handler. Queue flow control is 430 * hardware interrupt handler. Queue flow control is
431 * thus managed under this lock as well. 431 * thus managed under this lock as well.
432 */ 432 */
433 spin_lock_irq(&np->lock); 433 unsigned long flags;
434 spin_lock_irqsave(&np->lock, flags);
434 435
435 add_to_tx_ring(np, skb, length); 436 add_to_tx_ring(np, skb, length);
436 dev->trans_start = jiffies; 437 dev->trans_start = jiffies;
@@ -446,7 +447,7 @@ static int net_send_packet(struct sk_buff *skb, struct net_device *dev)
446 * is when the transmit statistics are updated. 447 * is when the transmit statistics are updated.
447 */ 448 */
448 449
449 spin_unlock_irq(&np->lock); 450 spin_unlock_irqrestore(&np->lock, flags);
450#else 451#else
451 /* This is the case for older hardware which takes 452 /* This is the case for older hardware which takes
452 * a single transmit buffer at a time, and it is 453 * a single transmit buffer at a time, and it is
diff --git a/drivers/net/ixgbe/ixgbe_dcb_nl.c b/drivers/net/ixgbe/ixgbe_dcb_nl.c
index 7c5978ad929a..da2c8514b8d0 100644
--- a/drivers/net/ixgbe/ixgbe_dcb_nl.c
+++ b/drivers/net/ixgbe/ixgbe_dcb_nl.c
@@ -106,8 +106,6 @@ static u8 ixgbe_dcbnl_get_state(struct net_device *netdev)
106{ 106{
107 struct ixgbe_adapter *adapter = netdev_priv(netdev); 107 struct ixgbe_adapter *adapter = netdev_priv(netdev);
108 108
109 DPRINTK(DRV, INFO, "Get DCB Admin Mode.\n");
110
111 return !!(adapter->flags & IXGBE_FLAG_DCB_ENABLED); 109 return !!(adapter->flags & IXGBE_FLAG_DCB_ENABLED);
112} 110}
113 111
@@ -116,8 +114,6 @@ static u8 ixgbe_dcbnl_set_state(struct net_device *netdev, u8 state)
116 u8 err = 0; 114 u8 err = 0;
117 struct ixgbe_adapter *adapter = netdev_priv(netdev); 115 struct ixgbe_adapter *adapter = netdev_priv(netdev);
118 116
119 DPRINTK(DRV, INFO, "Set DCB Admin Mode.\n");
120
121 if (state > 0) { 117 if (state > 0) {
122 /* Turn on DCB */ 118 /* Turn on DCB */
123 if (adapter->flags & IXGBE_FLAG_DCB_ENABLED) 119 if (adapter->flags & IXGBE_FLAG_DCB_ENABLED)
@@ -175,6 +171,8 @@ static void ixgbe_dcbnl_get_perm_hw_addr(struct net_device *netdev,
175 struct ixgbe_adapter *adapter = netdev_priv(netdev); 171 struct ixgbe_adapter *adapter = netdev_priv(netdev);
176 int i, j; 172 int i, j;
177 173
174 memset(perm_addr, 0xff, MAX_ADDR_LEN);
175
178 for (i = 0; i < netdev->addr_len; i++) 176 for (i = 0; i < netdev->addr_len; i++)
179 perm_addr[i] = adapter->hw.mac.perm_addr[i]; 177 perm_addr[i] = adapter->hw.mac.perm_addr[i];
180 178
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index eba937c46376..b10fedd82143 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -134,8 +134,10 @@ int phy_scan_fixups(struct phy_device *phydev)
134 134
135 err = fixup->run(phydev); 135 err = fixup->run(phydev);
136 136
137 if (err < 0) 137 if (err < 0) {
138 mutex_unlock(&phy_fixup_lock);
138 return err; 139 return err;
140 }
139 } 141 }
140 } 142 }
141 mutex_unlock(&phy_fixup_lock); 143 mutex_unlock(&phy_fixup_lock);
diff --git a/drivers/net/plip.c b/drivers/net/plip.c
index ef2e229ebc18..00487f569cfd 100644
--- a/drivers/net/plip.c
+++ b/drivers/net/plip.c
@@ -270,6 +270,9 @@ static const struct net_device_ops plip_netdev_ops = {
270 .ndo_stop = plip_close, 270 .ndo_stop = plip_close,
271 .ndo_start_xmit = plip_tx_packet, 271 .ndo_start_xmit = plip_tx_packet,
272 .ndo_do_ioctl = plip_ioctl, 272 .ndo_do_ioctl = plip_ioctl,
273 .ndo_change_mtu = eth_change_mtu,
274 .ndo_set_mac_address = eth_mac_addr,
275 .ndo_validate_addr = eth_validate_addr,
273}; 276};
274 277
275/* Entry point of PLIP driver. 278/* Entry point of PLIP driver.
diff --git a/drivers/net/ps3_gelic_net.c b/drivers/net/ps3_gelic_net.c
index d1a5fb4d6acb..a3932c9f3406 100644
--- a/drivers/net/ps3_gelic_net.c
+++ b/drivers/net/ps3_gelic_net.c
@@ -1411,6 +1411,7 @@ static const struct net_device_ops gelic_netdevice_ops = {
1411 .ndo_set_multicast_list = gelic_net_set_multi, 1411 .ndo_set_multicast_list = gelic_net_set_multi,
1412 .ndo_change_mtu = gelic_net_change_mtu, 1412 .ndo_change_mtu = gelic_net_change_mtu,
1413 .ndo_tx_timeout = gelic_net_tx_timeout, 1413 .ndo_tx_timeout = gelic_net_tx_timeout,
1414 .ndo_set_mac_address = eth_mac_addr,
1414 .ndo_validate_addr = eth_validate_addr, 1415 .ndo_validate_addr = eth_validate_addr,
1415#ifdef CONFIG_NET_POLL_CONTROLLER 1416#ifdef CONFIG_NET_POLL_CONTROLLER
1416 .ndo_poll_controller = gelic_net_poll_controller, 1417 .ndo_poll_controller = gelic_net_poll_controller,
diff --git a/drivers/net/ps3_gelic_wireless.c b/drivers/net/ps3_gelic_wireless.c
index b6b3ca9bdb21..6932b08d746b 100644
--- a/drivers/net/ps3_gelic_wireless.c
+++ b/drivers/net/ps3_gelic_wireless.c
@@ -2707,6 +2707,7 @@ static const struct net_device_ops gelic_wl_netdevice_ops = {
2707 .ndo_set_multicast_list = gelic_net_set_multi, 2707 .ndo_set_multicast_list = gelic_net_set_multi,
2708 .ndo_change_mtu = gelic_net_change_mtu, 2708 .ndo_change_mtu = gelic_net_change_mtu,
2709 .ndo_tx_timeout = gelic_net_tx_timeout, 2709 .ndo_tx_timeout = gelic_net_tx_timeout,
2710 .ndo_set_mac_address = eth_mac_addr,
2710 .ndo_validate_addr = eth_validate_addr, 2711 .ndo_validate_addr = eth_validate_addr,
2711#ifdef CONFIG_NET_POLL_CONTROLLER 2712#ifdef CONFIG_NET_POLL_CONTROLLER
2712 .ndo_poll_controller = gelic_net_poll_controller, 2713 .ndo_poll_controller = gelic_net_poll_controller,
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index daf961ab68bc..ba768dfa59e0 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -1151,14 +1151,7 @@ stopped:
1151 1151
1152 /* reset the Rx prefetch unit */ 1152 /* reset the Rx prefetch unit */
1153 sky2_write32(hw, Y2_QADDR(rxq, PREF_UNIT_CTRL), PREF_UNIT_RST_SET); 1153 sky2_write32(hw, Y2_QADDR(rxq, PREF_UNIT_CTRL), PREF_UNIT_RST_SET);
1154 1154 mmiowb();
1155 /* Reset the RAM Buffer receive queue */
1156 sky2_write8(hw, RB_ADDR(rxq, RB_CTRL), RB_RST_SET);
1157
1158 /* Reset Rx MAC FIFO */
1159 sky2_write8(hw, SK_REG(sky2->port, RX_GMF_CTRL_T), GMF_RST_SET);
1160
1161 sky2_read8(hw, B0_CTST);
1162} 1155}
1163 1156
1164/* Clean out receive buffer area, assumes receiver hardware stopped */ 1157/* Clean out receive buffer area, assumes receiver hardware stopped */
diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c
index 2968c75ff49b..0f2c52c2e044 100644
--- a/drivers/net/smc91x.c
+++ b/drivers/net/smc91x.c
@@ -1774,6 +1774,7 @@ static const struct net_device_ops smc_netdev_ops = {
1774 .ndo_start_xmit = smc_hard_start_xmit, 1774 .ndo_start_xmit = smc_hard_start_xmit,
1775 .ndo_tx_timeout = smc_timeout, 1775 .ndo_tx_timeout = smc_timeout,
1776 .ndo_set_multicast_list = smc_set_multicast_list, 1776 .ndo_set_multicast_list = smc_set_multicast_list,
1777 .ndo_change_mtu = eth_change_mtu,
1777 .ndo_validate_addr = eth_validate_addr, 1778 .ndo_validate_addr = eth_validate_addr,
1778 .ndo_set_mac_address = eth_mac_addr, 1779 .ndo_set_mac_address = eth_mac_addr,
1779#ifdef CONFIG_NET_POLL_CONTROLLER 1780#ifdef CONFIG_NET_POLL_CONTROLLER
diff --git a/drivers/net/smsc911x.c b/drivers/net/smsc911x.c
index 66067f9d91c0..94b6d2658ddc 100644
--- a/drivers/net/smsc911x.c
+++ b/drivers/net/smsc911x.c
@@ -1779,6 +1779,7 @@ static const struct net_device_ops smsc911x_netdev_ops = {
1779 .ndo_get_stats = smsc911x_get_stats, 1779 .ndo_get_stats = smsc911x_get_stats,
1780 .ndo_set_multicast_list = smsc911x_set_multicast_list, 1780 .ndo_set_multicast_list = smsc911x_set_multicast_list,
1781 .ndo_do_ioctl = smsc911x_do_ioctl, 1781 .ndo_do_ioctl = smsc911x_do_ioctl,
1782 .ndo_change_mtu = eth_change_mtu,
1782 .ndo_validate_addr = eth_validate_addr, 1783 .ndo_validate_addr = eth_validate_addr,
1783 .ndo_set_mac_address = smsc911x_set_mac_address, 1784 .ndo_set_mac_address = smsc911x_set_mac_address,
1784#ifdef CONFIG_NET_POLL_CONTROLLER 1785#ifdef CONFIG_NET_POLL_CONTROLLER
diff --git a/drivers/net/sunvnet.c b/drivers/net/sunvnet.c
index a82fb2aca4cb..f1e5e4542c2a 100644
--- a/drivers/net/sunvnet.c
+++ b/drivers/net/sunvnet.c
@@ -1016,7 +1016,9 @@ static const struct net_device_ops vnet_ops = {
1016 .ndo_open = vnet_open, 1016 .ndo_open = vnet_open,
1017 .ndo_stop = vnet_close, 1017 .ndo_stop = vnet_close,
1018 .ndo_set_multicast_list = vnet_set_rx_mode, 1018 .ndo_set_multicast_list = vnet_set_rx_mode,
1019 .ndo_change_mtu = eth_change_mtu,
1019 .ndo_set_mac_address = vnet_set_mac_addr, 1020 .ndo_set_mac_address = vnet_set_mac_addr,
1021 .ndo_validate_addr = eth_validate_addr,
1020 .ndo_tx_timeout = vnet_tx_timeout, 1022 .ndo_tx_timeout = vnet_tx_timeout,
1021 .ndo_change_mtu = vnet_change_mtu, 1023 .ndo_change_mtu = vnet_change_mtu,
1022 .ndo_start_xmit = vnet_start_xmit, 1024 .ndo_start_xmit = vnet_start_xmit,
diff --git a/drivers/net/usb/cdc_eem.c b/drivers/net/usb/cdc_eem.c
index cd35d50e46d4..45cebfb302cf 100644
--- a/drivers/net/usb/cdc_eem.c
+++ b/drivers/net/usb/cdc_eem.c
@@ -311,7 +311,7 @@ static int eem_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
311 * bmCRC = 0 : CRC = 0xDEADBEEF 311 * bmCRC = 0 : CRC = 0xDEADBEEF
312 */ 312 */
313 if (header & BIT(14)) 313 if (header & BIT(14))
314 crc2 = ~crc32_le(~0, skb2->data, len); 314 crc2 = ~crc32_le(~0, skb2->data, skb2->len);
315 else 315 else
316 crc2 = 0xdeadbeef; 316 crc2 = 0xdeadbeef;
317 317
diff --git a/drivers/net/usb/kaweth.c b/drivers/net/usb/kaweth.c
index 09a5bd381566..200fe3d525ca 100644
--- a/drivers/net/usb/kaweth.c
+++ b/drivers/net/usb/kaweth.c
@@ -999,6 +999,9 @@ static const struct net_device_ops kaweth_netdev_ops = {
999 .ndo_tx_timeout = kaweth_tx_timeout, 999 .ndo_tx_timeout = kaweth_tx_timeout,
1000 .ndo_set_multicast_list = kaweth_set_rx_mode, 1000 .ndo_set_multicast_list = kaweth_set_rx_mode,
1001 .ndo_get_stats = kaweth_netdev_stats, 1001 .ndo_get_stats = kaweth_netdev_stats,
1002 .ndo_change_mtu = eth_change_mtu,
1003 .ndo_set_mac_address = eth_mac_addr,
1004 .ndo_validate_addr = eth_validate_addr,
1002}; 1005};
1003 1006
1004static int kaweth_probe( 1007static int kaweth_probe(
diff --git a/drivers/net/usb/pegasus.c b/drivers/net/usb/pegasus.c
index 632d1aeda570..69d2df95ac86 100644
--- a/drivers/net/usb/pegasus.c
+++ b/drivers/net/usb/pegasus.c
@@ -1493,6 +1493,9 @@ static const struct net_device_ops pegasus_netdev_ops = {
1493 .ndo_set_multicast_list = pegasus_set_multicast, 1493 .ndo_set_multicast_list = pegasus_set_multicast,
1494 .ndo_get_stats = pegasus_netdev_stats, 1494 .ndo_get_stats = pegasus_netdev_stats,
1495 .ndo_tx_timeout = pegasus_tx_timeout, 1495 .ndo_tx_timeout = pegasus_tx_timeout,
1496 .ndo_change_mtu = eth_change_mtu,
1497 .ndo_set_mac_address = eth_mac_addr,
1498 .ndo_validate_addr = eth_validate_addr,
1496}; 1499};
1497 1500
1498static struct usb_driver pegasus_driver = { 1501static struct usb_driver pegasus_driver = {
diff --git a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c
index 715220158311..46eb618bbc90 100644
--- a/drivers/net/via-rhine.c
+++ b/drivers/net/via-rhine.c
@@ -621,6 +621,7 @@ static const struct net_device_ops rhine_netdev_ops = {
621 .ndo_start_xmit = rhine_start_tx, 621 .ndo_start_xmit = rhine_start_tx,
622 .ndo_get_stats = rhine_get_stats, 622 .ndo_get_stats = rhine_get_stats,
623 .ndo_set_multicast_list = rhine_set_rx_mode, 623 .ndo_set_multicast_list = rhine_set_rx_mode,
624 .ndo_change_mtu = eth_change_mtu,
624 .ndo_validate_addr = eth_validate_addr, 625 .ndo_validate_addr = eth_validate_addr,
625 .ndo_set_mac_address = eth_mac_addr, 626 .ndo_set_mac_address = eth_mac_addr,
626 .ndo_do_ioctl = netdev_ioctl, 627 .ndo_do_ioctl = netdev_ioctl,
diff --git a/drivers/net/wireless/orinoco/main.c b/drivers/net/wireless/orinoco/main.c
index cd1c04d42b6a..e8c550a61f33 100644
--- a/drivers/net/wireless/orinoco/main.c
+++ b/drivers/net/wireless/orinoco/main.c
@@ -2072,6 +2072,8 @@ static const struct net_device_ops orinoco_netdev_ops = {
2072 .ndo_start_xmit = orinoco_xmit, 2072 .ndo_start_xmit = orinoco_xmit,
2073 .ndo_set_multicast_list = orinoco_set_multicast_list, 2073 .ndo_set_multicast_list = orinoco_set_multicast_list,
2074 .ndo_change_mtu = orinoco_change_mtu, 2074 .ndo_change_mtu = orinoco_change_mtu,
2075 .ndo_set_mac_address = eth_mac_addr,
2076 .ndo_validate_addr = eth_validate_addr,
2075 .ndo_tx_timeout = orinoco_tx_timeout, 2077 .ndo_tx_timeout = orinoco_tx_timeout,
2076 .ndo_get_stats = orinoco_get_stats, 2078 .ndo_get_stats = orinoco_get_stats,
2077}; 2079};