[svn-commits] sruffell: linux/trunk r8481 - /linux/trunk/drivers/dahdi/wcte12xp/base.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Tue Apr 6 14:05:33 CDT 2010


Author: sruffell
Date: Tue Apr  6 14:05:29 2010
New Revision: 8481

URL: http://svnview.digium.com/svn/dahdi?view=rev&rev=8481
Log:
wcte12xp: Do not reconfigure the VPMADT032 if shutting down.

If we try to unload the driver soon after a high latency event, it is possible
to get stuck for several seconds reloading the firmware. DAHDI-573.

Modified:
    linux/trunk/drivers/dahdi/wcte12xp/base.c

Modified: linux/trunk/drivers/dahdi/wcte12xp/base.c
URL: http://svnview.digium.com/svn/dahdi/linux/trunk/drivers/dahdi/wcte12xp/base.c?view=diff&rev=8481&r1=8480&r2=8481
==============================================================================
--- linux/trunk/drivers/dahdi/wcte12xp/base.c (original)
+++ linux/trunk/drivers/dahdi/wcte12xp/base.c Tue Apr  6 14:05:29 2010
@@ -1972,6 +1972,9 @@
 	int res;
 	u16 version;
 
+	if (!test_bit(INITIALIZED, &wc->bit_flags))
+		return;
+
 	if (test_bit(4, &wc->ctlreg)) {
 		res = gpakPingDsp(wc->vpmadt032->dspid, &version);
 		if (!res) {
@@ -1985,6 +1988,9 @@
 	}
 
 
+	if (!test_bit(INITIALIZED, &wc->bit_flags))
+		return;
+
 	res = vpmadt032_reset(wc->vpmadt032);
 	if (res) {
 		t1_info(wc, "Failed VPMADT032 reset. VPMADT032 is disabled.\n");
@@ -1992,13 +1998,22 @@
 		return;
 	}
 
+	if (!test_bit(INITIALIZED, &wc->bit_flags))
+		return;
+
 	res = config_vpmadt032(wc->vpmadt032, wc);
 	if (res) {
 		/* We failed the configuration, let's try again. */
 		t1_info(wc, "Failed to configure the ports.  Retrying.\n");
+
+		if (!test_bit(INITIALIZED, &wc->bit_flags))
+			return;
 		queue_work(wc->vpmadt032->wq, &wc->vpm_check_work);
 		return;
 	}
+
+	if (!test_bit(INITIALIZED, &wc->bit_flags))
+		return;
 
 	/* Looks like the reset went ok so we can put the VPM module back in
 	 * the TDM path. */




More information about the svn-commits mailing list