All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC 2/2] mac80211: implement packet loss notification
@ 2010-11-16 19:54 Johannes Berg
  2010-11-16 23:55 ` [RFC v2 " Johannes Berg
  0 siblings, 1 reply; 2+ messages in thread
From: Johannes Berg @ 2010-11-16 19:54 UTC (permalink / raw)
  To: linux-wireless

RnJvbTogSm9oYW5uZXMgQmVyZyA8am9oYW5uZXMuYmVyZ0BpbnRlbC5jb20+CgpGb3IgZHJpdmVy
cyB0aGF0IGhhdmUgYWNjdXJhdGUgVFggc3RhdHVzIHJlcG9ydGluZwp3ZSBjYW4gcmVwb3J0IHRo
ZSBudW1iZXIgb2YgY29uc2VjdXRpdmUgbG9zdCBwYWNrZXRzCnRvIHVzZXJzcGFjZSB1c2luZyB0
aGUgbmV3IGNmZzgwMjExIENRTSBldmVudC4gVGhlCnRocmVzaG9sZCBpcyBmaXhlZCByaWdodCBu
b3csIHRoaXMgbWF5IG5lZWQgdG8gYmUKaW1wcm92ZWQgaW4gdGhlIGZ1dHVyZS4KClNpZ25lZC1v
ZmYtYnk6IEpvaGFubmVzIEJlcmcgPGpvaGFubmVzLmJlcmdAaW50ZWwuY29tPgotLS0KIG5ldC9t
YWM4MDIxMS9zdGFfaW5mby5oIHwgICAgMyArKysKIG5ldC9tYWM4MDIxMS9zdGF0dXMuYyAgIHwg
ICAxOSArKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDIyIGluc2VydGlvbnMo
KykKCi0tLSB3aXJlbGVzcy10ZXN0aW5nLm9yaWcvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgJMjAx
MC0xMS0xMiAxMzozNDozMy4wMDAwMDAwMDAgLTA4MDAKKysrIHdpcmVsZXNzLXRlc3RpbmcvbmV0
L21hYzgwMjExL3N0YV9pbmZvLmgJMjAxMC0xMS0xMiAxMzozNDo0MS4wMDAwMDAwMDAgLTA4MDAK
QEAgLTI0OCw2ICsyNDgsNyBAQCBlbnVtIHBsaW5rX3N0YXRlIHsKICAqIEBzdGE6IHN0YXRpb24g
aW5mb3JtYXRpb24gd2Ugc2hhcmUgd2l0aCB0aGUgZHJpdmVyCiAgKiBAZGVhZDogc2V0IHRvIHRy
dWUgd2hlbiBzdGEgaXMgdW5saW5rZWQKICAqIEB1cGxvYWRlZDogc2V0IHRvIHRydWUgd2hlbiBz
dGEgaXMgdXBsb2FkZWQgdG8gdGhlIGRyaXZlcgorICogQGxvc3RfcGFja2V0czogbnVtYmVyIG9m
IGNvbnNlY3V0aXZlIGxvc3QgcGFja2V0cwogICovCiBzdHJ1Y3Qgc3RhX2luZm8gewogCS8qIEdl
bmVyYWwgaW5mb3JtYXRpb24sIG1vc3RseSBzdGF0aWMgKi8KQEAgLTMzNSw2ICszMzYsOCBAQCBz
dHJ1Y3Qgc3RhX2luZm8gewogCX0gZGVidWdmczsKICNlbmRpZgogCisJdW5zaWduZWQgaW50IGxv
c3RfcGFja2V0czsKKwogCS8qIGtlZXAgbGFzdCEgKi8KIAlzdHJ1Y3QgaWVlZTgwMjExX3N0YSBz
dGE7CiB9OwotLS0gd2lyZWxlc3MtdGVzdGluZy5vcmlnL25ldC9tYWM4MDIxMS9zdGF0dXMuYwky
MDEwLTExLTEyIDEzOjM0OjMzLjAwMDAwMDAwMCAtMDgwMAorKysgd2lyZWxlc3MtdGVzdGluZy9u
ZXQvbWFjODAyMTEvc3RhdHVzLmMJMjAxMC0xMS0xMiAxMzozNDo0MS4wMDAwMDAwMDAgLTA4MDAK
QEAgLTE1Nyw2ICsxNTcsMTUgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX2ZyYW1lX2Fja2VkKHN0
cnVjdAogCX0KIH0KIAorLyoKKyAqIFVzZSBhIHN0YXRpYyB0aHJlc2hvbGQgZm9yIG5vdywgYmVz
dCB2YWx1ZSB0byBiZSBkZXRlcm1pbmVkCisgKiBieSB0ZXN0aW5nIC4uLgorICogU2hvdWxkIGl0
IGRlcGVuZCBvbjoKKyAqICAtIG9uICMgb2YgcmV0cmFuc21pc3Npb25zCisgKiAgLSBjdXJyZW50
IHRocm91Z2hwdXQgKGhpZ2hlciB2YWx1ZSBmb3IgaGlnaGVyIHRwdCk/CisgKi8KKyNkZWZpbmUg
U1RBX0xPU1RfUEtUX1RIUkVTSE9MRAk1MAorCiB2b2lkIGllZWU4MDIxMV90eF9zdGF0dXMoc3Ry
dWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJc3RydWN0IHNr
X2J1ZmYgKnNrYjI7CkBAIC0yNDMsNiArMjUyLDE2IEBAIHZvaWQgaWVlZTgwMjExX3R4X3N0YXR1
cyhzdHJ1Y3QgaWVlZTgwMjEKIAkJaWYgKCEoaW5mby0+ZmxhZ3MgJiBJRUVFODAyMTFfVFhfQ1RM
X0lOSkVDVEVEKSAmJgogCQkgICAgKGluZm8tPmZsYWdzICYgSUVFRTgwMjExX1RYX1NUQVRfQUNL
KSkKIAkJCWllZWU4MDIxMV9mcmFtZV9hY2tlZChzdGEsIHNrYik7CisKKwkJaWYgKGxvY2FsLT5o
dy5mbGFncyAmIElFRUU4MDIxMV9IV19SRVBPUlRTX1RYX0FDS19TVEFUVVMpIHsKKwkJCWlmIChp
bmZvLT5mbGFncyAmIElFRUU4MDIxMV9UWF9TVEFUX0FDSykKKwkJCQlzdGEtPmxvc3RfcGFja2V0
cyA9IDA7CisJCQllbHNlIGlmICgrK3N0YS0+bG9zdF9wYWNrZXRzID49IFNUQV9MT1NUX1BLVF9U
SFJFU0hPTEQpCisJCQkJY2ZnODAyMTFfY3FtX3BrdGxvc3Nfbm90aWZ5KHN0YS0+c2RhdGEtPmRl
diwKKwkJCQkJCQkgICAgc3RhLT5zdGEuYWRkciwKKwkJCQkJCQkgICAgc3RhLT5sb3N0X3BhY2tl
dHMsCisJCQkJCQkJICAgIEdGUF9BVE9NSUMpOworCQl9CiAJfQogCiAJcmN1X3JlYWRfdW5sb2Nr
KCk7CgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW50ZWwgR21iSApEb3JuYWNoZXIg
U3RyYXNzZSAxCjg1NjIyIEZlbGRraXJjaGVuL011ZW5jaGVuLCBEZXV0c2NobGFuZCAKU2l0eiBk
ZXIgR2VzZWxsc2NoYWZ0OiBGZWxka2lyY2hlbiBiZWkgTXVlbmNoZW4KR2VzY2hhZWZ0c2Z1ZWhy
ZXI6IERvdWdsYXMgTHVzaywgUGV0ZXIgR2xlaXNzbmVyLCBIYW5uZXMgU2Nod2FkZXJlcgpSZWdp
c3RlcmdlcmljaHQ6IE11ZW5jaGVuIEhSQiA0NzQ1NiAKVXN0Li1JZE5yLi9WQVQgUmVnaXN0cmF0
aW9uIE5vLjogREUxMjkzODU4OTUKQ2l0aWJhbmsgRnJhbmtmdXJ0IGEuTS4gKEJMWiA1MDIgMTA5
IDAwKSA2MDAxMTkwNTIK


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [RFC v2 2/2] mac80211: implement packet loss notification
  2010-11-16 19:54 [RFC 2/2] mac80211: implement packet loss notification Johannes Berg
@ 2010-11-16 23:55 ` Johannes Berg
  0 siblings, 0 replies; 2+ messages in thread
