Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 30 Sep 2012 22:39:35 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        freebsd-wireless@freebsd.org
Subject:   [RFC] Methodize the net8021 power save hooks
Message-ID:  <CAJ-VmonvY1RyoruDeDL7NNXDgv-=iOEZ7S_teUu67iiAQ661Nw@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--e89a8f838d9db2bb2a04caf8d49e
Content-Type: text/plain; charset=ISO-8859-1

Hi,

I'm about to start tinkering with ath(4) power save support and I'd
like to introduce some net80211 changes to support this.

* Methodize the STA and node power save functions, so the driver can
stop/start the software queues as needed;
* Push PS-POLL frame leaking into a method, so the driver can override
this if something is in a local queue.

Since the driver may have some software queued frames for it, the
driver needs to be able to leak these frames out correctly before the
power-save queue frames are transmitted.

My initial change to ath(4) will be to pause and unpause the node when
the net80211 stack calls iv_node_ps() so the driver doesn't bother
transmitting to a node that's asleep.

There's a bunch of other needed changes that I'll then do in some
follow-up work:

* The TIM/ATIM doesn't know about what's in the software queue, so I'm
going to have to introduce some further methods to allow the driver to
update the TIM/ATIM as needed;
* There's a M_PWR_SAV mbuf flag that means "this came from the power
save queue". I need to see what/how drivers should treat this;
* When a frame is sent via the PS-POLL method whilst a STA is asleep,
the TIDs may be paused and as such the node won't transmit. In this
case, frames pushed from the power save queue to the driver should
immediately be transmitted, rather than punted to the software queue.
* I also need to verify that the CABQ traffic is being set correctly-
ie, the CABQ traffic all has the MORE bit appropriately set or
cleared.
* For nodes that are being sent PS-POLL (and later, uAPSD) delivered
frames, they should be put "next" on the TX queue, ahead of any other
TIDs that are being scheduled. That way their frame goes out next (or
has a good chance to), versus being behind all the other currently
transmitting (but not in power save) nodes. This should allow the
device to quickly receive the frame and go back to sleep.
I'm going to leave the next set of changes until I've done the first
bit of work and verified it's working. I'll likely make that behaviour
configurable because I'm worried that the incomplete PS-POLL upgrades
will break mobile devices that try to stay in PS-POLL and "leak"
frames (versus things like my MBP that just go in/out of power save
and don't use PS-POLL at all.)



adrian

--e89a8f838d9db2bb2a04caf8d49e
Content-Type: application/octet-stream; name="2012-09-30-powersave.diff"
Content-Disposition: attachment; filename="2012-09-30-powersave.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h7r5fkn20

SW5kZXg6IFVQREFUSU5HCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFVQREFUSU5HCShyZXZpc2lvbiAyNDEwODEp
CisrKyBVUERBVElORwkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsMTEgQEAKIAlkaXNhYmxl
IHRoZSBtb3N0IGV4cGVuc2l2ZSBkZWJ1Z2dpbmcgZnVuY3Rpb25hbGl0eSBydW4KIAkibG4gLXMg
J2Fib3J0OmZhbHNlLGp1bms6ZmFsc2UnIC9ldGMvbWFsbG9jLmNvbmYiLikKIAorMjAxMjEwMDE6
CisJVGhlIG5ldDgwMjExKDQpIEFCSSBoYXMgYmVlbiBjaGFuZ2VkIHRvIGFsbG93IGZvciBpbXBy
b3ZlZCBkcml2ZXIKKwlQUy1QT0xMIGFuZCBwb3dlci1zYXZlIHN1cHBvcnQuICBBbGwgd2lyZWxl
c3MgZHJpdmVycyBuZWVkIHRvIGJlCisJcmVjb21waWxlZCB0byB3b3JrIHdpdGggdGhlIG5ldyBr
ZXJuZWwuCisKIDIwMTIwOTA4OgogCVRoZSBwZig0KSBwYWNrZXQgZmlsdGVyIEFCSSBoYXMgYmVl
biBjaGFuZ2VkLiBwZmN0bCg4KSBhbmQKIAlzbm1wX3BmIG1vZHVsZSBuZWVkIHRvIGJlIHJlY29t
cGlsZWQgdG8gd29yayB3aXRoIG5ldyBrZXJuZWwuCkluZGV4OiBzeXMvbmV0ODAyMTEvaWVlZTgw
MjExX3N0YS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfc3RhLmMJKHJl
dmlzaW9uIDI0MDk2OCkKKysrIHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfc3RhLmMJKHdvcmtpbmcg
Y29weSkKQEAgLTQwMiw3ICs0MDIsNyBAQAogCQkJICAgIGFyZyA9PSBJRUVFODAyMTFfRkMwX1NV
QlRZUEVfQVNTT0NfUkVTUCk7CiAJCQlicmVhazsKIAkJY2FzZSBJRUVFODAyMTFfU19TTEVFUDoK
LQkJCWllZWU4MDIxMV9zdGFfcHdyc2F2ZSh2YXAsIDApOworCQkJdmFwLT5pdl9zdGFfcHModmFw
LCAwKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZ290byBpbnZhbGlkOwpAQCAtNDM4LDcg
KzQzOCw3IEBACiAJCQlnb3RvIGludmFsaWQ7CiAJCWJyZWFrOwogCWNhc2UgSUVFRTgwMjExX1Nf
U0xFRVA6Ci0JCWllZWU4MDIxMV9zdGFfcHdyc2F2ZSh2YXAsIDEpOworCQl2YXAtPml2X3N0YV9w
cyh2YXAsIDEpOwogCQlicmVhazsKIAlkZWZhdWx0OgogCWludmFsaWQ6CkBAIC0xMzk2LDcgKzEz
OTYsNyBAQAogCQkJCQkgKiB3ZSBhcmUgZXhwZWN0aW5nIGRhdGEuCiAJCQkJCSAqLwogCQkJCQlp
Yy0+aWNfbGFzdGRhdGEgPSB0aWNrczsKLQkJCQkJaWVlZTgwMjExX3N0YV9wd3JzYXZlKHZhcCwg
MCk7CisJCQkJCXZhcC0+aXZfc3RhX3BzKHZhcCwgMCk7CiAJCQkJfQogI2VuZGlmCiAJCQkJbmkt
Pm5pX2R0aW1fY291bnQgPSB0aW0tPnRpbV9jb3VudDsKSW5kZXg6IHN5cy9uZXQ4MDIxMS9pZWVl
ODAyMTFfcG93ZXIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3Bvd2Vy
LmMJKHJldmlzaW9uIDI0MDk2OCkKKysrIHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfcG93ZXIuYwko
d29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksOCBAQAogCQl2YXAtPml2X3VwZGF0ZV9wcyA9IGll
ZWU4MDIxMV91cGRhdGVfcHM7CiAJCXZhcC0+aXZfc2V0X3RpbSA9IGllZWU4MDIxMV9zZXRfdGlt
OwogCX0KKwl2YXAtPml2X25vZGVfcHMgPSBpZWVlODAyMTFfbm9kZV9wd3JzYXZlOworCXZhcC0+
aXZfc3RhX3BzID0gaWVlZTgwMjExX3N0YV9wd3JzYXZlOwogfQogCiB2b2lkCkluZGV4OiBzeXMv
bmV0ODAyMTEvaWVlZTgwMjExX3Zhci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9uZXQ4MDIxMS9pZWVl
ODAyMTFfdmFyLmgJKHJldmlzaW9uIDI0MDk2OCkKKysrIHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFf
dmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Niw2ICs0ODYsMTEgQEAKIAkvKiBwb3dlciBzYXZl
IGhhbmRsaW5nICovCiAJdm9pZAkJCSgqaXZfdXBkYXRlX3BzKShzdHJ1Y3QgaWVlZTgwMjExdmFw
ICosIGludCk7CiAJaW50CQkJKCppdl9zZXRfdGltKShzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKiwg
aW50KTsKKwl2b2lkCQkJKCppdl9ub2RlX3BzKShzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKiwgaW50
KTsKKwl2b2lkCQkJKCppdl9zdGFfcHMpKHN0cnVjdCBpZWVlODAyMTF2YXAgKiwgaW50KTsKKwl2
b2lkCQkJKCppdl9yZWN2X3BzcG9sbCkoc3RydWN0IGllZWU4MDIxMV9ub2RlICosCisJCQkJICAg
IHN0cnVjdCBtYnVmICopOworCiAJLyogc3RhdGUgbWFjaGluZSBwcm9jZXNzaW5nICovCiAJaW50
CQkJKCppdl9uZXdzdGF0ZSkoc3RydWN0IGllZWU4MDIxMXZhcCAqLAogCQkJCSAgICBlbnVtIGll
ZWU4MDIxMV9zdGF0ZSwgaW50KTsKSW5kZXg6IHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfaG9zdGFw
LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gc3lzL25ldDgwMjExL2llZWU4MDIxMV9ob3N0YXAuYwkocmV2aXNp
b24gMjQwOTY4KQorKysgc3lzL25ldDgwMjExL2llZWU4MDIxMV9ob3N0YXAuYwkod29ya2luZyBj
b3B5KQpAQCAtNzMsNyArNzMsNiBAQAogc3RhdGljIHZvaWQgaG9zdGFwX3JlY3ZfbWdtdChzdHJ1
Y3QgaWVlZTgwMjExX25vZGUgKiwgc3RydWN0IG1idWYgKiwKIAkgICAgaW50IHN1YnR5cGUsIGlu
dCByc3NpLCBpbnQgbmYpOwogc3RhdGljIHZvaWQgaG9zdGFwX3JlY3ZfY3RsKHN0cnVjdCBpZWVl
ODAyMTFfbm9kZSAqLCBzdHJ1Y3QgbWJ1ZiAqLCBpbnQpOwotc3RhdGljIHZvaWQgaG9zdGFwX3Jl
Y3ZfcHNwb2xsKHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqLCBzdHJ1Y3QgbWJ1ZiAqKTsKIAogdm9p
ZAogaWVlZTgwMjExX2hvc3RhcF9hdHRhY2goc3RydWN0IGllZWU4MDIxMWNvbSAqaWMpCkBAIC0x
MDAsNiArOTksNyBAQAogCXZhcC0+aXZfcmVjdl9jdGwgPSBob3N0YXBfcmVjdl9jdGw7CiAJdmFw
LT5pdl9vcGRldGFjaCA9IGhvc3RhcF92ZGV0YWNoOwogCXZhcC0+aXZfZGVsaXZlcl9kYXRhID0g
aG9zdGFwX2RlbGl2ZXJfZGF0YTsKKwl2YXAtPml2X3JlY3ZfcHNwb2xsID0gaWVlZTgwMjExX3Jl
Y3ZfcHNwb2xsOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNjQ1LDcgKzY0NSw3IEBACiAJCSAqLwog
CQlpZiAoKCh3aC0+aV9mY1sxXSAmIElFRUU4MDIxMV9GQzFfUFdSX01HVCkgXgogCQkgICAgKG5p
LT5uaV9mbGFncyAmIElFRUU4MDIxMV9OT0RFX1BXUl9NR1QpKSkKLQkJCWllZWU4MDIxMV9ub2Rl
X3B3cnNhdmUobmksCisJCQl2YXAtPml2X25vZGVfcHMobmksCiAJCQkJd2gtPmlfZmNbMV0gJiBJ
RUVFODAyMTFfRkMxX1BXUl9NR1QpOwogCQkvKgogCQkgKiBGb3IgNC1hZGRyZXNzIHBhY2tldHMg
aGFuZGxlIFdEUyBkaXNjb3ZlcnkKQEAgLTIyNDAsNyArMjI0MCw3IEBACiB7CiAJc3dpdGNoIChz
dWJ0eXBlKSB7CiAJY2FzZSBJRUVFODAyMTFfRkMwX1NVQlRZUEVfUFNfUE9MTDoKLQkJaG9zdGFw
X3JlY3ZfcHNwb2xsKG5pLCBtKTsKKwkJbmktPm5pX3ZhcC0+aXZfcmVjdl9wc3BvbGwobmksIG0p
OwogCQlicmVhazsKIAljYXNlIElFRUU4MDIxMV9GQzBfU1VCVFlQRV9CQVI6CiAJCWllZWU4MDIx
MV9yZWN2X2JhcihuaSwgbSk7CkBAIC0yMjUxLDggKzIyNTEsOCBAQAogLyoKICAqIFByb2Nlc3Mg
YSByZWNlaXZlZCBwcy1wb2xsIGZyYW1lLgogICovCi1zdGF0aWMgdm9pZAotaG9zdGFwX3JlY3Zf
cHNwb2xsKHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksIHN0cnVjdCBtYnVmICptMCkKK3ZvaWQK
K2llZWU4MDIxMV9yZWN2X3BzcG9sbChzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLCBzdHJ1Y3Qg
bWJ1ZiAqbTApCiB7CiAJc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwID0gbmktPm5pX3ZhcDsKIAlz
dHJ1Y3QgaWVlZTgwMjExX2ZyYW1lX21pbiAqd2g7CkluZGV4OiBzeXMvbmV0ODAyMTEvaWVlZTgw
MjExX3Bvd2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldDgwMjExL2llZWU4MDIxMV9wb3dlci5o
CShyZXZpc2lvbiAyNDA5NjgpCisrKyBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3Bvd2VyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDExIEBACiBzdHJ1Y3QgbWJ1ZiAqaWVlZTgwMjExX25v
ZGVfcHNxX2RlcXVldWUoc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwgaW50ICpxbGVuKTsKIGlu
dAlpZWVlODAyMTFfbm9kZV9wc3FfZHJhaW4oc3RydWN0IGllZWU4MDIxMV9ub2RlICopOwogaW50
CWllZWU4MDIxMV9ub2RlX3BzcV9hZ2Uoc3RydWN0IGllZWU4MDIxMV9ub2RlICopOworCisvKgor
ICogRG9uJ3QgY2FsbCB0aGVzZSBkaXJlY3RseSBmcm9tIHRoZSBzdGFjazsgdGhleSBhcmUgdmFw
IG1ldGhvZHMKKyAqIHRoYXQgc2hvdWxkIGJlIG92ZXJyaWRkZW4uCisgKi8KIGludAlpZWVlODAy
MTFfcHdyc2F2ZShzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKiwgc3RydWN0IG1idWYgKik7CiB2b2lk
CWllZWU4MDIxMV9ub2RlX3B3cnNhdmUoc3RydWN0IGllZWU4MDIxMV9ub2RlICosIGludCBlbmFi
bGUpOwogdm9pZAlpZWVlODAyMTFfc3RhX3B3cnNhdmUoc3RydWN0IGllZWU4MDIxMXZhcCAqLCBp
bnQgZW5hYmxlKTsKSW5kZXg6IHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfaG9zdGFwLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gc3lzL25ldDgwMjExL2llZWU4MDIxMV9ob3N0YXAuaAkocmV2aXNpb24gMjQwOTY4
KQorKysgc3lzL25ldDgwMjExL2llZWU4MDIxMV9ob3N0YXAuaAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNCArMzIsMTAgQEAKICAqLwogdm9pZAlpZWVlODAyMTFfaG9zdGFwX2F0dGFjaChzdHJ1Y3Qg
aWVlZTgwMjExY29tICopOwogdm9pZAlpZWVlODAyMTFfaG9zdGFwX2RldGFjaChzdHJ1Y3QgaWVl
ZTgwMjExY29tICopOworCisvKgorICogVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4KKyAq
Lwordm9pZCBpZWVlODAyMTFfcmVjdl9wc3BvbGwoc3RydWN0IGllZWU4MDIxMV9ub2RlICosIHN0
cnVjdCBtYnVmICopOworCiAjZW5kaWYgLyogIV9ORVQ4MDIxMV9JRUVFODAyMTFfSE9TVEFQX0hf
ICovCkluZGV4OiBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3NjYW4uYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBz
eXMvbmV0ODAyMTEvaWVlZTgwMjExX3NjYW4uYwkocmV2aXNpb24gMjQwOTY4KQorKysgc3lzL25l
dDgwMjExL2llZWU4MDIxMV9zY2FuLmMJKHdvcmtpbmcgY29weSkKQEAgLTg2Niw3ICs4NjYsNyBA
QAogCSAgICB2YXAtPml2X3N0YXRlID09IElFRUU4MDIxMV9TX1JVTikgewogCQlpZiAoKHZhcC0+
aXZfYnNzLT5uaV9mbGFncyAmIElFRUU4MDIxMV9OT0RFX1BXUl9NR1QpID09IDApIHsKIAkJCS8q
IEVuYWJsZSBzdGF0aW9uIHBvd2VyIHNhdmUgbW9kZSAqLwotCQkJaWVlZTgwMjExX3N0YV9wd3Jz
YXZlKHZhcCwgMSk7CisJCQl2YXAtPml2X3N0YV9wcyh2YXAsIDEpOwogCQkJLyoKIAkJCSAqIFVz
ZSBhbiAxbXMgZGVsYXkgc28gdGhlIG51bGwgZGF0YSBmcmFtZSBoYXMgYSBjaGFuY2UKIAkJCSAq
IHRvIGdvIG91dC4KQEAgLTEwNDcsNyArMTA0Nyw3IEBACiAJICogd2FpdGluZyBmb3IgdXMuCiAJ
ICovCiAJaWYgKHNjYW5kb25lKSB7Ci0JCWllZWU4MDIxMV9zdGFfcHdyc2F2ZSh2YXAsIDApOwor
CQl2YXAtPml2X3N0YV9wcyh2YXAsIDApOwogCQlpZiAoc3MtPnNzX25leHQgPj0gc3MtPnNzX2xh
c3QpIHsKIAkJCWllZWU4MDIxMV9ub3RpZnlfc2Nhbl9kb25lKHZhcCk7CiAJCQlpYy0+aWNfZmxh
Z3NfZXh0ICY9IH5JRUVFODAyMTFfRkVYVF9CR1NDQU47CkluZGV4OiBzeXMvbmV0ODAyMTEvaWVl
ZTgwMjExX2FkaG9jLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldDgwMjExL2llZWU4MDIxMV9hZGhv
Yy5jCShyZXZpc2lvbiAyNDA5NjgpCisrKyBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX2FkaG9jLmMJ
KHdvcmtpbmcgY29weSkKQEAgLTI0Miw3ICsyNDIsNyBAQAogCQkJaWMtPmljX25ld2Fzc29jKG5p
LCBvc3RhdGUgIT0gSUVFRTgwMjExX1NfUlVOKTsKIAkJYnJlYWs7CiAJY2FzZSBJRUVFODAyMTFf
U19TTEVFUDoKLQkJaWVlZTgwMjExX3N0YV9wd3JzYXZlKHZhcCwgMCk7CisJCXZhcC0+aXZfc3Rh
X3BzKHZhcCwgMCk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJaW52YWxpZDoK
--e89a8f838d9db2bb2a04caf8d49e--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmonvY1RyoruDeDL7NNXDgv-=iOEZ7S_teUu67iiAQ661Nw>