2011-08-17 20:03:18

by Peter Hurley

[permalink] [raw]
Subject: [RFC 4/5] Bluetooth: Schedule links by tx buffer use

Q29tYmluZSB0eCBsaW5rIHR5cGVzIHdoaWNoIHVzZSB0aGUgc2FtZSB0eCBidWZmZXJzLiBTbyBT
Q08gYW5kIEVTQ08NCmxpbmtzIGFyZSBzY2hlZHVsZWQgdG9nZXRoZXIgYW5kIGFsc28gc2NoZWR1
bGUgTEUgbGlua3Mgd2l0aCBBQ0wNCmxpbmtzICppZiogdGhlIGNvbnRyb2xsZXIgdXNlcyBzaGFy
ZWQgQUNMIGJ1ZmZlcnMgZm9yIExFIHR4Lg0KDQpUaGlzIGFsc28gZml4ZXMgdHggdGltZW91dHMg
aWYgdGhlIGNvbnRyb2xsZXIgdXNlcyBzaGFyZWQgQUNMIGJ1ZmZlcnMNCmZvciBMRSB0eC4NCg0K
U2lnbmVkLW9mZi1ieTogUGV0ZXIgSHVybGV5IDxwZXRlckBodXJsZXlzb2Z0d2FyZS5jb20+DQot
LS0NCiBpbmNsdWRlL25ldC9ibHVldG9vdGgvaGNpLmggfCAgIDEwICsrKysrKw0KIG5ldC9ibHVl
dG9vdGgvaGNpX2NvcmUuYyAgICB8ICAgNzIgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQogMiBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCA0MyBkZWxl
dGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2JsdWV0b290aC9oY2kuaCBiL2lu
Y2x1ZGUvbmV0L2JsdWV0b290aC9oY2kuaA0KaW5kZXggMGMyMDIyNy4uYzgzMTllNSAxMDA2NDQN
Ci0tLSBhL2luY2x1ZGUvbmV0L2JsdWV0b290aC9oY2kuaA0KKysrIGIvaW5jbHVkZS9uZXQvYmx1
ZXRvb3RoL2hjaS5oDQpAQCAtMTc0LDYgKzE3NCwxNiBAQCBlbnVtIHsNCiAvKiBMb3cgRW5lcmd5
IGxpbmtzIGRvIG5vdCBoYXZlIGRlZmluZWQgbGluayB0eXBlLiBVc2UgaW52ZW50ZWQgb25lICov
DQogI2RlZmluZSBMRV9MSU5LCQkweDgwDQogDQorI2RlZmluZSBMRV9NQVNLCQkweDgwDQorI2Rl
ZmluZSBTQ09fTUFTSwkweDAxDQorI2RlZmluZSBBQ0xfTUFTSwkweDAyDQorI2RlZmluZSBFU0NP
X01BU0sJMHgwNA0KKw0KK3N0YXRpYyBpbmxpbmUgX191OCBsaW5rX21hc2soX191OCB0eXBlKQ0K
K3sNCisJcmV0dXJuIHR5cGUgPCBMRV9MSU5LID8gMSA8PCB0eXBlIDogTEVfTUFTSzsNCit9DQor
DQogLyogTE1QIGZlYXR1cmVzICovDQogI2RlZmluZSBMTVBfM1NMT1QJMHgwMQ0KICNkZWZpbmUg
TE1QXzVTTE9UCTB4MDINCmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmMgYi9u
ZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmMNCmluZGV4IDY2ODA4OGYuLmE4MmFhNTIgMTAwNjQ0DQot
LS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmMNCisrKyBiL25ldC9ibHVldG9vdGgvaGNpX2Nv
cmUuYw0KQEAgLTE3OTgsNyArMTc5OCw4IEBAIEVYUE9SVF9TWU1CT0woaGNpX3NlbmRfc2NvKTsN
CiAvKiAtLS0tIEhDSSBUWCB0YXNrIChvdXRnb2luZyBkYXRhKSAtLS0tICovDQogDQogLyogSENJ
IENvbm5lY3Rpb24gc2NoZWR1bGVyICovDQotc3RhdGljIGlubGluZSBzdHJ1Y3QgaGNpX2Nvbm4g
KmhjaV9sb3dfc2VudChzdHJ1Y3QgaGNpX2RldiAqaGRldiwgX191OCB0eXBlLCBpbnQgKnF1b3Rl
KQ0KK3N0YXRpYyBpbmxpbmUgc3RydWN0IGhjaV9jb25uICpoY2lfbG93X3NlbnQoc3RydWN0IGhj
aV9kZXYgKmhkZXYsDQorCQkJCQkJX191OCBzZWxlY3QsIGludCAqcXVvdGUpDQogew0KIAlzdHJ1
Y3QgaGNpX2Nvbm5faGFzaCAqaCA9ICZoZGV2LT5jb25uX2hhc2g7DQogCXN0cnVjdCBoY2lfY29u
biAqY29ubiA9IE5VTEw7DQpAQCAtMTgxMSw3ICsxODEyLDEwIEBAIHN0YXRpYyBpbmxpbmUgc3Ry
dWN0IGhjaV9jb25uICpoY2lfbG93X3NlbnQoc3RydWN0IGhjaV9kZXYgKmhkZXYsIF9fdTggdHlw
ZSwgaW50DQogCQlzdHJ1Y3QgaGNpX2Nvbm4gKmM7DQogCQljID0gbGlzdF9lbnRyeShwLCBzdHJ1
Y3QgaGNpX2Nvbm4sIGxpc3QpOw0KIA0KLQkJaWYgKGMtPnR5cGUgIT0gdHlwZSB8fCBza2JfcXVl
dWVfZW1wdHkoJmMtPmRhdGFfcSkpDQorCQlpZiAobGlua19tYXNrKGMtPnR5cGUpICYgfnNlbGVj
dCkNCisJCQljb250aW51ZTsNCisNCisJCWlmIChza2JfcXVldWVfZW1wdHkoJmMtPmRhdGFfcSkp
DQogCQkJY29udGludWU7DQogDQogCQlpZiAoYy0+c3RhdGUgIT0gQlRfQ09OTkVDVEVEICYmIGMt
PnN0YXRlICE9IEJUX0NPTkZJRykNCkBAIC0xODMyLDcgKzE4MzYsNyBAQCBzdGF0aWMgaW5saW5l
IHN0cnVjdCBoY2lfY29ubiAqaGNpX2xvd19zZW50KHN0cnVjdCBoY2lfZGV2ICpoZGV2LCBfX3U4
IHR5cGUsIGludA0KIAlyZXR1cm4gY29ubjsNCiB9DQogDQotc3RhdGljIGlubGluZSB2b2lkIGhj
aV9saW5rX3R4X3RvKHN0cnVjdCBoY2lfZGV2ICpoZGV2LCBfX3U4IHR5cGUpDQorc3RhdGljIGlu
bGluZSB2b2lkIGhjaV9saW5rX3R4X3RvKHN0cnVjdCBoY2lfZGV2ICpoZGV2LCBfX3U4IHNlbGVj
dCkNCiB7DQogCXN0cnVjdCBoY2lfY29ubl9oYXNoICpoID0gJmhkZXYtPmNvbm5faGFzaDsNCiAJ
c3RydWN0IGxpc3RfaGVhZCAqcDsNCkBAIC0xODQzLDcgKzE4NDcsNyBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgaGNpX2xpbmtfdHhfdG8oc3RydWN0IGhjaV9kZXYgKmhkZXYsIF9fdTggdHlwZSkNCiAJ
LyogS2lsbCBzdGFsbGVkIGNvbm5lY3Rpb25zICovDQogCWxpc3RfZm9yX2VhY2gocCwgJmgtPmxp
c3QpIHsNCiAJCWMgPSBsaXN0X2VudHJ5KHAsIHN0cnVjdCBoY2lfY29ubiwgbGlzdCk7DQotCQlp
ZiAoYy0+dHlwZSA9PSB0eXBlICYmIGMtPnNlbnQpIHsNCisJCWlmIChsaW5rX21hc2soYy0+dHlw
ZSkgJiBzZWxlY3QgJiYgYy0+c2VudCkgew0KIAkJCUJUX0VSUigiJXMga2lsbGluZyBzdGFsbGVk
IGNvbm5lY3Rpb24gJXMiLA0KIAkJCQloZGV2LT5uYW1lLCBiYXRvc3RyKCZjLT5kc3QpKTsNCiAJ
CQloY2lfYWNsX2Rpc2Nvbm4oYywgMHgxMyk7DQpAQCAtMTg1NiwyMSArMTg2MCwyNyBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgaGNpX3NjaGVkX2FjbChzdHJ1Y3QgaGNpX2RldiAqaGRldikNCiAJc3Ry
dWN0IGhjaV9jb25uICpjb25uOw0KIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOw0KIAlpbnQgcXVvdGUg
PSBoZGV2LT5hY2xfY250Ow0KKwlfX3U4IHNlbGVjdCA9IEFDTF9NQVNLOw0KKw0KKwkvKiBBbHNv
IHNlbGVjdCBMRSBsaW5rcyBpZiBBQ0wgYnVmZmVycyBhcmUgc2hhcmVkICovDQorCWlmICghaGRl
di0+bGVfcGt0cykNCisJCXNlbGVjdCB8PSBMRV9NQVNLOw0KIA0KIAlCVF9EQkcoIiVzIiwgaGRl
di0+bmFtZSk7DQogDQogCWlmICghdGVzdF9iaXQoSENJX1JBVywgJmhkZXYtPmZsYWdzKSkgew0K
IAkJLyogQUNMIHR4IHRpbWVvdXQgbXVzdCBiZSBsb25nZXIgdGhhbiBtYXhpbXVtDQogCQkgKiBs
aW5rIHN1cGVydmlzaW9uIHRpbWVvdXQgKDQwLjkgc2Vjb25kcykgKi8NCi0JCWlmICghaGRldi0+
YWNsX2NudCAmJiB0aW1lX2FmdGVyKGppZmZpZXMsIGhkZXYtPmFjbF9sYXN0X3R4ICsgSFogKiA0
NSkpDQotCQkJaGNpX2xpbmtfdHhfdG8oaGRldiwgQUNMX0xJTkspOw0KKwkJaWYgKCFxdW90ZSAm
JiB0aW1lX2FmdGVyKGppZmZpZXMsIGhkZXYtPmFjbF9sYXN0X3R4ICsgSFogKiA0NSkpDQorCQkJ
aGNpX2xpbmtfdHhfdG8oaGRldiwgc2VsZWN0KTsNCiAJfQ0KIA0KLQl3aGlsZSAocXVvdGUgJiYg
KGNvbm4gPSBoY2lfbG93X3NlbnQoaGRldiwgQUNMX0xJTkssICZxdW90ZSkpKSB7DQorCXdoaWxl
IChxdW90ZSAmJiAoY29ubiA9IGhjaV9sb3dfc2VudChoZGV2LCBzZWxlY3QsICZxdW90ZSkpKSB7
DQogCQl3aGlsZSAocXVvdGUgJiYgKHNrYiA9IHNrYl9kZXF1ZXVlKCZjb25uLT5kYXRhX3EpKSkg
ew0KIAkJCUJUX0RCRygic2tiICVwIGxlbiAlZCIsIHNrYiwgc2tiLT5sZW4pOw0KIA0KLQkJCWhj
aV9jb25uX2VudGVyX2FjdGl2ZV9tb2RlKGNvbm4pOw0KKwkJCWlmIChjb25uLT50eXBlID09IEFD
TF9MSU5LKQ0KKwkJCQloY2lfY29ubl9lbnRlcl9hY3RpdmVfbW9kZShjb25uKTsNCiANCiAJCQlo
Y2lfc2VuZF9mcmFtZShza2IpOw0KIAkJCWhkZXYtPmFjbF9sYXN0X3R4ID0gamlmZmllczsNCkBA
IC0xODg4LDMxICsxODk4LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBoY2lfc2NoZWRfc2NvKHN0
cnVjdCBoY2lfZGV2ICpoZGV2KQ0KIAlzdHJ1Y3QgaGNpX2Nvbm4gKmNvbm47DQogCXN0cnVjdCBz
a19idWZmICpza2I7DQogCWludCBxdW90ZSA9IGhkZXYtPnNjb19jbnQ7DQorCV9fdTggc2VsZWN0
ID0gU0NPX01BU0sgfCBFU0NPX01BU0s7DQogDQogCUJUX0RCRygiJXMiLCBoZGV2LT5uYW1lKTsN
CiANCi0Jd2hpbGUgKHF1b3RlICYmIChjb25uID0gaGNpX2xvd19zZW50KGhkZXYsIFNDT19MSU5L
LCAmcXVvdGUpKSkgew0KLQkJd2hpbGUgKHF1b3RlICYmIChza2IgPSBza2JfZGVxdWV1ZSgmY29u
bi0+ZGF0YV9xKSkpIHsNCi0JCQlCVF9EQkcoInNrYiAlcCBsZW4gJWQiLCBza2IsIHNrYi0+bGVu
KTsNCi0JCQloY2lfc2VuZF9mcmFtZShza2IpOw0KLQ0KLQkJCXF1b3RlLS07DQotCQkJY29ubi0+
c2VudCsrOw0KLQkJCWlmIChjb25uLT5zZW50ID09IH4wKQ0KLQkJCQljb25uLT5zZW50ID0gMDsN
Ci0JCX0NCi0JfQ0KLX0NCi0NCi1zdGF0aWMgaW5saW5lIHZvaWQgaGNpX3NjaGVkX2VzY28oc3Ry
dWN0IGhjaV9kZXYgKmhkZXYpDQotew0KLQlzdHJ1Y3QgaGNpX2Nvbm4gKmNvbm47DQotCXN0cnVj
dCBza19idWZmICpza2I7DQotCWludCBxdW90ZSA9IGhkZXYtPnNjb19jbnQ7DQotDQotCUJUX0RC
RygiJXMiLCBoZGV2LT5uYW1lKTsNCi0NCi0Jd2hpbGUgKHF1b3RlICYmIChjb25uID0gaGNpX2xv
d19zZW50KGhkZXYsIEVTQ09fTElOSywgJnF1b3RlKSkpIHsNCisJd2hpbGUgKHF1b3RlICYmIChj
b25uID0gaGNpX2xvd19zZW50KGhkZXYsIHNlbGVjdCwgJnF1b3RlKSkpIHsNCiAJCXdoaWxlIChx
dW90ZSAmJiAoc2tiID0gc2tiX2RlcXVldWUoJmNvbm4tPmRhdGFfcSkpKSB7DQogCQkJQlRfREJH
KCJza2IgJXAgbGVuICVkIiwgc2tiLCBza2ItPmxlbik7DQogCQkJaGNpX3NlbmRfZnJhbWUoc2ti
KTsNCkBAIC0xOTI5LDE5ICsxOTE5LDE4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBoY2lfc2NoZWRf
bGUoc3RydWN0IGhjaV9kZXYgKmhkZXYpDQogew0KIAlzdHJ1Y3QgaGNpX2Nvbm4gKmNvbm47DQog
CXN0cnVjdCBza19idWZmICpza2I7DQotCWludCBxdW90ZSA9IGhkZXYtPmxlX3BrdHMgPyBoZGV2
LT5sZV9jbnQgOiBoZGV2LT5hY2xfY250Ow0KKwlpbnQgcXVvdGUgPSBoZGV2LT5sZV9jbnQ7DQog
DQogCUJUX0RCRygiJXMiLCBoZGV2LT5uYW1lKTsNCiANCiAJaWYgKCF0ZXN0X2JpdChIQ0lfUkFX
LCAmaGRldi0+ZmxhZ3MpKSB7DQogCQkvKiBMRSB0eCB0aW1lb3V0IG11c3QgYmUgbG9uZ2VyIHRo
YW4gbWF4aW11bQ0KIAkJICogbGluayBzdXBlcnZpc2lvbiB0aW1lb3V0ICg0MC45IHNlY29uZHMp
ICovDQotCQlpZiAoIWhkZXYtPmxlX2NudCAmJiBoZGV2LT5sZV9wa3RzICYmDQotCQkJCXRpbWVf
YWZ0ZXIoamlmZmllcywgaGRldi0+bGVfbGFzdF90eCArIEhaICogNDUpKQ0KLQkJCWhjaV9saW5r
X3R4X3RvKGhkZXYsIExFX0xJTkspOw0KKwkJaWYgKCFxdW90ZSAmJiB0aW1lX2FmdGVyKGppZmZp
ZXMsIGhkZXYtPmxlX2xhc3RfdHggKyBIWiAqIDQ1KSkNCisJCQloY2lfbGlua190eF90byhoZGV2
LCBMRV9NQVNLKTsNCiAJfQ0KIA0KLQl3aGlsZSAocXVvdGUgJiYgKGNvbm4gPSBoY2lfbG93X3Nl
bnQoaGRldiwgTEVfTElOSywgJnF1b3RlKSkpIHsNCisJd2hpbGUgKHF1b3RlICYmIChjb25uID0g
aGNpX2xvd19zZW50KGhkZXYsIExFX01BU0ssICZxdW90ZSkpKSB7DQogCQl3aGlsZSAocXVvdGUg
JiYgKHNrYiA9IHNrYl9kZXF1ZXVlKCZjb25uLT5kYXRhX3EpKSkgew0KIAkJCUJUX0RCRygic2ti
ICVwIGxlbiAlZCIsIHNrYiwgc2tiLT5sZW4pOw0KIA0KQEAgLTE5NTIsMTAgKzE5NDEsNyBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgaGNpX3NjaGVkX2xlKHN0cnVjdCBoY2lfZGV2ICpoZGV2KQ0KIAkJ
CWNvbm4tPnNlbnQrKzsNCiAJCX0NCiAJfQ0KLQlpZiAoaGRldi0+bGVfcGt0cykNCi0JCWhkZXYt
PmxlX2NudCA9IHF1b3RlOw0KLQllbHNlDQotCQloZGV2LT5hY2xfY250ID0gcXVvdGU7DQorCWhk
ZXYtPmxlX2NudCA9IHF1b3RlOw0KIH0NCiANCiBzdGF0aWMgdm9pZCBoY2lfdHhfdGFzayh1bnNp
Z25lZCBsb25nIGFyZykNCkBAIC0xOTcwLDE0ICsxOTU2LDE0IEBAIHN0YXRpYyB2b2lkIGhjaV90
eF90YXNrKHVuc2lnbmVkIGxvbmcgYXJnKQ0KIA0KIAkvKiBTY2hlZHVsZSBxdWV1ZXMgYW5kIHNl
bmQgc3R1ZmYgdG8gSENJIGRyaXZlciAqLw0KIA0KKwkvKiBBbHNvIHNjaGVkdWxlcyBMRSBsaW5r
cyBpZiBhY2wgYnVmZmVycyBhcmUgc2hhcmVkICovDQogCWhjaV9zY2hlZF9hY2woaGRldik7DQog
DQorCS8qIEFsc28gc2NoZWR1bGVzIGVzY28gbGlua3MgKi8NCiAJaGNpX3NjaGVkX3NjbyhoZGV2
KTsNCiANCi0JaGNpX3NjaGVkX2VzY28oaGRldik7DQotDQotCS8qIE9ubHkgc2NoZWR1bGUgbGUg
bGlua3MgaWYgZGV2aWNlIGlzIGxlLWNhcGFibGUgKi8NCi0JaWYgKGxtcF9sZV9jYXBhYmxlKGhk
ZXYpKQ0KKwkvKiBPbmx5IHNjaGVkdWxlIExFIGxpbmtzIGhlcmUgaWYgYWNsIGJ1ZmZlcnMgYXJl
IG5vdCBzaGFyZWQgKi8NCisJaWYgKGhkZXYtPmxlX3BrdHMpDQogCQloY2lfc2NoZWRfbGUoaGRl
dik7DQogDQogCS8qIFNlbmQgbmV4dCBxdWV1ZWQgcmF3ICh1bmtub3duIHR5cGUpIHBhY2tldCAq
Lw0KLS0gDQoxLjcuNC4xDQoNCg==