From: Johannes Berg @ 2010-11-16 23:55 UTC (permalink / raw)
  To: linux-wireless

From: Johannes Berg <johannes.berg@intel.com>

For drivers that have accurate TX status reporting
we can report the number of consecutive lost packets
to userspace using the new cfg80211 CQM event. The
threshold is fixed right now, this may need to be
improved in the future.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
v2: don't send event on every packet

 net/mac80211/sta_info.h |    3 +++
 net/mac80211/status.c   |   22 ++++++++++++++++++++++
 2 files changed, 25 insertions(+)

--- wireless-testing.orig/net/mac80211/sta_info.h	2010-11-16 11:30:12.000000000 -0800
+++ wireless-testing/net/mac80211/sta_info.h	2010-11-16 14:01:57.000000000 -0800
@@ -248,6 +248,7 @@ enum plink_state {
  * @sta: station information we share with the driver
  * @dead: set to true when sta is unlinked
  * @uploaded: set to true when sta is uploaded to the driver
+ * @lost_packets: number of consecutive lost packets
  */
 struct sta_info {
 	/* General information, mostly static */
@@ -335,6 +336,8 @@ struct sta_info {
 	} debugfs;
 #endif
 
+	unsigned int lost_packets;
+
 	/* keep last! */
 	struct ieee80211_sta sta;
 };
--- wireless-testing.orig/net/mac80211/status.c	2010-11-16 11:30:12.000000000 -0800
+++ wireless-testing/net/mac80211/status.c	2010-11-16 15:47:19.000000000 -0800
@@ -157,6 +157,15 @@ static void ieee80211_frame_acked(struct
 	}
 }
 
