Re: L2CAP errors on linux while running 6loble
Vakul Garg <vakul.garg@...>
It seems that there are issues in multiple places.
First one, I encounter is the following log:
[bt] [ERR] bt_l2cap_chan_send: failed to send message -36
Digging deeper, I find that the function net_pkt_get() does not take into account Ipv4/v6 header lengths while calculating pkt->data_len.
Also, in function net_pkt_append(), I do not understand, why max_len is overwritten with TCP send_mss.
The same questions I just now asked over zephyr-devel.
I am sorry for the duplication.
From: Cufi, Carles [mailto:Carles.Cufi@...]
Sent: Monday, November 27, 2017 4:35 PM
To: Vakul Garg <vakul.garg@...>; zephyr-users@...
Subject: RE: L2CAP errors on linux while running 6loble
Right, so now we know that this is an issue with the Zephyr side, either on the Host or Controller side.
Maybe Luiz can shed some light into this. Perhaps if you send exact instructions on how to reproduce the issue by providing the code and the configuration files?
I tried again with a standard dongle for linux controller. (I used CSR 4.0 dongle as mentioned in the link below.)
The behavior is the same.
The linux kernel sometimes reports error:
On zephyr side also, I can that l2cap does not like the size of SDU.
Function l2cap_chan_le_send_sdu() finds that the total_len is more than channel’s tx mtu.
So I believe that the SDUs sometime get generated beyond allowable size by zephyr side.
PS: I am using sample/net/https_server with a bigger index_html (2000 bytes).
File size around 1100 byte work ok.
Any 4.0 dongle should work fine, but maybe Johan or Luiz can let us know of their favorite ones, since they test more often with dongles than myself.
I personally use the Intel controller that is built into my laptop.
Ok, I will buy a standard dongle for linux controller.
Can you suggest which one to buy?
Is this one ok?
The reason I ask is that I’ve seen similar issues with our boards (nRF5x) when we had issues in the HCI flow control.
Is there a chance you can test replacing the Linux controller with a “standard” one (the PTS dongle or any Bluetooth 4.0+ dongle you have) to see which side is introducing the issue?
Thanks for paying attention to this.
I am running latest zephyr from master branch on nxp board frdm_k64f.
The k64f board is connected to another nxp board frdm_kw41z.
Kw41z board runs nxp ble controller firmware (based on freertos).
On linux side as well, it is another frdm_kw41z board (connected through usb) acting as ble controller.
Could you share a bit more info about the Zephyr endpoint? Which board/chip are you using, what Zephyr version and whether this is a single-chip or dual-chip solution?
Also on the Linux side, what controller are you using? Is it Zephyr-based? If so, which Zephyr version and hardware?
I am transferring UDP packets over 6loble link between a zephyr endpoint and linux box.
On my linux box, I see errors:
[root@lti ~]# dmesg
[416975.584892] Bluetooth: Too much LE L2CAP data received
[416976.365482] Bluetooth: Too much LE L2CAP data received
[416977.171158] Bluetooth: Frame is too long (len 186, expected len 68)
[416977.566971] Bluetooth: Too much LE L2CAP data received
Can someone please provide some hint what could I be doing wrong?
I am using linux kernel version 4.13.12.