|
From: Andy P. <at...@us...> - 2002-04-11 14:36:32
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/net/tokenring
In directory usw-pr-cvs1:/tmp/cvs-serv30336/net/tokenring
Modified Files:
Config.in abyss.c ibmtr.c lanstreamer.c lanstreamer.h
madgemc.c olympic.c olympic.h smctr.c smctr.h smctr_firmware.h
tms380tr.c tms380tr.h tmsisa.c tmspci.c
Removed Files:
ibmtr.h
Log Message:
synch 2.4.15 commit 50
Index: Config.in
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/tokenring/Config.in,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -r1.1.1.2 -r1.2
--- Config.in 25 Feb 2001 23:15:00 -0000 1.1.1.2
+++ Config.in 11 Apr 2002 12:37:51 -0000 1.2
@@ -5,21 +5,29 @@
mainmenu_option next_comment
comment 'Token Ring devices'
-bool 'Token Ring driver support' CONFIG_TR
+# So far, we only have PCI, ISA, and MCA token ring devices
+if [ "$CONFIG_PCI" = "y" -o "$CONFIG_ISA" = "y" -o "$CONFIG_MCA" = "y" ]; then
+ bool 'Token Ring driver support' CONFIG_TR
+else
+ define_bool CONFIG_TR n
+fi
+
if [ "$CONFIG_TR" != "n" ]; then
- dep_tristate ' IBM Tropic chipset based adapter support' CONFIG_IBMTR $CONFIG_TR
- dep_tristate ' IBM Olympic chipset PCI adapter support' CONFIG_IBMOL $CONFIG_TR
- dep_tristate ' IBM Lanstreamer chipset PCI adapter support' CONFIG_IBMLS $CONFIG_TR
- dep_tristate ' Generic TMS380 Token Ring ISA/PCI adapter support' CONFIG_TMS380TR $CONFIG_TR
+ if [ "$CONFIG_ISA" = "y" -o "$CONFIG_MCA" = "y" ]; then
+ tristate ' IBM Tropic chipset based adapter support' CONFIG_IBMTR
+ fi
+ dep_tristate ' IBM Olympic chipset PCI adapter support' CONFIG_IBMOL $CONFIG_TR $CONFIG_PCI
+ dep_tristate ' IBM Lanstreamer chipset PCI adapter support' CONFIG_IBMLS $CONFIG_TR $CONFIG_PCI
+ tristate ' Generic TMS380 Token Ring ISA/PCI adapter support' CONFIG_TMS380TR
if [ "$CONFIG_TMS380TR" != "n" ]; then
- dep_tristate ' Generic TMS380 PCI support' CONFIG_TMSPCI $CONFIG_TMS380TR
- dep_tristate ' Generic TMS380 ISA support' CONFIG_TMSISA $CONFIG_TMS380TR
- dep_tristate ' Madge Smart 16/4 PCI Mk2 support' CONFIG_ABYSS $CONFIG_TMS380TR
- if [ "$CONFIG_MCA" = "y" ]; then
- dep_tristate ' Madge Smart 16/4 Ringnode MicroChannel' CONFIG_MADGEMC $CONFIG_TMS380TR
- fi
+ dep_tristate ' Generic TMS380 PCI support' CONFIG_TMSPCI $CONFIG_PCI
+ dep_tristate ' Generic TMS380 ISA support' CONFIG_TMSISA $CONFIG_ISA
+ dep_tristate ' Madge Smart 16/4 PCI Mk2 support' CONFIG_ABYSS $CONFIG_PCI
+ dep_tristate ' Madge Smart 16/4 Ringnode MicroChannel' CONFIG_MADGEMC $CONFIG_MCA
+ fi
+ if [ "$CONFIG_ISA" = "y" -o "$CONFIG_MCA" = "y" ]; then
+ tristate ' SMC ISA/MCA adapter support' CONFIG_SMCTR
fi
- dep_tristate ' SMC ISA/MCA adapter support' CONFIG_SMCTR $CONFIG_TR
fi
endmenu
Index: abyss.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/tokenring/abyss.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -r1.1.1.2 -r1.2
--- abyss.c 25 Feb 2001 23:15:00 -0000 1.1.1.2
+++ abyss.c 11 Apr 2002 12:37:51 -0000 1.2
@@ -53,6 +53,8 @@
};
MODULE_DEVICE_TABLE(pci, abyss_pci_tbl);
+MODULE_LICENSE("GPL");
+
static int abyss_open(struct net_device *dev);
static int abyss_close(struct net_device *dev);
static void abyss_enable(struct net_device *dev);
@@ -137,8 +139,7 @@
*/
dev->base_addr += 0x10;
- ret = tmsdev_init(dev,0,pdev);
- /* XXX: should be the max PCI32 DMA max */
+ ret = tmsdev_init(dev, PCI_MAX_ADDRESS, pdev);
if (ret) {
printk("%s: unable to get memory for dev->priv.\n",
dev->name);
Index: ibmtr.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/tokenring/ibmtr.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -r1.1.1.2 -r1.2
--- ibmtr.c 25 Feb 2001 23:15:00 -0000 1.1.1.2
+++ ibmtr.c 11 Apr 2002 12:37:51 -0000 1.2
@@ -7,10 +7,11 @@
* This device driver should work with Any IBM Token Ring Card that does
* not use DMA.
*
- * I used Donald Becker's (be...@ce...) device driver work
+ * I used Donald Becker's (be...@sc...) device driver work
* as a base for most of my initial work.
*
- * Changes by Peter De Schrijver (Pet...@li...) :
+ * Changes by Peter De Schrijver
+ * (Pet...@li...) :
*
[...3272 lines suppressed...]
+ outb(0,dev_ibmtr[i]->base_addr+ADAPTRESETREL);
}
+ unregister_trdev(dev_ibmtr[i]);
+ free_irq(dev_ibmtr[i]->irq, dev_ibmtr[i]);
+ release_region(dev_ibmtr[i]->base_addr, IBMTR_IO_EXTENT);
+#ifndef PCMCIA
+ {
+ struct tok_info *ti = (struct tok_info *)dev_ibmtr[i]->priv ;
+ iounmap((u32 *)ti->mmio) ;
+ iounmap((u32 *)ti->sram_virt) ;
+ }
+#endif
+ kfree(dev_ibmtr[i]->priv);
+ kfree(dev_ibmtr[i]);
+ dev_ibmtr[i] = NULL;
+ }
}
-#endif /* MODULE */
-#endif
+#endif /* MODULE */
Index: lanstreamer.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/tokenring/lanstreamer.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -r1.1.1.2 -r1.2
--- lanstreamer.c 25 Feb 2001 23:15:00 -0000 1.1.1.2
+++ lanstreamer.c 11 Apr 2002 12:37:51 -0000 1.2
@@ -59,12 +59,10 @@
* 03/03/00 - Merged to kernel, indented -kr -i8 -bri0, fixed some missing
* malloc free checks, reviewed code. <al...@re...>
* 03/13/00 - Added spinlocks for smp
+ * 03/08/01 - Added support for module_init() and module_exit()
*
* To Do:
*
- * 1) Test Network Monitor Mode
- * 2) Add auto reset logic on adapter errors
- * 3) Test with varying options
*
* If Problems do Occur
* Most problems can be rectified by either closing and opening the interface
@@ -123,7 +121,14 @@
* Official releases will only have an a.b.c version number format.
*/
-static char *version = "LanStreamer.c v0.3.1 03/13/99 - Mike Sullivan";
+static char version[] = "LanStreamer.c v0.4.0 03/08/01 - Mike Sullivan";
+
+static struct pci_device_id streamer_pci_tbl[] __initdata = {
+ { PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_TR, PCI_ANY_ID, PCI_ANY_ID,},
+ {} /* terminating entry */
+};
+MODULE_DEVICE_TABLE(pci,streamer_pci_tbl);
+
static char *open_maj_error[] = {
"No error", "Lobe Media Test", "Physical Insertion",
@@ -170,8 +175,7 @@
MODULE_PARM(message_level,
"1-" __MODULE_STRING(STREAMER_MAX_ADAPTERS) "i");
-static int streamer_scan(struct net_device *dev);
-static int streamer_init(struct net_device *dev);
+static int streamer_reset(struct net_device *dev);
static int streamer_open(struct net_device *dev);
static int streamer_xmit(struct sk_buff *skb, struct net_device *dev);
static int streamer_close(struct net_device *dev);
@@ -186,98 +190,190 @@
static void streamer_asb_bh(struct net_device *dev);
#if STREAMER_NETWORK_MONITOR
#ifdef CONFIG_PROC_FS
+static int streamer_proc_info(char *buffer, char **start, off_t offset,
+ int length, int *eof, void *data);
static int sprintf_info(char *buffer, struct net_device *dev);
+struct streamer_private *dev_streamer=NULL;
#endif
#endif
-int __init streamer_probe(struct net_device *dev)
+static int __devinit streamer_init_one(struct pci_dev *pdev,
+ const struct pci_device_id *ent)
{
- int cards_found;
-
- cards_found = streamer_scan(dev);
- return cards_found ? 0 : -ENODEV;
-}
-
-static int __init streamer_scan(struct net_device *dev)
-{
- struct pci_dev *pci_device = NULL;
+ struct net_device *dev=NULL;
struct streamer_private *streamer_priv;
- int card_no = 0;
- if (pci_present())
- {
- while ((pci_device = pci_find_device(PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_TR, pci_device)))
- {
- if (pci_enable_device(pci_device))
- continue;
- pci_set_master(pci_device);
+ __u32 pio_start, pio_end, pio_flags, pio_len;
+ __u32 mmio_start, mmio_end, mmio_flags, mmio_len;
+ int rc=0;
+ static int card_no=-1;
- /* Check to see if io has been allocated, if so, we've already done this card,
- so continue on the card discovery loop */
+#if STREAMER_DEBUG
+ printk("lanstreamer::streamer_init_one, entry pdev %p\n",pdev);
+#endif
- if (check_region(pci_resource_start(pci_device,0), STREAMER_IO_SPACE))
- {
card_no++;
- continue;
- }
-
- streamer_priv = kmalloc(sizeof(struct streamer_private), GFP_KERNEL);
- if(streamer_priv==NULL)
- {
- printk(KERN_ERR "lanstreamer: out of memory.\n");
- break;
- }
- memset(streamer_priv, 0, sizeof(struct streamer_private));
- init_waitqueue_head(&streamer_priv->srb_wait);
- init_waitqueue_head(&streamer_priv->trb_wait);
-#ifndef MODULE
- dev = init_trdev(dev, 0);
- if(dev==NULL)
- {
- kfree(streamer_priv);
+ dev=init_trdev(dev, sizeof(*streamer_priv));
+ if(dev==NULL) {
printk(KERN_ERR "lanstreamer: out of memory.\n");
- break;
+ return -ENOMEM;
}
SET_MODULE_OWNER(dev);
+ streamer_priv=dev->priv;
+
+#if STREAMER_NETWORK_MONITOR
+#ifdef CONFIG_PROC_FS
+ if (!dev_streamer) {
+ create_proc_read_entry("net/streamer_tr",0,0,streamer_proc_info,NULL);
+ }
+ streamer_priv->next=dev_streamer;
+ dev_streamer=streamer_priv;
#endif
- dev->priv = (void *) streamer_priv;
-#if STREAMER_DEBUG
- printk("pci_device: %p, dev:%p, dev->priv: %p\n",
- pci_device, dev, dev->priv);
#endif
- dev->irq = pci_device->irq;
- dev->base_addr = pci_resource_start(pci_device, 0);
- dev->init = &streamer_init;
- streamer_priv->streamer_card_name = (char *)pci_device->resource[0].name;
- streamer_priv->streamer_mmio =
- ioremap(pci_resource_start(pci_device, 1), 256);
-
- if ((pkt_buf_sz[card_no] < 100) || (pkt_buf_sz[card_no] > 18000))
- streamer_priv->pkt_buf_sz = PKT_BUF_SZ;
- else
- streamer_priv->pkt_buf_sz = pkt_buf_sz[card_no];
-
- streamer_priv->streamer_ring_speed = ringspeed[card_no];
- streamer_priv->streamer_message_level = message_level[card_no];
-
- if (streamer_init(dev) == -1) {
- unregister_netdevice(dev);
- kfree(dev->priv);
- return 0;
+
+ if (pci_enable_device(pdev)) {
+ printk(KERN_ERR "lanstreamer: unable to enable pci device\n");
+ rc=-EIO;
+ goto err_out;
+ }
+
+ pci_set_master(pdev);
+
+ pio_start = pci_resource_start(pdev, 0);
+ pio_end = pci_resource_end(pdev, 0);
+ pio_flags = pci_resource_flags(pdev, 0);
+ pio_len = pci_resource_len(pdev, 0);
+
+ mmio_start = pci_resource_start(pdev, 1);
+ mmio_end = pci_resource_end(pdev, 1);
+ mmio_flags = pci_resource_flags(pdev, 1);
+ mmio_len = pci_resource_len(pdev, 1);
+
+#if STREAMER_DEBUG
+ printk("lanstreamer: pio_start %x pio_end %x pio_len %x pio_flags %x\n",
+ pio_start, pio_end, pio_len, pio_flags);
+ printk("lanstreamer: mmio_start %x mmio_end %x mmio_len %x mmio_flags %x\n",
+ mmio_start, mmio_end, mmio_flags, mmio_len);
+#endif
+
+ if (!request_region(pio_start, pio_len, "lanstreamer")) {
+ printk(KERN_ERR "lanstreamer: unable to get pci io addr %x\n",pio_start);
+ rc= -EBUSY;
+ goto err_out;
+ }
+
+ if (!request_mem_region(mmio_start, mmio_len, "lanstreamer")) {
+ printk(KERN_ERR "lanstreamer: unable to get pci mmio addr %x\n",mmio_start);
+ rc= -EBUSY;
+ goto err_out_free_pio;
+ }
+
+ streamer_priv->streamer_mmio=ioremap(mmio_start, mmio_len);
+ if (streamer_priv->streamer_mmio == NULL) {
+ printk(KERN_ERR "lanstreamer: unable to remap MMIO %x\n",mmio_start);
+ rc= -EIO;
+ goto err_out_free_mmio;
}
+ init_waitqueue_head(&streamer_priv->srb_wait);
+ init_waitqueue_head(&streamer_priv->trb_wait);
+
dev->open = &streamer_open;
dev->hard_start_xmit = &streamer_xmit;
dev->change_mtu = &streamer_change_mtu;
-
dev->stop = &streamer_close;
dev->do_ioctl = NULL;
dev->set_multicast_list = &streamer_set_rx_mode;
dev->get_stats = &streamer_get_stats;
dev->set_mac_address = &streamer_set_mac_address;
- return 1;
+ dev->irq = pdev->irq;
+ dev->base_addr=pio_start;
+
+ streamer_priv->streamer_card_name = (char *)pdev->resource[0].name;
+ streamer_priv->pci_dev=pdev;
+
+ if ((pkt_buf_sz[card_no] < 100) || (pkt_buf_sz[card_no] > 18000))
+ streamer_priv->pkt_buf_sz = PKT_BUF_SZ;
+ else
+ streamer_priv->pkt_buf_sz = pkt_buf_sz[card_no];
+
+ streamer_priv->streamer_ring_speed = ringspeed[card_no];
+ streamer_priv->streamer_message_level = message_level[card_no];
+
+ pci_set_drvdata(pdev, dev);
+
+ spin_lock_init(&streamer_priv->streamer_lock);
+
+ printk("%s \n", version);
+ printk("%s: %s. I/O at %hx, MMIO at %p, using irq %d\n",dev->name,
+ streamer_priv->streamer_card_name,
+ (unsigned int) dev->base_addr,
+ streamer_priv->streamer_mmio,
+ dev->irq);
+
+ if (!streamer_reset(dev)) {
+ return 0;
+ }
+
+ iounmap(streamer_priv->streamer_mmio);
+err_out_free_mmio:
+ release_mem_region(mmio_start, mmio_len);
+err_out_free_pio:
+ release_region(pio_start, pio_len);
+err_out:
+ unregister_trdev(dev);
+ kfree(dev);
+#if STREAMER_DEBUG
+ printk("lanstreamer: Exit error %x\n",rc);
+#endif
+ return rc;
+}
+
+static void __devexit streamer_remove_one(struct pci_dev *pdev) {
+ struct net_device *dev=pci_get_drvdata(pdev);
+ struct streamer_private *streamer_priv;
+
+#if STREAMER_DEBUG
+ printk("lanstreamer::streamer_remove_one entry pdev %p\n",pdev);
+#endif
+
+ if (dev == NULL) {
+ printk(KERN_ERR "lanstreamer::streamer_remove_one, ERROR dev is NULL\n");
+ return;
}
+
+ streamer_priv=dev->priv;
+ if (streamer_priv == NULL) {
+ printk(KERN_ERR "lanstreamer::streamer_remove_one, ERROR dev->priv is NULL\n");
+ return;
}
- return 0;
+
+#if STREAMER_NETWORK_MONITOR
+#ifdef CONFIG_PROC_FS
+ {
+ struct streamer_private *slast;
+ struct streamer_private *scurrent;
+ if (streamer_priv == dev_streamer) {
+ dev_streamer=dev_streamer->next;
+ } else {
+ for(slast=scurrent=dev_streamer; dev_streamer; slast=scurrent, scurrent=scurrent->next) {
+ if (scurrent == streamer_priv) {
+ slast->next=scurrent->next;
+ break;
+ }
+ }
+ }
+ if (!dev_streamer) {
+ remove_proc_entry("net/streamer_tr", NULL);
+ }
+ }
+#endif
+#endif
+
+ unregister_trdev(dev);
+ release_region(pci_resource_start(pdev, 0), pci_resource_len(pdev,0));
+ release_mem_region(pci_resource_start(pdev, 1), pci_resource_len(pdev,1));
+ kfree(dev);
+ pci_set_drvdata(pdev, NULL);
}
@@ -424,32 +520,6 @@
return 0;
}
-static int __init streamer_init(struct net_device *dev)
-{
- struct streamer_private *streamer_priv;
- __u8 *streamer_mmio;
- int rc;
-
- streamer_priv=(struct streamer_private *)dev->priv;
- streamer_mmio=streamer_priv->streamer_mmio;
-
- spin_lock_init(&streamer_priv->streamer_lock);
-
- printk("%s \n", version);
- printk("%s: %s. I/O at %hx, MMIO at %p, using irq %d\n",dev->name,
- streamer_priv->streamer_card_name,
- (unsigned int) dev->base_addr,
- streamer_priv->streamer_mmio,
- dev->irq);
-
- request_region(dev->base_addr, STREAMER_IO_SPACE, "streamer");
-
- rc=streamer_reset(dev);
- return rc;
-}
-
-
-
static int streamer_open(struct net_device *dev)
{
struct streamer_private *streamer_priv = (struct streamer_private *) dev->priv;
@@ -465,7 +535,7 @@
rc=streamer_reset(dev);
}
- if (request_irq(dev->irq, &streamer_interrupt, SA_SHIRQ, "streamer", dev)) {
+ if (request_irq(dev->irq, &streamer_interrupt, SA_SHIRQ, "lanstreamer", dev)) {
return -EAGAIN;
}
#if STREAMER_DEBUG
@@ -563,7 +633,7 @@
* timed out.
*/
writew(srb_open + 2, streamer_mmio + LAPA);
- srb_word = ntohs(readw(streamer_mmio + LAPD)) & 0xFF;
+ srb_word = ntohs(readw(streamer_mmio + LAPD)) >> 8;
if (srb_word == STREAMER_CLEAR_RET_CODE) {
printk(KERN_WARNING "%s: Adapter Open time out or error.\n",
dev->name);
@@ -1618,27 +1688,24 @@
static int streamer_proc_info(char *buffer, char **start, off_t offset,
int length, int *eof, void *data)
{
+ struct streamer_private *sdev=NULL;
struct pci_dev *pci_device = NULL;
int len = 0;
off_t begin = 0;
off_t pos = 0;
int size;
- struct device *dev;
-
+ struct net_device *dev;
size = sprintf(buffer, "IBM LanStreamer/MPC Chipset Token Ring Adapters\n");
pos += size;
len += size;
- while ((pci_device = pci_find_device(PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_TR, pci_device)))
- {
+ for(sdev=dev_streamer; sdev; sdev=sdev->next) {
+ pci_device=sdev->pci_dev;
+ dev=pci_get_drvdata(pci_device);
- for (dev = dev_base; dev != NULL; dev = dev->next)
- {
- if (dev->base_addr == pci_device->resource[0].start)
- { /* Yep, a Streamer device */
size = sprintf_info(buffer + len, dev);
len += size;
pos = begin + len;
@@ -1649,9 +1716,7 @@
}
if (pos > offset + length)
break;
- } /* if */
} /* for */
- } /* While */
*start = buffer + (offset - begin); /* Start of wanted data */
len -= (offset - begin); /* Start slop */
@@ -1743,66 +1808,21 @@
#endif
#endif
-#ifdef MODULE
-
-static struct net_device *dev_streamer[STREAMER_MAX_ADAPTERS];
-
-int init_module(void)
-{
- int i;
-
-#if STREAMER_NETWORK_MONITOR
-#ifdef CONFIG_PROC_FS
- create_proc_read_entry("net/streamer_tr",0,0,streamer_proc_info,NULL);
-#endif
-#endif
- for (i = 0; (i < STREAMER_MAX_ADAPTERS); i++)
- {
- dev_streamer[i] = NULL;
- dev_streamer[i] = init_trdev(dev_streamer[i], 0);
- SET_MODULE_OWNER(dev_streamer[i]);
- if (dev_streamer[i] == NULL)
- return -ENOMEM;
-
- dev_streamer[i]->init = &streamer_probe;
-
- if (register_trdev(dev_streamer[i]) != 0) {
- kfree(dev_streamer[i]);
- dev_streamer[i] = NULL;
- if (i == 0)
- {
- printk(KERN_INFO "Streamer: No IBM LanStreamer PCI Token Ring cards found in system.\n");
- return -EIO;
- } else {
- printk(KERN_INFO "Streamer: %d IBM LanStreamer PCI Token Ring card(s) found in system.\n", i);
- return 0;
- }
- }
- }
+static struct pci_driver streamer_pci_driver = {
+ name: "lanstreamer",
+ id_table: streamer_pci_tbl,
+ probe: streamer_init_one,
+ remove: streamer_remove_one,
+};
- return 0;
+static int __init streamer_init_module(void) {
+ return pci_module_init(&streamer_pci_driver);
}
-void cleanup_module(void)
-{
- int i;
- struct streamer_private *streamer_priv;
-
- for (i = 0; i < STREAMER_MAX_ADAPTERS; i++)
- if (dev_streamer[i]) {
- unregister_trdev(dev_streamer[i]);
- release_region(dev_streamer[i]->base_addr, STREAMER_IO_SPACE);
- streamer_priv=(struct streamer_private *)dev_streamer[i]->priv;
- kfree(streamer_priv->streamer_rx_ring);
- kfree(streamer_priv->streamer_tx_ring);
- kfree(dev_streamer[i]->priv);
- kfree(dev_streamer[i]);
- dev_streamer[i] = NULL;
- }
-#if STREAMER_NETWORK_MONITOR
-#ifdef CONFIG_PROC_FS
- remove_proc_entry("net/streamer_tr", NULL);
-#endif
-#endif
+static void __exit streamer_cleanup_module(void) {
+ pci_unregister_driver(&streamer_pci_driver);
}
-#endif /* MODULE */
+
+module_init(streamer_init_module);
+module_exit(streamer_cleanup_module);
+MODULE_LICENSE("GPL");
Index: lanstreamer.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/tokenring/lanstreamer.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- lanstreamer.h 14 Jan 2001 17:38:43 -0000 1.1.1.1
+++ lanstreamer.h 11 Apr 2002 12:37:51 -0000 1.2
@@ -257,6 +257,8 @@
__u16 arb;
__u16 asb;
+ struct streamer_private *next;
+ struct pci_dev *pci_dev;
__u8 *streamer_mmio;
char *streamer_card_name;
Index: madgemc.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/tokenring/madgemc.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -r1.1.1.2 -r1.2
--- madgemc.c 25 Feb 2001 23:15:00 -0000 1.1.1.2
+++ madgemc.c 11 Apr 2002 12:37:51 -0000 1.2
@@ -17,7 +17,7 @@
* 16-Jan-00 AF Created
*
*/
-static const char *version = "madgemc.c: v0.91 23/01/2000 by Adam Fritzler\n";
+static const char version[] = "madgemc.c: v0.91 23/01/2000 by Adam Fritzler\n";
#include <linux/module.h>
#include <linux/mca.h>
@@ -61,7 +61,7 @@
struct madgemc_card *next;
};
-static struct madgemc_card *madgemc_card_list = NULL;
+static struct madgemc_card *madgemc_card_list;
int madgemc_probe(void);
@@ -155,7 +155,7 @@
int __init madgemc_probe(void)
{
- static int versionprinted = 0;
+ static int versionprinted;
struct net_device *dev;
struct net_local *tp;
struct madgemc_card *card;
@@ -349,6 +349,7 @@
printk(":%2.2x", dev->dev_addr[i]);
printk("\n");
+ /* XXX is ISA_MAX_ADDRESS correct here? */
if (tmsdev_init(dev, ISA_MAX_ADDRESS, NULL)) {
printk("%s: unable to get memory for dev->priv.\n",
dev->name);
@@ -525,7 +526,7 @@
*/
static void madgemc_setregpage(struct net_device *dev, int page)
{
- static int reg1 = 0;
+ static int reg1;
reg1 = inb(dev->base_addr + MC_CONTROL_REG1);
if ((page == 0) && (reg1 & MC_CONTROL_REG1_SRSX)) {
@@ -792,6 +793,8 @@
}
#endif /* MODULE */
+MODULE_LICENSE("GPL");
+
/*
* Local variables:
@@ -803,3 +806,4 @@
* tab-width: 8
* End:
*/
+
Index: olympic.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/tokenring/olympic.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -r1.1.1.2 -r1.2
--- olympic.c 25 Feb 2001 23:15:00 -0000 1.1.1.2
+++ olympic.c 11 Apr 2002 12:37:51 -0000 1.2
@@ -1,6 +1,6 @@
/*
* olympic.c (c) 1999 Peter De Schrijver All Rights Reserved
- * 1999 Mike Phillips (ph...@am...)
+ * 1999/2000 Mike Phillips (mi...@li...)
*
* Linux driver for IBM PCI tokenring cards based on the Pit/Pit-Phy/Olympic
* chipset.
@@ -39,9 +39,23 @@
* because they weren't going through read[wl](), there all
* the results had to be in memory in le32 values. kdaaker
*
[...1191 lines suppressed...]
- if (dev_olympic[i]) {
- unregister_trdev(dev_olympic[i]);
- release_region(dev_olympic[i]->base_addr, OLYMPIC_IO_SPACE);
- kfree(dev_olympic[i]->priv);
- kfree(dev_olympic[i]);
- dev_olympic[i] = NULL;
- }
-
-#if OLYMPIC_NETWORK_MONITOR
-#ifdef CONFIG_PROC_FS
- remove_proc_entry("net/olympic_tr", NULL) ;
-#endif
-#endif
-}
-#endif /* MODULE */
+module_init(olympic_pci_init) ;
+module_exit(olympic_pci_cleanup) ;
+
+MODULE_LICENSE("GPL");
Index: olympic.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/tokenring/olympic.h,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -r1.1.1.2 -r1.2
--- olympic.h 25 Feb 2001 23:15:00 -0000 1.1.1.2
+++ olympic.h 11 Apr 2002 12:37:51 -0000 1.2
@@ -1,6 +1,6 @@
/*
* olympic.h (c) 1999 Peter De Schrijver All Rights Reserved
- * 1999 Mike Phillips (ph...@am...)
+ * 1999,2000 Mike Phillips (mi...@li...)
*
* Linux driver for IBM PCI tokenring cards based on the olympic and the PIT/PHY chipset.
*
@@ -19,6 +19,7 @@
#define BCTL 0x70
#define BCTL_SOFTRESET (1<<15)
#define BCTL_MIMREB (1<<6)
+#define BCTL_MODE_INDICATOR (1<<5)
#define GPR 0x4a
#define GPR_OPTI_BF (1<<6)
@@ -124,6 +125,9 @@
#define TXSTATQCNT_2 0xe4
#define TXCSA_1 0xc8
#define TXCSA_2 0xe8
+/* Cardbus */
+#define FERMASK 0xf4
+#define FERMASK_INT_BIT (1<<15)
#define OLYMPIC_IO_SPACE 256
@@ -210,43 +214,44 @@
/* xxxx These structures are all little endian in hardware. */
struct olympic_tx_desc {
- __u32 buffer;
- __u32 status_length;
+ u32 buffer;
+ u32 status_length;
};
struct olympic_tx_status {
- __u32 status;
+ u32 status;
};
struct olympic_rx_desc {
- __u32 buffer;
- __u32 res_length;
+ u32 buffer;
+ u32 res_length;
};
struct olympic_rx_status {
- __u32 fragmentcnt_framelen;
- __u32 status_buffercnt;
+ u32 fragmentcnt_framelen;
+ u32 status_buffercnt;
};
/* xxxx END These structures are all little endian in hardware. */
/* xxxx There may be more, but I'm pretty sure about these */
struct mac_receive_buffer {
- __u16 next ;
- __u8 padding ;
- __u8 frame_status ;
- __u16 buffer_length ;
- __u8 frame_data ;
+ u16 next ;
+ u8 padding ;
+ u8 frame_status ;
+ u16 buffer_length ;
+ u8 frame_data ;
};
struct olympic_private {
- __u16 srb; /* be16 */
- __u16 trb; /* be16 */
- __u16 arb; /* be16 */
- __u16 asb; /* be16 */
-
- __u8 *olympic_mmio;
- __u8 *olympic_lap;
+ u16 srb; /* be16 */
+ u16 trb; /* be16 */
+ u16 arb; /* be16 */
+ u16 asb; /* be16 */
+
+ u8 *olympic_mmio;
+ u8 *olympic_lap;
+ struct pci_dev *pdev ;
char *olympic_card_name ;
spinlock_t olympic_lock ;
@@ -259,51 +264,57 @@
volatile int trb_queued; /* True if a TRB is posted */
wait_queue_head_t trb_wait ;
+ /* These must be on a 4 byte boundary. */
struct olympic_rx_desc olympic_rx_ring[OLYMPIC_RX_RING_SIZE];
struct olympic_tx_desc olympic_tx_ring[OLYMPIC_TX_RING_SIZE];
struct olympic_rx_status olympic_rx_status_ring[OLYMPIC_RX_RING_SIZE];
struct olympic_tx_status olympic_tx_status_ring[OLYMPIC_TX_RING_SIZE];
+
struct sk_buff *tx_ring_skb[OLYMPIC_TX_RING_SIZE], *rx_ring_skb[OLYMPIC_RX_RING_SIZE];
int tx_ring_free, tx_ring_last_status, rx_ring_last_received,rx_status_last_received, free_tx_ring_entries;
struct net_device_stats olympic_stats ;
- __u16 olympic_lan_status ;
- __u8 olympic_ring_speed ;
- __u16 pkt_buf_sz ;
- __u8 olympic_receive_options, olympic_copy_all_options, olympic_message_level;
- __u16 olympic_addr_table_addr, olympic_parms_addr ;
- __u8 olympic_laa[6] ;
+ u16 olympic_lan_status ;
+ u8 olympic_ring_speed ;
+ u16 pkt_buf_sz ;
+ u8 olympic_receive_options, olympic_copy_all_options,olympic_message_level, olympic_network_monitor;
+ u16 olympic_addr_table_addr, olympic_parms_addr ;
+ u8 olympic_laa[6] ;
+ u32 rx_ring_dma_addr;
+ u32 rx_status_ring_dma_addr;
+ u32 tx_ring_dma_addr;
+ u32 tx_status_ring_dma_addr;
};
struct olympic_adapter_addr_table {
- __u8 node_addr[6] ;
- __u8 reserved[4] ;
- __u8 func_addr[4] ;
+ u8 node_addr[6] ;
+ u8 reserved[4] ;
+ u8 func_addr[4] ;
} ;
struct olympic_parameters_table {
- __u8 phys_addr[4] ;
- __u8 up_node_addr[6] ;
- __u8 up_phys_addr[4] ;
- __u8 poll_addr[6] ;
- __u16 reserved ;
- __u16 acc_priority ;
- __u16 auth_source_class ;
- __u16 att_code ;
- __u8 source_addr[6] ;
- __u16 beacon_type ;
- __u16 major_vector ;
- __u16 lan_status ;
- __u16 soft_error_time ;
- __u16 reserved1 ;
- __u16 local_ring ;
- __u16 mon_error ;
- __u16 beacon_transmit ;
- __u16 beacon_receive ;
- __u16 frame_correl ;
- __u8 beacon_naun[6] ;
- __u32 reserved2 ;
- __u8 beacon_phys[4] ;
+ u8 phys_addr[4] ;
+ u8 up_node_addr[6] ;
+ u8 up_phys_addr[4] ;
+ u8 poll_addr[6] ;
+ u16 reserved ;
+ u16 acc_priority ;
+ u16 auth_source_class ;
+ u16 att_code ;
+ u8 source_addr[6] ;
+ u16 beacon_type ;
+ u16 major_vector ;
+ u16 lan_status ;
+ u16 soft_error_time ;
+ u16 reserved1 ;
+ u16 local_ring ;
+ u16 mon_error ;
+ u16 beacon_transmit ;
+ u16 beacon_receive ;
+ u16 frame_correl ;
+ u8 beacon_naun[6] ;
+ u32 reserved2 ;
+ u8 beacon_phys[4] ;
};
Index: smctr.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/tokenring/smctr.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -r1.1.1.2 -r1.2
--- smctr.c 25 Feb 2001 23:15:00 -0000 1.1.1.2
+++ smctr.c 11 Apr 2002 12:37:51 -0000 1.2
@@ -1,7 +1,7 @@
/*
* smctr.c: A network driver for the SMC Token Ring Adapters.
*
- * Written by Jay Schulist <js...@tu...>
+ * Written by Jay Schulist <js...@sa...>
*
* This software may be used and distributed according to the terms
* of the GNU General Public License, incorporated herein by reference.
@@ -14,7 +14,7 @@
* - SMC TokenCard SDK.
*
* Maintainer(s):
- * JS Jay Schulist <js...@tu...>
+ * JS Jay Schulist <js...@sa...>
*
* Changes:
* 07102000 JS Fixed a timing problem in smctr_wait_cmd();
@@ -59,11 +59,15 @@
#include <linux/skbuff.h>
#include <linux/trdevice.h>
+#if BITS_PER_LONG == 64
+#error FIXME: driver does not support 64-bit platforms
+#endif
+
#include "smctr.h" /* Our Stuff */
#include "smctr_firmware.h" /* SMC adapter firmware */
-static char version[] __initdata = KERN_INFO "smctr.c: v1.4 7/12/00 by js...@tu...\n";
-static const char *cardname = "smctr";
+static char version[] __initdata = KERN_INFO "smctr.c: v1.4 7/12/00 by js...@sa...\n";
+static const char cardname[] = "smctr";
#define SMCTR_IO_EXTENT 20
@@ -82,7 +86,7 @@
static int ringspeed;
/* SMC Name of the Adapter. */
-static char *smctr_name = "SMC TokenCard";
+static char smctr_name[] = "SMC TokenCard";
char *smctr_model = "Unknown";
/* Use 0 for production, 1 for verification, 2 for debug, and
@@ -4383,7 +4387,7 @@
smctr_clear_trc_reset(ioaddr);
mdelay(200); /* ~2 ms */
- /* Remove any latched interrupts that occured prior to reseting the
+ /* Remove any latched interrupts that occurred prior to reseting the
* adapter or possibily caused by line glitches due to the reset.
*/
outb(tp->trc_mask | CSR_CLRTINT | CSR_CLRCBUSY, ioaddr + CSR);
@@ -4546,20 +4550,24 @@
struct sk_buff *skb;
skb = dev_alloc_skb(rx_size);
- skb_put(skb, rx_size);
+ if (skb) {
+ skb_put(skb, rx_size);
- memcpy(skb->data, pbuff, rx_size);
- sti();
+ memcpy(skb->data, pbuff, rx_size);
+ sti();
- /* Update Counters */
- tp->MacStat.rx_packets++;
- tp->MacStat.rx_bytes += skb->len;
-
- /* Kick the packet on up. */
- skb->dev = dev;
- skb->protocol = tr_type_trans(skb, dev);
- netif_rx(skb);
- dev->last_rx = jiffies;
+ /* Update Counters */
+ tp->MacStat.rx_packets++;
+ tp->MacStat.rx_bytes += skb->len;
+
+ /* Kick the packet on up. */
+ skb->dev = dev;
+ skb->protocol = tr_type_trans(skb, dev);
+ netif_rx(skb);
+ dev->last_rx = jiffies;
+ } else {
+ sti();
+ }
}
else
smctr_process_rx_packet((MAC_HEADER *)pbuff,
@@ -5265,7 +5273,7 @@
return (POSITIVE_ACK);
}
-/* Reset the ring speed to the oposite of what it was. This auto-pilot
+/* Reset the ring speed to the opposite of what it was. This auto-pilot
* mode requires a complete reset and re-init of the adapter.
*/
static int smctr_set_ring_speed(struct net_device *dev)
@@ -5724,6 +5732,8 @@
static int io[SMCTR_MAX_ADAPTERS];
static int irq[SMCTR_MAX_ADAPTERS];
static int mem[SMCTR_MAX_ADAPTERS];
+
+MODULE_LICENSE("GPL");
MODULE_PARM(io, "1-" __MODULE_STRING(SMCTR_MAX_ADAPTERS) "i");
MODULE_PARM(irq, "1-" __MODULE_STRING(SMCTR_MAX_ADAPTERS) "i");
Index: smctr.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/tokenring/smctr.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- smctr.h 14 Jan 2001 17:38:21 -0000 1.1.1.1
+++ smctr.h 11 Apr 2002 12:37:51 -0000 1.2
@@ -1,7 +1,7 @@
/* smctr.h: SMC Token Ring driver header for Linux
*
* Authors:
- * - Jay Schulist <js...@tu...>
+ * - Jay Schulist <js...@sa...>
*/
#ifndef __LINUX_SMCTR_H
Index: smctr_firmware.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/tokenring/smctr_firmware.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- smctr_firmware.h 14 Jan 2001 17:38:28 -0000 1.1.1.1
+++ smctr_firmware.h 11 Apr 2002 12:37:51 -0000 1.2
@@ -14,7 +14,7 @@
* - This is an 8K binary image. (MCT.BIN v6.3C1 03/01/95)
*
* Authors:
- * - Jay Schulist <js...@tu...>
+ * - Jay Schulist <js...@sa...>
*/
#include <linux/config.h>
Index: tms380tr.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/tokenring/tms380tr.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -r1.1.1.2 -r1.2
--- tms380tr.c 25 Feb 2001 23:15:00 -0000 1.1.1.2
+++ tms380tr.c 11 Apr 2002 12:37:51 -0000 1.2
@@ -28,7 +28,7 @@
* - Various Madge employees
*
* Maintainer(s):
- * JS Jay Schulist js...@tu...
+ * JS Jay Schulist js...@sa...
* CG Christoph Goos cg...@sy...
* AF Adam Fritzler mi...@au...
* MLP Mike Phillips ph...@am...
@@ -68,13 +68,11 @@
*/
#ifdef MODULE
-static const char *version = "tms380tr.c: v1.08 14/01/2001 by Christoph Goos, Adam Fritzler\n";
+static const char version[] = "tms380tr.c: v1.08 14/01/2001 by Christoph Goos, Adam Fritzler\n";
#endif
-#ifdef MODULE
#include <linux/module.h>
#include <linux/version.h>
-#endif
#include <linux/kernel.h>
#include <linux/sched.h>
@@ -2192,17 +2190,18 @@
}
}
- if(rpl->SkbStat == SKB_DATA_COPY
- || rpl->SkbStat == SKB_DMA_DIRECT)
+ if(skb && (rpl->SkbStat == SKB_DATA_COPY
+ || rpl->SkbStat == SKB_DMA_DIRECT))
{
if(rpl->SkbStat == SKB_DATA_COPY)
- memmove(skb->data, ReceiveDataPtr, Length);
+ memcpy(skb->data, ReceiveDataPtr, Length);
/* Deliver frame to system */
rpl->Skb = NULL;
skb_trim(skb,Length);
skb->protocol = tr_type_trans(skb,dev);
netif_rx(skb);
+ dev->last_rx = jiffies;
}
}
else /* Invalid frame */
@@ -2415,6 +2414,8 @@
TMS380_module = NULL;
}
#endif
+
+MODULE_LICENSE("GPL");
/*
Index: tms380tr.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/tokenring/tms380tr.h,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -r1.1.1.2 -r1.2
--- tms380tr.h 25 Feb 2001 23:15:00 -0000 1.1.1.2
+++ tms380tr.h 11 Apr 2002 12:37:51 -0000 1.2
@@ -395,7 +395,7 @@
/* OPEN Options (high-low) */
#define WRAP_INTERFACE 0x0080 /* Inserting omitted for test
* purposes; transmit data appears
- * as receive data. (usefull for
+ * as receive data. (useful for
* testing; change: CLOSE necessary)
*/
#define DISABLE_HARD_ERROR 0x0040 /* On HARD_ERROR & TRANSMIT_BEACON
@@ -461,7 +461,9 @@
* fragments following.
*/
+/* XXX is there some better way to do this? */
#define ISA_MAX_ADDRESS 0x00ffffff
+#define PCI_MAX_ADDRESS 0xffffffff
#pragma pack(1)
typedef struct {
Index: tmsisa.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/tokenring/tmsisa.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- tmsisa.c 25 Feb 2001 23:15:00 -0000 1.1.1.1
+++ tmsisa.c 11 Apr 2002 12:37:51 -0000 1.2
@@ -7,7 +7,7 @@
* Dedicated to my girlfriend Steffi Bopp
*
* This software may be used and distributed according to the terms
- * of the GNU Public License, incorporated herein by reference.
+ * of the GNU General Public License, incorporated herein by reference.
*
* This driver module supports the following cards:
* - SysKonnect TR4/16(+) ISA (SK-4190)
@@ -19,7 +19,7 @@
* TODO:
* 1. Add support for Proteon TR ISA adapters (1392, 1392+)
*/
-static const char *version = "tmsisa.c: v1.00 14/01/2001 by Jochen Friedrich\n";
+static const char version[] = "tmsisa.c: v1.00 14/01/2001 by Jochen Friedrich\n";
#include <linux/module.h>
#include <linux/kernel.h>
@@ -60,7 +60,7 @@
0
};
-static char *isa_cardname = "SK NET TR 4/16 ISA\0";
+static char isa_cardname[] = "SK NET TR 4/16 ISA\0";
int tms_isa_probe(struct net_device *dev);
static int tms_isa_open(struct net_device *dev);
@@ -93,7 +93,7 @@
struct tms_isa_card *next;
};
-static struct tms_isa_card *tms_isa_card_list = NULL;
+static struct tms_isa_card *tms_isa_card_list;
static int __init tms_isa_probe1(int ioaddr)
{
@@ -129,7 +129,7 @@
int __init tms_isa_probe(struct net_device *dev)
{
- static int versionprinted = 0;
+ static int versionprinted;
struct net_local *tp;
int j;
struct tms_isa_card *card;
@@ -271,6 +271,14 @@
{
/* Enlist in the card list */
card = kmalloc(sizeof(struct tms_isa_card), GFP_KERNEL);
+ if (!card) {
+ unregister_trdev(dev);
+ release_region(dev->base_addr, TMS_ISA_IO_EXTENT);
+ free_irq(dev->irq, dev);
+ free_dma(dev->dma);
+ tmsdev_term(dev);
+ return -1;
+ }
card->next = tms_isa_card_list;
tms_isa_card_list = card;
card->dev = dev;
@@ -363,6 +371,8 @@
static int io[ISATR_MAX_ADAPTERS];
static int irq[ISATR_MAX_ADAPTERS];
static int dma[ISATR_MAX_ADAPTERS];
+
+MODULE_LICENSE("GPL");
MODULE_PARM(io, "1-" __MODULE_STRING(ISATR_MAX_ADAPTERS) "i");
MODULE_PARM(irq, "1-" __MODULE_STRING(ISATR_MAX_ADAPTERS) "i");
Index: tmspci.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/tokenring/tmspci.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -r1.1.1.2 -r1.2
--- tmspci.c 25 Feb 2001 23:15:00 -0000 1.1.1.2
+++ tmspci.c 11 Apr 2002 12:37:51 -0000 1.2
@@ -67,6 +67,8 @@
};
MODULE_DEVICE_TABLE(pci, tmspci_pci_tbl);
+MODULE_LICENSE("GPL");
+
static void tms_pci_read_eeprom(struct net_device *dev);
static unsigned short tms_pci_setnselout_pins(struct net_device *dev);
@@ -142,8 +144,7 @@
printk(":%2.2x", dev->dev_addr[i]);
printk("\n");
- ret = tmsdev_init(dev,0, pdev);
- /* XXX: should be the max PCI32 DMA max */
+ ret = tmsdev_init(dev, PCI_MAX_ADDRESS, pdev);
if (ret) {
printk("%s: unable to get memory for dev->priv.\n", dev->name);
goto err_out_irq;
@@ -165,7 +166,7 @@
dev->stop = tms380tr_close;
ret = register_trdev(dev);
- if (!ret)
+ if (ret)
goto err_out_tmsdev;
pci_set_drvdata(pdev, dev);
--- ibmtr.h DELETED ---
|