Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6

+94 -24
+79 -15
drivers/net/tg3.c
··· 67 68 #define DRV_MODULE_NAME "tg3" 69 #define PFX DRV_MODULE_NAME ": " 70 - #define DRV_MODULE_VERSION "3.40" 71 - #define DRV_MODULE_RELDATE "September 15, 2005" 72 73 #define TG3_DEF_MAC_MODE 0 74 #define TG3_DEF_RX_MODE 0 ··· 3389 struct tg3 *tp = netdev_priv(dev); 3390 struct tg3_hw_status *sblk = tp->hw_status; 3391 3392 - if (sblk->status & SD_STATUS_UPDATED) { 3393 tw32_mailbox(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW, 3394 0x00000001); 3395 return IRQ_RETVAL(1); ··· 5396 struct tg3 *tp = netdev_priv(dev); 5397 struct sockaddr *addr = p; 5398 5399 memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); 5400 5401 spin_lock_bh(&tp->lock); ··· 5810 } 5811 memset(tp->hw_status, 0, TG3_HW_STATUS_SIZE); 5812 5813 tp->mac_mode = MAC_MODE_TXSTAT_ENABLE | MAC_MODE_RXSTAT_ENABLE | 5814 MAC_MODE_TDE_ENABLE | MAC_MODE_RDE_ENABLE | MAC_MODE_FHDE_ENABLE; 5815 tw32_f(MAC_MODE, tp->mac_mode | MAC_MODE_RXSTAT_CLEAR | MAC_MODE_TXSTAT_CLEAR); ··· 5948 tw32(MAC_LED_CTRL, tp->led_ctrl); 5949 5950 tw32(MAC_MI_STAT, MAC_MI_STAT_LNKSTAT_ATTN_ENAB); 5951 - if (tp->tg3_flags2 & TG3_FLG2_ANY_SERDES) { 5952 tw32_f(MAC_RX_MODE, RX_MODE_RESET); 5953 udelay(10); 5954 } ··· 7371 if (!netif_running(dev)) 7372 return -EAGAIN; 7373 7374 spin_lock_bh(&tp->lock); 7375 r = -EINVAL; 7376 tg3_readphy(tp, MII_BMCR, &bmcr); 7377 if (!tg3_readphy(tp, MII_BMCR, &bmcr) && 7378 - (bmcr & BMCR_ANENABLE)) { 7379 - tg3_writephy(tp, MII_BMCR, bmcr | BMCR_ANRESTART); 7380 r = 0; 7381 } 7382 spin_unlock_bh(&tp->lock); ··· 7943 struct tg3_rx_buffer_desc *desc; 7944 7945 if (loopback_mode == TG3_MAC_LOOPBACK) { 7946 mac_mode = (tp->mac_mode & ~MAC_MODE_PORT_MODE_MASK) | 7947 MAC_MODE_PORT_INT_LPBACK | MAC_MODE_LINK_POLARITY | 7948 MAC_MODE_PORT_MODE_GMII; 7949 tw32(MAC_MODE, mac_mode); 7950 } else if (loopback_mode == TG3_PHY_LOOPBACK) { 7951 mac_mode = (tp->mac_mode & ~MAC_MODE_PORT_MODE_MASK) | 7952 MAC_MODE_LINK_POLARITY | MAC_MODE_PORT_MODE_GMII; 7953 if ((tp->phy_id & PHY_ID_MASK) == PHY_ID_BCM5401) 7954 mac_mode &= ~MAC_MODE_LINK_POLARITY; 7955 tw32(MAC_MODE, mac_mode); 7956 - 7957 - tg3_writephy(tp, MII_BMCR, BMCR_LOOPBACK | BMCR_FULLDPLX | 7958 - BMCR_SPEED1000); 7959 } 7960 else 7961 return -EINVAL; ··· 10353 }; 10354 } 10355 10356 static struct pci_dev * __devinit tg3_find_5704_peer(struct tg3 *tp) 10357 { 10358 struct pci_dev *peer; ··· 10453 struct net_device *dev; 10454 struct tg3 *tp; 10455 int i, err, pci_using_dac, pm_cap; 10456 10457 if (tg3_version_printed++ == 0) 10458 printk(KERN_INFO "%s", version); ··· 10699 10700 pci_set_drvdata(pdev, dev); 10701 10702 - printk(KERN_INFO "%s: Tigon3 [partno(%s) rev %04x PHY(%s)] (PCI%s:%s:%s) %sBaseT Ethernet ", 10703 dev->name, 10704 tp->board_part_number, 10705 tp->pci_chip_rev_id, 10706 tg3_phy_string(tp), 10707 - ((tp->tg3_flags & TG3_FLAG_PCIX_MODE) ? "X" : ""), 10708 - ((tp->tg3_flags & TG3_FLAG_PCI_HIGH_SPEED) ? 10709 - ((tp->tg3_flags & TG3_FLAG_PCIX_MODE) ? "133MHz" : "66MHz") : 10710 - ((tp->tg3_flags & TG3_FLAG_PCIX_MODE) ? "100MHz" : "33MHz")), 10711 - ((tp->tg3_flags & TG3_FLAG_PCI_32BIT) ? "32-bit" : "64-bit"), 10712 (tp->tg3_flags & TG3_FLAG_10_100_ONLY) ? "10/100" : "10/100/1000"); 10713 10714 for (i = 0; i < 6; i++)
··· 67 68 #define DRV_MODULE_NAME "tg3" 69 #define PFX DRV_MODULE_NAME ": " 70 + #define DRV_MODULE_VERSION "3.41" 71 + #define DRV_MODULE_RELDATE "September 27, 2005" 72 73 #define TG3_DEF_MAC_MODE 0 74 #define TG3_DEF_RX_MODE 0 ··· 3389 struct tg3 *tp = netdev_priv(dev); 3390 struct tg3_hw_status *sblk = tp->hw_status; 3391 3392 + if ((sblk->status & SD_STATUS_UPDATED) || 3393 + !(tr32(TG3PCI_PCISTATE) & PCISTATE_INT_NOT_ACTIVE)) { 3394 tw32_mailbox(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW, 3395 0x00000001); 3396 return IRQ_RETVAL(1); ··· 5395 struct tg3 *tp = netdev_priv(dev); 5396 struct sockaddr *addr = p; 5397 5398 + if (!is_valid_ether_addr(addr->sa_data)) 5399 + return -EINVAL; 5400 + 5401 memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); 5402 5403 spin_lock_bh(&tp->lock); ··· 5806 } 5807 memset(tp->hw_status, 0, TG3_HW_STATUS_SIZE); 5808 5809 + if (tp->tg3_flags2 & TG3_FLG2_MII_SERDES) { 5810 + tp->tg3_flags2 &= ~TG3_FLG2_PARALLEL_DETECT; 5811 + /* reset to prevent losing 1st rx packet intermittently */ 5812 + tw32_f(MAC_RX_MODE, RX_MODE_RESET); 5813 + udelay(10); 5814 + } 5815 + 5816 tp->mac_mode = MAC_MODE_TXSTAT_ENABLE | MAC_MODE_RXSTAT_ENABLE | 5817 MAC_MODE_TDE_ENABLE | MAC_MODE_RDE_ENABLE | MAC_MODE_FHDE_ENABLE; 5818 tw32_f(MAC_MODE, tp->mac_mode | MAC_MODE_RXSTAT_CLEAR | MAC_MODE_TXSTAT_CLEAR); ··· 5937 tw32(MAC_LED_CTRL, tp->led_ctrl); 5938 5939 tw32(MAC_MI_STAT, MAC_MI_STAT_LNKSTAT_ATTN_ENAB); 5940 + if (tp->tg3_flags2 & TG3_FLG2_PHY_SERDES) { 5941 tw32_f(MAC_RX_MODE, RX_MODE_RESET); 5942 udelay(10); 5943 } ··· 7360 if (!netif_running(dev)) 7361 return -EAGAIN; 7362 7363 + if (tp->tg3_flags2 & TG3_FLG2_PHY_SERDES) 7364 + return -EINVAL; 7365 + 7366 spin_lock_bh(&tp->lock); 7367 r = -EINVAL; 7368 tg3_readphy(tp, MII_BMCR, &bmcr); 7369 if (!tg3_readphy(tp, MII_BMCR, &bmcr) && 7370 + ((bmcr & BMCR_ANENABLE) || 7371 + (tp->tg3_flags2 & TG3_FLG2_PARALLEL_DETECT))) { 7372 + tg3_writephy(tp, MII_BMCR, bmcr | BMCR_ANRESTART | 7373 + BMCR_ANENABLE); 7374 r = 0; 7375 } 7376 spin_unlock_bh(&tp->lock); ··· 7927 struct tg3_rx_buffer_desc *desc; 7928 7929 if (loopback_mode == TG3_MAC_LOOPBACK) { 7930 + /* HW errata - mac loopback fails in some cases on 5780. 7931 + * Normal traffic and PHY loopback are not affected by 7932 + * errata. 7933 + */ 7934 + if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5780) 7935 + return 0; 7936 + 7937 mac_mode = (tp->mac_mode & ~MAC_MODE_PORT_MODE_MASK) | 7938 MAC_MODE_PORT_INT_LPBACK | MAC_MODE_LINK_POLARITY | 7939 MAC_MODE_PORT_MODE_GMII; 7940 tw32(MAC_MODE, mac_mode); 7941 } else if (loopback_mode == TG3_PHY_LOOPBACK) { 7942 + tg3_writephy(tp, MII_BMCR, BMCR_LOOPBACK | BMCR_FULLDPLX | 7943 + BMCR_SPEED1000); 7944 + udelay(40); 7945 + /* reset to prevent losing 1st rx packet intermittently */ 7946 + if (tp->tg3_flags2 & TG3_FLG2_MII_SERDES) { 7947 + tw32_f(MAC_RX_MODE, RX_MODE_RESET); 7948 + udelay(10); 7949 + tw32_f(MAC_RX_MODE, tp->rx_mode); 7950 + } 7951 mac_mode = (tp->mac_mode & ~MAC_MODE_PORT_MODE_MASK) | 7952 MAC_MODE_LINK_POLARITY | MAC_MODE_PORT_MODE_GMII; 7953 if ((tp->phy_id & PHY_ID_MASK) == PHY_ID_BCM5401) 7954 mac_mode &= ~MAC_MODE_LINK_POLARITY; 7955 tw32(MAC_MODE, mac_mode); 7956 } 7957 else 7958 return -EINVAL; ··· 10324 }; 10325 } 10326 10327 + static char * __devinit tg3_bus_string(struct tg3 *tp, char *str) 10328 + { 10329 + if (tp->tg3_flags2 & TG3_FLG2_PCI_EXPRESS) { 10330 + strcpy(str, "PCI Express"); 10331 + return str; 10332 + } else if (tp->tg3_flags & TG3_FLAG_PCIX_MODE) { 10333 + u32 clock_ctrl = tr32(TG3PCI_CLOCK_CTRL) & 0x1f; 10334 + 10335 + strcpy(str, "PCIX:"); 10336 + 10337 + if ((clock_ctrl == 7) || 10338 + ((tr32(GRC_MISC_CFG) & GRC_MISC_CFG_BOARD_ID_MASK) == 10339 + GRC_MISC_CFG_BOARD_ID_5704CIOBE)) 10340 + strcat(str, "133MHz"); 10341 + else if (clock_ctrl == 0) 10342 + strcat(str, "33MHz"); 10343 + else if (clock_ctrl == 2) 10344 + strcat(str, "50MHz"); 10345 + else if (clock_ctrl == 4) 10346 + strcat(str, "66MHz"); 10347 + else if (clock_ctrl == 6) 10348 + strcat(str, "100MHz"); 10349 + else if (clock_ctrl == 7) 10350 + strcat(str, "133MHz"); 10351 + } else { 10352 + strcpy(str, "PCI:"); 10353 + if (tp->tg3_flags & TG3_FLAG_PCI_HIGH_SPEED) 10354 + strcat(str, "66MHz"); 10355 + else 10356 + strcat(str, "33MHz"); 10357 + } 10358 + if (tp->tg3_flags & TG3_FLAG_PCI_32BIT) 10359 + strcat(str, ":32-bit"); 10360 + else 10361 + strcat(str, ":64-bit"); 10362 + return str; 10363 + } 10364 + 10365 static struct pci_dev * __devinit tg3_find_5704_peer(struct tg3 *tp) 10366 { 10367 struct pci_dev *peer; ··· 10386 struct net_device *dev; 10387 struct tg3 *tp; 10388 int i, err, pci_using_dac, pm_cap; 10389 + char str[40]; 10390 10391 if (tg3_version_printed++ == 0) 10392 printk(KERN_INFO "%s", version); ··· 10631 10632 pci_set_drvdata(pdev, dev); 10633 10634 + printk(KERN_INFO "%s: Tigon3 [partno(%s) rev %04x PHY(%s)] (%s) %sBaseT Ethernet ", 10635 dev->name, 10636 tp->board_part_number, 10637 tp->pci_chip_rev_id, 10638 tg3_phy_string(tp), 10639 + tg3_bus_string(tp, str), 10640 (tp->tg3_flags & TG3_FLAG_10_100_ONLY) ? "10/100" : "10/100/1000"); 10641 10642 for (i = 0; i < 6; i++)
+1
drivers/net/tg3.h
··· 2246 (X) == PHY_ID_BCM5411 || (X) == PHY_ID_BCM5701 || \ 2247 (X) == PHY_ID_BCM5703 || (X) == PHY_ID_BCM5704 || \ 2248 (X) == PHY_ID_BCM5705 || (X) == PHY_ID_BCM5750 || \ 2249 (X) == PHY_ID_BCM8002) 2250 2251 struct tg3_hw_stats *hw_stats;
··· 2246 (X) == PHY_ID_BCM5411 || (X) == PHY_ID_BCM5701 || \ 2247 (X) == PHY_ID_BCM5703 || (X) == PHY_ID_BCM5704 || \ 2248 (X) == PHY_ID_BCM5705 || (X) == PHY_ID_BCM5750 || \ 2249 + (X) == PHY_ID_BCM5752 || (X) == PHY_ID_BCM5780 || \ 2250 (X) == PHY_ID_BCM8002) 2251 2252 struct tg3_hw_stats *hw_stats;
+14 -9
net/core/neighbour.c
··· 727 p->ucast_probes + p->app_probes + p->mcast_probes); 728 } 729 730 731 /* Called when a timer expires for a neighbour entry. */ 732 ··· 818 neigh_hold(neigh); 819 if (time_before(next, jiffies + HZ/2)) 820 next = jiffies + HZ/2; 821 - neigh->timer.expires = next; 822 - add_timer(&neigh->timer); 823 } 824 if (neigh->nud_state & (NUD_INCOMPLETE | NUD_PROBE)) { 825 struct sk_buff *skb = skb_peek(&neigh->arp_queue); ··· 860 atomic_set(&neigh->probes, neigh->parms->ucast_probes); 861 neigh->nud_state = NUD_INCOMPLETE; 862 neigh_hold(neigh); 863 - neigh->timer.expires = now + 1; 864 - add_timer(&neigh->timer); 865 } else { 866 neigh->nud_state = NUD_FAILED; 867 write_unlock_bh(&neigh->lock); ··· 873 NEIGH_PRINTK2("neigh %p is delayed.\n", neigh); 874 neigh_hold(neigh); 875 neigh->nud_state = NUD_DELAY; 876 - neigh->timer.expires = jiffies + neigh->parms->delay_probe_time; 877 - add_timer(&neigh->timer); 878 } 879 880 if (neigh->nud_state == NUD_INCOMPLETE) { ··· 1020 neigh_del_timer(neigh); 1021 if (new & NUD_IN_TIMER) { 1022 neigh_hold(neigh); 1023 - neigh->timer.expires = jiffies + 1024 ((new & NUD_REACHABLE) ? 1025 - neigh->parms->reachable_time : 0); 1026 - add_timer(&neigh->timer); 1027 } 1028 neigh->nud_state = new; 1029 }
··· 727 p->ucast_probes + p->app_probes + p->mcast_probes); 728 } 729 730 + static inline void neigh_add_timer(struct neighbour *n, unsigned long when) 731 + { 732 + if (unlikely(mod_timer(&n->timer, when))) { 733 + printk("NEIGH: BUG, double timer add, state is %x\n", 734 + n->nud_state); 735 + } 736 + } 737 738 /* Called when a timer expires for a neighbour entry. */ 739 ··· 811 neigh_hold(neigh); 812 if (time_before(next, jiffies + HZ/2)) 813 next = jiffies + HZ/2; 814 + neigh_add_timer(neigh, next); 815 } 816 if (neigh->nud_state & (NUD_INCOMPLETE | NUD_PROBE)) { 817 struct sk_buff *skb = skb_peek(&neigh->arp_queue); ··· 854 atomic_set(&neigh->probes, neigh->parms->ucast_probes); 855 neigh->nud_state = NUD_INCOMPLETE; 856 neigh_hold(neigh); 857 + neigh_add_timer(neigh, now + 1); 858 } else { 859 neigh->nud_state = NUD_FAILED; 860 write_unlock_bh(&neigh->lock); ··· 868 NEIGH_PRINTK2("neigh %p is delayed.\n", neigh); 869 neigh_hold(neigh); 870 neigh->nud_state = NUD_DELAY; 871 + neigh_add_timer(neigh, 872 + jiffies + neigh->parms->delay_probe_time); 873 } 874 875 if (neigh->nud_state == NUD_INCOMPLETE) { ··· 1015 neigh_del_timer(neigh); 1016 if (new & NUD_IN_TIMER) { 1017 neigh_hold(neigh); 1018 + neigh_add_timer(neigh, (jiffies + 1019 ((new & NUD_REACHABLE) ? 1020 + neigh->parms->reachable_time : 1021 + 0))); 1022 } 1023 neigh->nud_state = new; 1024 }