Commit 3a3ecf1d authored by Arend Van Spriel's avatar Arend Van Spriel Committed by Johannes Berg

cfg80211: add request id parameter to .sched_scan_stop() signature

For multiple scheduled scan support the driver needs to know which
scheduled scan request is being stopped. Pass the request id in the
.sched_scan_stop() callback.
Reviewed-by: default avatarHante Meuleman <hante.meuleman@broadcom.com>
Reviewed-by: default avatarPieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
Reviewed-by: default avatarFranky Lin <franky.lin@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 3007e352
...@@ -3352,7 +3352,7 @@ static int ath6kl_cfg80211_sscan_start(struct wiphy *wiphy, ...@@ -3352,7 +3352,7 @@ static int ath6kl_cfg80211_sscan_start(struct wiphy *wiphy,
} }
static int ath6kl_cfg80211_sscan_stop(struct wiphy *wiphy, static int ath6kl_cfg80211_sscan_stop(struct wiphy *wiphy,
struct net_device *dev) struct net_device *dev, u64 reqid)
{ {
struct ath6kl_vif *vif = netdev_priv(dev); struct ath6kl_vif *vif = netdev_priv(dev);
bool stopped; bool stopped;
......
...@@ -3405,7 +3405,7 @@ brcmf_cfg80211_sched_scan_start(struct wiphy *wiphy, ...@@ -3405,7 +3405,7 @@ brcmf_cfg80211_sched_scan_start(struct wiphy *wiphy,
} }
static int brcmf_cfg80211_sched_scan_stop(struct wiphy *wiphy, static int brcmf_cfg80211_sched_scan_stop(struct wiphy *wiphy,
struct net_device *ndev) struct net_device *ndev, u64 reqid)
{ {
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
struct brcmf_if *ifp = netdev_priv(ndev); struct brcmf_if *ifp = netdev_priv(ndev);
...@@ -3607,7 +3607,7 @@ static s32 brcmf_cfg80211_resume(struct wiphy *wiphy) ...@@ -3607,7 +3607,7 @@ static s32 brcmf_cfg80211_resume(struct wiphy *wiphy)
cfg->wowl.pre_pmmode); cfg->wowl.pre_pmmode);
cfg->wowl.active = false; cfg->wowl.active = false;
if (cfg->wowl.nd_enabled) { if (cfg->wowl.nd_enabled) {
brcmf_cfg80211_sched_scan_stop(cfg->wiphy, ifp->ndev); brcmf_cfg80211_sched_scan_stop(cfg->wiphy, ifp->ndev, 0);
brcmf_fweh_unregister(cfg->pub, BRCMF_E_PFN_NET_FOUND); brcmf_fweh_unregister(cfg->pub, BRCMF_E_PFN_NET_FOUND);
brcmf_fweh_register(cfg->pub, BRCMF_E_PFN_NET_FOUND, brcmf_fweh_register(cfg->pub, BRCMF_E_PFN_NET_FOUND,
brcmf_notify_sched_scan_results); brcmf_notify_sched_scan_results);
...@@ -3691,7 +3691,7 @@ static s32 brcmf_cfg80211_suspend(struct wiphy *wiphy, ...@@ -3691,7 +3691,7 @@ static s32 brcmf_cfg80211_suspend(struct wiphy *wiphy,
/* Stop scheduled scan */ /* Stop scheduled scan */
if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_PNO)) if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_PNO))
brcmf_cfg80211_sched_scan_stop(wiphy, ndev); brcmf_cfg80211_sched_scan_stop(wiphy, ndev, 0);
/* end any scanning */ /* end any scanning */
if (test_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status)) if (test_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status))
......
...@@ -2720,7 +2720,7 @@ mwifiex_cfg80211_sched_scan_start(struct wiphy *wiphy, ...@@ -2720,7 +2720,7 @@ mwifiex_cfg80211_sched_scan_start(struct wiphy *wiphy,
* previous bgscan configuration in the firmware * previous bgscan configuration in the firmware
*/ */
static int mwifiex_cfg80211_sched_scan_stop(struct wiphy *wiphy, static int mwifiex_cfg80211_sched_scan_stop(struct wiphy *wiphy,
struct net_device *dev) struct net_device *dev, u64 reqid)
{ {
struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev);
......
...@@ -2773,12 +2773,12 @@ struct cfg80211_nan_func { ...@@ -2773,12 +2773,12 @@ struct cfg80211_nan_func {
* @set_cqm_txe_config: Configure connection quality monitor TX error * @set_cqm_txe_config: Configure connection quality monitor TX error
* thresholds. * thresholds.
* @sched_scan_start: Tell the driver to start a scheduled scan. * @sched_scan_start: Tell the driver to start a scheduled scan.
* @sched_scan_stop: Tell the driver to stop an ongoing scheduled scan. This * @sched_scan_stop: Tell the driver to stop an ongoing scheduled scan with
* call must stop the scheduled scan and be ready for starting a new one * given request id. This call must stop the scheduled scan and be ready
* before it returns, i.e. @sched_scan_start may be called immediately * for starting a new one before it returns, i.e. @sched_scan_start may be
* after that again and should not fail in that case. The driver should * called immediately after that again and should not fail in that case.
* not call cfg80211_sched_scan_stopped() for a requested stop (when this * The driver should not call cfg80211_sched_scan_stopped() for a requested
* method returns 0.) * stop (when this method returns 0).
* *
* @mgmt_frame_register: Notify driver that a management frame type was * @mgmt_frame_register: Notify driver that a management frame type was
* registered. The callback is allowed to sleep. * registered. The callback is allowed to sleep.
...@@ -3076,7 +3076,8 @@ struct cfg80211_ops { ...@@ -3076,7 +3076,8 @@ struct cfg80211_ops {
int (*sched_scan_start)(struct wiphy *wiphy, int (*sched_scan_start)(struct wiphy *wiphy,
struct net_device *dev, struct net_device *dev,
struct cfg80211_sched_scan_request *request); struct cfg80211_sched_scan_request *request);
int (*sched_scan_stop)(struct wiphy *wiphy, struct net_device *dev); int (*sched_scan_stop)(struct wiphy *wiphy, struct net_device *dev,
u64 reqid);
int (*set_rekey_data)(struct wiphy *wiphy, struct net_device *dev, int (*set_rekey_data)(struct wiphy *wiphy, struct net_device *dev,
struct cfg80211_gtk_rekey_data *data); struct cfg80211_gtk_rekey_data *data);
......
...@@ -2242,7 +2242,8 @@ ieee80211_sched_scan_start(struct wiphy *wiphy, ...@@ -2242,7 +2242,8 @@ ieee80211_sched_scan_start(struct wiphy *wiphy,
} }
static int static int
ieee80211_sched_scan_stop(struct wiphy *wiphy, struct net_device *dev) ieee80211_sched_scan_stop(struct wiphy *wiphy, struct net_device *dev,
u64 reqid)
{ {
struct ieee80211_local *local = wiphy_priv(wiphy); struct ieee80211_local *local = wiphy_priv(wiphy);
......
...@@ -820,11 +820,11 @@ rdev_sched_scan_start(struct cfg80211_registered_device *rdev, ...@@ -820,11 +820,11 @@ rdev_sched_scan_start(struct cfg80211_registered_device *rdev,
} }
static inline int rdev_sched_scan_stop(struct cfg80211_registered_device *rdev, static inline int rdev_sched_scan_stop(struct cfg80211_registered_device *rdev,
struct net_device *dev) struct net_device *dev, u64 reqid)
{ {
int ret; int ret;
trace_rdev_sched_scan_stop(&rdev->wiphy, dev); trace_rdev_sched_scan_stop(&rdev->wiphy, dev, reqid);
ret = rdev->ops->sched_scan_stop(&rdev->wiphy, dev); ret = rdev->ops->sched_scan_stop(&rdev->wiphy, dev, reqid);
trace_rdev_return_int(&rdev->wiphy, ret); trace_rdev_return_int(&rdev->wiphy, ret);
return ret; return ret;
} }
......
...@@ -436,7 +436,7 @@ int cfg80211_stop_sched_scan_req(struct cfg80211_registered_device *rdev, ...@@ -436,7 +436,7 @@ int cfg80211_stop_sched_scan_req(struct cfg80211_registered_device *rdev,
ASSERT_RTNL(); ASSERT_RTNL();
if (!driver_initiated) { if (!driver_initiated) {
int err = rdev_sched_scan_stop(rdev, req->dev); int err = rdev_sched_scan_stop(rdev, req->dev, req->reqid);
if (err) if (err)
return err; return err;
} }
......
...@@ -576,11 +576,6 @@ DEFINE_EVENT(wiphy_netdev_evt, rdev_stop_ap, ...@@ -576,11 +576,6 @@ DEFINE_EVENT(wiphy_netdev_evt, rdev_stop_ap,
TP_ARGS(wiphy, netdev) TP_ARGS(wiphy, netdev)
); );
DEFINE_EVENT(wiphy_netdev_evt, rdev_sched_scan_stop,
TP_PROTO(struct wiphy *wiphy, struct net_device *netdev),
TP_ARGS(wiphy, netdev)
);
DEFINE_EVENT(wiphy_netdev_evt, rdev_set_rekey_data, DEFINE_EVENT(wiphy_netdev_evt, rdev_set_rekey_data,
TP_PROTO(struct wiphy *wiphy, struct net_device *netdev), TP_PROTO(struct wiphy *wiphy, struct net_device *netdev),
TP_ARGS(wiphy, netdev) TP_ARGS(wiphy, netdev)
...@@ -1632,6 +1627,11 @@ DEFINE_EVENT(wiphy_netdev_id_evt, rdev_sched_scan_start, ...@@ -1632,6 +1627,11 @@ DEFINE_EVENT(wiphy_netdev_id_evt, rdev_sched_scan_start,
TP_ARGS(wiphy, netdev, id) TP_ARGS(wiphy, netdev, id)
); );
DEFINE_EVENT(wiphy_netdev_id_evt, rdev_sched_scan_stop,
TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u64 id),
TP_ARGS(wiphy, netdev, id)
);
TRACE_EVENT(rdev_tdls_mgmt, TRACE_EVENT(rdev_tdls_mgmt,
TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, TP_PROTO(struct wiphy *wiphy, struct net_device *netdev,
u8 *peer, u8 action_code, u8 dialog_token, u8 *peer, u8 action_code, u8 dialog_token,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment