Commit 9ecd051e authored by Eyal Shapira's avatar Eyal Shapira Committed by Emmanuel Grumbach
Browse files

iwlwifi: mvm: disable tx aggregation on low latency vifs



Aggregations hit latency so disable it by default on
low latency vifs for now. Enable control over this behavior and
allow control over the max frames in an AMPDU in low latency
vifs via debugfs.

Signed-off-by: default avatarEyal Shapira <eyalx.shapira@intel.com>
Reviewed-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
parent bdd54839
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1447,6 +1447,10 @@ int iwl_mvm_dbgfs_register(struct iwl_mvm *mvm, struct dentry *dbgfs_dir)
		goto err;
#endif

	if (!debugfs_create_u8("low_latency_agg_frame_limit", S_IRUSR | S_IWUSR,
			       mvm->debugfs_dir,
			       &mvm->low_latency_agg_frame_limit))
		goto err;
	if (!debugfs_create_u8("ps_disabled", S_IRUSR,
			       mvm->debugfs_dir, &mvm->ps_disabled))
		goto err;
+2 −0
Original line number Diff line number Diff line
@@ -727,6 +727,8 @@ struct iwl_mvm {

	/* system time of last beacon (for AP/GO interface) */
	u32 ap_last_beacon_gp2;

	u8 low_latency_agg_frame_limit;
};

/* Extract MVM priv from op_mode and _hw */
+1 −0
Original line number Diff line number Diff line
@@ -415,6 +415,7 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,
		mvm->first_agg_queue = 12;
	}
	mvm->sf_state = SF_UNINIT;
	mvm->low_latency_agg_frame_limit = 1;

	mutex_init(&mvm->mutex);
	mutex_init(&mvm->d0i3_suspend_mutex);
+7 −1
Original line number Diff line number Diff line
@@ -2855,9 +2855,15 @@ static void rs_fill_lq_cmd(struct iwl_mvm *mvm,
	 * Tx Fifo so that it can start a transaction in the same TxOP. This
	 * basically allows the firmware to send bursts.
	 */
	if (iwl_mvm_vif_low_latency(mvmvif))
	if (iwl_mvm_vif_low_latency(mvmvif)) {
		lq_cmd->agg_frame_cnt_limit--;

		if (mvm->low_latency_agg_frame_limit)
			lq_cmd->agg_frame_cnt_limit =
				min(lq_cmd->agg_frame_cnt_limit,
				    mvm->low_latency_agg_frame_limit);
	}

	if (mvmsta->vif->p2p)
		lq_cmd->flags |= LQ_FLAG_USE_RTS_MSK;