mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 13:55:32 +00:00
Merge branch 'wireless'
John W. Linville says: ==================== This is a batch of fixes intended for the 3.9 stream... Avinash Patil gives us a mwifiex fix to prevent a system freeze when that driver is unloaded. Daniel Drake brings a patch to avoid dropping the carrier flag across a suspend. This prevents improper packet drops. Wei Yongjun delivers a brcmfmac for a lock leak on an error path. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
2bedc2e65b
3 changed files with 5 additions and 29 deletions
|
@ -4615,8 +4615,10 @@ static s32 brcmf_notify_vif_event(struct brcmf_if *ifp,
|
|||
switch (ifevent->action) {
|
||||
case BRCMF_E_IF_ADD:
|
||||
/* waiting process may have timed out */
|
||||
if (!cfg->vif_event.vif)
|
||||
if (!cfg->vif_event.vif) {
|
||||
mutex_unlock(&event->vif_event_lock);
|
||||
return -EBADF;
|
||||
}
|
||||
|
||||
ifp->vif = vif;
|
||||
vif->ifp = ifp;
|
||||
|
|
|
@ -171,7 +171,7 @@ static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state)
|
|||
{
|
||||
struct mwifiex_adapter *adapter;
|
||||
struct pcie_service_card *card;
|
||||
int hs_actived, i;
|
||||
int hs_actived;
|
||||
|
||||
if (pdev) {
|
||||
card = (struct pcie_service_card *) pci_get_drvdata(pdev);
|
||||
|
@ -191,9 +191,6 @@ static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state)
|
|||
/* Indicate device suspended */
|
||||
adapter->is_suspended = true;
|
||||
|
||||
for (i = 0; i < adapter->priv_num; i++)
|
||||
netif_carrier_off(adapter->priv[i]->netdev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -209,7 +206,6 @@ static int mwifiex_pcie_resume(struct pci_dev *pdev)
|
|||
{
|
||||
struct mwifiex_adapter *adapter;
|
||||
struct pcie_service_card *card;
|
||||
int i;
|
||||
|
||||
if (pdev) {
|
||||
card = (struct pcie_service_card *) pci_get_drvdata(pdev);
|
||||
|
@ -231,10 +227,6 @@ static int mwifiex_pcie_resume(struct pci_dev *pdev)
|
|||
|
||||
adapter->is_suspended = false;
|
||||
|
||||
for (i = 0; i < adapter->priv_num; i++)
|
||||
if (adapter->priv[i]->media_connected)
|
||||
netif_carrier_on(adapter->priv[i]->netdev);
|
||||
|
||||
mwifiex_cancel_hs(mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_STA),
|
||||
MWIFIEX_ASYNC_CMD);
|
||||
|
||||
|
@ -916,17 +908,8 @@ static int mwifiex_pcie_delete_sleep_cookie_buf(struct mwifiex_adapter *adapter)
|
|||
static int mwifiex_clean_pcie_ring_buf(struct mwifiex_adapter *adapter)
|
||||
{
|
||||
struct pcie_service_card *card = adapter->card;
|
||||
const struct mwifiex_pcie_card_reg *reg = card->pcie.reg;
|
||||
u32 rdptr;
|
||||
|
||||
/* Read the TX ring read pointer set by firmware */
|
||||
if (mwifiex_read_reg(adapter, reg->tx_rdptr, &rdptr)) {
|
||||
dev_err(adapter->dev,
|
||||
"Flush TXBD: failed to read reg->tx_rdptr\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!mwifiex_pcie_txbd_empty(card, rdptr)) {
|
||||
if (!mwifiex_pcie_txbd_empty(card, card->txbd_rdptr)) {
|
||||
card->txbd_flush = 1;
|
||||
/* write pointer already set at last send
|
||||
* send dnld-rdy intr again, wait for completion.
|
||||
|
|
|
@ -161,7 +161,6 @@ static int mwifiex_sdio_suspend(struct device *dev)
|
|||
struct sdio_mmc_card *card;
|
||||
struct mwifiex_adapter *adapter;
|
||||
mmc_pm_flag_t pm_flag = 0;
|
||||
int i;
|
||||
int ret = 0;
|
||||
|
||||
if (func) {
|
||||
|
@ -198,9 +197,6 @@ static int mwifiex_sdio_suspend(struct device *dev)
|
|||
/* Indicate device suspended */
|
||||
adapter->is_suspended = true;
|
||||
|
||||
for (i = 0; i < adapter->priv_num; i++)
|
||||
netif_carrier_off(adapter->priv[i]->netdev);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -220,7 +216,6 @@ static int mwifiex_sdio_resume(struct device *dev)
|
|||
struct sdio_mmc_card *card;
|
||||
struct mwifiex_adapter *adapter;
|
||||
mmc_pm_flag_t pm_flag = 0;
|
||||
int i;
|
||||
|
||||
if (func) {
|
||||
pm_flag = sdio_get_host_pm_caps(func);
|
||||
|
@ -243,10 +238,6 @@ static int mwifiex_sdio_resume(struct device *dev)
|
|||
|
||||
adapter->is_suspended = false;
|
||||
|
||||
for (i = 0; i < adapter->priv_num; i++)
|
||||
if (adapter->priv[i]->media_connected)
|
||||
netif_carrier_on(adapter->priv[i]->netdev);
|
||||
|
||||
/* Disable Host Sleep */
|
||||
mwifiex_cancel_hs(mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_STA),
|
||||
MWIFIEX_ASYNC_CMD);
|
||||
|
|
Loading…
Reference in a new issue