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

Commit 17d6e557 authored by Stanislaw Gruszka's avatar Stanislaw Gruszka
Browse files

iwlegacy: remove for_each_context



We do not support many contexts.

Signed-off-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
parent 3b98c7f4
Loading
Loading
Loading
Loading
+1 −10
Original line number Diff line number Diff line
@@ -615,16 +615,7 @@ static int il4965_update_bcast_station(struct il_priv *il,

int il4965_update_bcast_stations(struct il_priv *il)
{
	struct il_rxon_context *ctx;
	int ret = 0;

	for_each_context(il, ctx) {
		ret = il4965_update_bcast_station(il, ctx);
		if (ret)
			break;
	}

	return ret;
	return il4965_update_bcast_station(il, &il->ctx);
}

/**
+77 −127
Original line number Diff line number Diff line
@@ -646,10 +646,7 @@ static void _il_set_rxon_ht(struct il_priv *il,

void il_set_rxon_ht(struct il_priv *il, struct il_ht_config *ht_conf)
{
	struct il_rxon_context *ctx;

	for_each_context(il, ctx)
		_il_set_rxon_ht(il, ht_conf, ctx);
	_il_set_rxon_ht(il, ht_conf, &il->ctx);
}
EXPORT_SYMBOL(il_set_rxon_ht);

@@ -661,7 +658,6 @@ u8 il_get_single_channel_number(struct il_priv *il,
	int i;
	u8 channel = 0;
	u8 min, max;
	struct il_rxon_context *ctx;

	if (band == IEEE80211_BAND_5GHZ) {
		min = 14;
@@ -672,19 +668,10 @@ u8 il_get_single_channel_number(struct il_priv *il,
	}

	for (i = min; i < max; i++) {
		bool busy = false;

		for_each_context(il, ctx) {
			busy = il->channel_info[i].channel ==
				le16_to_cpu(ctx->staging.channel);
			if (busy)
				break;
		}

		if (busy)
		channel = il->channel_info[i].channel;
		if (channel == le16_to_cpu(il->ctx.staging.channel))
			continue;

		channel = il->channel_info[i].channel;
		ch_info = il_get_channel_info(il, band, channel);
		if (il_is_channel_valid(ch_info))
			break;
@@ -822,7 +809,6 @@ void il_set_rate(struct il_priv *il)
{
	const struct ieee80211_supported_band *hw = NULL;
	struct ieee80211_rate *rate;
	struct il_rxon_context *ctx;
	int i;

	hw = il_get_hw_mode(il, il->band);
@@ -841,14 +827,12 @@ void il_set_rate(struct il_priv *il)

	D_RATE("Set active_rate = %0x\n", il->active_rate);

	for_each_context(il, ctx) {
		ctx->staging.cck_basic_rates =
	il->ctx.staging.cck_basic_rates =
		    (IL_CCK_BASIC_RATES_MASK >> IL_FIRST_CCK_RATE) & 0xF;

		ctx->staging.ofdm_basic_rates =
	il->ctx.staging.ofdm_basic_rates =
		   (IL_OFDM_BASIC_RATES_MASK >> IL_FIRST_OFDM_RATE) & 0xFF;
}
}
EXPORT_SYMBOL(il_set_rate);

void il_chswitch_done(struct il_priv *il, bool is_success)
@@ -1254,7 +1238,6 @@ int il_mac_conf_tx(struct ieee80211_hw *hw,
			   const struct ieee80211_tx_queue_params *params)
{
	struct il_priv *il = hw->priv;
	struct il_rxon_context *ctx;
	unsigned long flags;
	int q;

@@ -1274,17 +1257,15 @@ int il_mac_conf_tx(struct ieee80211_hw *hw,

	spin_lock_irqsave(&il->lock, flags);

	for_each_context(il, ctx) {
		ctx->qos_data.def_qos_parm.ac[q].cw_min =
	il->ctx.qos_data.def_qos_parm.ac[q].cw_min =
			cpu_to_le16(params->cw_min);
		ctx->qos_data.def_qos_parm.ac[q].cw_max =
	il->ctx.qos_data.def_qos_parm.ac[q].cw_max =
			cpu_to_le16(params->cw_max);
		ctx->qos_data.def_qos_parm.ac[q].aifsn = params->aifs;
		ctx->qos_data.def_qos_parm.ac[q].edca_txop =
	il->ctx.qos_data.def_qos_parm.ac[q].aifsn = params->aifs;
	il->ctx.qos_data.def_qos_parm.ac[q].edca_txop =
				cpu_to_le16((params->txop * 32));

		ctx->qos_data.def_qos_parm.ac[q].reserved1 = 0;
	}
	il->ctx.qos_data.def_qos_parm.ac[q].reserved1 = 0;

	spin_unlock_irqrestore(&il->lock, flags);

@@ -1344,8 +1325,8 @@ il_mac_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
{
	struct il_priv *il = hw->priv;
	struct il_vif_priv *vif_priv = (void *)vif->drv_priv;
	struct il_rxon_context *tmp, *ctx = NULL;
	int err;
	u32 modes;

	D_MAC80211("enter: type %d, addr %pM\n",
			   vif->type, vif->addr);
@@ -1358,42 +1339,29 @@ il_mac_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
		goto out;
	}

	for_each_context(il, tmp) {
		u32 possible_modes =
			tmp->interface_modes | tmp->exclusive_interface_modes;

		if (tmp->vif) {
			/* check if this busy context is exclusive */
			if (tmp->exclusive_interface_modes &
						BIT(tmp->vif->type)) {
	/* check if busy context is exclusive */
	if (il->ctx.vif &&
	    (il->ctx.exclusive_interface_modes & BIT(il->ctx.vif->type))) {
		err = -EINVAL;
		goto out;
	}
			continue;
		}

		if (!(possible_modes & BIT(vif->type)))
			continue;

		/* have maybe usable context w/o interface */
		ctx = tmp;
		break;
	}

	if (!ctx) {
	modes = il->ctx.interface_modes | il->ctx.exclusive_interface_modes;
	if (!(modes & BIT(vif->type))) {
		err = -EOPNOTSUPP;
		goto out;
	}

	vif_priv->ctx = ctx;
	ctx->vif = vif;

	err = il_setup_interface(il, ctx);
	if (!err)
		goto out;
	vif_priv->ctx = &il->ctx;
	il->ctx.vif = vif;

	ctx->vif = NULL;
	err = il_setup_interface(il, &il->ctx);
	if (err) {
		il->ctx.vif = NULL;
		il->iw_mode = NL80211_IFTYPE_STATION;
	}

 out:
	mutex_unlock(&il->mutex);

@@ -1764,8 +1732,7 @@ il_mac_change_interface(struct ieee80211_hw *hw,
{
	struct il_priv *il = hw->priv;
	struct il_rxon_context *ctx = il_rxon_ctx_from_vif(vif);
	struct il_rxon_context *tmp;
	u32 interface_modes;
	u32 modes;
	int err;

	newtype = ieee80211_iftype_p2p(newtype, newp2p);
@@ -1781,29 +1748,17 @@ il_mac_change_interface(struct ieee80211_hw *hw,
		goto out;
	}

	interface_modes = ctx->interface_modes | ctx->exclusive_interface_modes;

	if (!(interface_modes & BIT(newtype))) {
		err = -EBUSY;
	modes = ctx->interface_modes | ctx->exclusive_interface_modes;
	if (!(modes & BIT(newtype))) {
		err = -EOPNOTSUPP;
		goto out;
	}

	if (ctx->exclusive_interface_modes & BIT(newtype)) {
		for_each_context(il, tmp) {
			if (ctx == tmp)
				continue;

			if (!tmp->vif)
				continue;

			/*
			 * The current mode switch would be exclusive, but
			 * another context is active ... refuse the switch.
			 */
			err = -EBUSY;
	if ((il->ctx.exclusive_interface_modes & BIT(il->ctx.vif->type)) ||
	    (il->ctx.exclusive_interface_modes & BIT(newtype))) {
		err = -EINVAL;
		goto out;
	}
	}

	/* success */
	il_teardown_interface(il, vif, true);
@@ -2064,7 +2019,7 @@ int il_mac_config(struct ieee80211_hw *hw, u32 changed)
	struct ieee80211_conf *conf = &hw->conf;
	struct ieee80211_channel *channel = conf->channel;
	struct il_ht_config *ht_conf = &il->current_ht_config;
	struct il_rxon_context *ctx;
	struct il_rxon_context *ctx = &il->ctx;
	unsigned long flags = 0;
	int ret = 0;
	u16 ch;
@@ -2097,14 +2052,14 @@ int il_mac_config(struct ieee80211_hw *hw, u32 changed)
		 * configured.
		 */
		if (il->cfg->ops->hcmd->set_rxon_chain)
			for_each_context(il, ctx)
				il->cfg->ops->hcmd->set_rxon_chain(il, ctx);
			il->cfg->ops->hcmd->set_rxon_chain(il, &il->ctx);
	}

	/* during scanning mac80211 will delay channel setting until
	 * scan finish with changed = 0
	 */
	if (!changed || (changed & IEEE80211_CONF_CHANGE_CHANNEL)) {

		if (scan_active)
			goto set_ch_out;

@@ -2125,7 +2080,6 @@ int il_mac_config(struct ieee80211_hw *hw, u32 changed)

		spin_lock_irqsave(&il->lock, flags);

		for_each_context(il, ctx) {
		/* Configure HT40 channels */
		if (ctx->ht.enabled != conf_is_ht(conf)) {
			ctx->ht.enabled = conf_is_ht(conf);
@@ -2166,7 +2120,6 @@ int il_mac_config(struct ieee80211_hw *hw, u32 changed)

		il_set_flags_for_band(il, ctx, channel->band,
				       ctx->vif);
		}

		spin_unlock_irqrestore(&il->lock, flags);

@@ -2203,15 +2156,12 @@ int il_mac_config(struct ieee80211_hw *hw, u32 changed)
	if (scan_active)
		goto out;

	for_each_context(il, ctx) {
	if (memcmp(&ctx->active, &ctx->staging, sizeof(ctx->staging)))
		il_commit_rxon(il, ctx);
	else
			D_INFO(
				"Not re-sending same RXON configuration.\n");
		D_INFO("Not re-sending same RXON configuration.\n");
	if (ht_changed)
		il_update_qos(il, ctx);
	}

out:
	D_MAC80211("leave\n");
+13 −15
Original line number Diff line number Diff line
@@ -599,12 +599,11 @@ il_dbgfs_qos_read(struct file *file, char __user *user_buf,
				       size_t count, loff_t *ppos)
{
	struct il_priv *il = file->private_data;
	struct il_rxon_context *ctx;
	struct il_rxon_context *ctx = &il->ctx;
	int pos = 0, i;
	char buf[256];
	const size_t bufsz = sizeof(buf);

	for_each_context(il, ctx) {
	pos += scnprintf(buf + pos, bufsz - pos, "context %d:\n",
			 ctx->ctxid);
	for (i = 0; i < AC_NUM; i++) {
@@ -617,8 +616,7 @@ il_dbgfs_qos_read(struct file *file, char __user *user_buf,
			ctx->qos_data.def_qos_parm.ac[i].aifsn,
			ctx->qos_data.def_qos_parm.ac[i].edca_txop);
	}
		pos += scnprintf(buf + pos, bufsz - pos, "\n");
	}

	return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
}

+8 −12
Original line number Diff line number Diff line
@@ -290,7 +290,9 @@ u16 il_get_passive_dwell_time(struct il_priv *il,
			       enum ieee80211_band band,
			       struct ieee80211_vif *vif)
{
	struct il_rxon_context *ctx;
	struct il_rxon_context *ctx = &il->ctx;
	u16 value;

	u16 passive = (band == IEEE80211_BAND_2GHZ) ?
	    IL_PASSIVE_DWELL_BASE + IL_PASSIVE_DWELL_TIME_24 :
	    IL_PASSIVE_DWELL_BASE + IL_PASSIVE_DWELL_TIME_52;
@@ -301,18 +303,12 @@ u16 il_get_passive_dwell_time(struct il_priv *il,
		 * dwell time to be 98% of the smallest beacon interval
		 * (minus 2 * channel tune time)
		 */
		for_each_context(il, ctx) {
			u16 value;

			if (!il_is_associated_ctx(ctx))
				continue;
		value = ctx->vif ? ctx->vif->bss_conf.beacon_int : 0;
		if (value > IL_PASSIVE_DWELL_BASE || !value)
			value = IL_PASSIVE_DWELL_BASE;
		value = (value * 98) / 100 - IL_CHANNEL_TUNE_TIME * 2;
		passive = min(value, passive);
	}
	}

	return passive;
}
+10 −12
Original line number Diff line number Diff line
@@ -84,7 +84,7 @@ int il_send_lq_cmd(struct il_priv *il,
static inline void il_clear_driver_stations(struct il_priv *il)
{
	unsigned long flags;
	struct il_rxon_context *ctx;
	struct il_rxon_context *ctx = &il->ctx;

	spin_lock_irqsave(&il->sta_lock, flags);
	memset(il->stations, 0, sizeof(il->stations));
@@ -92,7 +92,6 @@ static inline void il_clear_driver_stations(struct il_priv *il)

	il->ucode_key_table = 0;

	for_each_context(il, ctx) {
	/*
	 * Remove all key information that is not stored as part
	 * of station information since mac80211 may not have had
@@ -102,7 +101,6 @@ static inline void il_clear_driver_stations(struct il_priv *il)
	 */
	memset(ctx->wep_keys, 0, sizeof(ctx->wep_keys));
	ctx->key_mapping_keys = 0;
	}

	spin_unlock_irqrestore(&il->sta_lock, flags);
}
Loading