Return-Path: From: Peter Hurley To: linux-bluetooth Date: Wed, 17 Aug 2011 16:03:18 -0400 Subject: [RFC 4/5] Bluetooth: Schedule links by tx buffer use Message-ID: <1313611398.2273.10.camel@THOR> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-bluetooth-owner@vger.kernel.org List-ID: 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==