diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1999-10-09 00:00:47 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1999-10-09 00:00:47 +0000 |
commit | d6434e1042f3b0a6dfe1b1f615af369486f9b1fa (patch) | |
tree | e2be02f33984c48ec019c654051d27964e42c441 /drivers/net/via-rhine.c | |
parent | 609d1e803baf519487233b765eb487f9ec227a18 (diff) |
Merge with 2.3.19.
Diffstat (limited to 'drivers/net/via-rhine.c')
-rw-r--r-- | drivers/net/via-rhine.c | 84 |
1 files changed, 44 insertions, 40 deletions
diff --git a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c index be7646b65..21275376c 100644 --- a/drivers/net/via-rhine.c +++ b/drivers/net/via-rhine.c @@ -86,6 +86,9 @@ static const int multicast_filter_limit = 32; #if defined(__i386__) && !defined(VIA_USE_MEMORY) #define VIA_USE_IO #endif +#if defined(__alpha__) +#define VIA_USE_IO +#endif #ifdef VIA_USE_IO #undef readb #undef readw @@ -106,7 +109,7 @@ static const int multicast_filter_limit = 32; #define RUN_AT(x) (jiffies + (x)) -#if (LINUX_VERSION_CODE >= 0x20100) +#ifdef MODULE char kernel_version[] = UTS_RELEASE; #else #ifndef __alpha__ @@ -250,12 +253,12 @@ struct pci_id_info { const char *name; u16 vendor_id, device_id, device_id_mask, flags; int io_size; - struct device *(*probe1)(int pci_bus, int pci_devfn, struct device *dev, + struct net_device *(*probe1)(int pci_bus, int pci_devfn, struct net_device *dev, long ioaddr, int irq, int chip_idx, int fnd_cnt); }; -static struct device *via_probe1(int pci_bus, int pci_devfn, - struct device *dev, long ioaddr, int irq, +static struct net_device *via_probe1(int pci_bus, int pci_devfn, + struct net_device *dev, long ioaddr, int irq, int chp_idx, int fnd_cnt); static struct pci_id_info pci_tbl[] = { @@ -344,7 +347,7 @@ struct netdev_private { struct sk_buff* tx_skbuff[TX_RING_SIZE]; unsigned char *tx_buf[TX_RING_SIZE]; /* Tx bounce buffers */ unsigned char *tx_bufs; /* Tx bounce buffer region. */ - struct device *next_module; /* Link for devices of this type. */ + struct net_device *next_module; /* Link for devices of this type. */ struct net_device_stats stats; struct timer_list timer; /* Media monitoring timer. */ unsigned char pci_bus, pci_devfn; @@ -369,33 +372,33 @@ struct netdev_private { unsigned char phys[2]; /* MII device addresses. */ }; -static int mdio_read(struct device *dev, int phy_id, int location); -static void mdio_write(struct device *dev, int phy_id, int location, int value); -static int netdev_open(struct device *dev); -static void check_duplex(struct device *dev); +static int mdio_read(struct net_device *dev, int phy_id, int location); +static void mdio_write(struct net_device *dev, int phy_id, int location, int value); +static int netdev_open(struct net_device *dev); +static void check_duplex(struct net_device *dev); static void netdev_timer(unsigned long data); -static void tx_timeout(struct device *dev); -static void init_ring(struct device *dev); -static int start_tx(struct sk_buff *skb, struct device *dev); +static void tx_timeout(struct net_device *dev); +static void init_ring(struct net_device *dev); +static int start_tx(struct sk_buff *skb, struct net_device *dev); static void intr_handler(int irq, void *dev_instance, struct pt_regs *regs); -static int netdev_rx(struct device *dev); -static void netdev_error(struct device *dev, int intr_status); -static void set_rx_mode(struct device *dev); -static struct net_device_stats *get_stats(struct device *dev); -static int mii_ioctl(struct device *dev, struct ifreq *rq, int cmd); -static int netdev_close(struct device *dev); +static int netdev_rx(struct net_device *dev); +static void netdev_error(struct net_device *dev, int intr_status); +static void set_rx_mode(struct net_device *dev); +static struct net_device_stats *get_stats(struct net_device *dev); +static int mii_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); +static int netdev_close(struct net_device *dev); /* A list of our installed devices, for removing the driver module. */ -static struct device *root_net_dev = NULL; +static struct net_device *root_net_dev = NULL; /* Ideally we would detect all network cards in slot order. That would be best done a central PCI probe dispatch, which wouldn't work well when dynamically adding drivers. So instead we detect just the cards we know about in slot order. */ -static int pci_etherdev_probe(struct device *dev, struct pci_id_info pci_tbl[]) +static int pci_etherdev_probe(struct net_device *dev, struct pci_id_info pci_tbl[]) { int cards_found = 0; int pci_index = 0; @@ -431,9 +434,9 @@ static int pci_etherdev_probe(struct device *dev, struct pci_id_info pci_tbl[]) #if defined(PCI_SUPPORT_VER2) struct pci_dev *pdev = pci_find_slot(pci_bus, pci_device_fn); #ifdef VIA_USE_IO - pciaddr = pdev->base_address[0]; + pciaddr = pdev->resource[0].start; #else - pciaddr = pdev->base_address[1]; + pciaddr = pdev->resource[1].start; #endif irq = pdev->irq; #else @@ -503,15 +506,15 @@ static int pci_etherdev_probe(struct device *dev, struct pci_id_info pci_tbl[]) } #ifndef MODULE -int via_rhine_probe(struct device *dev) +int via_rhine_probe(struct net_device *dev) { printk(KERN_INFO "%s" KERN_INFO "%s", versionA, versionB); return pci_etherdev_probe(dev, pci_tbl); } #endif -static struct device *via_probe1(int pci_bus, int pci_devfn, - struct device *dev, long ioaddr, int irq, +static struct net_device *via_probe1(int pci_bus, int pci_devfn, + struct net_device *dev, long ioaddr, int irq, int chip_id, int card_idx) { struct netdev_private *np; @@ -599,7 +602,7 @@ static struct device *via_probe1(int pci_bus, int pci_devfn, /* Read and write over the MII Management Data I/O (MDIO) interface. */ -static int mdio_read(struct device *dev, int phy_id, int regnum) +static int mdio_read(struct net_device *dev, int phy_id, int regnum) { long ioaddr = dev->base_addr; int boguscnt = 1024; @@ -617,7 +620,7 @@ static int mdio_read(struct device *dev, int phy_id, int regnum) return readw(ioaddr + MIIData); } -static void mdio_write(struct device *dev, int phy_id, int regnum, int value) +static void mdio_write(struct net_device *dev, int phy_id, int regnum, int value) { long ioaddr = dev->base_addr; int boguscnt = 1024; @@ -634,7 +637,7 @@ static void mdio_write(struct device *dev, int phy_id, int regnum, int value) } -static int netdev_open(struct device *dev) +static int netdev_open(struct net_device *dev) { struct netdev_private *np = (struct netdev_private *)dev->priv; long ioaddr = dev->base_addr; @@ -707,7 +710,7 @@ static int netdev_open(struct device *dev) return 0; } -static void check_duplex(struct device *dev) +static void check_duplex(struct net_device *dev) { struct netdev_private *np = (struct netdev_private *)dev->priv; long ioaddr = dev->base_addr; @@ -733,7 +736,7 @@ static void check_duplex(struct device *dev) static void netdev_timer(unsigned long data) { - struct device *dev = (struct device *)data; + struct net_device *dev = (struct net_device *)data; struct netdev_private *np = (struct netdev_private *)dev->priv; long ioaddr = dev->base_addr; int next_tick = 10*HZ; @@ -748,7 +751,7 @@ static void netdev_timer(unsigned long data) add_timer(&np->timer); } -static void tx_timeout(struct device *dev) +static void tx_timeout(struct net_device *dev) { struct netdev_private *np = (struct netdev_private *)dev->priv; long ioaddr = dev->base_addr; @@ -771,7 +774,7 @@ static void tx_timeout(struct device *dev) /* Initialize the Rx and Tx rings, along with various 'dev' bits. */ -static void init_ring(struct device *dev) +static void init_ring(struct net_device *dev) { struct netdev_private *np = (struct netdev_private *)dev->priv; int i; @@ -818,7 +821,7 @@ static void init_ring(struct device *dev) return; } -static int start_tx(struct sk_buff *skb, struct device *dev) +static int start_tx(struct sk_buff *skb, struct net_device *dev) { struct netdev_private *np = (struct netdev_private *)dev->priv; unsigned entry; @@ -877,7 +880,7 @@ static int start_tx(struct sk_buff *skb, struct device *dev) after the Tx thread. */ static void intr_handler(int irq, void *dev_instance, struct pt_regs *rgs) { - struct device *dev = (struct device *)dev_instance; + struct net_device *dev = (struct net_device *)dev_instance; struct netdev_private *np; long ioaddr, boguscnt = max_interrupt_work; @@ -988,7 +991,7 @@ static void intr_handler(int irq, void *dev_instance, struct pt_regs *rgs) /* This routine is logically part of the interrupt handler, but isolated for clarity and better register allocation. */ -static int netdev_rx(struct device *dev) +static int netdev_rx(struct net_device *dev) { struct netdev_private *np = (struct netdev_private *)dev->priv; int entry = np->cur_rx % RX_RING_SIZE; @@ -1053,6 +1056,7 @@ static int netdev_rx(struct device *dev) np->rx_skbuff[entry] = NULL; } skb->protocol = eth_type_trans(skb, dev); + np->stats.rx_bytes+=skb->len; netif_rx(skb); dev->last_rx = jiffies; np->stats.rx_packets++; @@ -1082,7 +1086,7 @@ static int netdev_rx(struct device *dev) return 0; } -static void netdev_error(struct device *dev, int intr_status) +static void netdev_error(struct net_device *dev, int intr_status) { struct netdev_private *np = (struct netdev_private *)dev->priv; long ioaddr = dev->base_addr; @@ -1123,7 +1127,7 @@ static void netdev_error(struct device *dev, int intr_status) } } -static struct enet_statistics *get_stats(struct device *dev) +static struct enet_statistics *get_stats(struct net_device *dev) { struct netdev_private *np = (struct netdev_private *)dev->priv; long ioaddr = dev->base_addr; @@ -1157,7 +1161,7 @@ static inline u32 ether_crc(int length, unsigned char *data) return crc; } -static void set_rx_mode(struct device *dev) +static void set_rx_mode(struct net_device *dev) { struct netdev_private *np = (struct netdev_private *)dev->priv; long ioaddr = dev->base_addr; @@ -1188,7 +1192,7 @@ static void set_rx_mode(struct device *dev) writeb(np->rx_thresh | rx_mode, ioaddr + RxConfig); } -static int mii_ioctl(struct device *dev, struct ifreq *rq, int cmd) +static int mii_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) { u16 *data = (u16 *)&rq->ifr_data; @@ -1209,7 +1213,7 @@ static int mii_ioctl(struct device *dev, struct ifreq *rq, int cmd) } } -static int netdev_close(struct device *dev) +static int netdev_close(struct net_device *dev) { long ioaddr = dev->base_addr; struct netdev_private *np = (struct netdev_private *)dev->priv; |