Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 85e2fd95 authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "cfg80211: fix CAC_STARTED event handling"

parents ddbcdfe6 575f1369
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -5201,6 +5201,8 @@ enum nl80211_smps_mode {
 *	non-operating channel is expired and no longer valid. New CAC must
 *	non-operating channel is expired and no longer valid. New CAC must
 *	be done on this channel before starting the operation. This is not
 *	be done on this channel before starting the operation. This is not
 *	applicable for ETSI dfs domain where pre-CAC is valid for ever.
 *	applicable for ETSI dfs domain where pre-CAC is valid for ever.
 * @NL80211_RADAR_CAC_STARTED: Channel Availability Check has been started,
 *	should be generated by HW if NL80211_EXT_FEATURE_DFS_OFFLOAD is enabled.
 */
 */
enum nl80211_radar_event {
enum nl80211_radar_event {
	NL80211_RADAR_DETECTED,
	NL80211_RADAR_DETECTED,
@@ -5208,6 +5210,7 @@ enum nl80211_radar_event {
	NL80211_RADAR_CAC_ABORTED,
	NL80211_RADAR_CAC_ABORTED,
	NL80211_RADAR_NOP_FINISHED,
	NL80211_RADAR_NOP_FINISHED,
	NL80211_RADAR_PRE_CAC_EXPIRED,
	NL80211_RADAR_PRE_CAC_EXPIRED,
	NL80211_RADAR_CAC_STARTED,
};
};


/**
/**
+6 −3
Original line number Original line Diff line number Diff line
@@ -872,7 +872,7 @@ void cfg80211_cac_event(struct net_device *netdev,


	trace_cfg80211_cac_event(netdev, event);
	trace_cfg80211_cac_event(netdev, event);


	if (WARN_ON(!wdev->cac_started))
	if (WARN_ON(!wdev->cac_started && event != NL80211_RADAR_CAC_STARTED))
		return;
		return;


	if (WARN_ON(!wdev->chandef.chan))
	if (WARN_ON(!wdev->chandef.chan))
@@ -888,14 +888,17 @@ void cfg80211_cac_event(struct net_device *netdev,
		       sizeof(struct cfg80211_chan_def));
		       sizeof(struct cfg80211_chan_def));
		queue_work(cfg80211_wq, &rdev->propagate_cac_done_wk);
		queue_work(cfg80211_wq, &rdev->propagate_cac_done_wk);
		cfg80211_sched_dfs_chan_update(rdev);
		cfg80211_sched_dfs_chan_update(rdev);
		break;
		/* fall through */
	case NL80211_RADAR_CAC_ABORTED:
	case NL80211_RADAR_CAC_ABORTED:
		wdev->cac_started = false;
		break;
	case NL80211_RADAR_CAC_STARTED:
		wdev->cac_started = true;
		break;
		break;
	default:
	default:
		WARN_ON(1);
		WARN_ON(1);
		return;
		return;
	}
	}
	wdev->cac_started = false;


	nl80211_radar_notify(rdev, chandef, event, netdev, gfp);
	nl80211_radar_notify(rdev, chandef, event, netdev, gfp);
}
}