Bluetooth: Mesh: Fix using the correct transmit state
If relaying is not supported, or disabled, the Relay Transmit state will normally be 0, which is not what we want to use when proxying out packets from GATT clients. The bt_mesh_net_relay() function is also used for sending out locally originated packets, in which case the Relay Retransmit state is also the wrong one to use (the Network Transmit state should be used instead). This patch makes sure we only use the Relay Retransmit state for packets originating from the advertising bearer, and for all other packets use the Network Transmit state. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
parent
4871d8567b
commit
c0b5a91588
1 changed files with 10 additions and 1 deletions
|
@ -1135,7 +1135,16 @@ static void bt_mesh_net_relay(struct net_buf_simple *sbuf,
|
|||
|
||||
BT_DBG("TTL %u CTL %u dst 0x%04x", rx->ctx.recv_ttl, rx->ctl, rx->dst);
|
||||
|
||||
transmit = bt_mesh_relay_retransmit_get();
|
||||
/* The Relay Retransmit state is only applied to adv-adv relaying.
|
||||
* Anything else (like GATT to adv, or locally originated packets)
|
||||
* use the Network Transmit state.
|
||||
*/
|
||||
if (rx->net_if == BT_MESH_NET_IF_ADV) {
|
||||
transmit = bt_mesh_relay_retransmit_get();
|
||||
} else {
|
||||
transmit = bt_mesh_net_transmit_get();
|
||||
}
|
||||
|
||||
buf = bt_mesh_adv_create(BT_MESH_ADV_DATA,
|
||||
BT_MESH_TRANSMIT_COUNT(transmit),
|
||||
BT_MESH_TRANSMIT_INT(transmit), K_NO_WAIT);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue