aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/starfire.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/starfire.c')
-rw-r--r--drivers/net/starfire.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/drivers/net/starfire.c b/drivers/net/starfire.c
index 6dfa6989901..74b7ae76906 100644
--- a/drivers/net/starfire.c
+++ b/drivers/net/starfire.c
@@ -1173,7 +1173,7 @@ static void tx_timeout(struct net_device *dev)
1173 1173
1174 /* Trigger an immediate transmit demand. */ 1174 /* Trigger an immediate transmit demand. */
1175 1175
1176 dev->trans_start = jiffies; 1176 dev->trans_start = jiffies; /* prevent tx timeout */
1177 np->stats.tx_errors++; 1177 np->stats.tx_errors++;
1178 netif_wake_queue(dev); 1178 netif_wake_queue(dev);
1179} 1179}
@@ -1221,8 +1221,6 @@ static void init_ring(struct net_device *dev)
1221 1221
1222 for (i = 0; i < TX_RING_SIZE; i++) 1222 for (i = 0; i < TX_RING_SIZE; i++)
1223 memset(&np->tx_info[i], 0, sizeof(np->tx_info[i])); 1223 memset(&np->tx_info[i], 0, sizeof(np->tx_info[i]));
1224
1225 return;
1226} 1224}
1227 1225
1228 1226
@@ -1312,8 +1310,6 @@ static netdev_tx_t start_tx(struct sk_buff *skb, struct net_device *dev)
1312 if ((np->cur_tx - np->dirty_tx) + 4 > TX_RING_SIZE) 1310 if ((np->cur_tx - np->dirty_tx) + 4 > TX_RING_SIZE)
1313 netif_stop_queue(dev); 1311 netif_stop_queue(dev);
1314 1312
1315 dev->trans_start = jiffies;
1316
1317 return NETDEV_TX_OK; 1313 return NETDEV_TX_OK;
1318} 1314}
1319 1315
@@ -1766,7 +1762,7 @@ static void set_rx_mode(struct net_device *dev)
1766 struct netdev_private *np = netdev_priv(dev); 1762 struct netdev_private *np = netdev_priv(dev);
1767 void __iomem *ioaddr = np->base; 1763 void __iomem *ioaddr = np->base;
1768 u32 rx_mode = MinVLANPrio; 1764 u32 rx_mode = MinVLANPrio;
1769 struct dev_mc_list *mclist; 1765 struct netdev_hw_addr *ha;
1770 int i; 1766 int i;
1771#ifdef VLAN_SUPPORT 1767#ifdef VLAN_SUPPORT
1772 1768
@@ -1804,8 +1800,8 @@ static void set_rx_mode(struct net_device *dev)
1804 /* Use the 16 element perfect filter, skip first two entries. */ 1800 /* Use the 16 element perfect filter, skip first two entries. */
1805 void __iomem *filter_addr = ioaddr + PerfFilterTable + 2 * 16; 1801 void __iomem *filter_addr = ioaddr + PerfFilterTable + 2 * 16;
1806 __be16 *eaddrs; 1802 __be16 *eaddrs;
1807 netdev_for_each_mc_addr(mclist, dev) { 1803 netdev_for_each_mc_addr(ha, dev) {
1808 eaddrs = (__be16 *)mclist->dmi_addr; 1804 eaddrs = (__be16 *) ha->addr;
1809 writew(be16_to_cpu(eaddrs[2]), filter_addr); filter_addr += 4; 1805 writew(be16_to_cpu(eaddrs[2]), filter_addr); filter_addr += 4;
1810 writew(be16_to_cpu(eaddrs[1]), filter_addr); filter_addr += 4; 1806 writew(be16_to_cpu(eaddrs[1]), filter_addr); filter_addr += 4;
1811 writew(be16_to_cpu(eaddrs[0]), filter_addr); filter_addr += 8; 1807 writew(be16_to_cpu(eaddrs[0]), filter_addr); filter_addr += 8;
@@ -1825,10 +1821,10 @@ static void set_rx_mode(struct net_device *dev)
1825 __le16 mc_filter[32] __attribute__ ((aligned(sizeof(long)))); /* Multicast hash filter */ 1821 __le16 mc_filter[32] __attribute__ ((aligned(sizeof(long)))); /* Multicast hash filter */
1826 1822
1827 memset(mc_filter, 0, sizeof(mc_filter)); 1823 memset(mc_filter, 0, sizeof(mc_filter));
1828 netdev_for_each_mc_addr(mclist, dev) { 1824 netdev_for_each_mc_addr(ha, dev) {
1829 /* The chip uses the upper 9 CRC bits 1825 /* The chip uses the upper 9 CRC bits
1830 as index into the hash table */ 1826 as index into the hash table */
1831 int bit_nr = ether_crc_le(ETH_ALEN, mclist->dmi_addr) >> 23; 1827 int bit_nr = ether_crc_le(ETH_ALEN, ha->addr) >> 23;
1832 __le32 *fptr = (__le32 *) &mc_filter[(bit_nr >> 4) & ~1]; 1828 __le32 *fptr = (__le32 *) &mc_filter[(bit_nr >> 4) & ~1];
1833 1829
1834 *fptr |= cpu_to_le32(1 << (bit_nr & 31)); 1830 *fptr |= cpu_to_le32(1 << (bit_nr & 31));