linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Guy, Wey-Yi" <wey-yi.w.guy@intel.com>
To: Johannes Berg <johannes@sipsolutions.net>
Cc: "linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>
Subject: Re: [RFC 2/2] iwlwifi: use maximum aggregation size
Date: Wed, 12 Jan 2011 08:23:19 -0800	[thread overview]
Message-ID: <1294849399.3591.34.camel@wwguy-huron> (raw)
In-Reply-To: <20110112121418.037714947@sipsolutions.net>

Hi Johannes,

On Wed, 2011-01-12 at 04:13 -0800, Johannes Berg wrote:
> From: Johannes Berg <johannes.berg@intel.com>
> 
> Use the values from the peer to set up the ucode
> for the right maximum number of subframes in an
> aggregate. Since the ucode only tracks this per
> station, use the minimum across all aggregation
> sessions with this peer.
> 
> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
> ---
>  drivers/net/wireless/iwlwifi/iwl-agn-rs.c |    5 +++-
>  drivers/net/wireless/iwlwifi/iwl-agn.c    |   32 +++++++++++++++++++++++++-----
>  drivers/net/wireless/iwlwifi/iwl-dev.h    |    1 
>  3 files changed, 32 insertions(+), 6 deletions(-)
> 
> --- wireless-testing.orig/drivers/net/wireless/iwlwifi/iwl-agn-rs.c	2011-01-12 13:08:22.000000000 +0100
> +++ wireless-testing/drivers/net/wireless/iwlwifi/iwl-agn-rs.c	2011-01-12 13:10:58.000000000 +0100
> @@ -2889,6 +2889,8 @@ static void rs_fill_link_cmd(struct iwl_
>  	u8 ant_toggle_cnt = 0;
>  	u8 use_ht_possible = 1;
>  	u8 valid_tx_ant = 0;
> +	struct iwl_station_priv *sta_priv =
> +		container_of(lq_sta, struct iwl_station_priv, lq_sta);
>  	struct iwl_link_quality_cmd *lq_cmd = &lq_sta->lq;
>  
>  	/* Override starting rate (index 0) if needed for debug purposes */
> @@ -3007,7 +3009,8 @@ static void rs_fill_link_cmd(struct iwl_
>  		repeat_rate--;
>  	}
>  
> -	lq_cmd->agg_params.agg_frame_cnt_limit = LINK_QUAL_AGG_FRAME_LIMIT_DEF;
> +	lq_cmd->agg_params.agg_frame_cnt_limit =
> +		sta_priv->max_agg_bufsize ?: LINK_QUAL_AGG_FRAME_LIMIT_DEF;

at this point, sta_priv->lq_sta.lq.agg_params.agg_frame_cnt_limit has
the right value, why not use it?

on the other hand, sta_priv->max_agg_bufsize ==
sta_priv->lq_sta.lq.agg_params.agg_frame_cnt_limit

why need both?


>  	lq_cmd->agg_params.agg_dis_start_th = LINK_QUAL_AGG_DISABLE_START_DEF;
>  
>  	lq_cmd->agg_params.agg_time_limit =
> --- wireless-testing.orig/drivers/net/wireless/iwlwifi/iwl-agn.c	2011-01-12 13:03:34.000000000 +0100
> +++ wireless-testing/drivers/net/wireless/iwlwifi/iwl-agn.c	2011-01-12 13:11:50.000000000 +0100
> @@ -3421,6 +3421,7 @@ int iwlagn_mac_ampdu_action(struct ieee8
>  {
>  	struct iwl_priv *priv = hw->priv;
>  	int ret = -EINVAL;
> +	struct iwl_station_priv *sta_priv = (void *) sta->drv_priv;
>  
>  	IWL_DEBUG_HT(priv, "A-MPDU action on addr %pM tid %d\n",
>  		     sta->addr, tid);
> @@ -3475,11 +3476,28 @@ int iwlagn_mac_ampdu_action(struct ieee8
>  		}
>  		break;
>  	case IEEE80211_AMPDU_TX_OPERATIONAL:
> +		/*
> +		 * If the limit is 0, then it wasn't initialised yet,
> +		 * use the default. We can do that since we take the
> +		 * minimum below, and we don't want to go above our
> +		 * default due to hardware restrictions.
> +		 */
> +		if (sta_priv->max_agg_bufsize == 0)
> +			sta_priv->max_agg_bufsize =
> +				LINK_QUAL_AGG_FRAME_LIMIT_DEF;
> +
> +		/*
> +		 * Even though in theory the peer could have different
> +		 * aggregation reorder buffer sizes for different sessions,
> +		 * our ucode doesn't allow for that and has a global limit
> +		 * for each station. Therefore, use the minimum of all the
> +		 * aggregation sessions and our default value.
> +		 */
> +		sta_priv->max_agg_bufsize =
> +			min(sta_priv->max_agg_bufsize, buf_size);
> +
not sure where the "bus_size" come from?

>  		if (priv->cfg->ht_params &&
>  		    priv->cfg->ht_params->use_rts_for_aggregation) {
> -			struct iwl_station_priv *sta_priv =
> -				(void *) sta->drv_priv;
> -
>  			/*
>  			 * switch to RTS/CTS if it is the prefer protection
>  			 * method for HT traffic
> @@ -3487,9 +3505,13 @@ int iwlagn_mac_ampdu_action(struct ieee8
>  
>  			sta_priv->lq_sta.lq.general_params.flags |=
>  				LINK_QUAL_FLAGS_SET_STA_TLC_RTS_MSK;
> -			iwl_send_lq_cmd(priv, iwl_rxon_ctx_from_vif(vif),
> -					&sta_priv->lq_sta.lq, CMD_ASYNC, false);
>  		}
> +
> +		sta_priv->lq_sta.lq.agg_params.agg_frame_cnt_limit =
> +			sta_priv->max_agg_bufsize;
> +
> +		iwl_send_lq_cmd(priv, iwl_rxon_ctx_from_vif(vif),
> +				&sta_priv->lq_sta.lq, CMD_ASYNC, false);
>  		ret = 0;
>  		break;
>  	}
> --- wireless-testing.orig/drivers/net/wireless/iwlwifi/iwl-dev.h	2011-01-12 13:03:12.000000000 +0100
> +++ wireless-testing/drivers/net/wireless/iwlwifi/iwl-dev.h	2011-01-12 13:03:31.000000000 +0100
> @@ -509,6 +509,7 @@ struct iwl_station_priv {
>  	atomic_t pending_frames;
>  	bool client;
>  	bool asleep;
> +	u8 max_agg_bufsize;
>  };
>  
>  /**
> 

Wey



  reply	other threads:[~2011-01-12 16:33 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-12 12:13 [RFC 0/2] fix aggregation buffer size limits Johannes Berg
2011-01-12 12:13 ` [RFC 1/2] mac80211: track receivers aggregation reorder buffer size Johannes Berg
2011-01-12 13:01   ` Sujith
2011-01-12 16:51   ` Guy, Wey-Yi
2011-01-12 12:13 ` [RFC 2/2] iwlwifi: use maximum aggregation size Johannes Berg
2011-01-12 16:23   ` Guy, Wey-Yi [this message]
2011-01-12 16:38     ` Johannes Berg
2011-01-12 16:46       ` Guy, Wey-Yi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1294849399.3591.34.camel@wwguy-huron \
    --to=wey-yi.w.guy@intel.com \
    --cc=johannes@sipsolutions.net \
    --cc=linux-wireless@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).