From 50a6ce64867fcc2f32c01cd8c81d9251928a0422 Mon Sep 17 00:00:00 2001 From: neil Date: Wed, 24 Oct 2012 19:59:42 +0000 Subject: [PATCH] Here's an idea: don't add interrupt handlers when they've already been added. Likewise for removal. git-svn-id: https://svn.aros.org/svn/aros/trunk/AROS@45948 fb15a70f-31f2-0310-bbcc-cdcc74a49acc --- workbench/devs/networks/nForce/handler.c | 3 ++- workbench/devs/networks/nForce/nforce.c | 17 +++++++++++++---- workbench/devs/networks/nForce/nforce.conf | 2 +- workbench/devs/networks/nForce/nforce.h | 1 + workbench/devs/networks/pcnet32/handler.c | 3 ++- workbench/devs/networks/pcnet32/pcnet32.c | 17 +++++++++++++---- workbench/devs/networks/pcnet32/pcnet32.conf | 2 +- workbench/devs/networks/pcnet32/pcnet32.h | 1 + workbench/devs/networks/rtl8139/handler.c | 3 ++- workbench/devs/networks/rtl8139/rtl8139.c | 22 ++++++++++++++++------ workbench/devs/networks/rtl8139/rtl8139.conf | 2 +- workbench/devs/networks/rtl8139/rtl8139.h | 1 + workbench/devs/networks/rtl8168/handler.c | 3 ++- workbench/devs/networks/rtl8168/rtl8168.c | 18 ++++++++++++++---- workbench/devs/networks/rtl8168/rtl8168.conf | 2 +- workbench/devs/networks/rtl8168/rtl8168.h | 1 + workbench/devs/networks/rtl8169/rtl8169.c | 19 +++++++++++++++---- workbench/devs/networks/rtl8169/rtl8169.conf | 2 +- workbench/devs/networks/rtl8169/rtl8169.h | 1 + workbench/devs/networks/sis900/handler.c | 3 ++- workbench/devs/networks/sis900/sis900.c | 21 ++++++++++++++++----- workbench/devs/networks/sis900/sis900.conf | 2 +- workbench/devs/networks/sis900/sis900.h | 1 + workbench/devs/networks/via-rhine/handler.c | 3 ++- workbench/devs/networks/via-rhine/via-rhine.c | 16 ++++++++++++---- workbench/devs/networks/via-rhine/via-rhine.h | 1 + workbench/devs/networks/via-rhine/viarhine.conf | 2 +- 27 files changed, 125 insertions(+), 44 deletions(-) diff --git a/workbench/devs/networks/nForce/handler.c b/workbench/devs/networks/nForce/handler.c index 5b1d0a3347..267d0a0d18 100644 --- a/workbench/devs/networks/nForce/handler.c +++ b/workbench/devs/networks/nForce/handler.c @@ -646,7 +646,8 @@ static BOOL CmdOnline(LIBBASETYPEPTR LIBBASE, struct IOSana2Req *request) for(i = 0; i < STAT_COUNT; i++) unit->special_stats[i] = 0; - if (unit->start(unit)) { + if (unit->start(unit)) + { error = S2ERR_OUTOFSERVICE; wire_error = S2WERR_GENERIC_ERROR; } diff --git a/workbench/devs/networks/nForce/nforce.c b/workbench/devs/networks/nForce/nforce.c index bef0dac863..31b6d85009 100644 --- a/workbench/devs/networks/nForce/nforce.c +++ b/workbench/devs/networks/nForce/nforce.c @@ -713,15 +713,24 @@ static void drain_ring(struct net_device *dev) static int request_irq(struct net_device *dev) { - AddIntServer(INTB_KERNEL + dev->nu_IRQ, &dev->nu_irqhandler); - AddIntServer(INTB_VERTB, &dev->nu_touthandler); + if (!dev->nu_IntsAdded) + { + AddIntServer(INTB_KERNEL + dev->nu_IRQ, &dev->nu_irqhandler); + AddIntServer(INTB_VERTB, &dev->nu_touthandler); + dev->nu_IntsAdded = TRUE; + } + return 0; } static void free_irq(struct net_device *dev) { - RemIntServer(INTB_KERNEL + dev->nu_IRQ, &dev->nu_irqhandler); - RemIntServer(INTB_VERTB, &dev->nu_touthandler); + if (dev->nu_IntsAdded) + { + RemIntServer(INTB_KERNEL + dev->nu_IRQ, &dev->nu_irqhandler); + RemIntServer(INTB_VERTB, &dev->nu_touthandler); + dev->nu_IntsAdded = FALSE; + } } static void nv_set_mac(struct net_device *dev) diff --git a/workbench/devs/networks/nForce/nforce.conf b/workbench/devs/networks/nForce/nforce.conf index 5068291704..bcfc353386 100644 --- a/workbench/devs/networks/nForce/nforce.conf +++ b/workbench/devs/networks/nForce/nforce.conf @@ -1,5 +1,5 @@ ##begin config -version 1.0 +version 1.1 libbasetype struct NFBase residentpri -60 beginio_func beginio diff --git a/workbench/devs/networks/nForce/nforce.h b/workbench/devs/networks/nForce/nforce.h index c2e1c6d2e3..d0ce1fbb8d 100644 --- a/workbench/devs/networks/nForce/nforce.h +++ b/workbench/devs/networks/nForce/nforce.h @@ -126,6 +126,7 @@ struct NFUnit { struct timeval nu_toutPOLL; BOOL nu_toutNEED; + BOOL nu_IntsAdded; struct MsgPort *nu_TimerSlowPort; struct timerequest *nu_TimerSlowReq; diff --git a/workbench/devs/networks/pcnet32/handler.c b/workbench/devs/networks/pcnet32/handler.c index ec9b871675..7cb2d87c61 100644 --- a/workbench/devs/networks/pcnet32/handler.c +++ b/workbench/devs/networks/pcnet32/handler.c @@ -670,7 +670,8 @@ D(bug("%s: S2CmdOnline()\n", unit->pcnu_name)); for(i = 0; i < STAT_COUNT; i++) unit->pcnu_special_stats[i] = 0; - if (unit->start(unit)) { + if (unit->start(unit)) + { error = S2ERR_OUTOFSERVICE; wire_error = S2WERR_GENERIC_ERROR; } diff --git a/workbench/devs/networks/pcnet32/pcnet32.c b/workbench/devs/networks/pcnet32/pcnet32.c index a2f3ecacd7..440f19ddfb 100644 --- a/workbench/devs/networks/pcnet32/pcnet32.c +++ b/workbench/devs/networks/pcnet32/pcnet32.c @@ -261,15 +261,24 @@ static int request_irq(struct net_device *dev) { D(bug("%s: request_irq()\n", dev->pcnu_name)); - AddIntServer(INTB_KERNEL | dev->pcnu_IRQ, &dev->pcnu_irqhandler); - AddIntServer(INTB_VERTB, &dev->pcnu_touthandler); + if (!dev->pcnu_IntsAdded) + { + AddIntServer(INTB_KERNEL + dev->pcnu_IRQ, &dev->pcnu_irqhandler); + AddIntServer(INTB_VERTB, &dev->pcnu_touthandler); + dev->pcnu_IntsAdded = TRUE; + } + return 1; } static void free_irq(struct net_device *dev) { - RemIntServer(INTB_KERNEL | dev->pcnu_IRQ, &dev->pcnu_irqhandler); - RemIntServer(INTB_VERTB, &dev->pcnu_touthandler); + if (dev->pcnu_IntsAdded) + { + RemIntServer(INTB_KERNEL + dev->pcnu_IRQ, &dev->pcnu_irqhandler); + RemIntServer(INTB_VERTB, &dev->pcnu_touthandler); + dev->pcnu_IntsAdded = FALSE; + } } static void pcnet32_set_mac(struct net_device *dev) diff --git a/workbench/devs/networks/pcnet32/pcnet32.conf b/workbench/devs/networks/pcnet32/pcnet32.conf index ead1a84ff2..574016cd3e 100644 --- a/workbench/devs/networks/pcnet32/pcnet32.conf +++ b/workbench/devs/networks/pcnet32/pcnet32.conf @@ -1,5 +1,5 @@ ##begin config -version 1.0 +version 1.1 basename PCNet32 libbase PCNet32Base libbasetype struct PCN32Base diff --git a/workbench/devs/networks/pcnet32/pcnet32.h b/workbench/devs/networks/pcnet32/pcnet32.h index 6921e2b294..39dd974f23 100644 --- a/workbench/devs/networks/pcnet32/pcnet32.h +++ b/workbench/devs/networks/pcnet32/pcnet32.h @@ -142,6 +142,7 @@ struct PCN32Unit { struct timeval pcnu_toutPOLL; BOOL pcnu_toutNEED; + BOOL pcnu_IntsAdded; struct MsgPort *pcnu_TimerSlowPort; struct timerequest *pcnu_TimerSlowReq; diff --git a/workbench/devs/networks/rtl8139/handler.c b/workbench/devs/networks/rtl8139/handler.c index 0045cd1424..5e37bd64cc 100644 --- a/workbench/devs/networks/rtl8139/handler.c +++ b/workbench/devs/networks/rtl8139/handler.c @@ -721,7 +721,8 @@ RTLD(bug("[%s] S2CmdOnline()\n", unit->rtl8139u_name)) for(i = 0; i < STAT_COUNT; i++) unit->rtl8139u_special_stats[i] = 0; - if (unit->start(unit)) { + if (unit->start(unit)) + { error = S2ERR_OUTOFSERVICE; wire_error = S2WERR_GENERIC_ERROR; } diff --git a/workbench/devs/networks/rtl8139/rtl8139.c b/workbench/devs/networks/rtl8139/rtl8139.c index 6f983b1267..3c56a7b61b 100644 --- a/workbench/devs/networks/rtl8139/rtl8139.c +++ b/workbench/devs/networks/rtl8139/rtl8139.c @@ -451,17 +451,27 @@ static int request_irq(struct net_device *unit) { RTLD(bug("[%s] request_irq()\n", unit->rtl8139u_name)) - AddIntServer(INTB_KERNEL + unit->rtl8139u_IRQ, &unit->rtl8139u_irqhandler); - AddIntServer(INTB_VERTB, &unit->rtl8139u_touthandler); - + if (!unit->rtl8139u_IntsAdded) + { + AddIntServer(INTB_KERNEL + unit->rtl8139u_IRQ, + &unit->rtl8139u_irqhandler); + AddIntServer(INTB_VERTB, &unit->rtl8139u_touthandler); + unit->rtl8139u_IntsAdded = TRUE; + } RTLD(bug("[%s] request_irq: IRQ Handlers configured\n", unit->rtl8139u_name)) - return 1; + + return 1; } static void free_irq(struct net_device *unit) { - RemIntServer(INTB_KERNEL + unit->rtl8139u_IRQ, &unit->rtl8139u_irqhandler); - RemIntServer(INTB_VERTB, &unit->rtl8139u_touthandler); + if (unit->rtl8139u_IntsAdded) + { + RemIntServer(INTB_KERNEL + unit->rtl8139u_IRQ, + &unit->rtl8139u_irqhandler); + RemIntServer(INTB_VERTB, &unit->rtl8139u_touthandler); + unit->rtl8139u_IntsAdded = FALSE; + } } int rtl8139nic_set_rxmode(struct net_device *unit) diff --git a/workbench/devs/networks/rtl8139/rtl8139.conf b/workbench/devs/networks/rtl8139/rtl8139.conf index 34b3ebb678..13091c08ce 100644 --- a/workbench/devs/networks/rtl8139/rtl8139.conf +++ b/workbench/devs/networks/rtl8139/rtl8139.conf @@ -1,5 +1,5 @@ ##begin config -version 0.99 +version 0.100 basename RTL8139Dev libbase RTL8139DeviceBase libbasetype struct RTL8139Base diff --git a/workbench/devs/networks/rtl8139/rtl8139.h b/workbench/devs/networks/rtl8139/rtl8139.h index d666ac02d3..13df314ec9 100644 --- a/workbench/devs/networks/rtl8139/rtl8139.h +++ b/workbench/devs/networks/rtl8139/rtl8139.h @@ -189,6 +189,7 @@ struct RTL8139Unit { struct timeval rtl8139u_toutPOLL; BOOL rtl8139u_toutNEED; + BOOL rtl8139u_IntsAdded; struct MsgPort *rtl8139u_TimerSlowPort; struct timerequest *rtl8139u_TimerSlowReq; diff --git a/workbench/devs/networks/rtl8168/handler.c b/workbench/devs/networks/rtl8168/handler.c index 26d1139a92..8df47f0e5f 100644 --- a/workbench/devs/networks/rtl8168/handler.c +++ b/workbench/devs/networks/rtl8168/handler.c @@ -670,7 +670,8 @@ RTLD(bug("[%s] S2CmdOnline()\n", unit->rtl8168u_name)) for(i = 0; i < STAT_COUNT; i++) unit->rtl8168u_special_stats[i] = 0; - if (unit->start(unit)) { + if (unit->start(unit)) + { error = S2ERR_OUTOFSERVICE; wire_error = S2WERR_GENERIC_ERROR; } diff --git a/workbench/devs/networks/rtl8168/rtl8168.c b/workbench/devs/networks/rtl8168/rtl8168.c index 18347b9117..afa07aff9e 100644 --- a/workbench/devs/networks/rtl8168/rtl8168.c +++ b/workbench/devs/networks/rtl8168/rtl8168.c @@ -1203,8 +1203,13 @@ static int request_irq(struct net_device *unit) RTLD(bug("[%s] request_irq()\n", unit->rtl8168u_name)) - AddIntServer(INTB_KERNEL + unit->rtl8168u_IRQ, &unit->rtl8168u_irqhandler); - AddIntServer(INTB_VERTB, &unit->rtl8168u_touthandler); + if (!unit->rtl8168u_IntsAdded) + { + AddIntServer(INTB_KERNEL + unit->rtl8168u_IRQ, + &unit->rtl8168u_irqhandler); + AddIntServer(INTB_VERTB, &unit->rtl8168u_touthandler); + unit->rtl8168u_IntsAdded = TRUE; + } RTLD(bug("[%s] request_irq: IRQ Handlers configured\n", unit->rtl8168u_name)) return 1; @@ -1212,8 +1217,13 @@ RTLD(bug("[%s] request_irq: IRQ Handlers configured\n", unit->rtl8168u_name)) static void free_irq(struct net_device *unit) { - RemIntServer(INTB_KERNEL + unit->rtl8168u_IRQ, &unit->rtl8168u_irqhandler); - RemIntServer(INTB_VERTB, &unit->rtl8168u_touthandler); + if (unit->rtl8168u_IntsAdded) + { + RemIntServer(INTB_KERNEL + unit->rtl8168u_IRQ, + &unit->rtl8168u_irqhandler); + RemIntServer(INTB_VERTB, &unit->rtl8168u_touthandler); + unit->rtl8168u_IntsAdded = FALSE; + } } static void rtl8168nic_SetRXBufSize(struct net_device *unit) diff --git a/workbench/devs/networks/rtl8168/rtl8168.conf b/workbench/devs/networks/rtl8168/rtl8168.conf index 572b8cfc3c..a848516612 100644 --- a/workbench/devs/networks/rtl8168/rtl8168.conf +++ b/workbench/devs/networks/rtl8168/rtl8168.conf @@ -1,5 +1,5 @@ ##begin config -version 0.97 +version 0.98 basename RTL8168Dev libbase RTL8168DeviceBase libbasetype struct RTL8168Base diff --git a/workbench/devs/networks/rtl8168/rtl8168.h b/workbench/devs/networks/rtl8168/rtl8168.h index 936432d757..0d4df644c0 100644 --- a/workbench/devs/networks/rtl8168/rtl8168.h +++ b/workbench/devs/networks/rtl8168/rtl8168.h @@ -190,6 +190,7 @@ struct RTL8168Unit { struct timeval rtl8168u_toutPOLL; BOOL rtl8168u_toutNEED; + BOOL rtl8168u_IntsAdded; struct MsgPort *rtl8168u_TimerSlowPort; struct timerequest *rtl8168u_TimerSlowReq; diff --git a/workbench/devs/networks/rtl8169/rtl8169.c b/workbench/devs/networks/rtl8169/rtl8169.c index 1140d21acc..61850b24bb 100644 --- a/workbench/devs/networks/rtl8169/rtl8169.c +++ b/workbench/devs/networks/rtl8169/rtl8169.c @@ -939,15 +939,26 @@ static int request_irq(struct net_device *unit) { RTLD(bug("[%s] request_irq()\n", unit->rtl8169u_name)) - AddIntServer(INTB_KERNEL + unit->rtl8169u_IRQ, &unit->rtl8169u_irqhandler); - AddIntServer(INTB_VERTB, &unit->rtl8169u_touthandler); + if (!unit->rtl8169u_IntsAdded) + { + AddIntServer(INTB_KERNEL + unit->rtl8169u_IRQ, + &unit->rtl8169u_irqhandler); + AddIntServer(INTB_VERTB, &unit->rtl8169u_touthandler); + unit->rtl8169u_IntsAdded = TRUE; + } + return 1; } static void free_irq(struct net_device *unit) { - RemIntServer(INTB_KERNEL + unit->rtl8169u_IRQ, &unit->rtl8169u_irqhandler); - RemIntServer(INTB_VERTB, &unit->rtl8169u_touthandler); + if (unit->rtl8169u_IntsAdded) + { + RemIntServer(INTB_KERNEL + unit->rtl8169u_IRQ, + &unit->rtl8169u_irqhandler); + RemIntServer(INTB_VERTB, &unit->rtl8169u_touthandler); + unit->rtl8169u_IntsAdded = FALSE; + } } void rtl_set_rx_max_size(struct net_device *unit) diff --git a/workbench/devs/networks/rtl8169/rtl8169.conf b/workbench/devs/networks/rtl8169/rtl8169.conf index d6fa34898b..d075ee6bee 100644 --- a/workbench/devs/networks/rtl8169/rtl8169.conf +++ b/workbench/devs/networks/rtl8169/rtl8169.conf @@ -1,5 +1,5 @@ ##begin config -version 0.1 +version 0.2 basename RTL8169Dev libbase RTL8169DeviceBase libbasetype struct RTL8169Base diff --git a/workbench/devs/networks/rtl8169/rtl8169.h b/workbench/devs/networks/rtl8169/rtl8169.h index aef178f256..4edbdae996 100644 --- a/workbench/devs/networks/rtl8169/rtl8169.h +++ b/workbench/devs/networks/rtl8169/rtl8169.h @@ -238,6 +238,7 @@ struct RTL8169Unit { struct timeval rtl8169u_toutPOLL; BOOL rtl8169u_toutNEED; + BOOL rtl8169u_IntsAdded; struct MsgPort *rtl8169u_TimerSlowPort; struct timerequest *rtl8169u_TimerSlowReq; diff --git a/workbench/devs/networks/sis900/handler.c b/workbench/devs/networks/sis900/handler.c index e6a88781a9..cea1d5ec0c 100644 --- a/workbench/devs/networks/sis900/handler.c +++ b/workbench/devs/networks/sis900/handler.c @@ -680,7 +680,8 @@ D(bug("[%s]: S2CmdOnline()\n", unit->sis900u_name)); for(i = 0; i < SANA2_SPECIAL_STAT_COUNT; i++) unit->sis900u_special_stats[i] = 0; - if (sis900func_open(unit)) { + if (sis900func_open(unit)) + { error = S2ERR_OUTOFSERVICE; wire_error = S2WERR_GENERIC_ERROR; } diff --git a/workbench/devs/networks/sis900/sis900.c b/workbench/devs/networks/sis900/sis900.c index fe20fd97b4..4c74de060c 100644 --- a/workbench/devs/networks/sis900/sis900.c +++ b/workbench/devs/networks/sis900/sis900.c @@ -902,15 +902,26 @@ static int request_irq(struct net_device *unit) { D(bug("[%s]: request_irq()\n", unit->sis900u_name)); - AddIntServer(INTB_KERNEL + unit->sis900u_IRQ, &unit->sis900u_irqhandler); - AddIntServer(INTB_VERTB, &unit->sis900u_touthandler); + if (!unit->sis900u_IntsAdded) + { + AddIntServer(INTB_KERNEL + unit->sis900u_IRQ, + &unit->sis900u_irqhandler); + AddIntServer(INTB_VERTB, &unit->sis900u_touthandler); + unit->sis900u_IntsAdded = TRUE; + } + return 1; } static void free_irq(struct net_device *unit) { - RemIntServer(INTB_KERNEL + unit->sis900u_IRQ, &unit->sis900u_irqhandler); - RemIntServer(INTB_VERTB, &unit->sis900u_touthandler); + if (unit->sis900u_IntsAdded) + { + RemIntServer(INTB_KERNEL + unit->sis900u_IRQ, + &unit->sis900u_irqhandler); + RemIntServer(INTB_VERTB, &unit->sis900u_touthandler); + unit->sis900u_IntsAdded = FALSE; + } } void sis900func_set_mac(struct net_device *unit) @@ -961,7 +972,7 @@ D(bug("[%s]: sis900_reset()\n", unit->sis900u_name)); status ^= (LONGIN(isr + ioaddr) & status); } - if( (unit->sis900u_RevisionID >= SIS635A_900_REV) || (unit->sis900u_RevisionID == SIS900B_900_REV) ) + if ( (unit->sis900u_RevisionID >= SIS635A_900_REV) || (unit->sis900u_RevisionID == SIS900B_900_REV) ) LONGOUT(ioaddr + cfg, PESEL | RND_CNT); else LONGOUT(ioaddr + cfg, PESEL); diff --git a/workbench/devs/networks/sis900/sis900.conf b/workbench/devs/networks/sis900/sis900.conf index c0c9846bb0..21a445fe94 100644 --- a/workbench/devs/networks/sis900/sis900.conf +++ b/workbench/devs/networks/sis900/sis900.conf @@ -1,5 +1,5 @@ ##begin config -version 0.99 +version 0.100 basename SiS900Dev libbase SiS900DeviceBase libbasetype struct SiS900Base diff --git a/workbench/devs/networks/sis900/sis900.h b/workbench/devs/networks/sis900/sis900.h index c04166f23a..cb372d9f97 100644 --- a/workbench/devs/networks/sis900/sis900.h +++ b/workbench/devs/networks/sis900/sis900.h @@ -152,6 +152,7 @@ struct SiS900Unit { OOP_Object *sis900u_PCIDevice; OOP_Object *sis900u_PCIDriver; IPTR sis900u_IRQ; + BOOL sis900u_IntsAdded; int sis900u_open_count; struct SignalSemaphore sis900u_unit_lock; diff --git a/workbench/devs/networks/via-rhine/handler.c b/workbench/devs/networks/via-rhine/handler.c index c232c08546..e9e79aa3ba 100644 --- a/workbench/devs/networks/via-rhine/handler.c +++ b/workbench/devs/networks/via-rhine/handler.c @@ -669,7 +669,8 @@ D(bug("%s: S2CmdOnline()\n", unit->rhineu_name)); for(i = 0; i < STAT_COUNT; i++) unit->rhineu_special_stats[i] = 0; - if (unit->start(unit)) { + if (unit->start(unit)) + { error = S2ERR_OUTOFSERVICE; wire_error = S2WERR_GENERIC_ERROR; } diff --git a/workbench/devs/networks/via-rhine/via-rhine.c b/workbench/devs/networks/via-rhine/via-rhine.c index 66e0b25333..e472426988 100644 --- a/workbench/devs/networks/via-rhine/via-rhine.c +++ b/workbench/devs/networks/via-rhine/via-rhine.c @@ -268,8 +268,12 @@ static int request_irq(struct net_device *dev) { D(bug("%s: request_irq()\n", dev->rhineu_name)); - AddIntServer(INTB_KERNEL + dev->rhineu_IRQ, &dev->rhineu_irqhandler); - AddIntServer(INTB_VERTB, &dev->rhineu_touthandler); + if (!dev->rhineu_IntsAdded) + { + AddIntServer(INTB_KERNEL + dev->rhineu_IRQ, &dev->rhineu_irqhandler); + AddIntServer(INTB_VERTB, &dev->rhineu_touthandler); + dev->rhineu_IntsAdded = TRUE; + } D(bug("%s: request_irq: IRQ Handlers configured\n", dev->rhineu_name)); return 0; @@ -277,8 +281,12 @@ D(bug("%s: request_irq: IRQ Handlers configured\n", dev->rhineu_name)); static void free_irq(struct net_device *dev) { - RemIntServer(INTB_KERNEL + dev->rhineu_IRQ, &dev->rhineu_irqhandler); - RemIntServer(INTB_VERTB, &dev->rhineu_touthandler); + if (dev->rhineu_IntsAdded) + { + RemIntServer(INTB_KERNEL + dev->rhineu_IRQ, &dev->rhineu_irqhandler); + RemIntServer(INTB_VERTB, &dev->rhineu_touthandler); + dev->rhineu_IntsAdded = FALSE; + } } int viarhinenic_rx_setmode(struct net_device *dev) diff --git a/workbench/devs/networks/via-rhine/via-rhine.h b/workbench/devs/networks/via-rhine/via-rhine.h index fb5dea36d4..5b415e5db3 100644 --- a/workbench/devs/networks/via-rhine/via-rhine.h +++ b/workbench/devs/networks/via-rhine/via-rhine.h @@ -132,6 +132,7 @@ struct VIARHINEUnit { struct timeval rhineu_toutPOLL; BOOL rhineu_toutNEED; + BOOL rhineu_IntsAdded; struct MsgPort *rhineu_TimerSlowPort; struct timerequest *rhineu_TimerSlowReq; diff --git a/workbench/devs/networks/via-rhine/viarhine.conf b/workbench/devs/networks/via-rhine/viarhine.conf index 4f166f06b5..e098ecf31c 100644 --- a/workbench/devs/networks/via-rhine/viarhine.conf +++ b/workbench/devs/networks/via-rhine/viarhine.conf @@ -1,5 +1,5 @@ ##begin config -version 1.0 +version 1.1 basename VIARHINEDev libbase VIARHINEDeviceBase libbasetype struct VIARHINEBase -- 2.11.4.GIT