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

Commit 0b716445 authored by John W. Linville's avatar John W. Linville
Browse files

Merge branch 'master' of...

parents 303c07db b53cf458
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -107,8 +107,8 @@
!Finclude/net/cfg80211.h key_params
!Finclude/net/cfg80211.h survey_info_flags
!Finclude/net/cfg80211.h survey_info
!Finclude/net/cfg80211.h beacon_parameters
!Finclude/net/cfg80211.h plink_actions
!Finclude/net/cfg80211.h cfg80211_beacon_data
!Finclude/net/cfg80211.h cfg80211_ap_settings
!Finclude/net/cfg80211.h station_parameters
!Finclude/net/cfg80211.h station_info_flags
!Finclude/net/cfg80211.h rate_info_flags
+1 −1
Original line number Diff line number Diff line
@@ -376,7 +376,7 @@ int ap_control_add_mac(struct mac_restrictions *mac_restrictions, u8 *mac)

	entry = kmalloc(sizeof(struct mac_entry), GFP_KERNEL);
	if (entry == NULL)
		return -1;
		return -ENOMEM;

	memcpy(entry->addr, mac, ETH_ALEN);

+1 −0
Original line number Diff line number Diff line
@@ -1403,6 +1403,7 @@ enum {

#define AGG_TX_STATUS_MSK	0x00000fff	/* bits 0:11 */
#define AGG_TX_TRY_MSK		0x0000f000	/* bits 12:15 */
#define AGG_TX_TRY_POS		12

#define AGG_TX_STATE_LAST_SENT_MSK  (AGG_TX_STATE_LAST_SENT_TTL_MSK | \
				     AGG_TX_STATE_LAST_SENT_TRY_CNT_MSK | \
+1 −1
Original line number Diff line number Diff line
@@ -471,8 +471,8 @@ static void iwl_advance_tt_handler(struct iwl_priv *priv, s32 temp, bool force)
					set_bit(STATUS_CT_KILL, &priv->status);
					iwl_perform_ct_kill_task(priv, true);
				} else {
					iwl_prepare_ct_kill_task(priv);
					tt->state = old_state;
					iwl_prepare_ct_kill_task(priv);
				}
			} else if (old_state == IWL_TI_CT_KILL &&
				  tt->state != IWL_TI_CT_KILL) {
+36 −15
Original line number Diff line number Diff line
@@ -908,6 +908,12 @@ static void iwlagn_count_agg_tx_err_status(struct iwl_priv *priv, u16 status)
	}
}

static inline u32 iwlagn_get_scd_ssn(struct iwlagn_tx_resp *tx_resp)
{
	return le32_to_cpup((__le32 *)&tx_resp->status +
			    tx_resp->frame_count) & MAX_SN;
}

static void iwl_rx_reply_tx_agg(struct iwl_priv *priv,
				struct iwlagn_tx_resp *tx_resp)
{
@@ -942,9 +948,15 @@ static void iwl_rx_reply_tx_agg(struct iwl_priv *priv,
	if (tx_resp->frame_count == 1)
		return;

	IWL_DEBUG_TX_REPLY(priv, "TXQ %d initial_rate 0x%x ssn %d frm_cnt %d\n",
			   agg->txq_id,
			   le32_to_cpu(tx_resp->rate_n_flags),
			   iwlagn_get_scd_ssn(tx_resp), tx_resp->frame_count);

	/* Construct bit-map of pending frames within Tx window */
	for (i = 0; i < tx_resp->frame_count; i++) {
		u16 fstatus = le16_to_cpu(frame_status[i].status);
		u8 retry_cnt = (fstatus & AGG_TX_TRY_MSK) >> AGG_TX_TRY_POS;

		if (status & AGG_TX_STATUS_MSK)
			iwlagn_count_agg_tx_err_status(priv, fstatus);
@@ -952,6 +964,14 @@ static void iwl_rx_reply_tx_agg(struct iwl_priv *priv,
		if (status & (AGG_TX_STATE_FEW_BYTES_MSK |
			      AGG_TX_STATE_ABORT_MSK))
			continue;

		if (status & AGG_TX_STATUS_MSK || retry_cnt > 1)
			IWL_DEBUG_TX_REPLY(priv,
					   "%d: status %s (0x%04x), try-count (0x%01x)\n",
					   i,
					   iwl_get_agg_tx_fail_reason(fstatus),
					   fstatus & AGG_TX_STATUS_MSK,
					   retry_cnt);
	}
}

@@ -982,12 +1002,6 @@ const char *iwl_get_agg_tx_fail_reason(u16 status)
}
#endif /* CONFIG_IWLWIFI_DEBUG */

static inline u32 iwlagn_get_scd_ssn(struct iwlagn_tx_resp *tx_resp)
{
	return le32_to_cpup((__le32 *)&tx_resp->status +
			    tx_resp->frame_count) & MAX_SN;
}

static void iwlagn_count_tx_err_status(struct iwl_priv *priv, u16 status)
{
	status &= TX_STATUS_MSK;
@@ -1119,8 +1133,14 @@ int iwlagn_rx_reply_tx(struct iwl_priv *priv, struct iwl_rx_cmd_buffer *rxb,

	spin_lock_bh(&priv->sta_lock);

	if (is_agg)
	if (is_agg) {
		WARN_ON_ONCE(sta_id >= IWLAGN_STATION_COUNT ||
			     tid >= IWL_MAX_TID_COUNT);
		if (txq_id != priv->tid_data[sta_id][tid].agg.txq_id)
			IWL_ERR(priv, "txq_id mismatch: %d %d\n", txq_id,
				priv->tid_data[sta_id][tid].agg.txq_id);
		iwl_rx_reply_tx_agg(priv, tx_resp);
	}

	__skb_queue_head_init(&skbs);

@@ -1224,7 +1244,6 @@ int iwlagn_rx_reply_tx(struct iwl_priv *priv, struct iwl_rx_cmd_buffer *rxb,
		 */
		if (is_offchannel_skb && freed != 1)
			IWL_ERR(priv, "OFFCHANNEL SKB freed %d\n", freed);
	}

		IWL_DEBUG_TX_REPLY(priv, "TXQ %d status %s (0x%08x)\n", txq_id,
				   iwl_get_tx_fail_reason(status), status);
@@ -1232,8 +1251,10 @@ int iwlagn_rx_reply_tx(struct iwl_priv *priv, struct iwl_rx_cmd_buffer *rxb,
		IWL_DEBUG_TX_REPLY(priv,
				   "\t\t\t\tinitial_rate 0x%x retries %d, idx=%d ssn=%d seq_ctl=0x%x\n",
				   le32_to_cpu(tx_resp->rate_n_flags),
			   tx_resp->failure_frame, SEQ_TO_INDEX(sequence), ssn,
				   tx_resp->failure_frame,
				   SEQ_TO_INDEX(sequence), ssn,
				   le16_to_cpu(tx_resp->seq_ctl));
	}

	iwl_check_abort_status(priv, tx_resp->frame_count, status);
	spin_unlock_bh(&priv->sta_lock);
Loading