* [PATCHv1 0/2] Adds support for block based flow ctrl
@ 2012-02-03 14:27 Emeltchenko Andrei
2012-02-03 14:27 ` [PATCHv1 1/2] Bluetooth: Recalculate sched HCI blk/pkt " Emeltchenko Andrei
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Emeltchenko Andrei @ 2012-02-03 14:27 UTC (permalink / raw)
To: linux-bluetooth
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Split HCI scheduling for block and packet flow control.
Changes:
No change from RFC I've sent some time ago since I've got
no comments.
Andrei Emeltchenko (2):
Bluetooth: Recalculate sched HCI blk/pkt flow ctrl
Bluetooth: Helper removes duplicated code
net/bluetooth/hci_core.c | 92 ++++++++++++++++++++++++++++++++++++++++------
1 files changed, 80 insertions(+), 12 deletions(-)
--
1.7.8.3
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCHv1 1/2] Bluetooth: Recalculate sched HCI blk/pkt flow ctrl 2012-02-03 14:27 [PATCHv1 0/2] Adds support for block based flow ctrl Emeltchenko Andrei @ 2012-02-03 14:27 ` Emeltchenko Andrei 2012-02-03 16:01 ` Marcel Holtmann 2012-02-03 14:27 ` [PATCHv1 2/2] Bluetooth: Helper removes duplicated code Emeltchenko Andrei 2012-02-03 18:52 ` [PATCHv1 0/2] Adds support for block based flow ctrl Johan Hedberg 2 siblings, 1 reply; 9+ messages in thread From: Emeltchenko Andrei @ 2012-02-03 14:27 UTC (permalink / raw) To: linux-bluetooth From: Andrei Emeltchenko <andrei.emeltchenko@intel.com> Split HCI scheduling for block and packet flow control. Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com> --- net/bluetooth/hci_core.c | 85 ++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 79 insertions(+), 6 deletions(-) diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 76dc153..9a56a40 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -2384,18 +2384,19 @@ static void hci_prio_recalculate(struct hci_dev *hdev, __u8 type) } -static inline void hci_sched_acl(struct hci_dev *hdev) +static inline int __get_blocks(struct hci_dev *hdev, struct sk_buff *skb) +{ + /* Calculate count of blocks used by this packet */ + return DIV_ROUND_UP(skb->len - HCI_ACL_HDR_SIZE, hdev->block_len); +} + +static inline void hci_sched_acl_pkt(struct hci_dev *hdev) { struct hci_chan *chan; struct sk_buff *skb; int quote; unsigned int cnt; - BT_DBG("%s", hdev->name); - - if (!hci_conn_num(hdev, ACL_LINK)) - return; - if (!test_bit(HCI_RAW, &hdev->flags)) { /* ACL tx timeout must be longer than maximum * link supervision timeout (40.9 seconds) */ @@ -2435,6 +2436,78 @@ static inline void hci_sched_acl(struct hci_dev *hdev) hci_prio_recalculate(hdev, ACL_LINK); } +static inline void hci_sched_acl_blk(struct hci_dev *hdev) +{ + struct hci_chan *chan; + struct sk_buff *skb; + int quote; + unsigned int cnt; + + if (!test_bit(HCI_RAW, &hdev->flags)) { + /* ACL tx timeout must be longer than maximum + * link supervision timeout (40.9 seconds) */ + if (!hdev->block_cnt && time_after(jiffies, hdev->acl_last_tx + + msecs_to_jiffies(HCI_ACL_TX_TIMEOUT))) + hci_link_tx_to(hdev, ACL_LINK); + } + + cnt = hdev->block_cnt; + + while (hdev->block_cnt > 0 && + (chan = hci_chan_sent(hdev, ACL_LINK, "e))) { + u32 priority = (skb_peek(&chan->data_q))->priority; + while (quote > 0 && (skb = skb_peek(&chan->data_q))) { + int blocks; + + BT_DBG("chan %p skb %p len %d priority %u", chan, skb, + skb->len, skb->priority); + + /* Stop if priority has changed */ + if (skb->priority < priority) + break; + + skb = skb_dequeue(&chan->data_q); + + blocks = __get_blocks(hdev, skb); + if (blocks > hdev->block_cnt) + return; + + hci_conn_enter_active_mode(chan->conn, + bt_cb(skb)->force_active); + + hci_send_frame(skb); + hdev->acl_last_tx = jiffies; + + hdev->block_cnt -= blocks; + quote -= blocks; + + chan->sent += blocks; + chan->conn->sent += blocks; + } + } + + if (cnt != hdev->block_cnt) + hci_prio_recalculate(hdev, ACL_LINK); +} + +static inline void hci_sched_acl(struct hci_dev *hdev) +{ + BT_DBG("%s", hdev->name); + + if (!hci_conn_num(hdev, ACL_LINK)) + return; + + switch (hdev->flow_ctl_mode) { + case HCI_FLOW_CTL_MODE_PACKET_BASED: + hci_sched_acl_pkt(hdev); + break; + + case HCI_FLOW_CTL_MODE_BLOCK_BASED: + hci_sched_acl_blk(hdev); + break; + } +} + /* Schedule SCO */ static inline void hci_sched_sco(struct hci_dev *hdev) { -- 1.7.8.3 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCHv1 1/2] Bluetooth: Recalculate sched HCI blk/pkt flow ctrl 2012-02-03 14:27 ` [PATCHv1 1/2] Bluetooth: Recalculate sched HCI blk/pkt " Emeltchenko Andrei @ 2012-02-03 16:01 ` Marcel Holtmann 0 siblings, 0 replies; 9+ messages in thread From: Marcel Holtmann @ 2012-02-03 16:01 UTC (permalink / raw) To: Emeltchenko Andrei; +Cc: linux-bluetooth Hi Andrei, > Split HCI scheduling for block and packet flow control. > > Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com> > --- > net/bluetooth/hci_core.c | 85 ++++++++++++++++++++++++++++++++++++++++++--- > 1 files changed, 79 insertions(+), 6 deletions(-) Acked-by: Marcel Holtmann <marcel@holtmann.org> Regards Marcel ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCHv1 2/2] Bluetooth: Helper removes duplicated code 2012-02-03 14:27 [PATCHv1 0/2] Adds support for block based flow ctrl Emeltchenko Andrei 2012-02-03 14:27 ` [PATCHv1 1/2] Bluetooth: Recalculate sched HCI blk/pkt " Emeltchenko Andrei @ 2012-02-03 14:27 ` Emeltchenko Andrei 2012-02-03 16:03 ` Marcel Holtmann ` (2 more replies) 2012-02-03 18:52 ` [PATCHv1 0/2] Adds support for block based flow ctrl Johan Hedberg 2 siblings, 3 replies; 9+ messages in thread From: Emeltchenko Andrei @ 2012-02-03 14:27 UTC (permalink / raw) To: linux-bluetooth From: Andrei Emeltchenko <andrei.emeltchenko@intel.com> Use __check_timout helper to remove duplicated code Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com> --- net/bluetooth/hci_core.c | 31 +++++++++++++------------------ 1 files changed, 13 insertions(+), 18 deletions(-) diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 9a56a40..95eeae5 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -2390,22 +2390,25 @@ static inline int __get_blocks(struct hci_dev *hdev, struct sk_buff *skb) return DIV_ROUND_UP(skb->len - HCI_ACL_HDR_SIZE, hdev->block_len); } -static inline void hci_sched_acl_pkt(struct hci_dev *hdev) +static inline void __check_timeout(struct hci_dev *hdev, unsigned int cnt) { - struct hci_chan *chan; - struct sk_buff *skb; - int quote; - unsigned int cnt; - if (!test_bit(HCI_RAW, &hdev->flags)) { /* ACL tx timeout must be longer than maximum * link supervision timeout (40.9 seconds) */ - if (!hdev->acl_cnt && time_after(jiffies, hdev->acl_last_tx + + if (!cnt && time_after(jiffies, hdev->acl_last_tx + msecs_to_jiffies(HCI_ACL_TX_TIMEOUT))) hci_link_tx_to(hdev, ACL_LINK); } +} - cnt = hdev->acl_cnt; +static inline void hci_sched_acl_pkt(struct hci_dev *hdev) +{ + unsigned int cnt = hdev->acl_cnt; + struct hci_chan *chan; + struct sk_buff *skb; + int quote; + + __check_timeout(hdev, cnt); while (hdev->acl_cnt && (chan = hci_chan_sent(hdev, ACL_LINK, "e))) { @@ -2438,20 +2441,12 @@ static inline void hci_sched_acl_pkt(struct hci_dev *hdev) static inline void hci_sched_acl_blk(struct hci_dev *hdev) { + unsigned int cnt = hdev->block_cnt; struct hci_chan *chan; struct sk_buff *skb; int quote; - unsigned int cnt; - - if (!test_bit(HCI_RAW, &hdev->flags)) { - /* ACL tx timeout must be longer than maximum - * link supervision timeout (40.9 seconds) */ - if (!hdev->block_cnt && time_after(jiffies, hdev->acl_last_tx + - msecs_to_jiffies(HCI_ACL_TX_TIMEOUT))) - hci_link_tx_to(hdev, ACL_LINK); - } - cnt = hdev->block_cnt; + __check_timeout(hdev, cnt); while (hdev->block_cnt > 0 && (chan = hci_chan_sent(hdev, ACL_LINK, "e))) { -- 1.7.8.3 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCHv1 2/2] Bluetooth: Helper removes duplicated code 2012-02-03 14:27 ` [PATCHv1 2/2] Bluetooth: Helper removes duplicated code Emeltchenko Andrei @ 2012-02-03 16:03 ` Marcel Holtmann 2012-02-03 17:00 ` Ulisses Furquim 2012-02-03 16:52 ` Vinicius Costa Gomes 2012-02-03 17:02 ` Marcel Holtmann 2 siblings, 1 reply; 9+ messages in thread From: Marcel Holtmann @ 2012-02-03 16:03 UTC (permalink / raw) To: Emeltchenko Andrei; +Cc: linux-bluetooth Hi Andrei, > Use __check_timout helper to remove duplicated code > > Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com> > --- > net/bluetooth/hci_core.c | 31 +++++++++++++------------------ > 1 files changed, 13 insertions(+), 18 deletions(-) > > diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c > index 9a56a40..95eeae5 100644 > --- a/net/bluetooth/hci_core.c > +++ b/net/bluetooth/hci_core.c > @@ -2390,22 +2390,25 @@ static inline int __get_blocks(struct hci_dev *hdev, struct sk_buff *skb) > return DIV_ROUND_UP(skb->len - HCI_ACL_HDR_SIZE, hdev->block_len); > } > > -static inline void hci_sched_acl_pkt(struct hci_dev *hdev) > +static inline void __check_timeout(struct hci_dev *hdev, unsigned int cnt) > { > - struct hci_chan *chan; > - struct sk_buff *skb; > - int quote; > - unsigned int cnt; > - > if (!test_bit(HCI_RAW, &hdev->flags)) { > /* ACL tx timeout must be longer than maximum > * link supervision timeout (40.9 seconds) */ > - if (!hdev->acl_cnt && time_after(jiffies, hdev->acl_last_tx + > + if (!cnt && time_after(jiffies, hdev->acl_last_tx + > msecs_to_jiffies(HCI_ACL_TX_TIMEOUT))) > hci_link_tx_to(hdev, ACL_LINK); > } > +} > > - cnt = hdev->acl_cnt; > +static inline void hci_sched_acl_pkt(struct hci_dev *hdev) > +{ > + unsigned int cnt = hdev->acl_cnt; > + struct hci_chan *chan; > + struct sk_buff *skb; > + int quote; > + > + __check_timeout(hdev, cnt); > > while (hdev->acl_cnt && > (chan = hci_chan_sent(hdev, ACL_LINK, "e))) { > @@ -2438,20 +2441,12 @@ static inline void hci_sched_acl_pkt(struct hci_dev *hdev) > > static inline void hci_sched_acl_blk(struct hci_dev *hdev) > { > + unsigned int cnt = hdev->block_cnt; > struct hci_chan *chan; > struct sk_buff *skb; > int quote; > - unsigned int cnt; > - > - if (!test_bit(HCI_RAW, &hdev->flags)) { > - /* ACL tx timeout must be longer than maximum > - * link supervision timeout (40.9 seconds) */ > - if (!hdev->block_cnt && time_after(jiffies, hdev->acl_last_tx + > - msecs_to_jiffies(HCI_ACL_TX_TIMEOUT))) > - hci_link_tx_to(hdev, ACL_LINK); > - } > > - cnt = hdev->block_cnt; maybe the patch is just funnily trying to be too smart, but I am missing the cnt init here. > + __check_timeout(hdev, cnt); > > while (hdev->block_cnt > 0 && > (chan = hci_chan_sent(hdev, ACL_LINK, "e))) { Regards Marcel ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCHv1 2/2] Bluetooth: Helper removes duplicated code 2012-02-03 16:03 ` Marcel Holtmann @ 2012-02-03 17:00 ` Ulisses Furquim 0 siblings, 0 replies; 9+ messages in thread From: Ulisses Furquim @ 2012-02-03 17:00 UTC (permalink / raw) To: Marcel Holtmann; +Cc: Emeltchenko Andrei, linux-bluetooth Hi Marcel, On Fri, Feb 3, 2012 at 2:03 PM, Marcel Holtmann <marcel@holtmann.org> wrote= : > Hi Andrei, > >> Use __check_timout helper to remove duplicated code >> >> Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com> >> --- >> =A0net/bluetooth/hci_core.c | =A0 31 +++++++++++++------------------ >> =A01 files changed, 13 insertions(+), 18 deletions(-) >> >> diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c >> index 9a56a40..95eeae5 100644 >> --- a/net/bluetooth/hci_core.c >> +++ b/net/bluetooth/hci_core.c >> @@ -2390,22 +2390,25 @@ static inline int __get_blocks(struct hci_dev *h= dev, struct sk_buff *skb) >> =A0 =A0 =A0 return DIV_ROUND_UP(skb->len - HCI_ACL_HDR_SIZE, hdev->block= _len); >> =A0} >> >> -static inline void hci_sched_acl_pkt(struct hci_dev *hdev) >> +static inline void __check_timeout(struct hci_dev *hdev, unsigned int c= nt) >> =A0{ >> - =A0 =A0 struct hci_chan *chan; >> - =A0 =A0 struct sk_buff *skb; >> - =A0 =A0 int quote; >> - =A0 =A0 unsigned int cnt; >> - >> =A0 =A0 =A0 if (!test_bit(HCI_RAW, &hdev->flags)) { >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 /* ACL tx timeout must be longer than maximu= m >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0* link supervision timeout (40.9 seconds)= */ >> - =A0 =A0 =A0 =A0 =A0 =A0 if (!hdev->acl_cnt && time_after(jiffies, hdev= ->acl_last_tx + >> + =A0 =A0 =A0 =A0 =A0 =A0 if (!cnt && time_after(jiffies, hdev->acl_last= _tx + >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 msecs_to_jiffies(HCI_ACL_TX_TIMEOUT))) >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 hci_link_tx_to(hdev, ACL_LIN= K); >> =A0 =A0 =A0 } >> +} >> >> - =A0 =A0 cnt =3D hdev->acl_cnt; >> +static inline void hci_sched_acl_pkt(struct hci_dev *hdev) >> +{ >> + =A0 =A0 unsigned int cnt =3D hdev->acl_cnt; cnt is initialized here. >> + =A0 =A0 struct hci_chan *chan; >> + =A0 =A0 struct sk_buff *skb; >> + =A0 =A0 int quote; >> + >> + =A0 =A0 __check_timeout(hdev, cnt); >> >> =A0 =A0 =A0 while (hdev->acl_cnt && >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (chan =3D hci_chan_sent(hdev= , ACL_LINK, "e))) { >> @@ -2438,20 +2441,12 @@ static inline void hci_sched_acl_pkt(struct hci_= dev *hdev) >> >> =A0static inline void hci_sched_acl_blk(struct hci_dev *hdev) >> =A0{ >> + =A0 =A0 unsigned int cnt =3D hdev->block_cnt; And cnt is initialized here, for block count. >> =A0 =A0 =A0 struct hci_chan *chan; >> =A0 =A0 =A0 struct sk_buff *skb; >> =A0 =A0 =A0 int quote; >> - =A0 =A0 unsigned int cnt; >> - >> - =A0 =A0 if (!test_bit(HCI_RAW, &hdev->flags)) { >> - =A0 =A0 =A0 =A0 =A0 =A0 /* ACL tx timeout must be longer than maximum >> - =A0 =A0 =A0 =A0 =A0 =A0 =A0* link supervision timeout (40.9 seconds) *= / >> - =A0 =A0 =A0 =A0 =A0 =A0 if (!hdev->block_cnt && time_after(jiffies, hd= ev->acl_last_tx + >> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 msecs_to_jiffies(HCI_ACL_TX_TIMEOUT))) >> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 hci_link_tx_to(hdev, ACL_LINK)= ; >> - =A0 =A0 } >> >> - =A0 =A0 cnt =3D hdev->block_cnt; > > maybe the patch is just funnily trying to be too smart, but I am missing > the cnt init here. And yes, the patch itself looks confusing but it was because of how git created the changes. I think the patch looks good. >> + =A0 =A0 __check_timeout(hdev, cnt); >> >> =A0 =A0 =A0 while (hdev->block_cnt > 0 && >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (chan =3D hci_chan_sent(hdev= , ACL_LINK, "e))) { > > Regards > > Marcel Regards, --=20 Ulisses Furquim ProFUSION embedded systems http://profusion.mobi Mobile: +55 19 9250 0942 Skype: ulissesffs ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCHv1 2/2] Bluetooth: Helper removes duplicated code 2012-02-03 14:27 ` [PATCHv1 2/2] Bluetooth: Helper removes duplicated code Emeltchenko Andrei 2012-02-03 16:03 ` Marcel Holtmann @ 2012-02-03 16:52 ` Vinicius Costa Gomes 2012-02-03 17:02 ` Marcel Holtmann 2 siblings, 0 replies; 9+ messages in thread From: Vinicius Costa Gomes @ 2012-02-03 16:52 UTC (permalink / raw) To: Emeltchenko Andrei; +Cc: linux-bluetooth Hi Andrei, On 16:27 Fri 03 Feb, Emeltchenko Andrei wrote: > From: Andrei Emeltchenko <andrei.emeltchenko@intel.com> > > Use __check_timout helper to remove duplicated code Typo here: __check_timeout > > Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com> > --- > net/bluetooth/hci_core.c | 31 +++++++++++++------------------ > 1 files changed, 13 insertions(+), 18 deletions(-) > > diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c > index 9a56a40..95eeae5 100644 > --- a/net/bluetooth/hci_core.c > +++ b/net/bluetooth/hci_core.c > @@ -2390,22 +2390,25 @@ static inline int __get_blocks(struct hci_dev *hdev, struct sk_buff *skb) > return DIV_ROUND_UP(skb->len - HCI_ACL_HDR_SIZE, hdev->block_len); [ snip ] Cheers, -- Vinicius ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCHv1 2/2] Bluetooth: Helper removes duplicated code 2012-02-03 14:27 ` [PATCHv1 2/2] Bluetooth: Helper removes duplicated code Emeltchenko Andrei 2012-02-03 16:03 ` Marcel Holtmann 2012-02-03 16:52 ` Vinicius Costa Gomes @ 2012-02-03 17:02 ` Marcel Holtmann 2 siblings, 0 replies; 9+ messages in thread From: Marcel Holtmann @ 2012-02-03 17:02 UTC (permalink / raw) To: Emeltchenko Andrei; +Cc: linux-bluetooth Hi Andrei, > Use __check_timout helper to remove duplicated code > > Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com> > --- > net/bluetooth/hci_core.c | 31 +++++++++++++------------------ > 1 files changed, 13 insertions(+), 18 deletions(-) Reviewed-by: Ulisses Furquim <ulisses@profusion.mobi> Acked-by: Marcel Holtmann <marcel@holtmann.org> Regards Marcel ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCHv1 0/2] Adds support for block based flow ctrl 2012-02-03 14:27 [PATCHv1 0/2] Adds support for block based flow ctrl Emeltchenko Andrei 2012-02-03 14:27 ` [PATCHv1 1/2] Bluetooth: Recalculate sched HCI blk/pkt " Emeltchenko Andrei 2012-02-03 14:27 ` [PATCHv1 2/2] Bluetooth: Helper removes duplicated code Emeltchenko Andrei @ 2012-02-03 18:52 ` Johan Hedberg 2 siblings, 0 replies; 9+ messages in thread From: Johan Hedberg @ 2012-02-03 18:52 UTC (permalink / raw) To: Emeltchenko Andrei; +Cc: linux-bluetooth Hi Andrei, On Fri, Feb 03, 2012, Emeltchenko Andrei wrote: > From: Andrei Emeltchenko <andrei.emeltchenko@intel.com> > > Split HCI scheduling for block and packet flow control. > > Changes: > No change from RFC I've sent some time ago since I've got > no comments. > > Andrei Emeltchenko (2): > Bluetooth: Recalculate sched HCI blk/pkt flow ctrl > Bluetooth: Helper removes duplicated code > > net/bluetooth/hci_core.c | 92 ++++++++++++++++++++++++++++++++++++++++------ > 1 files changed, 80 insertions(+), 12 deletions(-) Both patches have been applied to my bluetooth-next tree. Thanks. Johan ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2012-02-03 18:52 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-02-03 14:27 [PATCHv1 0/2] Adds support for block based flow ctrl Emeltchenko Andrei 2012-02-03 14:27 ` [PATCHv1 1/2] Bluetooth: Recalculate sched HCI blk/pkt " Emeltchenko Andrei 2012-02-03 16:01 ` Marcel Holtmann 2012-02-03 14:27 ` [PATCHv1 2/2] Bluetooth: Helper removes duplicated code Emeltchenko Andrei 2012-02-03 16:03 ` Marcel Holtmann 2012-02-03 17:00 ` Ulisses Furquim 2012-02-03 16:52 ` Vinicius Costa Gomes 2012-02-03 17:02 ` Marcel Holtmann 2012-02-03 18:52 ` [PATCHv1 0/2] Adds support for block based flow ctrl Johan Hedberg
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).