1 --- linux-2.6.3/drivers/net/wan/tahoe9xx.c.orig Fri Feb 27 11:58:16 2004
2 +++ linux-2.6.3/drivers/net/wan/tahoe9xx.c Fri Feb 27 13:27:08 2004
6 typedef struct port_s {
7 - hdlc_device hdlc; /* HDLC device struct - must be first */
8 + struct net_device *dev;
10 spinlock_t lock; /* TX lock */
11 te1_settings settings;
14 static int t9xx_open(struct net_device *dev)
16 - hdlc_device *hdlc = dev_to_hdlc(dev);
17 - port_t *port = hdlc_to_port(hdlc);
18 + port_t *port = dev_to_port(dev);
21 if (!try_module_get(THIS_MODULE))
22 return -EFAULT; /* rmmod in progress */
24 - result = hdlc_open(hdlc);
25 + result = hdlc_open(dev);
28 module_put(THIS_MODULE);
35 sca_flush(port_to_card(port));
39 static int t9xx_close(struct net_device *dev)
41 - hdlc_device *hdlc = dev_to_hdlc(dev);
45 sca_flush(port_to_card(dev_to_port(dev)));
48 module_put(THIS_MODULE);
53 const size_t size = sizeof(te1_settings);
54 te1_settings new_line, *line = ifr->ifr_settings.ifs_ifsu.te1;
55 - hdlc_device *hdlc = dev_to_hdlc(dev);
56 - port_t *port = hdlc_to_port(hdlc);
57 + port_t *port = dev_to_port(dev);
59 #ifdef CONFIG_HDLC_DEBUG_RINGS
60 if (cmd == SIOCDEVPRIVATE) {
61 - sca_dump_rings(hdlc);
62 + sca_dump_rings(dev);
69 for(i = 0; i < ports; i++)
70 - if (card->ports[i].card)
71 - unregister_hdlc_device(&card->ports[i].hdlc);
72 + if (card->ports[i].card) {
73 + unregister_hdlc_device(card->ports[i].dev);
74 + free_netdev(card->ports[i].dev);
78 free_irq(card->irq, card);
80 p = &card->plxbase->intr_ctrl_stat;
81 writew(readw(p) | 0x0040, p);
83 + for(i = 0; i < card->no_ports; i++) {
84 + card->ports[i].dev = alloc_hdlcdev(card);
85 + if(!card->ports[i].dev) {
86 + printk(KERN_ERR "tahoe9xx: unable to allocate memory\n");
88 + free_netdev(card->ports[0].dev);
95 if(request_irq(pdev->irq, sca_intr, SA_SHIRQ, devname, card)) {
96 printk(KERN_WARNING "%s: could not allocate IRQ%d.\n", card->dev_name,
99 for(i = 0; i < card->no_ports; i++) {
100 port_t *port = &card->ports[i];
101 - struct net_device *dev = hdlc_to_dev(&port->hdlc);
102 + struct net_device *dev = port->dev;
103 + hdlc_device *hdlc = dev_to_hdlc(dev);
106 spin_lock_init(&port->lock);
107 @@ -746,10 +756,10 @@
108 dev->do_ioctl = t9xx_ioctl;
109 dev->open = t9xx_open;
110 dev->stop = t9xx_close;
111 - port->hdlc.attach = sca_attach;
112 - port->hdlc.xmit = sca_xmit;
113 + hdlc->attach = sca_attach;
114 + hdlc->xmit = sca_xmit;
115 port->settings.clock_type = CLOCK_EXT;
116 - if(register_hdlc_device(&port->hdlc)) {
117 + if(register_hdlc_device(dev)) {
118 printk(KERN_ERR "%s: unable to register hdlc "
119 "device\n", card->dev_name);
120 t9xx_pci_remove_one(pdev);
122 sca_init_sync_port(port); /* Set up SCA memory */
124 printk(KERN_INFO "%s: %s node %d\n",
125 - hdlc_to_name(&port->hdlc), card->dev_name, port->phy_node);
126 + dev->name, card->dev_name, port->phy_node);