Commit 7742c0bc authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6

* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: (26 commits)
  netdev: i82596 Ethernet needs <asm/cacheflush.h>
  forcedeth: mcp73 device addition
  forcedeth: new device ids in pci_ids.h
  atl1: make atl1_init_ring_ptrs static
  eHEA: net_poll support
  drivers/net/acenic.c: fix check-after-use
  defxx: Use __maybe_unused rather than a local hack
  Fix error checking in Vitesse IRQ config
  ps3: reduce allocation size of rx skb buffers
  atl1: use kernel provided ethernet length constants
  atl1: fix typo in dma_req_block
  atl1: change cmb write threshold
  atl1: fix typo in DMA engine setup
  atl1: change tpd_avail function name
  ps3: fix rare issue that reenabling rx DMA fails
  ps3: removed calling netif_poll_enable() in open()
  ps3: use ethX as the name of irq
  ps3: use net_device_stats of net_device structure
  ps3: removed conditional ethtool support
  ps3: removed defines no longer used
  ...
parents 9e72ea82 88accb49
...@@ -57,6 +57,7 @@ ...@@ -57,6 +57,7 @@
#include <asm/io.h> #include <asm/io.h>
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/pgtable.h> #include <asm/pgtable.h>
#include <asm/cacheflush.h>
static char version[] __initdata = static char version[] __initdata =
"82596.c $Revision: 1.5 $\n"; "82596.c $Revision: 1.5 $\n";
......
...@@ -18,7 +18,7 @@ gianfar_driver-objs := gianfar.o \ ...@@ -18,7 +18,7 @@ gianfar_driver-objs := gianfar.o \
gianfar_sysfs.o gianfar_sysfs.o
obj-$(CONFIG_UCC_GETH) += ucc_geth_driver.o obj-$(CONFIG_UCC_GETH) += ucc_geth_driver.o
ucc_geth_driver-objs := ucc_geth.o ucc_geth_mii.o ucc_geth_driver-objs := ucc_geth.o ucc_geth_mii.o ucc_geth_ethtool.o
# #
# link order important here # link order important here
......
...@@ -3128,12 +3128,6 @@ static int __devinit read_eeprom_byte(struct net_device *dev, ...@@ -3128,12 +3128,6 @@ static int __devinit read_eeprom_byte(struct net_device *dev,
int result = 0; int result = 0;
short i; short i;
if (!dev) {
printk(KERN_ERR "No device!\n");
result = -ENODEV;
goto out;
}
/* /*
* Don't take interrupts on this CPU will bit banging * Don't take interrupts on this CPU will bit banging
* the %#%#@$ I2C device * the %#%#@$ I2C device
......
...@@ -680,11 +680,6 @@ void atl1_check_options(struct atl1_adapter *adapter); ...@@ -680,11 +680,6 @@ void atl1_check_options(struct atl1_adapter *adapter);
#define AUTONEG_ADVERTISE_10_100_ALL 0x000F /* All 10/100 speeds */ #define AUTONEG_ADVERTISE_10_100_ALL 0x000F /* All 10/100 speeds */
#define AUTONEG_ADVERTISE_10_ALL 0x0003 /* 10Mbps Full & Half speeds */ #define AUTONEG_ADVERTISE_10_ALL 0x0003 /* 10Mbps Full & Half speeds */
/* The size (in bytes) of a ethernet packet */
#define ENET_HEADER_SIZE 14
#define MAXIMUM_ETHERNET_FRAME_SIZE 1518 /* with FCS */
#define MINIMUM_ETHERNET_FRAME_SIZE 64 /* with FCS */
#define ETHERNET_FCS_SIZE 4
#define MAX_JUMBO_FRAME_SIZE 0x2800 #define MAX_JUMBO_FRAME_SIZE 0x2800
#define PHY_AUTO_NEG_TIME 45 /* 4.5 Seconds */ #define PHY_AUTO_NEG_TIME 45 /* 4.5 Seconds */
...@@ -929,8 +924,8 @@ enum atl1_dma_req_block { ...@@ -929,8 +924,8 @@ enum atl1_dma_req_block {
atl1_dma_req_128 = 0, atl1_dma_req_128 = 0,
atl1_dma_req_256 = 1, atl1_dma_req_256 = 1,
atl1_dma_req_512 = 2, atl1_dma_req_512 = 2,
atl1_dam_req_1024 = 3, atl1_dma_req_1024 = 3,
atl1_dam_req_2048 = 4, atl1_dma_req_2048 = 4,
atl1_dma_req_4096 = 5 atl1_dma_req_4096 = 5
}; };
......
...@@ -59,6 +59,7 @@ ...@@ -59,6 +59,7 @@
#include <linux/skbuff.h> #include <linux/skbuff.h>
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
#include <linux/if_vlan.h> #include <linux/if_vlan.h>
#include <linux/if_ether.h>
#include <linux/irqreturn.h> #include <linux/irqreturn.h>
#include <linux/workqueue.h> #include <linux/workqueue.h>
#include <linux/timer.h> #include <linux/timer.h>
...@@ -120,8 +121,8 @@ static int __devinit atl1_sw_init(struct atl1_adapter *adapter) ...@@ -120,8 +121,8 @@ static int __devinit atl1_sw_init(struct atl1_adapter *adapter)
struct atl1_hw *hw = &adapter->hw; struct atl1_hw *hw = &adapter->hw;
struct net_device *netdev = adapter->netdev; struct net_device *netdev = adapter->netdev;
hw->max_frame_size = netdev->mtu + ENET_HEADER_SIZE + ETHERNET_FCS_SIZE; hw->max_frame_size = netdev->mtu + ETH_HLEN + ETH_FCS_LEN;
hw->min_frame_size = MINIMUM_ETHERNET_FRAME_SIZE; hw->min_frame_size = ETH_ZLEN + ETH_FCS_LEN;
adapter->wol = 0; adapter->wol = 0;
adapter->rx_buffer_len = (hw->max_frame_size + 7) & ~7; adapter->rx_buffer_len = (hw->max_frame_size + 7) & ~7;
...@@ -314,7 +315,7 @@ s32 atl1_setup_ring_resources(struct atl1_adapter *adapter) ...@@ -314,7 +315,7 @@ s32 atl1_setup_ring_resources(struct atl1_adapter *adapter)
return -ENOMEM; return -ENOMEM;
} }
void atl1_init_ring_ptrs(struct atl1_adapter *adapter) static void atl1_init_ring_ptrs(struct atl1_adapter *adapter)
{ {
struct atl1_tpd_ring *tpd_ring = &adapter->tpd_ring; struct atl1_tpd_ring *tpd_ring = &adapter->tpd_ring;
struct atl1_rfd_ring *rfd_ring = &adapter->rfd_ring; struct atl1_rfd_ring *rfd_ring = &adapter->rfd_ring;
...@@ -688,9 +689,9 @@ static int atl1_change_mtu(struct net_device *netdev, int new_mtu) ...@@ -688,9 +689,9 @@ static int atl1_change_mtu(struct net_device *netdev, int new_mtu)
{ {
struct atl1_adapter *adapter = netdev_priv(netdev); struct atl1_adapter *adapter = netdev_priv(netdev);
int old_mtu = netdev->mtu; int old_mtu = netdev->mtu;
int max_frame = new_mtu + ENET_HEADER_SIZE + ETHERNET_FCS_SIZE; int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN;
if ((max_frame < MINIMUM_ETHERNET_FRAME_SIZE) || if ((max_frame < ETH_ZLEN + ETH_FCS_LEN) ||
(max_frame > MAX_JUMBO_FRAME_SIZE)) { (max_frame > MAX_JUMBO_FRAME_SIZE)) {
dev_warn(&adapter->pdev->dev, "invalid MTU setting\n"); dev_warn(&adapter->pdev->dev, "invalid MTU setting\n");
return -EINVAL; return -EINVAL;
...@@ -908,8 +909,8 @@ static u32 atl1_configure(struct atl1_adapter *adapter) ...@@ -908,8 +909,8 @@ static u32 atl1_configure(struct atl1_adapter *adapter)
/* config DMA Engine */ /* config DMA Engine */
value = ((((u32) hw->dmar_block) & DMA_CTRL_DMAR_BURST_LEN_MASK) value = ((((u32) hw->dmar_block) & DMA_CTRL_DMAR_BURST_LEN_MASK)
<< DMA_CTRL_DMAR_BURST_LEN_SHIFT) | << DMA_CTRL_DMAR_BURST_LEN_SHIFT) |
((((u32) hw->dmaw_block) & DMA_CTRL_DMAR_BURST_LEN_MASK) ((((u32) hw->dmaw_block) & DMA_CTRL_DMAW_BURST_LEN_MASK)
<< DMA_CTRL_DMAR_BURST_LEN_SHIFT) | DMA_CTRL_DMAR_EN | << DMA_CTRL_DMAW_BURST_LEN_SHIFT) | DMA_CTRL_DMAR_EN |
DMA_CTRL_DMAW_EN; DMA_CTRL_DMAW_EN;
value |= (u32) hw->dma_ord; value |= (u32) hw->dma_ord;
if (atl1_rcb_128 == hw->rcb_value) if (atl1_rcb_128 == hw->rcb_value)
...@@ -917,7 +918,10 @@ static u32 atl1_configure(struct atl1_adapter *adapter) ...@@ -917,7 +918,10 @@ static u32 atl1_configure(struct atl1_adapter *adapter)
iowrite32(value, hw->hw_addr + REG_DMA_CTRL); iowrite32(value, hw->hw_addr + REG_DMA_CTRL);
/* config CMB / SMB */ /* config CMB / SMB */
value = hw->cmb_rrd | ((u32) hw->cmb_tpd << 16); value = (hw->cmb_tpd > adapter->tpd_ring.count) ?
hw->cmb_tpd : adapter->tpd_ring.count;
value <<= 16;
value |= hw->cmb_rrd;
iowrite32(value, hw->hw_addr + REG_CMB_WRITE_TH); iowrite32(value, hw->hw_addr + REG_CMB_WRITE_TH);
value = hw->cmb_rx_timer | ((u32) hw->cmb_tx_timer << 16); value = hw->cmb_rx_timer | ((u32) hw->cmb_tx_timer << 16);
iowrite32(value, hw->hw_addr + REG_CMB_WRITE_TIMER); iowrite32(value, hw->hw_addr + REG_CMB_WRITE_TIMER);
...@@ -1334,7 +1338,7 @@ static void atl1_intr_rx(struct atl1_adapter *adapter) ...@@ -1334,7 +1338,7 @@ static void atl1_intr_rx(struct atl1_adapter *adapter)
skb = buffer_info->skb; skb = buffer_info->skb;
length = le16_to_cpu(rrd->xsz.xsum_sz.pkt_size); length = le16_to_cpu(rrd->xsz.xsum_sz.pkt_size);
skb_put(skb, length - ETHERNET_FCS_SIZE); skb_put(skb, length - ETH_FCS_LEN);
/* Receive Checksum Offload */ /* Receive Checksum Offload */
atl1_rx_checksum(adapter, rrd, skb); atl1_rx_checksum(adapter, rrd, skb);
...@@ -1422,7 +1426,7 @@ static void atl1_intr_tx(struct atl1_adapter *adapter) ...@@ -1422,7 +1426,7 @@ static void atl1_intr_tx(struct atl1_adapter *adapter)
netif_wake_queue(adapter->netdev); netif_wake_queue(adapter->netdev);
} }
static u16 tpd_avail(struct atl1_tpd_ring *tpd_ring) static u16 atl1_tpd_avail(struct atl1_tpd_ring *tpd_ring)
{ {
u16 next_to_clean = atomic_read(&tpd_ring->next_to_clean); u16 next_to_clean = atomic_read(&tpd_ring->next_to_clean);
u16 next_to_use = atomic_read(&tpd_ring->next_to_use); u16 next_to_use = atomic_read(&tpd_ring->next_to_use);
...@@ -1453,7 +1457,7 @@ static int atl1_tso(struct atl1_adapter *adapter, struct sk_buff *skb, ...@@ -1453,7 +1457,7 @@ static int atl1_tso(struct atl1_adapter *adapter, struct sk_buff *skb,
tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr, tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr,
iph->daddr, 0, IPPROTO_TCP, 0); iph->daddr, 0, IPPROTO_TCP, 0);
ipofst = skb_network_offset(skb); ipofst = skb_network_offset(skb);
if (ipofst != ENET_HEADER_SIZE) /* 802.3 frame */ if (ipofst != ETH_HLEN) /* 802.3 frame */
tso->tsopl |= 1 << TSO_PARAM_ETHTYPE_SHIFT; tso->tsopl |= 1 << TSO_PARAM_ETHTYPE_SHIFT;
tso->tsopl |= (iph->ihl & tso->tsopl |= (iph->ihl &
...@@ -1708,7 +1712,7 @@ static int atl1_xmit_frame(struct sk_buff *skb, struct net_device *netdev) ...@@ -1708,7 +1712,7 @@ static int atl1_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
return NETDEV_TX_LOCKED; return NETDEV_TX_LOCKED;
} }
if (tpd_avail(&adapter->tpd_ring) < count) { if (atl1_tpd_avail(&adapter->tpd_ring) < count) {
/* not enough descriptors */ /* not enough descriptors */
netif_stop_queue(netdev); netif_stop_queue(netdev);
spin_unlock_irqrestore(&adapter->lock, flags); spin_unlock_irqrestore(&adapter->lock, flags);
......
...@@ -200,6 +200,7 @@ ...@@ -200,6 +200,7 @@
/* Include files */ /* Include files */
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/compiler.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/eisa.h> #include <linux/eisa.h>
...@@ -240,8 +241,6 @@ static char version[] __devinitdata = ...@@ -240,8 +241,6 @@ static char version[] __devinitdata =
*/ */
#define NEW_SKB_SIZE (PI_RCV_DATA_K_SIZE_MAX+128) #define NEW_SKB_SIZE (PI_RCV_DATA_K_SIZE_MAX+128)
#define __unused __attribute__ ((unused))
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
#define DFX_BUS_PCI(dev) (dev->bus == &pci_bus_type) #define DFX_BUS_PCI(dev) (dev->bus == &pci_bus_type)
#else #else
...@@ -375,7 +374,7 @@ static inline void dfx_outl(DFX_board_t *bp, int offset, u32 data) ...@@ -375,7 +374,7 @@ static inline void dfx_outl(DFX_board_t *bp, int offset, u32 data)
static void dfx_port_write_long(DFX_board_t *bp, int offset, u32 data) static void dfx_port_write_long(DFX_board_t *bp, int offset, u32 data)
{ {
struct device __unused *bdev = bp->bus_dev; struct device __maybe_unused *bdev = bp->bus_dev;
int dfx_bus_tc = DFX_BUS_TC(bdev); int dfx_bus_tc = DFX_BUS_TC(bdev);
int dfx_use_mmio = DFX_MMIO || dfx_bus_tc; int dfx_use_mmio = DFX_MMIO || dfx_bus_tc;
...@@ -399,7 +398,7 @@ static inline void dfx_inl(DFX_board_t *bp, int offset, u32 *data) ...@@ -399,7 +398,7 @@ static inline void dfx_inl(DFX_board_t *bp, int offset, u32 *data)
static void dfx_port_read_long(DFX_board_t *bp, int offset, u32 *data) static void dfx_port_read_long(DFX_board_t *bp, int offset, u32 *data)
{ {
struct device __unused *bdev = bp->bus_dev; struct device __maybe_unused *bdev = bp->bus_dev;
int dfx_bus_tc = DFX_BUS_TC(bdev); int dfx_bus_tc = DFX_BUS_TC(bdev);
int dfx_use_mmio = DFX_MMIO || dfx_bus_tc; int dfx_use_mmio = DFX_MMIO || dfx_bus_tc;
...@@ -866,7 +865,7 @@ static void __devinit dfx_bus_uninit(struct net_device *dev) ...@@ -866,7 +865,7 @@ static void __devinit dfx_bus_uninit(struct net_device *dev)
static void __devinit dfx_bus_config_check(DFX_board_t *bp) static void __devinit dfx_bus_config_check(DFX_board_t *bp)
{ {
struct device __unused *bdev = bp->bus_dev; struct device __maybe_unused *bdev = bp->bus_dev;
int dfx_bus_eisa = DFX_BUS_EISA(bdev); int dfx_bus_eisa = DFX_BUS_EISA(bdev);
int status; /* return code from adapter port control call */ int status; /* return code from adapter port control call */
u32 host_data; /* LW data returned from port control call */ u32 host_data; /* LW data returned from port control call */
...@@ -3624,8 +3623,8 @@ static void __devexit dfx_unregister(struct device *bdev) ...@@ -3624,8 +3623,8 @@ static void __devexit dfx_unregister(struct device *bdev)
} }
static int __devinit __unused dfx_dev_register(struct device *); static int __devinit __maybe_unused dfx_dev_register(struct device *);
static int __devexit __unused dfx_dev_unregister(struct device *); static int __devexit __maybe_unused dfx_dev_unregister(struct device *);
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
static int __devinit dfx_pci_register(struct pci_dev *, static int __devinit dfx_pci_register(struct pci_dev *,
...@@ -3699,7 +3698,7 @@ static struct tc_driver dfx_tc_driver = { ...@@ -3699,7 +3698,7 @@ static struct tc_driver dfx_tc_driver = {
}; };
#endif /* CONFIG_TC */ #endif /* CONFIG_TC */
static int __devinit __unused dfx_dev_register(struct device *dev) static int __devinit __maybe_unused dfx_dev_register(struct device *dev)
{ {
int status; int status;
...@@ -3709,7 +3708,7 @@ static int __devinit __unused dfx_dev_register(struct device *dev) ...@@ -3709,7 +3708,7 @@ static int __devinit __unused dfx_dev_register(struct device *dev)
return status; return status;
} }
static int __devexit __unused dfx_dev_unregister(struct device *dev) static int __devexit __maybe_unused dfx_dev_unregister(struct device *dev)
{ {
put_device(dev); put_device(dev);
dfx_unregister(dev); dfx_unregister(dev);
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
#include <asm/io.h> #include <asm/io.h>
#define DRV_NAME "ehea" #define DRV_NAME "ehea"
#define DRV_VERSION "EHEA_0071" #define DRV_VERSION "EHEA_0072"
/* eHEA capability flags */ /* eHEA capability flags */
#define DLPAR_PORT_ADD_REM 1 #define DLPAR_PORT_ADD_REM 1
......
...@@ -589,6 +589,23 @@ static int ehea_poll(struct net_device *dev, int *budget) ...@@ -589,6 +589,23 @@ static int ehea_poll(struct net_device *dev, int *budget)
return 1; return 1;
} }
#ifdef CONFIG_NET_POLL_CONTROLLER
static void ehea_netpoll(struct net_device *dev)
{
struct ehea_port *port = netdev_priv(dev);
netif_rx_schedule(port->port_res[0].d_netdev);
}
#endif
static int ehea_poll_firstqueue(struct net_device *dev, int *budget)
{
struct ehea_port *port = netdev_priv(dev);
struct net_device *d_dev = port->port_res[0].d_netdev;
return ehea_poll(d_dev, budget);
}
static irqreturn_t ehea_recv_irq_handler(int irq, void *param) static irqreturn_t ehea_recv_irq_handler(int irq, void *param)
{ {
struct ehea_port_res *pr = param; struct ehea_port_res *pr = param;
...@@ -2626,7 +2643,10 @@ struct ehea_port *ehea_setup_single_port(struct ehea_adapter *adapter, ...@@ -2626,7 +2643,10 @@ struct ehea_port *ehea_setup_single_port(struct ehea_adapter *adapter,
memcpy(dev->dev_addr, &port->mac_addr, ETH_ALEN); memcpy(dev->dev_addr, &port->mac_addr, ETH_ALEN);
dev->open = ehea_open; dev->open = ehea_open;
dev->poll = ehea_poll; dev->poll = ehea_poll_firstqueue;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ehea_netpoll;
#endif
dev->weight = 64; dev->weight = 64;
dev->stop = ehea_stop; dev->stop = ehea_stop;
dev->hard_start_xmit = ehea_start_xmit; dev->hard_start_xmit = ehea_start_xmit;
......
...@@ -5546,6 +5546,22 @@ static struct pci_device_id pci_tbl[] = { ...@@ -5546,6 +5546,22 @@ static struct pci_device_id pci_tbl[] = {
PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_27), PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_27),
.driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT, .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT,
}, },
{ /* MCP73 Ethernet Controller */
PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_28),
.driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT,
},
{ /* MCP73 Ethernet Controller */
PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_29),
.driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT,
},
{ /* MCP73 Ethernet Controller */
PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_30),
.driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT,
},
{ /* MCP73 Ethernet Controller */
PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_31),
.driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT,
},
{0,}, {0,},
}; };
......
...@@ -1179,8 +1179,7 @@ dma_watchdog_shutdown_poll_result(struct netxen_adapter *adapter) ...@@ -1179,8 +1179,7 @@ dma_watchdog_shutdown_poll_result(struct netxen_adapter *adapter)
NETXEN_CAM_RAM(NETXEN_CAM_RAM_DMA_WATCHDOG_CTRL), &ctrl, 4)) NETXEN_CAM_RAM(NETXEN_CAM_RAM_DMA_WATCHDOG_CTRL), &ctrl, 4))
printk(KERN_ERR "failed to read dma watchdog status\n"); printk(KERN_ERR "failed to read dma watchdog status\n");
return ((netxen_get_dma_watchdog_enabled(ctrl) == 0) && return (netxen_get_dma_watchdog_enabled(ctrl) == 0);
(netxen_get_dma_watchdog_disabled(ctrl) == 0));
} }
static inline int static inline int
......
...@@ -46,7 +46,7 @@ MODULE_DESCRIPTION("NetXen Multi port (1/10) Gigabit Network Driver"); ...@@ -46,7 +46,7 @@ MODULE_DESCRIPTION("NetXen Multi port (1/10) Gigabit Network Driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_VERSION(NETXEN_NIC_LINUX_VERSIONID); MODULE_VERSION(NETXEN_NIC_LINUX_VERSIONID);
char netxen_nic_driver_name[] = "netxen-nic"; char netxen_nic_driver_name[] = "netxen_nic";
static char netxen_nic_driver_string[] = "NetXen Network Driver version " static char netxen_nic_driver_string[] = "NetXen Network Driver version "
NETXEN_NIC_LINUX_VERSIONID; NETXEN_NIC_LINUX_VERSIONID;
...@@ -640,6 +640,10 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -640,6 +640,10 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
NETXEN_CRB_NORMALIZE(adapter, NETXEN_CRB_NORMALIZE(adapter,
NETXEN_ROMUSB_GLB_PEGTUNE_DONE)); NETXEN_ROMUSB_GLB_PEGTUNE_DONE));
/* Handshake with the card before we register the devices. */ /* Handshake with the card before we register the devices. */
writel(0, NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE));
netxen_pinit_from_rom(adapter, 0);
msleep(1);
netxen_load_firmware(adapter);
netxen_phantom_init(adapter, NETXEN_NIC_PEG_TUNE); netxen_phantom_init(adapter, NETXEN_NIC_PEG_TUNE);
} }
...@@ -782,19 +786,18 @@ static void __devexit netxen_nic_remove(struct pci_dev *pdev) ...@@ -782,19 +786,18 @@ static void __devexit netxen_nic_remove(struct pci_dev *pdev)
if (adapter->portnum == 0) { if (adapter->portnum == 0) {
if (init_firmware_done) { if (init_firmware_done) {
dma_watchdog_shutdown_request(adapter);
msleep(100);
i = 100; i = 100;
while ((dma_watchdog_shutdown_poll_result(adapter) != 1) && i) { do {
printk(KERN_INFO "dma_watchdog_shutdown_poll still in progress\n"); if (dma_watchdog_shutdown_request(adapter) == 1)
break;
msleep(100); msleep(100);
i--; if (dma_watchdog_shutdown_poll_result(adapter) == 1)
} break;
} while (--i);
if (i == 0) { if (i == 0)
printk(KERN_ERR "dma_watchdog_shutdown_request failed\n"); printk(KERN_ERR "%s: dma_watchdog_shutdown failed\n",
return; netdev->name);
}
/* clear the register for future unloads/loads */ /* clear the register for future unloads/loads */
writel(0, NETXEN_CRB_NORMALIZE(adapter, NETXEN_CAM_RAM(0x1fc))); writel(0, NETXEN_CRB_NORMALIZE(adapter, NETXEN_CAM_RAM(0x1fc)));
...@@ -803,11 +806,9 @@ static void __devexit netxen_nic_remove(struct pci_dev *pdev) ...@@ -803,11 +806,9 @@ static void __devexit netxen_nic_remove(struct pci_dev *pdev)
/* leave the hw in the same state as reboot */ /* leave the hw in the same state as reboot */
writel(0, NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE)); writel(0, NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE));
if (netxen_pinit_from_rom(adapter, 0)) netxen_pinit_from_rom(adapter, 0);
return;
msleep(1); msleep(1);
if (netxen_load_firmware(adapter)) netxen_load_firmware(adapter);
return;
netxen_phantom_init(adapter, NETXEN_NIC_PEG_TUNE); netxen_phantom_init(adapter, NETXEN_NIC_PEG_TUNE);
} }
...@@ -816,22 +817,21 @@ static void __devexit netxen_nic_remove(struct pci_dev *pdev) ...@@ -816,22 +817,21 @@ static void __devexit netxen_nic_remove(struct pci_dev *pdev)
printk(KERN_INFO "State: 0x%0x\n", printk(KERN_INFO "State: 0x%0x\n",
readl(NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE))); readl(NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE)));
dma_watchdog_shutdown_request(adapter);
msleep(100);
i = 100; i = 100;
while ((dma_watchdog_shutdown_poll_result(adapter) != 1) && i) { do {
printk(KERN_INFO "dma_watchdog_shutdown_poll still in progress\n"); if (dma_watchdog_shutdown_request(adapter) == 1)
break;
msleep(100); msleep(100);
i--; if (dma_watchdog_shutdown_poll_result(adapter) == 1)
} break;
} while (--i);
if (i) { if (i) {
netxen_free_adapter_offload(adapter); netxen_free_adapter_offload(adapter);
} else { } else {
printk(KERN_ERR "failed to dma shutdown\n"); printk(KERN_ERR "%s: dma_watchdog_shutdown failed\n",
return; netdev->name);
} }
} }
iounmap(adapter->ahw.db_base); iounmap(adapter->ahw.db_base);
......
...@@ -109,7 +109,7 @@ static int vsc824x_config_intr(struct phy_device *phydev) ...@@ -109,7 +109,7 @@ static int vsc824x_config_intr(struct phy_device *phydev)
*/ */
err = phy_read(phydev, MII_VSC8244_ISTAT); err = phy_read(phydev, MII_VSC8244_ISTAT);
if (err) if (err < 0)
return err; return err;
err = phy_write(phydev, MII_VSC8244_IMASK, 0); err = phy_write(phydev, MII_VSC8244_IMASK, 0);
......
This diff is collapsed.
...@@ -28,21 +28,12 @@ ...@@ -28,21 +28,12 @@
#ifndef _GELIC_NET_H #ifndef _GELIC_NET_H
#define _GELIC_NET_H #define _GELIC_NET_H
#define GELIC_NET_DRV_NAME "Gelic Network Driver"
#define GELIC_NET_DRV_VERSION "1.0"
#define GELIC_NET_ETHTOOL /* use ethtool */
/* ioctl */
#define GELIC_NET_GET_MODE (SIOCDEVPRIVATE + 0)
#define GELIC_NET_SET_MODE (SIOCDEVPRIVATE + 1)
/* descriptors */ /* descriptors */
#define GELIC_NET_RX_DESCRIPTORS 128 /* num of descriptors */ #define GELIC_NET_RX_DESCRIPTORS 128 /* num of descriptors */
#define GELIC_NET_TX_DESCRIPTORS 128 /* num of descriptors */ #define GELIC_NET_TX_DESCRIPTORS 128 /* num of descriptors */
#define GELIC_NET_MAX_MTU 2308 #define GELIC_NET_MAX_MTU VLAN_ETH_FRAME_LEN
#define GELIC_NET_MIN_MTU 64 #define GELIC_NET_MIN_MTU VLAN_ETH_ZLEN
#define GELIC_NET_RXBUF_ALIGN 128 #define GELIC_NET_RXBUF_ALIGN 128
#define GELIC_NET_RX_CSUM_DEFAULT 1 /* hw chksum */ #define GELIC_NET_RX_CSUM_DEFAULT 1 /* hw chksum */
#define GELIC_NET_WATCHDOG_TIMEOUT 5*HZ #define GELIC_NET_WATCHDOG_TIMEOUT 5*HZ
...@@ -90,7 +81,8 @@ enum gelic_net_int1_status { ...@@ -90,7 +81,8 @@ enum gelic_net_int1_status {
*/ */
#define GELIC_NET_RXVLNPKT 0x00200000 /* VLAN packet */ #define GELIC_NET_RXVLNPKT 0x00200000 /* VLAN packet */
/* bit 20..16 reserved */ /* bit 20..16 reserved */
#define GELIC_NET_RXRECNUM 0x0000ff00 /* reception receipt number */ #define GELIC_NET_RXRRECNUM 0x0000ff00 /* reception receipt number */
#define GELIC_NET_RXRRECNUM_SHIFT 8
/* bit 7..0 reserved */ /* bit 7..0 reserved */
#define GELIC_NET_TXDESC_TAIL 0 #define GELIC_NET_TXDESC_TAIL 0
...@@ -133,19 +125,19 @@ enum gelic_net_int1_status { ...@@ -133,19 +125,19 @@ enum gelic_net_int1_status {
* interrupt status */ * interrupt status */
#define GELIC_NET_DMAC_CMDSTAT_CHAIN_END 0x00000002 /* RXDCEIS:DMA stopped */ #define GELIC_NET_DMAC_CMDSTAT_CHAIN_END 0x00000002 /* RXDCEIS:DMA stopped */
#define GELIC_NET_DMAC_CMDSTAT_NOT_IN_USE 0xb0000000
#define GELIC_NET_DESCR_IND_PROC_SHIFT 28 #define GELIC_NET_DESCR_IND_PROC_SHIFT 28
#define GELIC_NET_DESCR_IND_PROC_MASKO 0x0fffffff #define GELIC_NET_DESCR_IND_PROC_MASKO 0x0fffffff
enum gelic_net_descr_status { enum gelic_net_descr_status {
GELIC_NET_DESCR_COMPLETE = 0x00, /* used in rx and tx */ GELIC_NET_DESCR_COMPLETE = 0x00, /* used in tx */
GELIC_NET_DESCR_BUFFER_FULL = 0x00, /* used in rx */
GELIC_NET_DESCR_RESPONSE_ERROR = 0x01, /* used in rx and tx */ GELIC_NET_DESCR_RESPONSE_ERROR = 0x01, /* used in rx and tx */
GELIC_NET_DESCR_PROTECTION_ERROR = 0x02, /* used in rx and tx */ GELIC_NET_DESCR_PROTECTION_ERROR = 0x02, /* used in rx and tx */
GELIC_NET_DESCR_FRAME_END = 0x04, /* used in rx */ GELIC_NET_DESCR_FRAME_END = 0x04, /* used in rx */
GELIC_NET_DESCR_FORCE_END = 0x05, /* used in rx and tx */ GELIC_NET_DESCR_FORCE_END = 0x05, /* used in rx and tx */
GELIC_NET_DESCR_CARDOWNED = 0x0a, /* used in rx and tx */ GELIC_NET_DESCR_CARDOWNED = 0x0a, /* used in rx and tx */
GELIC_NET_DESCR_NOT_IN_USE /* any other value */ GELIC_NET_DESCR_NOT_IN_USE = 0x0b /* any other value */
}; };
/* for lv1_net_control */ /* for lv1_net_control */
#define GELIC_NET_GET_MAC_ADDRESS 0x0000000000000001 #define GELIC_NET_GET_MAC_ADDRESS 0x0000000000000001
...@@ -216,10 +208,10 @@ struct gelic_net_card { ...@@ -216,10 +208,10 @@ struct gelic_net_card {
struct gelic_net_descr_chain tx_chain; struct gelic_net_descr_chain tx_chain;
struct gelic_net_descr_chain rx_chain; struct gelic_net_descr_chain rx_chain;
int rx_dma_restart_required;
/* gurad dmac descriptor chain*/ /* gurad dmac descriptor chain*/
spinlock_t chain_lock; spinlock_t chain_lock;
struct net_device_stats netdev_stats;
int rx_csum; int rx_csum;
/* guard tx_dma_progress */ /* guard tx_dma_progress */
spinlock_t tx_dma_lock; spinlock_t tx_dma_lock;
......
This diff is collapsed.
...@@ -30,6 +30,10 @@ ...@@ -30,6 +30,10 @@
#include "ucc_geth_mii.h" #include "ucc_geth_mii.h"
#define DRV_DESC "QE UCC Gigabit Ethernet Controller"
#define DRV_NAME "ucc_geth"
#define DRV_VERSION "1.1"
#define NUM_TX_QUEUES 8 #define NUM_TX_QUEUES 8
#define NUM_RX_QUEUES 8 #define NUM_RX_QUEUES 8
#define NUM_BDS_IN_PREFETCHED_BDS 4 #define NUM_BDS_IN_PREFETCHED_BDS 4
...@@ -896,6 +900,7 @@ struct ucc_geth_hardware_statistics { ...@@ -896,6 +900,7 @@ struct ucc_geth_hardware_statistics {
#define UCC_GETH_TX_VTAG_TABLE_ENTRY_MAX 8 #define UCC_GETH_TX_VTAG_TABLE_ENTRY_MAX 8
#define UCC_GETH_RX_BD_RING_SIZE_MIN 8 #define UCC_GETH_RX_BD_RING_SIZE_MIN 8
#define UCC_GETH_TX_BD_RING_SIZE_MIN 2 #define UCC_GETH_TX_BD_RING_SIZE_MIN 2
#define UCC_GETH_BD_RING_SIZE_MAX 0xffff
#define UCC_GETH_SIZE_OF_BD QE_SIZEOF_BD #define UCC_GETH_SIZE_OF_BD QE_SIZEOF_BD
...@@ -1135,6 +1140,7 @@ struct ucc_geth_info { ...@@ -1135,6 +1140,7 @@ struct ucc_geth_info {
int bro; int bro;
int ecm; int ecm;
int receiveFlowControl; int receiveFlowControl;
int transmitFlowControl;
u8 maxGroupAddrInHash; u8 maxGroupAddrInHash;
u8 maxIndAddrInHash; u8 maxIndAddrInHash;
u8 prel; u8 prel;
......
This diff is collapsed.
...@@ -54,8 +54,8 @@ ...@@ -54,8 +54,8 @@
#define vdbg(format, arg...) do {} while(0) #define vdbg(format, arg...) do {} while(0)
#endif #endif
#define DRV_DESC "QE UCC Ethernet Controller MII Bus" #define MII_DRV_DESC "QE UCC Ethernet Controller MII Bus"
#define DRV_NAME "fsl-uec_mdio" #define MII_DRV_NAME "fsl-uec_mdio"
/* Write value to the PHY for this device to the register at regnum, */ /* Write value to the PHY for this device to the register at regnum, */
/* waiting until the write is done before it returns. All PHY */ /* waiting until the write is done before it returns. All PHY */
...@@ -261,7 +261,7 @@ static struct of_device_id uec_mdio_match[] = { ...@@ -261,7 +261,7 @@ static struct of_device_id uec_mdio_match[] = {
}; };
static struct of_platform_driver uec_mdio_driver = { static struct of_platform_driver uec_mdio_driver = {
.name = DRV_NAME, .name = MII_DRV_NAME,
.probe = uec_mdio_probe, .probe = uec_mdio_probe,
.remove = uec_mdio_remove, .remove = uec_mdio_remove,
.match_table = uec_mdio_match, .match_table = uec_mdio_match,
......
...@@ -1225,6 +1225,10 @@ ...@@ -1225,6 +1225,10 @@
#define PCI_DEVICE_ID_NVIDIA_NVENET_25 0x054D #define PCI_DEVICE_ID_NVIDIA_NVENET_25 0x054D
#define PCI_DEVICE_ID_NVIDIA_NVENET_26 0x054E #define PCI_DEVICE_ID_NVIDIA_NVENET_26 0x054E
#define PCI_DEVICE_ID_NVIDIA_NVENET_27 0x054F #define PCI_DEVICE_ID_NVIDIA_NVENET_27 0x054F
#define PCI_DEVICE_ID_NVIDIA_NVENET_28 0x07DC
#define PCI_DEVICE_ID_NVIDIA_NVENET_29 0x07DD
#define PCI_DEVICE_ID_NVIDIA_NVENET_30 0x07DE
#define PCI_DEVICE_ID_NVIDIA_NVENET_31 0x07DF
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP67_IDE 0x0560 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP67_IDE 0x0560
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_IDE 0x056C #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_IDE 0x056C
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP77_IDE 0x0759 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP77_IDE 0x0759
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment