* [PATCH 3/5] iwlwifi: Fix handling of retry count of NO_ACK frames in iwl-{3945|agn}-rs
@ 2009-04-23 17:36 Gábor Stefanik
2009-04-23 17:42 ` Johannes Berg
0 siblings, 1 reply; 3+ messages in thread
From: Gábor Stefanik @ 2009-04-23 17:36 UTC (permalink / raw)
To: John Linville, Zhu Yi, Tomas Winkler, Tomas Winkler
Cc: linux-wireless, Johannes Berg, Felix Fietkau, Nick Kossifidis,
Luis R. Rodriguez, Luis R. Rodriguez
[-- Attachment #1: Type: text/plain, Size: 3542 bytes --]
Make PID check for IEEE80211_TX_CTL_NO_ACK instead of
is_multicast_ether_addr when determining whether to use the lowest
rate, and set the retry count to 0 (total try count = 1) if
IEEE80211_TX_CTL_NO_ACK is set.
Signed-off-by: Gábor Stefanik <netrolller.3d@gmail.com>
---
Patch also available as an attachment if Gmail linewraps it.
iwl-3945-rs.c | 7 ++++---
iwl-agn-rs.c | 14 +++++++-------
2 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
b/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
index f63a9c5..814afaf 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
@@ -683,11 +683,10 @@ static void rs_get_rate(void *priv_r, struct
ieee80211_sta *sta,
if (sta)
rate_mask = sta->supp_rates[sband->band];
- /* Send management frames and broadcast/multicast data using lowest
- * rate. */
+ /* Send management frames and NO_ACK data using lowest rate. */
fc = le16_to_cpu(hdr->frame_control);
if ((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA ||
- is_multicast_ether_addr(hdr->addr1) ||
+ info->flags & IEEE80211_TX_CTL_NO_ACK ||
!sta || !priv_sta) {
IWL_DEBUG_RATE(priv, "leave: No STA priv data to update!\n");
if (!rate_mask)
@@ -696,6 +695,8 @@ static void rs_get_rate(void *priv_r, struct
ieee80211_sta *sta,
else
info->control.rates[0].idx =
rate_lowest_index(sband, sta);
+ if (info->flags & IEEE80211_TX_CTL_NO_ACK)
+ info->control.rates[0].count = 1;
return;
}
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
index 98b6b37..c52652d 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
@@ -829,7 +829,7 @@ static void rs_tx_status(void *priv_r, struct
ieee80211_supported_band *sband,
IWL_DEBUG_RATE_LIMIT(priv, "get frame ack response, update rate
scale window\n");
if (!ieee80211_is_data(hdr->frame_control) ||
- is_multicast_ether_addr(hdr->addr1))
+ info->flags & IEEE80211_TX_CTL_NO_ACK)
return;
/* This packet was aggregated but doesn't carry rate scale info */
@@ -2005,11 +2005,10 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
IWL_DEBUG_RATE(priv, "rate scale calculate new rate for skb\n");
- /* Send management frames and broadcast/multicast data using
- * lowest rate. */
+ /* Send management frames and NO_ACK data using lowest rate. */
/* TODO: this could probably be improved.. */
if (!ieee80211_is_data(hdr->frame_control) ||
- is_multicast_ether_addr(hdr->addr1))
+ info->flags & IEEE80211_TX_CTL_NO_ACK)
return;
if (!sta || !lq_sta)
@@ -2456,16 +2455,17 @@ static void rs_get_rate(void *priv_r, struct
ieee80211_sta *sta, void *priv_sta,
if (sta)
mask_bit = sta->supp_rates[sband->band];
- /* Send management frames and broadcast/multicast data using lowest
- * rate. */
+ /* Send management frames and NO_ACK data using lowest rate. */
if (!ieee80211_is_data(hdr->frame_control) ||
- is_multicast_ether_addr(hdr->addr1) || !sta || !lq_sta) {
+ info->flags & IEEE80211_TX_CTL_NO_ACK || !sta || !lq_sta) {
if (!mask_bit)
info->control.rates[0].idx =
rate_lowest_index(sband, NULL);
else
info->control.rates[0].idx =
rate_lowest_index(sband, sta);
+ if (info->flags & IEEE80211_TX_CTL_NO_ACK)
+ info->control.rates[0].count = 1;
return;
}
[-- Attachment #2: iwlwifi-fix-no-ack-retry-count.patch --]
[-- Type: text/x-patch, Size: 3120 bytes --]
iwl-3945-rs.c | 7 ++++---
iwl-agn-rs.c | 14 +++++++-------
2 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945-rs.c b/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
index f63a9c5..814afaf 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
@@ -683,11 +683,10 @@ static void rs_get_rate(void *priv_r, struct ieee80211_sta *sta,
if (sta)
rate_mask = sta->supp_rates[sband->band];
- /* Send management frames and broadcast/multicast data using lowest
- * rate. */
+ /* Send management frames and NO_ACK data using lowest rate. */
fc = le16_to_cpu(hdr->frame_control);
if ((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA ||
- is_multicast_ether_addr(hdr->addr1) ||
+ info->flags & IEEE80211_TX_CTL_NO_ACK ||
!sta || !priv_sta) {
IWL_DEBUG_RATE(priv, "leave: No STA priv data to update!\n");
if (!rate_mask)
@@ -696,6 +695,8 @@ static void rs_get_rate(void *priv_r, struct ieee80211_sta *sta,
else
info->control.rates[0].idx =
rate_lowest_index(sband, sta);
+ if (info->flags & IEEE80211_TX_CTL_NO_ACK)
+ info->control.rates[0].count = 1;
return;
}
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
index 98b6b37..c52652d 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
@@ -829,7 +829,7 @@ static void rs_tx_status(void *priv_r, struct ieee80211_supported_band *sband,
IWL_DEBUG_RATE_LIMIT(priv, "get frame ack response, update rate scale window\n");
if (!ieee80211_is_data(hdr->frame_control) ||
- is_multicast_ether_addr(hdr->addr1))
+ info->flags & IEEE80211_TX_CTL_NO_ACK)
return;
/* This packet was aggregated but doesn't carry rate scale info */
@@ -2005,11 +2005,10 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
IWL_DEBUG_RATE(priv, "rate scale calculate new rate for skb\n");
- /* Send management frames and broadcast/multicast data using
- * lowest rate. */
+ /* Send management frames and NO_ACK data using lowest rate. */
/* TODO: this could probably be improved.. */
if (!ieee80211_is_data(hdr->frame_control) ||
- is_multicast_ether_addr(hdr->addr1))
+ info->flags & IEEE80211_TX_CTL_NO_ACK)
return;
if (!sta || !lq_sta)
@@ -2456,16 +2455,17 @@ static void rs_get_rate(void *priv_r, struct ieee80211_sta *sta, void *priv_sta,
if (sta)
mask_bit = sta->supp_rates[sband->band];
- /* Send management frames and broadcast/multicast data using lowest
- * rate. */
+ /* Send management frames and NO_ACK data using lowest rate. */
if (!ieee80211_is_data(hdr->frame_control) ||
- is_multicast_ether_addr(hdr->addr1) || !sta || !lq_sta) {
+ info->flags & IEEE80211_TX_CTL_NO_ACK || !sta || !lq_sta) {
if (!mask_bit)
info->control.rates[0].idx =
rate_lowest_index(sband, NULL);
else
info->control.rates[0].idx =
rate_lowest_index(sband, sta);
+ if (info->flags & IEEE80211_TX_CTL_NO_ACK)
+ info->control.rates[0].count = 1;
return;
}
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH 3/5] iwlwifi: Fix handling of retry count of NO_ACK frames in iwl-{3945|agn}-rs
2009-04-23 17:36 [PATCH 3/5] iwlwifi: Fix handling of retry count of NO_ACK frames in iwl-{3945|agn}-rs Gábor Stefanik
@ 2009-04-23 17:42 ` Johannes Berg
2009-04-23 18:03 ` Gábor Stefanik
0 siblings, 1 reply; 3+ messages in thread
From: Johannes Berg @ 2009-04-23 17:42 UTC (permalink / raw)
To: Gábor Stefanik
Cc: John Linville, Zhu Yi, Tomas Winkler, Tomas Winkler,
linux-wireless, Felix Fietkau, Nick Kossifidis, Luis R. Rodriguez,
Luis R. Rodriguez
[-- Attachment #1: Type: text/plain, Size: 222 bytes --]
On Thu, 2009-04-23 at 19:36 +0200, Gábor Stefanik wrote:
> Make PID
> iwl-3945-rs.c | 7 ++++---
> iwl-agn-rs.c | 14 +++++++-------
> 2 files changed, 11 insertions(+), 10 deletions(-)
Ummm.
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH 3/5] iwlwifi: Fix handling of retry count of NO_ACK frames in iwl-{3945|agn}-rs
2009-04-23 17:42 ` Johannes Berg
@ 2009-04-23 18:03 ` Gábor Stefanik
0 siblings, 0 replies; 3+ messages in thread
From: Gábor Stefanik @ 2009-04-23 18:03 UTC (permalink / raw)
To: Johannes Berg
Cc: John Linville, Zhu Yi, Tomas Winkler, Tomas Winkler,
linux-wireless, Felix Fietkau, Nick Kossifidis, Luis R. Rodriguez,
Luis R. Rodriguez
2009/4/23 Johannes Berg <johannes@sipsolutions.net>:
> On Thu, 2009-04-23 at 19:36 +0200, G=E1bor Stefanik wrote:
>> Make PID
>
>> =A0iwl-3945-rs.c | =A0 =A07 ++++---
>> =A0iwl-agn-rs.c =A0| =A0 14 +++++++-------
>> =A02 files changed, 11 insertions(+), 10 deletions(-)
>
> Ummm.
>
> johannes
>
Make iwl-{3945|agn}-rs... that's what I meant.
--=20
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)
--
To unsubscribe from this list: send the line "unsubscribe linux-wireles=
s" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-04-23 18:04 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-23 17:36 [PATCH 3/5] iwlwifi: Fix handling of retry count of NO_ACK frames in iwl-{3945|agn}-rs Gábor Stefanik
2009-04-23 17:42 ` Johannes Berg
2009-04-23 18:03 ` Gábor Stefanik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox