Compare commits

..

2 Commits

Author SHA1 Message Date
Shaun Ruffell
54cb9227d4 Importing files for 2.5.0-rc2 release.
git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/tags/2.5.0-rc2@10075 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-07-21 21:57:17 +00:00
Shaun Ruffell
1e99db6411 Creating tag for the release of dahdi-linux-2.5.0-rc2
git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/tags/2.5.0-rc2@10074 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2011-07-21 21:56:06 +00:00
4 changed files with 6 additions and 63 deletions

View File

@@ -1 +1 @@
2.5.0
2.5.0-rc2

View File

@@ -1,32 +1,3 @@
2011-08-05 Shaun Ruffell <sruffell@digium.com>
* dahdi-linux 2.5.0 released.
2011-07-26 20:19 +0000 [r10082] Shaun Ruffell <sruffell@digium.com>
* drivers/dahdi/wctc4xxp/base.c: wctc4xxp: Cleanup in-flight
commands when halting due to hardware error. On one system I was
seeing the board reset in the middle of a transaction. Any
commands that were on the response list when this would happen
would never be completed and the process would then be stuck in
an uninterruptible sleep. This change also prevents the driver
from sleeping in timer context, which would result in a kernel
panic. This change at least lets an error message propogate back
to the user. DAHDI-880 Signed-off-by: Shaun Ruffell
<sruffell@digium.com>
2011-07-22 17:56 +0000 [r10079] Russ Meyerriecks <rmeyerreicks@digium.com>
* drivers/dahdi/wcb4xxp/base.c: wcb4xxp: Prevent null pointer
dereference on spanconfig In the rare case where spanconfig is
called while there is pending data on the hdlc channel, the
hdlc_getbuf interrupt could try to read from the hdlc buffer
before the channel was fully setup. This could potentially result
in a null pointer dereference. This condition has existed since
the creation of the wcb4xxp driver. Signed-off-by: Russ
Meyerriecks <rmeyerriecks@digium.com> Signed-off-by: Shaun
Ruffell <sruffell@digium.com>
2011-07-21 Shaun Ruffell <sruffell@digium.com>
* dahdi-linux version 2.5.0-rc2 released.

View File

@@ -2375,9 +2375,6 @@ b4xxp_chanconfig(struct file *file, struct dahdi_chan *chan, int sigtype)
if (alreadyrunning && bspan->sigchan) {
hdlc_stop(b4, fifo);
atomic_set(&bspan->hdlc_pending, 0);
bspan->sigactive = 0;
smp_mb();
bspan->sigchan = NULL;
}

View File

@@ -1614,20 +1614,6 @@ wctc4xxp_transmit_cmd(struct wcdte *wc, struct tcb *cmd)
{
int res;
/* If we're shutdown all commands will timeout. Just complete the
* command here with the timeout flag */
if (unlikely(test_bit(DTE_SHUTDOWN, &wc->flags))) {
if (cmd->flags & DO_NOT_AUTO_FREE) {
cmd->flags |= DTE_CMD_TIMEOUT;
list_del_init(&cmd->node);
complete(&cmd->complete);
} else {
list_del(&cmd->node);
free_cmd(cmd);
}
return;
}
if (cmd->data_len < MIN_PACKET_LEN) {
memset((u8 *)(cmd->data) + cmd->data_len, 0,
MIN_PACKET_LEN-cmd->data_len);
@@ -2754,10 +2740,11 @@ wctc4xxp_start_dma(struct wcdte *wc)
}
static void
_wctc4xxp_stop_dma(struct wcdte *wc)
wctc4xxp_stop_dma(struct wcdte *wc)
{
/* Disable interrupts and reset */
unsigned int reg;
unsigned long newjiffies;
/* Disable interrupts */
wctc4xxp_setintmask(wc, 0x00000000);
wctc4xxp_setctl(wc, 0x0084, 0x00000000);
@@ -2766,14 +2753,7 @@ _wctc4xxp_stop_dma(struct wcdte *wc)
reg = wctc4xxp_getctl(wc, 0x0000);
reg |= 0x00000001;
wctc4xxp_setctl(wc, 0x0000, reg);
}
static void
wctc4xxp_stop_dma(struct wcdte *wc)
{
unsigned long newjiffies;
_wctc4xxp_stop_dma(wc);
newjiffies = jiffies + HZ; /* One second timeout */
/* We'll wait here for the part to come out of reset */
while (((wctc4xxp_getctl(wc, 0x0000)) & 0x00000001) &&
@@ -2781,6 +2761,7 @@ wctc4xxp_stop_dma(struct wcdte *wc)
msleep(1);
}
#define MDIO_SHIFT_CLK 0x10000
#define MDIO_DATA_WRITE1 0x20000
#define MDIO_ENB 0x00000
@@ -3324,19 +3305,13 @@ wctc4xxp_watchdog(unsigned long data)
if (time_after(jiffies, cmd->timeout)) {
if (++cmd->retries > MAX_RETRIES) {
if (!(cmd->flags & TX_COMPLETE)) {
cmd->flags |= DTE_CMD_TIMEOUT;
list_del_init(&cmd->node);
complete(&cmd->complete);
set_bit(DTE_SHUTDOWN, &wc->flags);
spin_unlock(&wc->cmd_list_lock);
_wctc4xxp_stop_dma(wc);
wctc4xxp_stop_dma(wc);
dev_err(&wc->pdev->dev,
"Board malfunctioning. " \
"Halting operation.\n");
reschedule_timer = 0;
break;
return;
}
/* ERROR: We've retried the command and
* haven't received the ACK or the response.