+/*
+ * Use a static threshold for now, best value to be determined
+ * by testing ...
+ * Should it depend on:
+ *  - on # of retransmissions
+ *  - current throughput (higher value for higher tpt)?
+ */
+#define STA_LOST_PKT_THRESHOLD	50
+
 void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb)
 {
 	struct sk_buff *skb2;
@@ -243,6 +252,19 @@ void ieee80211_tx_status(struct ieee8021
 		if (!(info->flags & IEEE80211_TX_CTL_INJECTED) &&
 		    (info->flags & IEEE80211_TX_STAT_ACK))
 			ieee80211_frame_acked(sta, skb);
+
+		if (local->hw.flags & IEEE80211_HW_REPORTS_TX_ACK_STATUS) {
+			if (info->flags & IEEE80211_TX_STAT_ACK) {
+				if (sta->lost_packets)
+					sta->lost_packets = 0;
+			} else if (++sta->lost_packets >= STA_LOST_PKT_THRESHOLD) {
+				cfg80211_cqm_pktloss_notify(sta->sdata->dev,
+							    sta->sta.addr,
+							    sta->lost_packets,
+							    GFP_ATOMIC);
+				sta->lost_packets = 0;
+			}
+		}
 	}
 
 	rcu_read_unlock();



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-11-16 23:53 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-11-16 19:54 [RFC 2/2] mac80211: implement packet loss notification Johannes Berg
2010-11-16 23:55 ` [RFC v2 " Johannes Berg

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.