Thread (50 messages) 50 messages, 5 authors, 2012-03-15

Re: [RFC 6/9] mac80211: add ap channel switch command/event

flat view

From: Johannes Berg <johannes@sipsolutions.net>
Date: 2012-01-31 05:51:54

On 1/26/2012 4:38 AM, Victor Goldenshtein wrote:
New ieee80211_ap_process_chanswitch(), to handle a channel switch
request for AP/GO.

New 'post_switch_block_tx' parameter in 'ieee80211_channel_switch'
structure, which indicates whether transmission must be blocked after
the scheduled channel switch, it should be set if the target channel
is DFS channel.

New ieee80211_ap_ch_switch_complete_notify() which notifies upper
layers about channel switch complete event.
Shouldn't mac80211 have some non-offload implementation for this?
quoted hunk ↗ jump to hunk
@@ -841,12 +841,16 @@ struct ieee80211_conf {
   *	the driver passed into mac80211.
   * @block_tx: Indicates whether transmission must be blocked before the
   *	scheduled channel switch, as indicated by the AP.
+ * @post_switch_block_tx: Indicates whether transmission must be blocked after
+ *	the scheduled channel switch, this should be set if the target channel
+ *	is DFS channel.
Hmmm. This channel switch stuff here was really intended for client-side channel switching initially ... and it should quite possibly be a different mechanism?
quoted hunk ↗ jump to hunk
+static int ieee80211_ap_process_chanswitch(struct wiphy *wiphy,
+					   struct net_device *dev,
+					   u32 count, bool block_tx,
+					   bool post_switch_block_tx,
+					   u32 new_freq)
+{
+	struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
+	struct ieee80211_local *local = sdata->local;
+	struct ieee80211_channel *new_ch;
+	struct ieee80211_channel_switch ch_switch;
+
+	new_ch = ieee80211_get_channel(sdata->local->hw.wiphy, new_freq);
+	if (!new_ch || new_ch->flags&  IEEE80211_CHAN_DISABLED) {
+		wiphy_debug(local->hw.wiphy,
+			    "failed channel switch on freq: %d\n", new_freq);
+		return -EINVAL;
+	}
That code should obviously be in cfg80211.
quoted hunk ↗ jump to hunk
@@ -2793,4 +2826,5 @@ struct cfg80211_ops mac80211_config_ops = {
  	.set_noack_map = ieee80211_set_noack_map,
  	.dfs_start_radar_detection = ieee80211_dfs_start_radar_detection,
  	.dfs_en_tx = ieee80211_dfs_en_tx,
+	.ap_channel_switch = ieee80211_ap_process_chanswitch,
why deviate from the ieee80211_ + callback_name scheme?

johannes
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help