Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cdfdac987a |
@@ -484,18 +484,6 @@ int bes2600_chrdev_do_bus_reset(const struct sbus_ops *sbus_ops, struct sbus_pri
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Trigger bes2600_chrdev_do_bus_reset() against the file-global
|
||||
* bes2600_cdev. Used by host-side recovery paths outside this
|
||||
* compilation unit (e.g. sta.c connection-loss-storm fast-recover) so
|
||||
* those callers do not need to reach the static bes2600_cdev directly.
|
||||
*/
|
||||
int bes2600_chrdev_trigger_bus_reset(void)
|
||||
{
|
||||
return bes2600_chrdev_do_bus_reset(bes2600_cdev.sbus_ops,
|
||||
bes2600_cdev.sbus_priv);
|
||||
}
|
||||
|
||||
bool bes2600_chrdev_is_wifi_opened(void)
|
||||
{
|
||||
bool wifi_opened = false;
|
||||
|
||||
@@ -61,7 +61,6 @@ struct sbus_priv *bes2600_chrdev_get_sbus_priv_data(void);
|
||||
int bes2600_chrdev_check_system_close(void);
|
||||
int bes2600_chrdev_do_system_close(const struct sbus_ops *sbus_ops, struct sbus_priv *priv);
|
||||
int bes2600_chrdev_do_bus_reset(const struct sbus_ops *sbus_ops, struct sbus_priv *priv);
|
||||
int bes2600_chrdev_trigger_bus_reset(void);
|
||||
void bes2600_chrdev_wakeup_bt(void);
|
||||
void bes2600_chrdev_wifi_force_close(struct bes2600_common *hw_priv, bool halt_dev);
|
||||
void bes2600_chrdev_usb_remove(struct bes2600_common *hw_priv);
|
||||
|
||||
+6
-6
@@ -101,7 +101,7 @@ void bes2600_unregister_bh(struct bes2600_common *hw_priv)
|
||||
coex_deinit_mode(hw_priv);
|
||||
#endif
|
||||
|
||||
atomic_inc(&hw_priv->bh_term);
|
||||
atomic_add(1, &hw_priv->bh_term);
|
||||
wake_up(&hw_priv->bh_wq);
|
||||
|
||||
flush_workqueue(hw_priv->bh_workqueue);
|
||||
@@ -590,7 +590,7 @@ static int bes2600_bh(void *arg)
|
||||
bes_devel("[BH] Device resume.\n");
|
||||
atomic_set(&hw_priv->bh_suspend, BES2600_BH_RESUMED);
|
||||
wake_up(&hw_priv->bh_evt_wq);
|
||||
atomic_inc(&hw_priv->bh_rx);
|
||||
atomic_add(1, &hw_priv->bh_rx);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -758,9 +758,9 @@ tx:
|
||||
|
||||
#if 0 /* count is not implemented */
|
||||
if (ret > 1)
|
||||
atomic_inc(&hw_priv->bh_tx);
|
||||
atomic_add(1, &hw_priv->bh_tx);
|
||||
#else
|
||||
atomic_inc(&hw_priv->bh_tx);
|
||||
atomic_add(1, &hw_priv->bh_tx);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_BES2600_NON_POWER_OF_TWO_BLOCKSIZES)
|
||||
@@ -1134,7 +1134,7 @@ static int bes2600_bh_tx_helper(struct bes2600_common *hw_priv,
|
||||
tx_len += 4;
|
||||
#endif
|
||||
|
||||
atomic_inc(&hw_priv->bh_tx);
|
||||
atomic_add(1, &hw_priv->bh_tx);
|
||||
|
||||
tx_len = hw_priv->sbus_ops->align_size(
|
||||
hw_priv->sbus_priv, tx_len);
|
||||
@@ -1435,7 +1435,7 @@ static int bes2600_bh(void *arg)
|
||||
bes_devel("[BH] Device resume.\n");
|
||||
atomic_set(&hw_priv->bh_suspend, BES2600_BH_RESUMED);
|
||||
wake_up(&hw_priv->bh_evt_wq);
|
||||
atomic_inc(&hw_priv->bh_rx);
|
||||
atomic_add(1, &hw_priv->bh_rx);
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -570,7 +570,7 @@ int bes2600_itp_get_tx(struct bes2600_common *priv, u8 **data,
|
||||
*burst = 2;
|
||||
atomic_set(&priv->bh_tx, 1);
|
||||
ktime_get_ts(&itp->last_sent);
|
||||
atomic_inc(&itp->awaiting_confirm);
|
||||
atomic_add(1, &itp->awaiting_confirm);
|
||||
spin_unlock_bh(&itp->tx_lock);
|
||||
return 1;
|
||||
|
||||
|
||||
@@ -497,7 +497,6 @@ static struct ieee80211_hw *bes2600_init_common(size_t hw_priv_data_len)
|
||||
WLAN_LINK_ID_MAX,
|
||||
bes2600_skb_dtor,
|
||||
hw_priv))) {
|
||||
destroy_workqueue(hw_priv->workqueue);
|
||||
ieee80211_free_hw(hw);
|
||||
return NULL;
|
||||
}
|
||||
@@ -509,7 +508,6 @@ static struct ieee80211_hw *bes2600_init_common(size_t hw_priv_data_len)
|
||||
for (; i > 0; i--)
|
||||
bes2600_queue_deinit(&hw_priv->tx_queue[i - 1]);
|
||||
bes2600_queue_stats_deinit(&hw_priv->tx_queue_stats);
|
||||
destroy_workqueue(hw_priv->workqueue);
|
||||
ieee80211_free_hw(hw);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+16
-23
@@ -257,21 +257,18 @@ int bes2600_hw_scan(struct ieee80211_hw *hw,
|
||||
|
||||
bes2600_pwr_set_busy_event(hw_priv, BES_PWR_LOCK_ON_SCAN);
|
||||
|
||||
/* will be unlocked in bes2600_scan_work() */
|
||||
down(&hw_priv->scan.lock);
|
||||
down(&hw_priv->conf_lock);
|
||||
|
||||
frame.skb = ieee80211_probereq_get(hw, priv->vif->addr, NULL, 0,
|
||||
req->ie_len);
|
||||
if (!frame.skb) {
|
||||
up(&hw_priv->conf_lock);
|
||||
up(&hw_priv->scan.lock);
|
||||
if (!frame.skb)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (req->ie_len)
|
||||
skb_put_data(frame.skb, req->ie, req->ie_len);
|
||||
|
||||
/* will be unlocked in bes2600_scan_work() */
|
||||
down(&hw_priv->scan.lock);
|
||||
down(&hw_priv->conf_lock);
|
||||
|
||||
if (frame.skb) {
|
||||
int ret;
|
||||
//if (priv->if_id == 0)
|
||||
@@ -289,9 +286,9 @@ int bes2600_hw_scan(struct ieee80211_hw *hw,
|
||||
}
|
||||
#endif
|
||||
if (ret) {
|
||||
dev_kfree_skb(frame.skb);
|
||||
up(&hw_priv->conf_lock);
|
||||
up(&hw_priv->scan.lock);
|
||||
dev_kfree_skb(frame.skb);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
@@ -321,10 +318,10 @@ int bes2600_hw_scan(struct ieee80211_hw *hw,
|
||||
++hw_priv->scan.n_ssids;
|
||||
}
|
||||
|
||||
up(&hw_priv->conf_lock);
|
||||
|
||||
if (frame.skb)
|
||||
dev_kfree_skb(frame.skb);
|
||||
|
||||
up(&hw_priv->conf_lock);
|
||||
#ifdef WIFI_BT_COEXIST_EPTA_ENABLE
|
||||
bwifi_change_current_status(hw_priv, BWIFI_STATUS_SCANNING);
|
||||
#endif
|
||||
@@ -365,18 +362,14 @@ int bes2600_hw_sched_scan_start(struct ieee80211_hw *hw,
|
||||
if (req->n_ssids > hw->wiphy->max_scan_ssids)
|
||||
return -EINVAL;
|
||||
|
||||
frame.skb = ieee80211_probereq_get(hw, priv->vif->addr, NULL, 0,
|
||||
req->ie_len);
|
||||
if (!frame.skb)
|
||||
return -ENOMEM;
|
||||
|
||||
/* will be unlocked in bes2600_scan_work() */
|
||||
down(&hw_priv->scan.lock);
|
||||
down(&hw_priv->conf_lock);
|
||||
|
||||
frame.skb = ieee80211_probereq_get(hw, priv->vif->addr, NULL, 0,
|
||||
req->ie_len);
|
||||
if (!frame.skb) {
|
||||
up(&hw_priv->conf_lock);
|
||||
up(&hw_priv->scan.lock);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (frame.skb) {
|
||||
int ret;
|
||||
if (priv->if_id == 0)
|
||||
@@ -387,9 +380,9 @@ int bes2600_hw_sched_scan_start(struct ieee80211_hw *hw,
|
||||
ret = wsm_set_probe_responder(priv, true);
|
||||
}
|
||||
if (ret) {
|
||||
dev_kfree_skb(frame.skb);
|
||||
up(&hw_priv->conf_lock);
|
||||
up(&hw_priv->scan.lock);
|
||||
dev_kfree_skb(frame.skb);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
@@ -421,10 +414,10 @@ int bes2600_hw_sched_scan_start(struct ieee80211_hw *hw,
|
||||
}
|
||||
}
|
||||
|
||||
up(&hw_priv->conf_lock);
|
||||
|
||||
if (frame.skb)
|
||||
dev_kfree_skb(frame.skb);
|
||||
|
||||
up(&hw_priv->conf_lock);
|
||||
queue_work(hw_priv->workqueue, &hw_priv->scan.swork);
|
||||
wiphy_warn(hw->wiphy, "<--[SCAN] Scheduled scan request.\n");
|
||||
return 0;
|
||||
|
||||
+1
-1
@@ -1692,7 +1692,7 @@ report:
|
||||
void bes2600_connection_loss_storm_recover(struct work_struct *work)
|
||||
{
|
||||
bes_warn("[bes2600] connection-loss-storm fast-recover: bus_reset\n");
|
||||
bes2600_chrdev_trigger_bus_reset();
|
||||
bes2600_chrdev_do_bus_reset(bes2600_cdev.sbus_ops, bes2600_cdev.sbus_priv);
|
||||
/*
|
||||
* After bes2600_chrdev_do_bus_reset() returns, the SDIO core has
|
||||
* scheduled a remove + rescan; per-vif state may already be gone.
|
||||
|
||||
Reference in New Issue
Block a user