[ 
https://issues.apache.org/jira/browse/MYNEWT-555?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Christopher Collins resolved MYNEWT-555.
----------------------------------------
    Resolution: Fixed

> BLE Host - Avoid mbuf copy on chr read
> --------------------------------------
>
>                 Key: MYNEWT-555
>                 URL: https://issues.apache.org/jira/browse/MYNEWT-555
>             Project: Mynewt
>          Issue Type: Bug
>          Components: Nimble
>            Reporter: Christopher Collins
>            Assignee: Christopher Collins
>             Fix For: v1_0_0_rel
>
>
> When the host receives any form of characteristic read request, an extraneous 
> mbuf gets allocated.  The sequence is:
> * Allocate new mbuf.
> * Pass new mbuf to application code so app can fill in characteristic value.
> * Copy characteristic value out of new mbuf into response mbuf
> * Free new mbuf
> The reason for the extra allocation is to simplify reads that specify 
> non-zero offsets. In the case of a GATT read, the peer may read from 
> different offsets of the characteristic. In an effort to simplify the API, I 
> decided the requested offset should be hidden from the application.  Instead, 
> the application always provides the full characteristic value, and the host 
> copies the requested portion out of the user-filled mbuf and into the ACL 
> data packet.
> The fix is to try to reuse the response to hold the characteristic data.  
> This can be done if the read request specifies an offset of 0.  For non-zero 
> offsets, the old behavior remains: allocate an extra mbuf and copy the data.
> Additional context: 
> https://lists.apache.org/thread.html/78358745716cac9512b3c659dfe9b9b7bbb1354ee4c38d6da137bcc0@%3Cdev.mynewt.apache.org%3E



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to