bes2600: Patch F — backport cw1200 mainline bug fixes (3 commits) #4

Merged
marfrit merged 3 commits from bes2600/cw1200-fix-backports into cleanups 2026-05-07 19:30:13 +00:00
Showing only changes of commit b717251598 - Show all commits
+26 -19
View File
@@ -257,18 +257,21 @@ int bes2600_hw_scan(struct ieee80211_hw *hw,
bes2600_pwr_set_busy_event(hw_priv, BES_PWR_LOCK_ON_SCAN); bes2600_pwr_set_busy_event(hw_priv, BES_PWR_LOCK_ON_SCAN);
frame.skb = ieee80211_probereq_get(hw, priv->vif->addr, NULL, 0,
req->ie_len);
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() */ /* will be unlocked in bes2600_scan_work() */
down(&hw_priv->scan.lock); down(&hw_priv->scan.lock);
down(&hw_priv->conf_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 (req->ie_len)
skb_put_data(frame.skb, req->ie, req->ie_len);
if (frame.skb) { if (frame.skb) {
int ret; int ret;
//if (priv->if_id == 0) //if (priv->if_id == 0)
@@ -286,9 +289,9 @@ int bes2600_hw_scan(struct ieee80211_hw *hw,
} }
#endif #endif
if (ret) { if (ret) {
dev_kfree_skb(frame.skb);
up(&hw_priv->conf_lock); up(&hw_priv->conf_lock);
up(&hw_priv->scan.lock); up(&hw_priv->scan.lock);
dev_kfree_skb(frame.skb);
return ret; return ret;
} }
} }
@@ -318,10 +321,10 @@ int bes2600_hw_scan(struct ieee80211_hw *hw,
++hw_priv->scan.n_ssids; ++hw_priv->scan.n_ssids;
} }
up(&hw_priv->conf_lock);
if (frame.skb) if (frame.skb)
dev_kfree_skb(frame.skb); dev_kfree_skb(frame.skb);
up(&hw_priv->conf_lock);
#ifdef WIFI_BT_COEXIST_EPTA_ENABLE #ifdef WIFI_BT_COEXIST_EPTA_ENABLE
bwifi_change_current_status(hw_priv, BWIFI_STATUS_SCANNING); bwifi_change_current_status(hw_priv, BWIFI_STATUS_SCANNING);
#endif #endif
@@ -362,14 +365,18 @@ int bes2600_hw_sched_scan_start(struct ieee80211_hw *hw,
if (req->n_ssids > hw->wiphy->max_scan_ssids) if (req->n_ssids > hw->wiphy->max_scan_ssids)
return -EINVAL; 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() */ /* will be unlocked in bes2600_scan_work() */
down(&hw_priv->scan.lock); down(&hw_priv->scan.lock);
down(&hw_priv->conf_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) { if (frame.skb) {
int ret; int ret;
if (priv->if_id == 0) if (priv->if_id == 0)
@@ -380,9 +387,9 @@ int bes2600_hw_sched_scan_start(struct ieee80211_hw *hw,
ret = wsm_set_probe_responder(priv, true); ret = wsm_set_probe_responder(priv, true);
} }
if (ret) { if (ret) {
dev_kfree_skb(frame.skb);
up(&hw_priv->conf_lock); up(&hw_priv->conf_lock);
up(&hw_priv->scan.lock); up(&hw_priv->scan.lock);
dev_kfree_skb(frame.skb);
return ret; return ret;
} }
} }
@@ -414,10 +421,10 @@ int bes2600_hw_sched_scan_start(struct ieee80211_hw *hw,
} }
} }
up(&hw_priv->conf_lock);
if (frame.skb) if (frame.skb)
dev_kfree_skb(frame.skb); dev_kfree_skb(frame.skb);
up(&hw_priv->conf_lock);
queue_work(hw_priv->workqueue, &hw_priv->scan.swork); queue_work(hw_priv->workqueue, &hw_priv->scan.swork);
wiphy_warn(hw->wiphy, "<--[SCAN] Scheduled scan request.\n"); wiphy_warn(hw->wiphy, "<--[SCAN] Scheduled scan request.\n");
return 0; return 0;