Thread (51 messages) 51 messages, 7 authors, 2016-08-05

Re: [RFC bluetooth-next 00/20] bluetooth: rework 6lowpan implementation

flat view

From: Alexander Aring <hidden>
Date: 2016-07-12 18:35:51

Hi,

On 07/12/2016 04:51 PM, Luiz Augusto von Dentz wrote:
...
quoted
HOW TO REPRODUCE:

It's simple, do some high payloads which makes lot tx/rcv traffic on both sides:

Node A:

 ping6 $IP_NODEB%6lo0 -s 60000

Node B:

 ping6 ff02::1%6lo0
Im not sure I understand what you are trying to do with a packet of
60Kb, the l2cap_chan can most likely only do 1280 bytes and even with
60Kb is just some incredible high value to produce on both sides tx/rx
data. The other side will normally send some "defragmentation failure"
icmp messages.

This value is just to produce the high traffic, not practice payload.
fragmentation this will consume the credits quicker than we can
receive more so it will eventually starting buffering until it gets
stuck. Note that it is probably still receiving credits but we
This is exactly what I like to do. Produce a lot of data to kill L3
layer, but this should not kill the L2 layer. Killing the L2 layer is
what's happend here.

If I do a lot of data on e.g. tcp traffic and the tcp connection will be
closed -> that's fine for me but afterwards starting a new L3 connection
should be still working. This is not the case here, I can kill L2 layer
and nothing works anymore, because L2 running into deadlock.
probably have so much data buffered that all the credits are consumed
almost immediately after receiving, or you don't see -EAGAIN more than
once?
My example shows that we transmit some data on both nodes, that is
important to check the l2cap_chan_send return type.

When I do that above and running into the deadlock the IPv6 connection
runs "NS" messages only, because it still can send on L3 layer but the
L2 layer is killed -> I get -EAGAIN in l2cap_chan_send always on both
nodes because tx_credits are on both nodes zero and will not be
incremented again.

So far I know these tx_credits will be incremented only if somebody
sends something again, right? This will never be the case again and I am
stucked in a deadlock which should not be there.

to your question:

"or you don't see -EAGAIN more than once"

I see -EAGAIN always at calling l2cap_chan_send on both nodes. I think I
can wait forever, after an year I still see "-EAGAIN" when calling
l2cap_chan_send.

Nevertheless, I will try to hit the deadlock (-EAGAIN) on both nodes so
nobody transmits anything anymore. Then waiting six hours and look if
still -EAGAIN is there on both nodes. I will report again here, after
that time it should working again, but I don't believe that.

- Alex
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help