patch-2.4.25 linux-2.4.25/drivers/net/ioc3-eth.c
Next file: linux-2.4.25/drivers/net/irda/Config.in
Previous file: linux-2.4.25/drivers/net/gt96100eth.c
Back to the patch index
Back to the overall index
- Lines: 161
- Date:
2004-02-18 05:36:31.000000000 -0800
- Orig file:
linux-2.4.24/drivers/net/ioc3-eth.c
- Orig date:
2003-08-25 04:44:42.000000000 -0700
diff -urN linux-2.4.24/drivers/net/ioc3-eth.c linux-2.4.25/drivers/net/ioc3-eth.c
@@ -377,82 +377,6 @@
ip->dev->dev_addr[i - 2] = nic[i];
}
-#if defined(CONFIG_IA64_SGI_SN1) || defined(CONFIG_IA64_SGI_SN2)
-/*
- * Get the ether-address on SN1 nodes
- */
-static void ioc3_get_eaddr_sn(struct ioc3_private *ip)
-{
- int ibrick_mac_addr_get(nasid_t, char *);
- struct ioc3 *ioc3 = ip->regs;
- nasid_t nasid_of_ioc3;
- char io7eaddr[20];
- long mac;
- int err_val;
-
- /*
- * err_val = ibrick_mac_addr_get(get_nasid(), io7eaddr );
- *
- * BAD!! The above call uses get_nasid() and assumes that
- * the ioc3 pointed to by struct ioc3 is hooked up to the
- * cbrick that we're running on. The proper way to make this call
- * is to figure out which nasid the ioc3 is connected to
- * and use that to call ibrick_mac_addr_get. Below is
- * a hack to do just that.
- */
-
- /*
- * Get the nasid of the ioc3 from the ioc3's base addr.
- * FIXME: the 8 at the end assumes we're in memory mode,
- * not node mode (for that, we'd change it to a 9).
- * Is there a call to extract this info from a physical
- * addr somewhere in an sn header file already? If so,
- * we should probably use that, or restructure this routine
- * to use pci_dev and generic numa nodeid getting stuff.
- */
- nasid_of_ioc3 = (((unsigned long)ioc3 >> 33) & ~(-1 << 8));
- err_val = ibrick_mac_addr_get(nasid_of_ioc3, io7eaddr );
-
-
- if (err_val) {
- /* Couldn't read the eeprom; try OSLoadOptions. */
- printk("WARNING: ibrick_mac_addr_get failed: %d\n", err_val);
-
- /* this is where we hardwire the mac address
- * 1st ibrick had 08:00:69:11:34:75
- * 2nd ibrick had 08:00:69:11:35:35
- *
- * Eagan Machines:
- * mankato1 08:00:69:11:BE:95
- * warroad 08:00:69:11:bd:60
- * duron 08:00:69:11:34:60
- *
- * an easy way to get the mac address is to hook
- * up an ip35, then from L1 do 'cti serial'
- * and then look for MAC line XXX THIS DOESN"T QUITE WORK!!
- */
- printk("ioc3_get_eaddr: setting ethernet address to:\n -----> ");
- ip->dev->dev_addr[0] = 0x8;
- ip->dev->dev_addr[1] = 0x0;
- ip->dev->dev_addr[2] = 0x69;
- ip->dev->dev_addr[3] = 0x11;
- ip->dev->dev_addr[4] = 0x34;
- ip->dev->dev_addr[5] = 0x60;
- }
- else {
- long simple_strtol(const char *,char **,unsigned int);
-
- mac = simple_strtol(io7eaddr, (char **)0, 16);
- ip->dev->dev_addr[0] = (mac >> 40) & 0xff;
- ip->dev->dev_addr[1] = (mac >> 32) & 0xff;
- ip->dev->dev_addr[2] = (mac >> 24) & 0xff;
- ip->dev->dev_addr[3] = (mac >> 16) & 0xff;
- ip->dev->dev_addr[4] = (mac >> 8) & 0xff;
- ip->dev->dev_addr[5] = mac & 0xff;
- }
-}
-#endif
-
/*
* Ok, this is hosed by design. It's necessary to know what machine the
* NIC is in in order to know how to read the NIC address. We also have
@@ -460,30 +384,15 @@
*/
static void ioc3_get_eaddr(struct ioc3_private *ip)
{
- void (*do_get_eaddr)(struct ioc3_private *ip) = NULL;
int i;
- /*
- * We should also use this code for PCI cards, no matter what host
- * machine but how to know that we're a PCI card?
- */
-#ifdef CONFIG_SGI_IP27
- do_get_eaddr = ioc3_get_eaddr_nic;
-#endif
-#if defined(CONFIG_IA64_SGI_SN1) || defined(CONFIG_IA64_SGI_SN2)
- do_get_eaddr = ioc3_get_eaddr_sn;
-#endif
- if (!do_get_eaddr) {
- printk(KERN_ERR "Don't know how to read MAC address of this "
- "IOC3 NIC\n");
- return;
- }
+ ioc3_get_eaddr_nic(ip);
printk("Ethernet address is ");
for (i = 0; i < 6; i++) {
printk("%02x", ip->dev->dev_addr[i]);
- if (i < 7)
+ if (i < 5)
printk(":");
}
printk(".\n");
@@ -588,7 +497,7 @@
ip->stats.rx_frame_errors++;
next:
ip->rx_skbs[n_entry] = new_skb;
- rxr[n_entry] = cpu_to_be32((0xa5UL << 56) |
+ rxr[n_entry] = cpu_to_be64((0xa5UL << 56) |
((unsigned long) rxb & TO_PHYS_MASK));
rxb->w0 = 0; /* Clear valid flag */
n_entry = (n_entry + 1) & 511; /* Update erpir */
@@ -1552,11 +1461,11 @@
#endif
spin_lock_init(&ip->ioc3_lock);
+ init_timer(&ip->ioc3_timer);
ioc3_stop(ip);
ioc3_init(ip);
- init_timer(&ip->ioc3_timer);
ioc3_mii_init(ip);
if (ip->phy == -1) {
@@ -1610,6 +1519,7 @@
struct ioc3_private *ip = dev->priv;
struct ioc3 *ioc3 = ip->regs;
+ unregister_netdev(dev);
iounmap(ioc3);
pci_release_regions(pdev);
kfree(dev);
@@ -1622,10 +1532,10 @@
MODULE_DEVICE_TABLE(pci, ioc3_pci_tbl);
static struct pci_driver ioc3_driver = {
- name: "ioc3-eth",
- id_table: ioc3_pci_tbl,
- probe: ioc3_probe,
- remove: __devexit_p(ioc3_remove_one),
+ .name = "ioc3-eth",
+ .id_table = ioc3_pci_tbl,
+ .probe = ioc3_probe,
+ .remove = __devexit_p(ioc3_remove_one),
};
static int __init ioc3_init_module(void)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)