[Asterisk-bsd] Zaptel driver problems

Dinesh Nair dinesh at alphaque.com
Fri Oct 21 04:48:25 CDT 2005


On 10/21/05 01:03 Daniel Nielsen said the following:
> We've got some problems with the Zaptel FreeBSD driver. Our
> setup is:
> 
> HP ProLiant DL360, 1GB Ram, 2 x 3GHz Xeon (G4).
> When the driver is loaded, the red flashing light stops on
> the card.

what version of freebsd ?

if you're on freebsd 4.x, you'd need the following patch to the 4.x branch 
sources of the wct4xxp.c driver, as the current macro expansion for 
DECLARE_MODULE/MODULE_DEPEND needs t4_load() defined before it works. 
without this patch, a kldload would panic the system.

in addition, i'm investigation a condition where the use of 
INTR_TYPE_FAST/INTR_FAST would cause a kernel panic if shared interrupts 
were present. this can be avoided (i think !) by removing the RF_SHAREABLE 
flag in the call to bus_alloc_resource(). i've noticed that adding 
INTR_TYPE_FAST on freebsd 4.x with shared interrupts will cause a kernel 
panic when asterisk is started, though kldload and ztcfg go ok.

the freebsd driver docs state that INTR_TYPE_FAST can only be used when 
interrupts are not shared.

diff -ur src/zaptel-freebsd-0.11/wct4xxp/wct4xxp.c 
zaptel-bsd-trunk/wct4xxp/wct4xxp.c
--- src/zaptel-freebsd-0.11/wct4xxp/wct4xxp.c	Thu Oct 13 04:50:18 2005
+++ zaptel-bsd-trunk/wct4xxp/wct4xxp.c	Fri Oct 21 06:08:53 2005
@@ -3107,6 +3094,22 @@

  static devclass_t t4_devclass;

+static int t4_load(module_t mod, int cmd, void *arg) {
+    int err = 0;
+    switch(cmd) {
+    case MOD_LOAD:
+	err = driver_module_handler(mod, cmd, arg);
+	break;
+    case MOD_UNLOAD:
+	err = driver_module_handler(mod, cmd, arg);
+	break;
+    default:
+	err = EINVAL;
+	break;
+    }
+    return err;
+};
+
  #if __FreeBSD_version < 500000
  #define driver_module_handler  t4_load
  MODULE_DEPEND(wct4xxp, zaptel, 1, 1, 1);
@@ -3129,22 +3132,6 @@
  DECLARE_MODULE(wct4xxp, t4_pci_mod, SI_SUB_DRIVERS, SI_ORDER_MIDDLE);
  #endif

-static int t4_load(module_t mod, int cmd, void *arg) {
-    int err = 0;
-    switch(cmd) {
-    case MOD_LOAD:
-	err = driver_module_handler(mod, cmd, arg);
-	break;
-    case MOD_UNLOAD:
-	err = driver_module_handler(mod, cmd, arg);
-	break;
-    default:
-	err = EINVAL;
-	break;
-    }
-    return err;
-};
-

-- 
Regards,                           /\_/\   "All dogs go to heaven."
dinesh at alphaque.com                (0 0)    http://www.alphaque.com/
+==========================----oOO--(_)--OOo----==========================+
| for a in past present future; do                                        |
|   for b in clients employers associates relatives neighbours pets; do   |
|   echo "The opinions here in no way reflect the opinions of my $a $b."  |
| done; done                                                              |
+=========================================================================+


More information about the Asterisk-BSD mailing list