diff options
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/3c59x.c | 33 | ||||
-rw-r--r-- | drivers/net/Kconfig | 2 | ||||
-rw-r--r-- | drivers/net/arcnet/com90xx.c | 4 | ||||
-rw-r--r-- | drivers/net/ibmveth.c | 30 | ||||
-rw-r--r-- | drivers/net/netconsole.c | 2 | ||||
-rw-r--r-- | drivers/net/pcmcia/xirc2ps_cs.c | 2 | ||||
-rw-r--r-- | drivers/net/tg3.c | 57 | ||||
-rw-r--r-- | drivers/net/tokenring/Kconfig | 2 | ||||
-rw-r--r-- | drivers/net/wireless/Kconfig | 2 |
9 files changed, 63 insertions, 71 deletions
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c index 70f63891b19c..274b0138d442 100644 --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c | |||
@@ -788,7 +788,7 @@ struct vortex_private { | |||
788 | int options; /* User-settable misc. driver options. */ | 788 | int options; /* User-settable misc. driver options. */ |
789 | unsigned int media_override:4, /* Passed-in media type. */ | 789 | unsigned int media_override:4, /* Passed-in media type. */ |
790 | default_media:4, /* Read from the EEPROM/Wn3_Config. */ | 790 | default_media:4, /* Read from the EEPROM/Wn3_Config. */ |
791 | full_duplex:1, force_fd:1, autoselect:1, | 791 | full_duplex:1, autoselect:1, |
792 | bus_master:1, /* Vortex can only do a fragment bus-m. */ | 792 | bus_master:1, /* Vortex can only do a fragment bus-m. */ |
793 | full_bus_master_tx:1, full_bus_master_rx:2, /* Boomerang */ | 793 | full_bus_master_tx:1, full_bus_master_rx:2, /* Boomerang */ |
794 | flow_ctrl:1, /* Use 802.3x flow control (PAUSE only) */ | 794 | flow_ctrl:1, /* Use 802.3x flow control (PAUSE only) */ |
@@ -1633,12 +1633,6 @@ vortex_set_duplex(struct net_device *dev) | |||
1633 | ((vp->full_duplex && vp->flow_ctrl && vp->partner_flow_ctrl) ? | 1633 | ((vp->full_duplex && vp->flow_ctrl && vp->partner_flow_ctrl) ? |
1634 | 0x100 : 0), | 1634 | 0x100 : 0), |
1635 | ioaddr + Wn3_MAC_Ctrl); | 1635 | ioaddr + Wn3_MAC_Ctrl); |
1636 | |||
1637 | issue_and_wait(dev, TxReset); | ||
1638 | /* | ||
1639 | * Don't reset the PHY - that upsets autonegotiation during DHCP operations. | ||
1640 | */ | ||
1641 | issue_and_wait(dev, RxReset|0x04); | ||
1642 | } | 1636 | } |
1643 | 1637 | ||
1644 | static void vortex_check_media(struct net_device *dev, unsigned int init) | 1638 | static void vortex_check_media(struct net_device *dev, unsigned int init) |
@@ -1663,7 +1657,7 @@ vortex_up(struct net_device *dev) | |||
1663 | struct vortex_private *vp = netdev_priv(dev); | 1657 | struct vortex_private *vp = netdev_priv(dev); |
1664 | void __iomem *ioaddr = vp->ioaddr; | 1658 | void __iomem *ioaddr = vp->ioaddr; |
1665 | unsigned int config; | 1659 | unsigned int config; |
1666 | int i; | 1660 | int i, mii_reg1, mii_reg5; |
1667 | 1661 | ||
1668 | if (VORTEX_PCI(vp)) { | 1662 | if (VORTEX_PCI(vp)) { |
1669 | pci_set_power_state(VORTEX_PCI(vp), PCI_D0); /* Go active */ | 1663 | pci_set_power_state(VORTEX_PCI(vp), PCI_D0); /* Go active */ |
@@ -1723,14 +1717,23 @@ vortex_up(struct net_device *dev) | |||
1723 | printk(KERN_DEBUG "vortex_up(): writing 0x%x to InternalConfig\n", config); | 1717 | printk(KERN_DEBUG "vortex_up(): writing 0x%x to InternalConfig\n", config); |
1724 | iowrite32(config, ioaddr + Wn3_Config); | 1718 | iowrite32(config, ioaddr + Wn3_Config); |
1725 | 1719 | ||
1726 | netif_carrier_off(dev); | ||
1727 | if (dev->if_port == XCVR_MII || dev->if_port == XCVR_NWAY) { | 1720 | if (dev->if_port == XCVR_MII || dev->if_port == XCVR_NWAY) { |
1728 | EL3WINDOW(4); | 1721 | EL3WINDOW(4); |
1722 | mii_reg1 = mdio_read(dev, vp->phys[0], MII_BMSR); | ||
1723 | mii_reg5 = mdio_read(dev, vp->phys[0], MII_LPA); | ||
1724 | vp->partner_flow_ctrl = ((mii_reg5 & 0x0400) != 0); | ||
1725 | |||
1729 | vortex_check_media(dev, 1); | 1726 | vortex_check_media(dev, 1); |
1730 | } | 1727 | } |
1731 | else | 1728 | else |
1732 | vortex_set_duplex(dev); | 1729 | vortex_set_duplex(dev); |
1733 | 1730 | ||
1731 | issue_and_wait(dev, TxReset); | ||
1732 | /* | ||
1733 | * Don't reset the PHY - that upsets autonegotiation during DHCP operations. | ||
1734 | */ | ||
1735 | issue_and_wait(dev, RxReset|0x04); | ||
1736 | |||
1734 | 1737 | ||
1735 | iowrite16(SetStatusEnb | 0x00, ioaddr + EL3_CMD); | 1738 | iowrite16(SetStatusEnb | 0x00, ioaddr + EL3_CMD); |
1736 | 1739 | ||
@@ -2083,16 +2086,14 @@ vortex_error(struct net_device *dev, int status) | |||
2083 | } | 2086 | } |
2084 | if (tx_status & 0x14) vp->stats.tx_fifo_errors++; | 2087 | if (tx_status & 0x14) vp->stats.tx_fifo_errors++; |
2085 | if (tx_status & 0x38) vp->stats.tx_aborted_errors++; | 2088 | if (tx_status & 0x38) vp->stats.tx_aborted_errors++; |
2089 | if (tx_status & 0x08) vp->xstats.tx_max_collisions++; | ||
2086 | iowrite8(0, ioaddr + TxStatus); | 2090 | iowrite8(0, ioaddr + TxStatus); |
2087 | if (tx_status & 0x30) { /* txJabber or txUnderrun */ | 2091 | if (tx_status & 0x30) { /* txJabber or txUnderrun */ |
2088 | do_tx_reset = 1; | 2092 | do_tx_reset = 1; |
2089 | } else if (tx_status & 0x08) { /* maxCollisions */ | 2093 | } else if ((tx_status & 0x08) && (vp->drv_flags & MAX_COLLISION_RESET)) { /* maxCollisions */ |
2090 | vp->xstats.tx_max_collisions++; | 2094 | do_tx_reset = 1; |
2091 | if (vp->drv_flags & MAX_COLLISION_RESET) { | 2095 | reset_mask = 0x0108; /* Reset interface logic, but not download logic */ |
2092 | do_tx_reset = 1; | 2096 | } else { /* Merely re-enable the transmitter. */ |
2093 | reset_mask = 0x0108; /* Reset interface logic, but not download logic */ | ||
2094 | } | ||
2095 | } else { /* Merely re-enable the transmitter. */ | ||
2096 | iowrite16(TxEnable, ioaddr + EL3_CMD); | 2097 | iowrite16(TxEnable, ioaddr + EL3_CMD); |
2097 | } | 2098 | } |
2098 | } | 2099 | } |
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index e20b849a22e8..bdaaad8f2123 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig | |||
@@ -2313,13 +2313,11 @@ config S2IO_NAPI | |||
2313 | 2313 | ||
2314 | endmenu | 2314 | endmenu |
2315 | 2315 | ||
2316 | if !UML | ||
2317 | source "drivers/net/tokenring/Kconfig" | 2316 | source "drivers/net/tokenring/Kconfig" |
2318 | 2317 | ||
2319 | source "drivers/net/wireless/Kconfig" | 2318 | source "drivers/net/wireless/Kconfig" |
2320 | 2319 | ||
2321 | source "drivers/net/pcmcia/Kconfig" | 2320 | source "drivers/net/pcmcia/Kconfig" |
2322 | endif | ||
2323 | 2321 | ||
2324 | source "drivers/net/wan/Kconfig" | 2322 | source "drivers/net/wan/Kconfig" |
2325 | 2323 | ||
diff --git a/drivers/net/arcnet/com90xx.c b/drivers/net/arcnet/com90xx.c index 43150b2bd13f..0d45553ff75c 100644 --- a/drivers/net/arcnet/com90xx.c +++ b/drivers/net/arcnet/com90xx.c | |||
@@ -125,11 +125,11 @@ static void __init com90xx_probe(void) | |||
125 | if (!io && !irq && !shmem && !*device && com90xx_skip_probe) | 125 | if (!io && !irq && !shmem && !*device && com90xx_skip_probe) |
126 | return; | 126 | return; |
127 | 127 | ||
128 | shmems = kzalloc(((0x10000-0xa0000) / 0x800) * sizeof(unsigned long), | 128 | shmems = kzalloc(((0x100000-0xa0000) / 0x800) * sizeof(unsigned long), |
129 | GFP_KERNEL); | 129 | GFP_KERNEL); |
130 | if (!shmems) | 130 | if (!shmems) |
131 | return; | 131 | return; |
132 | iomem = kzalloc(((0x10000-0xa0000) / 0x800) * sizeof(void __iomem *), | 132 | iomem = kzalloc(((0x100000-0xa0000) / 0x800) * sizeof(void __iomem *), |
133 | GFP_KERNEL); | 133 | GFP_KERNEL); |
134 | if (!iomem) { | 134 | if (!iomem) { |
135 | kfree(shmems); | 135 | kfree(shmems); |
diff --git a/drivers/net/ibmveth.c b/drivers/net/ibmveth.c index ceb98fd398af..52d01027d9e7 100644 --- a/drivers/net/ibmveth.c +++ b/drivers/net/ibmveth.c | |||
@@ -235,7 +235,7 @@ static void ibmveth_replenish_buffer_pool(struct ibmveth_adapter *adapter, struc | |||
235 | 235 | ||
236 | lpar_rc = h_add_logical_lan_buffer(adapter->vdev->unit_address, desc.desc); | 236 | lpar_rc = h_add_logical_lan_buffer(adapter->vdev->unit_address, desc.desc); |
237 | 237 | ||
238 | if(lpar_rc != H_Success) { | 238 | if(lpar_rc != H_SUCCESS) { |
239 | pool->free_map[free_index] = index; | 239 | pool->free_map[free_index] = index; |
240 | pool->skbuff[index] = NULL; | 240 | pool->skbuff[index] = NULL; |
241 | pool->consumer_index--; | 241 | pool->consumer_index--; |
@@ -373,7 +373,7 @@ static void ibmveth_rxq_recycle_buffer(struct ibmveth_adapter *adapter) | |||
373 | 373 | ||
374 | lpar_rc = h_add_logical_lan_buffer(adapter->vdev->unit_address, desc.desc); | 374 | lpar_rc = h_add_logical_lan_buffer(adapter->vdev->unit_address, desc.desc); |
375 | 375 | ||
376 | if(lpar_rc != H_Success) { | 376 | if(lpar_rc != H_SUCCESS) { |
377 | ibmveth_debug_printk("h_add_logical_lan_buffer failed during recycle rc=%ld", lpar_rc); | 377 | ibmveth_debug_printk("h_add_logical_lan_buffer failed during recycle rc=%ld", lpar_rc); |
378 | ibmveth_remove_buffer_from_pool(adapter, adapter->rx_queue.queue_addr[adapter->rx_queue.index].correlator); | 378 | ibmveth_remove_buffer_from_pool(adapter, adapter->rx_queue.queue_addr[adapter->rx_queue.index].correlator); |
379 | } | 379 | } |
@@ -511,7 +511,7 @@ static int ibmveth_open(struct net_device *netdev) | |||
511 | adapter->filter_list_dma, | 511 | adapter->filter_list_dma, |
512 | mac_address); | 512 | mac_address); |
513 | 513 | ||
514 | if(lpar_rc != H_Success) { | 514 | if(lpar_rc != H_SUCCESS) { |
515 | ibmveth_error_printk("h_register_logical_lan failed with %ld\n", lpar_rc); | 515 | ibmveth_error_printk("h_register_logical_lan failed with %ld\n", lpar_rc); |
516 | ibmveth_error_printk("buffer TCE:0x%lx filter TCE:0x%lx rxq desc:0x%lx MAC:0x%lx\n", | 516 | ibmveth_error_printk("buffer TCE:0x%lx filter TCE:0x%lx rxq desc:0x%lx MAC:0x%lx\n", |
517 | adapter->buffer_list_dma, | 517 | adapter->buffer_list_dma, |
@@ -527,7 +527,7 @@ static int ibmveth_open(struct net_device *netdev) | |||
527 | ibmveth_error_printk("unable to request irq 0x%x, rc %d\n", netdev->irq, rc); | 527 | ibmveth_error_printk("unable to request irq 0x%x, rc %d\n", netdev->irq, rc); |
528 | do { | 528 | do { |
529 | rc = h_free_logical_lan(adapter->vdev->unit_address); | 529 | rc = h_free_logical_lan(adapter->vdev->unit_address); |
530 | } while (H_isLongBusy(rc) || (rc == H_Busy)); | 530 | } while (H_IS_LONG_BUSY(rc) || (rc == H_BUSY)); |
531 | 531 | ||
532 | ibmveth_cleanup(adapter); | 532 | ibmveth_cleanup(adapter); |
533 | return rc; | 533 | return rc; |
@@ -556,9 +556,9 @@ static int ibmveth_close(struct net_device *netdev) | |||
556 | 556 | ||
557 | do { | 557 | do { |
558 | lpar_rc = h_free_logical_lan(adapter->vdev->unit_address); | 558 | lpar_rc = h_free_logical_lan(adapter->vdev->unit_address); |
559 | } while (H_isLongBusy(lpar_rc) || (lpar_rc == H_Busy)); | 559 | } while (H_IS_LONG_BUSY(lpar_rc) || (lpar_rc == H_BUSY)); |
560 | 560 | ||
561 | if(lpar_rc != H_Success) | 561 | if(lpar_rc != H_SUCCESS) |
562 | { | 562 | { |
563 | ibmveth_error_printk("h_free_logical_lan failed with %lx, continuing with close\n", | 563 | ibmveth_error_printk("h_free_logical_lan failed with %lx, continuing with close\n", |
564 | lpar_rc); | 564 | lpar_rc); |
@@ -693,9 +693,9 @@ static int ibmveth_start_xmit(struct sk_buff *skb, struct net_device *netdev) | |||
693 | desc[4].desc, | 693 | desc[4].desc, |
694 | desc[5].desc, | 694 | desc[5].desc, |
695 | correlator); | 695 | correlator); |
696 | } while ((lpar_rc == H_Busy) && (retry_count--)); | 696 | } while ((lpar_rc == H_BUSY) && (retry_count--)); |
697 | 697 | ||
698 | if(lpar_rc != H_Success && lpar_rc != H_Dropped) { | 698 | if(lpar_rc != H_SUCCESS && lpar_rc != H_DROPPED) { |
699 | int i; | 699 | int i; |
700 | ibmveth_error_printk("tx: h_send_logical_lan failed with rc=%ld\n", lpar_rc); | 700 | ibmveth_error_printk("tx: h_send_logical_lan failed with rc=%ld\n", lpar_rc); |
701 | for(i = 0; i < 6; i++) { | 701 | for(i = 0; i < 6; i++) { |
@@ -786,14 +786,14 @@ static int ibmveth_poll(struct net_device *netdev, int *budget) | |||
786 | /* we think we are done - reenable interrupts, then check once more to make sure we are done */ | 786 | /* we think we are done - reenable interrupts, then check once more to make sure we are done */ |
787 | lpar_rc = h_vio_signal(adapter->vdev->unit_address, VIO_IRQ_ENABLE); | 787 | lpar_rc = h_vio_signal(adapter->vdev->unit_address, VIO_IRQ_ENABLE); |
788 | 788 | ||
789 | ibmveth_assert(lpar_rc == H_Success); | 789 | ibmveth_assert(lpar_rc == H_SUCCESS); |
790 | 790 | ||
791 | netif_rx_complete(netdev); | 791 | netif_rx_complete(netdev); |
792 | 792 | ||
793 | if(ibmveth_rxq_pending_buffer(adapter) && netif_rx_reschedule(netdev, frames_processed)) | 793 | if(ibmveth_rxq_pending_buffer(adapter) && netif_rx_reschedule(netdev, frames_processed)) |
794 | { | 794 | { |
795 | lpar_rc = h_vio_signal(adapter->vdev->unit_address, VIO_IRQ_DISABLE); | 795 | lpar_rc = h_vio_signal(adapter->vdev->unit_address, VIO_IRQ_DISABLE); |
796 | ibmveth_assert(lpar_rc == H_Success); | 796 | ibmveth_assert(lpar_rc == H_SUCCESS); |
797 | more_work = 1; | 797 | more_work = 1; |
798 | goto restart_poll; | 798 | goto restart_poll; |
799 | } | 799 | } |
@@ -813,7 +813,7 @@ static irqreturn_t ibmveth_interrupt(int irq, void *dev_instance, struct pt_regs | |||
813 | 813 | ||
814 | if(netif_rx_schedule_prep(netdev)) { | 814 | if(netif_rx_schedule_prep(netdev)) { |
815 | lpar_rc = h_vio_signal(adapter->vdev->unit_address, VIO_IRQ_DISABLE); | 815 | lpar_rc = h_vio_signal(adapter->vdev->unit_address, VIO_IRQ_DISABLE); |
816 | ibmveth_assert(lpar_rc == H_Success); | 816 | ibmveth_assert(lpar_rc == H_SUCCESS); |
817 | __netif_rx_schedule(netdev); | 817 | __netif_rx_schedule(netdev); |
818 | } | 818 | } |
819 | return IRQ_HANDLED; | 819 | return IRQ_HANDLED; |
@@ -835,7 +835,7 @@ static void ibmveth_set_multicast_list(struct net_device *netdev) | |||
835 | IbmVethMcastEnableRecv | | 835 | IbmVethMcastEnableRecv | |
836 | IbmVethMcastDisableFiltering, | 836 | IbmVethMcastDisableFiltering, |
837 | 0); | 837 | 0); |
838 | if(lpar_rc != H_Success) { | 838 | if(lpar_rc != H_SUCCESS) { |
839 | ibmveth_error_printk("h_multicast_ctrl rc=%ld when entering promisc mode\n", lpar_rc); | 839 | ibmveth_error_printk("h_multicast_ctrl rc=%ld when entering promisc mode\n", lpar_rc); |
840 | } | 840 | } |
841 | } else { | 841 | } else { |
@@ -847,7 +847,7 @@ static void ibmveth_set_multicast_list(struct net_device *netdev) | |||
847 | IbmVethMcastDisableFiltering | | 847 | IbmVethMcastDisableFiltering | |
848 | IbmVethMcastClearFilterTable, | 848 | IbmVethMcastClearFilterTable, |
849 | 0); | 849 | 0); |
850 | if(lpar_rc != H_Success) { | 850 | if(lpar_rc != H_SUCCESS) { |
851 | ibmveth_error_printk("h_multicast_ctrl rc=%ld when attempting to clear filter table\n", lpar_rc); | 851 | ibmveth_error_printk("h_multicast_ctrl rc=%ld when attempting to clear filter table\n", lpar_rc); |
852 | } | 852 | } |
853 | /* add the addresses to the filter table */ | 853 | /* add the addresses to the filter table */ |
@@ -858,7 +858,7 @@ static void ibmveth_set_multicast_list(struct net_device *netdev) | |||
858 | lpar_rc = h_multicast_ctrl(adapter->vdev->unit_address, | 858 | lpar_rc = h_multicast_ctrl(adapter->vdev->unit_address, |
859 | IbmVethMcastAddFilter, | 859 | IbmVethMcastAddFilter, |
860 | mcast_addr); | 860 | mcast_addr); |
861 | if(lpar_rc != H_Success) { | 861 | if(lpar_rc != H_SUCCESS) { |
862 | ibmveth_error_printk("h_multicast_ctrl rc=%ld when adding an entry to the filter table\n", lpar_rc); | 862 | ibmveth_error_printk("h_multicast_ctrl rc=%ld when adding an entry to the filter table\n", lpar_rc); |
863 | } | 863 | } |
864 | } | 864 | } |
@@ -867,7 +867,7 @@ static void ibmveth_set_multicast_list(struct net_device *netdev) | |||
867 | lpar_rc = h_multicast_ctrl(adapter->vdev->unit_address, | 867 | lpar_rc = h_multicast_ctrl(adapter->vdev->unit_address, |
868 | IbmVethMcastEnableFiltering, | 868 | IbmVethMcastEnableFiltering, |
869 | 0); | 869 | 0); |
870 | if(lpar_rc != H_Success) { | 870 | if(lpar_rc != H_SUCCESS) { |
871 | ibmveth_error_printk("h_multicast_ctrl rc=%ld when enabling filtering\n", lpar_rc); | 871 | ibmveth_error_printk("h_multicast_ctrl rc=%ld when enabling filtering\n", lpar_rc); |
872 | } | 872 | } |
873 | } | 873 | } |
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index edd1b5306b16..75b35ad760de 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c | |||
@@ -94,7 +94,7 @@ static struct console netconsole = { | |||
94 | static int option_setup(char *opt) | 94 | static int option_setup(char *opt) |
95 | { | 95 | { |
96 | configured = !netpoll_parse_options(&np, opt); | 96 | configured = !netpoll_parse_options(&np, opt); |
97 | return 0; | 97 | return 1; |
98 | } | 98 | } |
99 | 99 | ||
100 | __setup("netconsole=", option_setup); | 100 | __setup("netconsole=", option_setup); |
diff --git a/drivers/net/pcmcia/xirc2ps_cs.c b/drivers/net/pcmcia/xirc2ps_cs.c index a92a3134c833..71f45056a70c 100644 --- a/drivers/net/pcmcia/xirc2ps_cs.c +++ b/drivers/net/pcmcia/xirc2ps_cs.c | |||
@@ -1940,7 +1940,7 @@ static int __init setup_xirc2ps_cs(char *str) | |||
1940 | MAYBE_SET(lockup_hack, 6); | 1940 | MAYBE_SET(lockup_hack, 6); |
1941 | #undef MAYBE_SET | 1941 | #undef MAYBE_SET |
1942 | 1942 | ||
1943 | return 0; | 1943 | return 1; |
1944 | } | 1944 | } |
1945 | 1945 | ||
1946 | __setup("xirc2ps_cs=", setup_xirc2ps_cs); | 1946 | __setup("xirc2ps_cs=", setup_xirc2ps_cs); |
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index 964c09644832..770e6b6cec60 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
@@ -69,8 +69,8 @@ | |||
69 | 69 | ||
70 | #define DRV_MODULE_NAME "tg3" | 70 | #define DRV_MODULE_NAME "tg3" |
71 | #define PFX DRV_MODULE_NAME ": " | 71 | #define PFX DRV_MODULE_NAME ": " |
72 | #define DRV_MODULE_VERSION "3.55" | 72 | #define DRV_MODULE_VERSION "3.56" |
73 | #define DRV_MODULE_RELDATE "Mar 27, 2006" | 73 | #define DRV_MODULE_RELDATE "Apr 1, 2006" |
74 | 74 | ||
75 | #define TG3_DEF_MAC_MODE 0 | 75 | #define TG3_DEF_MAC_MODE 0 |
76 | #define TG3_DEF_RX_MODE 0 | 76 | #define TG3_DEF_RX_MODE 0 |
@@ -497,40 +497,33 @@ static void tg3_write_mem(struct tg3 *tp, u32 off, u32 val) | |||
497 | unsigned long flags; | 497 | unsigned long flags; |
498 | 498 | ||
499 | spin_lock_irqsave(&tp->indirect_lock, flags); | 499 | spin_lock_irqsave(&tp->indirect_lock, flags); |
500 | if (tp->write32 != tg3_write_indirect_reg32) { | 500 | pci_write_config_dword(tp->pdev, TG3PCI_MEM_WIN_BASE_ADDR, off); |
501 | tw32_f(TG3PCI_MEM_WIN_BASE_ADDR, off); | 501 | pci_write_config_dword(tp->pdev, TG3PCI_MEM_WIN_DATA, val); |
502 | tw32_f(TG3PCI_MEM_WIN_DATA, val); | ||
503 | 502 | ||
504 | /* Always leave this as zero. */ | 503 | /* Always leave this as zero. */ |
505 | tw32_f(TG3PCI_MEM_WIN_BASE_ADDR, 0); | 504 | pci_write_config_dword(tp->pdev, TG3PCI_MEM_WIN_BASE_ADDR, 0); |
506 | } else { | ||
507 | pci_write_config_dword(tp->pdev, TG3PCI_MEM_WIN_BASE_ADDR, off); | ||
508 | pci_write_config_dword(tp->pdev, TG3PCI_MEM_WIN_DATA, val); | ||
509 | |||
510 | /* Always leave this as zero. */ | ||
511 | pci_write_config_dword(tp->pdev, TG3PCI_MEM_WIN_BASE_ADDR, 0); | ||
512 | } | ||
513 | spin_unlock_irqrestore(&tp->indirect_lock, flags); | 505 | spin_unlock_irqrestore(&tp->indirect_lock, flags); |
514 | } | 506 | } |
515 | 507 | ||
508 | static void tg3_write_mem_fast(struct tg3 *tp, u32 off, u32 val) | ||
509 | { | ||
510 | /* If no workaround is needed, write to mem space directly */ | ||
511 | if (tp->write32 != tg3_write_indirect_reg32) | ||
512 | tw32(NIC_SRAM_WIN_BASE + off, val); | ||
513 | else | ||
514 | tg3_write_mem(tp, off, val); | ||
515 | } | ||
516 | |||
516 | static void tg3_read_mem(struct tg3 *tp, u32 off, u32 *val) | 517 | static void tg3_read_mem(struct tg3 *tp, u32 off, u32 *val) |
517 | { | 518 | { |
518 | unsigned long flags; | 519 | unsigned long flags; |
519 | 520 | ||
520 | spin_lock_irqsave(&tp->indirect_lock, flags); | 521 | spin_lock_irqsave(&tp->indirect_lock, flags); |
521 | if (tp->write32 != tg3_write_indirect_reg32) { | 522 | pci_write_config_dword(tp->pdev, TG3PCI_MEM_WIN_BASE_ADDR, off); |
522 | tw32_f(TG3PCI_MEM_WIN_BASE_ADDR, off); | 523 | pci_read_config_dword(tp->pdev, TG3PCI_MEM_WIN_DATA, val); |
523 | *val = tr32(TG3PCI_MEM_WIN_DATA); | ||
524 | 524 | ||
525 | /* Always leave this as zero. */ | 525 | /* Always leave this as zero. */ |
526 | tw32_f(TG3PCI_MEM_WIN_BASE_ADDR, 0); | 526 | pci_write_config_dword(tp->pdev, TG3PCI_MEM_WIN_BASE_ADDR, 0); |
527 | } else { | ||
528 | pci_write_config_dword(tp->pdev, TG3PCI_MEM_WIN_BASE_ADDR, off); | ||
529 | pci_read_config_dword(tp->pdev, TG3PCI_MEM_WIN_DATA, val); | ||
530 | |||
531 | /* Always leave this as zero. */ | ||
532 | pci_write_config_dword(tp->pdev, TG3PCI_MEM_WIN_BASE_ADDR, 0); | ||
533 | } | ||
534 | spin_unlock_irqrestore(&tp->indirect_lock, flags); | 527 | spin_unlock_irqrestore(&tp->indirect_lock, flags); |
535 | } | 528 | } |
536 | 529 | ||
@@ -1374,12 +1367,12 @@ static int tg3_set_power_state(struct tg3 *tp, pci_power_t state) | |||
1374 | } | 1367 | } |
1375 | } | 1368 | } |
1376 | 1369 | ||
1377 | tg3_write_sig_post_reset(tp, RESET_KIND_SHUTDOWN); | ||
1378 | |||
1379 | /* Finally, set the new power state. */ | 1370 | /* Finally, set the new power state. */ |
1380 | pci_write_config_word(tp->pdev, pm + PCI_PM_CTRL, power_control); | 1371 | pci_write_config_word(tp->pdev, pm + PCI_PM_CTRL, power_control); |
1381 | udelay(100); /* Delay after power state change */ | 1372 | udelay(100); /* Delay after power state change */ |
1382 | 1373 | ||
1374 | tg3_write_sig_post_reset(tp, RESET_KIND_SHUTDOWN); | ||
1375 | |||
1383 | return 0; | 1376 | return 0; |
1384 | } | 1377 | } |
1385 | 1378 | ||
@@ -6547,11 +6540,11 @@ static void tg3_timer(unsigned long __opaque) | |||
6547 | if (tp->tg3_flags & TG3_FLAG_ENABLE_ASF) { | 6540 | if (tp->tg3_flags & TG3_FLAG_ENABLE_ASF) { |
6548 | u32 val; | 6541 | u32 val; |
6549 | 6542 | ||
6550 | tg3_write_mem(tp, NIC_SRAM_FW_CMD_MBOX, | 6543 | tg3_write_mem_fast(tp, NIC_SRAM_FW_CMD_MBOX, |
6551 | FWCMD_NICDRV_ALIVE2); | 6544 | FWCMD_NICDRV_ALIVE2); |
6552 | tg3_write_mem(tp, NIC_SRAM_FW_CMD_LEN_MBOX, 4); | 6545 | tg3_write_mem_fast(tp, NIC_SRAM_FW_CMD_LEN_MBOX, 4); |
6553 | /* 5 seconds timeout */ | 6546 | /* 5 seconds timeout */ |
6554 | tg3_write_mem(tp, NIC_SRAM_FW_CMD_DATA_MBOX, 5); | 6547 | tg3_write_mem_fast(tp, NIC_SRAM_FW_CMD_DATA_MBOX, 5); |
6555 | val = tr32(GRC_RX_CPU_EVENT); | 6548 | val = tr32(GRC_RX_CPU_EVENT); |
6556 | val |= (1 << 14); | 6549 | val |= (1 << 14); |
6557 | tw32(GRC_RX_CPU_EVENT, val); | 6550 | tw32(GRC_RX_CPU_EVENT, val); |
diff --git a/drivers/net/tokenring/Kconfig b/drivers/net/tokenring/Kconfig index e4cfc80b283b..99c4c1922f19 100644 --- a/drivers/net/tokenring/Kconfig +++ b/drivers/net/tokenring/Kconfig | |||
@@ -3,7 +3,7 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | menu "Token Ring devices" | 5 | menu "Token Ring devices" |
6 | depends on NETDEVICES | 6 | depends on NETDEVICES && !UML |
7 | 7 | ||
8 | # So far, we only have PCI, ISA, and MCA token ring devices | 8 | # So far, we only have PCI, ISA, and MCA token ring devices |
9 | config TR | 9 | config TR |
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig index f85e30190008..bad09ebdb50b 100644 --- a/drivers/net/wireless/Kconfig +++ b/drivers/net/wireless/Kconfig | |||
@@ -356,7 +356,7 @@ config PCI_HERMES | |||
356 | 356 | ||
357 | config ATMEL | 357 | config ATMEL |
358 | tristate "Atmel at76c50x chipset 802.11b support" | 358 | tristate "Atmel at76c50x chipset 802.11b support" |
359 | depends on NET_RADIO | 359 | depends on NET_RADIO && (PCI || PCMCIA) |
360 | select FW_LOADER | 360 | select FW_LOADER |
361 | select CRC32 | 361 | select CRC32 |
362 | ---help--- | 362 | ---help--- |