You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ry...@apache.org on 2020/03/07 00:09:38 UTC
[mynewt-nimble] 07/11: nimble/l2cap: Minor change to avoid
confusion on MPS/MTU meaning
This is an automated email from the ASF dual-hosted git repository.
rymek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git
commit 1fc7f44cf29fb815a66e6545cb4024f734c1ecf6
Author: Ćukasz Rymanowski <lu...@codecoup.pl>
AuthorDate: Wed Feb 26 13:08:15 2020 +0100
nimble/l2cap: Minor change to avoid confusion on MPS/MTU meaning
---
nimble/host/src/ble_l2cap_coc.c | 8 ++++----
nimble/host/src/ble_l2cap_priv.h | 16 ++++++++++++++--
nimble/host/src/ble_l2cap_sig.c | 8 ++++----
3 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/nimble/host/src/ble_l2cap_coc.c b/nimble/host/src/ble_l2cap_coc.c
index c656ea1..798b0dc 100644
--- a/nimble/host/src/ble_l2cap_coc.c
+++ b/nimble/host/src/ble_l2cap_coc.c
@@ -290,7 +290,7 @@ ble_l2cap_coc_chan_alloc(struct ble_hs_conn *conn, uint16_t psm, uint16_t mtu,
chan->cb = cb;
chan->cb_arg = cb_arg;
chan->scid = ble_l2cap_coc_get_cid(conn->l2cap_coc_cid_mask);
- chan->my_mtu = MYNEWT_VAL(BLE_L2CAP_COC_MPS);
+ chan->my_coc_mps = MYNEWT_VAL(BLE_L2CAP_COC_MPS);
chan->rx_fn = ble_l2cap_coc_rx_fn;
chan->coc_rx.mtu = mtu;
chan->coc_rx.sdu = sdu_rx;
@@ -298,8 +298,8 @@ ble_l2cap_coc_chan_alloc(struct ble_hs_conn *conn, uint16_t psm, uint16_t mtu,
/* Number of credits should allow to send full SDU with on given
* L2CAP MTU
*/
- chan->coc_rx.credits = mtu / chan->my_mtu;
- if (mtu % chan->my_mtu) {
+ chan->coc_rx.credits = mtu / chan->my_coc_mps;
+ if (mtu % chan->my_coc_mps) {
chan->coc_rx.credits++;
}
@@ -412,7 +412,7 @@ ble_l2cap_coc_continue_tx(struct ble_l2cap_chan *chan)
}
/* Take into account peer MTU */
- len = min(left_to_send, chan->peer_mtu);
+ len = min(left_to_send, chan->peer_coc_mps);
/* Prepare packet */
txom = ble_hs_mbuf_l2cap_pkt();
diff --git a/nimble/host/src/ble_l2cap_priv.h b/nimble/host/src/ble_l2cap_priv.h
index 1585d66..937dbaf 100644
--- a/nimble/host/src/ble_l2cap_priv.h
+++ b/nimble/host/src/ble_l2cap_priv.h
@@ -65,8 +65,20 @@ struct ble_l2cap_chan {
uint16_t conn_handle;
uint16_t dcid;
uint16_t scid;
- uint16_t my_mtu;
- uint16_t peer_mtu; /* 0 if not exchanged. */
+
+ /* Unions just to avoid confusion on MPS/MTU.
+ * In CoC context, L2CAP MTU is MPS
+ */
+ union {
+ uint16_t my_mtu;
+ uint16_t my_coc_mps;
+ };
+
+ union {
+ uint16_t peer_mtu;
+ uint16_t peer_coc_mps;
+ };
+
ble_l2cap_chan_flags flags;
struct os_mbuf *rx_buf;
diff --git a/nimble/host/src/ble_l2cap_sig.c b/nimble/host/src/ble_l2cap_sig.c
index 11b8a88..b8beefe 100644
--- a/nimble/host/src/ble_l2cap_sig.c
+++ b/nimble/host/src/ble_l2cap_sig.c
@@ -692,7 +692,7 @@ ble_l2cap_sig_coc_req_rx(uint16_t conn_handle, struct ble_l2cap_sig_hdr *hdr,
/* Fill up remote configuration. Note MPS is the L2CAP MTU*/
chan->dcid = scid;
- chan->peer_mtu = le16toh(req->mps);
+ chan->peer_coc_mps = le16toh(req->mps);
chan->coc_tx.credits = le16toh(req->credits);
chan->coc_tx.mtu = le16toh(req->mtu);
@@ -716,7 +716,7 @@ ble_l2cap_sig_coc_req_rx(uint16_t conn_handle, struct ble_l2cap_sig_hdr *hdr,
rsp->dcid = htole16(chan->scid);
rsp->credits = htole16(chan->coc_rx.credits);
- rsp->mps = htole16(chan->my_mtu);
+ rsp->mps = htole16(chan->my_coc_mps);
rsp->mtu = htole16(chan->coc_rx.mtu);
rsp->result = htole16(BLE_L2CAP_COC_ERR_CONNECTION_SUCCESS);
@@ -777,7 +777,7 @@ ble_l2cap_sig_coc_rsp_rx(uint16_t conn_handle, struct ble_l2cap_sig_hdr *hdr,
/* Fill up remote configuration
* Note MPS is the L2CAP MTU
*/
- chan->peer_mtu = le16toh(rsp->mps);
+ chan->peer_coc_mps = le16toh(rsp->mps);
chan->dcid = le16toh(rsp->dcid);
chan->coc_tx.mtu = le16toh(rsp->mtu);
chan->coc_tx.credits = le16toh(rsp->credits);
@@ -851,7 +851,7 @@ ble_l2cap_sig_coc_connect(uint16_t conn_handle, uint16_t psm, uint16_t mtu,
req->psm = htole16(psm);
req->scid = htole16(chan->scid);
req->mtu = htole16(chan->coc_rx.mtu);
- req->mps = htole16(chan->my_mtu);
+ req->mps = htole16(chan->my_coc_mps);
req->credits = htole16(chan->coc_rx.credits);
ble_hs_unlock();