b43: fix DMA error related regression with proprietary firmware
In commit66cffd6daa
("b43: fix transmit failure when VT is switched"), a condition is noted where the network controller needs to be reset. Note that this situation happens when running the open-source firmware (http://netweb.ing.unibs.it/~openfwwf/), plus a number of other special conditions. for a different card model, it is reported that this change breaks operation running the proprietary firmware (https://marc.info/?l=linux-wireless&m=153504546924558&w=2). Rather than reverting the previous patch, the code is tweaked to avoid the reset unless the open-source firmware is being used. Fixes:66cffd6daa
("b43: fix transmit failure when VT is switched") Cc: Stable <stable@vger.kernel.org> # 4.18+ Cc: Taketo Kabe <kabe@sra-tohoku.co.jp> Reported-and-tested-by: D. Prabhu <d.praabhu@gmail.com> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
@@ -1518,13 +1518,15 @@ void b43_dma_handle_txstatus(struct b43_wldev *dev,
|
||||
}
|
||||
} else {
|
||||
/* More than a single header/data pair were missed.
|
||||
* Report this error, and reset the controller to
|
||||
* Report this error. If running with open-source
|
||||
* firmware, then reset the controller to
|
||||
* revive operation.
|
||||
*/
|
||||
b43dbg(dev->wl,
|
||||
"Out of order TX status report on DMA ring %d. Expected %d, but got %d\n",
|
||||
ring->index, firstused, slot);
|
||||
b43_controller_restart(dev, "Out of order TX");
|
||||
if (dev->fw.opensource)
|
||||
b43_controller_restart(dev, "Out of order TX");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user