Zhu Yi | 1 Jul 03:20
Picon
Favicon

[PATCH-2.6.26 00/2] iwlwifi driver patches for 2.6.26

The below two patches are already in wireless-next-2.6. I think they
should be merged into 2.6.26 tree as well.

[PATCH-2.6.26 1/2] iwlwifi: fix incorrect 5GHz rates reported in monitor mode
[PATCH-2.6.26 2/2] iwlwifi: drop skb silently for Tx request in monitor mode

Thanks,
-yi
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@...
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Zhu Yi | 1 Jul 03:20
Picon
Favicon

[PATCH-2.6.26 2/2] iwlwifi: drop skb silently for Tx request in monitor mode

This patch fixes the problem to keep mac80211 resubmitting SKBs
when Tx request cannot be met in monitor mode.

Signed-off-by: Zhu Yi <yi.zhu@...>
---
 drivers/net/wireless/iwlwifi/iwl3945-base.c |    3 ++-
 drivers/net/wireless/iwlwifi/iwl4965-base.c |    3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 13925b6..2c7f054 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -6684,7 +6684,8 @@ static int iwl3945_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb,

 	if (priv->iw_mode == IEEE80211_IF_TYPE_MNTR) {
 		IWL_DEBUG_MAC80211("leave - monitor\n");
-		return -1;
+		dev_kfree_skb_any(skb);
+		return 0;
 	}

 	IWL_DEBUG_TX("dev->xmit(%d bytes) at rate 0x%02x\n", skb->len,
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c
index 883b42f..101eb56 100644
--- a/drivers/net/wireless/iwlwifi/iwl4965-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c
@@ -6234,7 +6234,8 @@ static int iwl4965_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb,

 	if (priv->iw_mode == IEEE80211_IF_TYPE_MNTR) {
(Continue reading)

Zhu Yi | 1 Jul 03:20
Picon
Favicon

[PATCH-2.6.26 1/2] iwlwifi: fix incorrect 5GHz rates reported in monitor mode

From: Rick Farrington <rickdic@...>

This patch fixes the rates reported in monitor mode operation
(Wireshark) for iwlwifi.

Previously, packets with rates of 6M..24M would be reported
incorrectly and packets with rates of 36M..54M would not passed
up the stack.

Signed-off-by: Rick Farrington <rickdic@...>
Signed-off-by: Zhu Yi <yi.zhu@...>
---
 drivers/net/wireless/iwlwifi/iwl-3945.c |    6 +++++-
 drivers/net/wireless/iwlwifi/iwl-4965.c |    6 +++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c
index 62a3d8f..f5387a7 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945.c
@@ -588,8 +588,12 @@ static void iwl3945_add_radiotap(struct iwl3945_priv *priv,

 	if (rate == -1)
 		iwl3945_rt->rt_rate = 0;
-	else
+	else {
+		if (stats->band == IEEE80211_BAND_5GHZ)
+			rate += IWL_FIRST_OFDM_RATE;
+
 		iwl3945_rt->rt_rate = iwl3945_rates[rate].ieee;
(Continue reading)

Tomas Winkler | 1 Jul 09:44
Picon
Favicon

[PATCH 1/1] mac80211: fix warning: unused variable ifsta

This patch fixes warning unused variable ifsta
when compiling without CONFIG_MAC80211_VERBOSE_DEBUG

Signed-off-by: Tomas Winkler <tomas.winkler@...>
---
 net/mac80211/mlme.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 4fc843e..283e55f 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -366,8 +366,10 @@ static u32 ieee80211_handle_protect_preamb(struct ieee80211_sub_if_data *sdata,
 					   bool use_short_preamble)
 {
 	struct ieee80211_bss_conf *bss_conf = &sdata->bss_conf;
+#ifdef CONFIG_MAC80211_VERBOSE_DEBUG
 	struct ieee80211_if_sta *ifsta = &sdata->u.sta;
 	DECLARE_MAC_BUF(mac);
+#endif
 	u32 changed = 0;

 	if (use_protection != bss_conf->use_cts_prot) {
--

-- 
1.5.4.1

---------------------------------------------------------------------
Intel Israel (74) Limited

This e-mail and any attachments may contain confidential material for
(Continue reading)

Tomas Winkler | 1 Jul 09:44
Picon
Favicon

[PATCH 2/2] iwlwifi: request Tx of bar if necessary

From: Ron Rindjunsky <ron.rindjunsky@...>

This patch sets the block ack request flag if needed

Signed-off-by: Ron Rindjunsky <ron.rindjunsky@...>
Signed-off-by: Tomas Winkler <tomas.winkler@...>
---
 drivers/net/wireless/iwlwifi/iwl-4965.c |    6 +++---
 drivers/net/wireless/iwlwifi/iwl-5000.c |    6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c
index 8c93f8d..04365b3 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -2285,9 +2285,9 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,

 		iwl4965_tx_status_reply_tx(priv, agg, tx_resp, txq_id, index);

-		if ((tx_resp->frame_count == 1) && !iwl_is_tx_success(status)) {
-			/* TODO: send BAR */
-		}
+		/* check if BAR is needed */
+		if ((tx_resp->frame_count == 1) && !iwl_is_tx_success(status))
+			info->flags |= IEEE80211_TX_STAT_AMPDU_NO_BACK;

 		if (txq->q.read_ptr != (scd_ssn & 0xff)) {
 			int freed, ampdu_q;
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index 7cc73e9..717db0d 100644
(Continue reading)

Tomas Winkler | 1 Jul 09:44
Picon
Favicon

[PATCH 1/1] iwlwifi: fix error path of iwl_rfkill_init

This patch cleans rfkill error path. The problem was result of removing
the input device

Signed-off-by: Tomas Winkler <tomas.winkler@...>
---
 drivers/net/wireless/iwlwifi/iwl-rfkill.c |    8 ++------
 1 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-rfkill.c b/drivers/net/wireless/iwlwifi/iwl-rfkill.c
index aa9f31e..eebaf43 100644
--- a/drivers/net/wireless/iwlwifi/iwl-rfkill.c
+++ b/drivers/net/wireless/iwlwifi/iwl-rfkill.c
@@ -101,17 +101,13 @@ int iwl_rfkill_init(struct iwl_priv *priv)
 	ret = rfkill_register(priv->rfkill_mngr.rfkill);
 	if (ret) {
 		IWL_ERROR("Unable to register rfkill: %d\n", ret);
-		goto unregister_rfkill;
+		goto free_rfkill;
 	}

 	IWL_DEBUG_RF_KILL("RFKILL initialization complete.\n");
 	return ret;

-unregister_rfkill:
-	rfkill_unregister(priv->rfkill_mngr.rfkill);
-	priv->rfkill_mngr.rfkill = NULL;
Tomas Winkler | 1 Jul 09:44
Picon
Favicon

[PATCH 1/2] mac80211: add bar capability

From: Ron Rindjunsky <ron.rindjunsky@...>

This patch adds block ack request capability

Signed-off-by: Ester Kummer <ester.kummer@...>
Signed-off-by: Tomas Winkler <tomas.winkler@...>
Signed-off-by: Ron Rindjunsky <ron.rindjunsky@...>
---
 include/linux/ieee80211.h  |    4 ++++
 include/net/mac80211.h     |    3 +++
 net/mac80211/ieee80211_i.h |    1 +
 net/mac80211/main.c        |   21 +++++++++++++++++++--
 net/mac80211/mlme.c        |   31 +++++++++++++++++++++++++++++++
 5 files changed, 58 insertions(+), 2 deletions(-)

diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h
index cffd6d0..aa603c3 100644
--- a/include/linux/ieee80211.h
+++ b/include/linux/ieee80211.h
@@ -658,6 +658,10 @@ struct ieee80211_bar {
 	__le16 start_seq_num;
 } __attribute__((packed));

+/* 802.11 BAR control masks */
+#define IEEE80211_BAR_CTRL_ACK_POLICY_NORMAL     0x0000
+#define IEEE80211_BAR_CTRL_CBMTID_COMPRESSED_BA  0x0004
+
 /**
  * struct ieee80211_ht_cap - HT capabilities
  *
(Continue reading)

Johannes Berg | 1 Jul 10:03
Favicon

Re: [PATCH 1/2] mac80211: add bar capability

Can you capitalise BAR in the patch subjects please? I think of an
actual bar when reading that :)

> --- a/include/net/mac80211.h
> +++ b/include/net/mac80211.h
> @@ -235,6 +235,8 @@ struct ieee80211_bss_conf {
>   * @IEEE80211_TX_STAT_ACK: Frame was acknowledged
>   * @IEEE80211_TX_STAT_AMPDU: The frame was aggregated, so status
>   * 	is for the whole aggregation.
> + * @IEEE80211_TX_STAT_AMPDU_NO_BACK: no block ack was returned,
> + * 	so consider using block ack request (BAR).

This flag I don't understand. When does the driver set this? And what
does mac80211 do to "consider", it seems to always just try to set up a
block-ack session.

I'd still loke to see a "HT operation" document that describes how all
this works together so other people can write HT capable drivers :)

> +	bar_control |= (u16)IEEE80211_BAR_CTRL_ACK_POLICY_NORMAL;

??

> +	bar_control |= (u16)IEEE80211_BAR_CTRL_CBMTID_COMPRESSED_BA;
> +	bar_control |= (u16)(tid << 12);
> +	bar->control = cpu_to_le16(bar_control);
> +	bar->start_seq_num = cpu_to_le16(ssn);
> +
> +	/* must be sent through voice AC */
> +	skb->priority = 3;
(Continue reading)

Johannes Berg | 1 Jul 10:04
Favicon

Re: [PATCH 1/1] mac80211: fix warning: unused variable ifsta

On Tue, 2008-07-01 at 10:44 +0300, Tomas Winkler wrote:
> This patch fixes warning unused variable ifsta
> when compiling without CONFIG_MAC80211_VERBOSE_DEBUG

Thanks.

> Signed-off-by: Tomas Winkler <tomas.winkler@...>
Acked-by: Johannes Berg <johannes@...>

> ---
>  net/mac80211/mlme.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
> 
> diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
> index 4fc843e..283e55f 100644
> --- a/net/mac80211/mlme.c
> +++ b/net/mac80211/mlme.c
> @@ -366,8 +366,10 @@ static u32 ieee80211_handle_protect_preamb(struct ieee80211_sub_if_data *sdata,
>  					   bool use_short_preamble)
>  {
>  	struct ieee80211_bss_conf *bss_conf = &sdata->bss_conf;
> +#ifdef CONFIG_MAC80211_VERBOSE_DEBUG
>  	struct ieee80211_if_sta *ifsta = &sdata->u.sta;
>  	DECLARE_MAC_BUF(mac);
> +#endif
>  	u32 changed = 0;
>  
>  	if (use_protection != bss_conf->use_cts_prot) {
Tomas Winkler | 1 Jul 10:30
Picon

Re: [PATCH 1/2] mac80211: add bar capability

On Tue, Jul 1, 2008 at 11:03 AM, Johannes Berg
<johannes@...> wrote:
> Can you capitalise BAR in the patch subjects please? I think of an
> actual bar when reading that :)
>
>> --- a/include/net/mac80211.h
>> +++ b/include/net/mac80211.h
>> @@ -235,6 +235,8 @@ struct ieee80211_bss_conf {
>>   * @IEEE80211_TX_STAT_ACK: Frame was acknowledged
>>   * @IEEE80211_TX_STAT_AMPDU: The frame was aggregated, so status
>>   *   is for the whole aggregation.
>> + * @IEEE80211_TX_STAT_AMPDU_NO_BACK: no block ack was returned,
>> + *   so consider using block ack request (BAR).
>
> This flag I don't understand. When does the driver set this? And what
> does mac80211 do to "consider", it seems to always just try to set up a
> block-ack session.

This is required during BA session. BAR solicited Block ACK for the SN
and on specified in BAR. Driver will send it if it doesn't hear BACK.
Iwlwifi uses this BAR just says to the recipient that we were not able
to transmit the frame and we won't retransmit. This immediately shifts
recipient reordering buffer not waiting for high SN numbers of the
next traffic otherwise there will be visible deep in the throughput as
packets are not released to upper layer till all are received.

>
> I'd still loke to see a "HT operation" document that describes how all
> this works together so other people can write HT capable drivers :)

(Continue reading)


Gmane