zephyrproject-rtos / zephyr

Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
https://docs.zephyrproject.org
Apache License 2.0
10.59k stars 6.48k forks source link

Bluetooth: Mesh: discardable pool hardly used if extended advertising enable. #74856

Closed LingaoM closed 2 months ago

LingaoM commented 3 months ago

The current mesh application use extended advertising, and extended advertising event not discardable, so the current discarding pool hardly used, but look like occupy many ram footprint.

image
LingaoM commented 3 months ago

In Bluetooth Controller side, only this rx type will be mark discardable, but look like all of this not used in Bluetooth Mesh application.

uint8_t hci_get_class(struct node_rx_pdu *node_rx)
{
#if defined(CONFIG_BT_CONN)
    struct pdu_data *pdu_data = (void *)node_rx->pdu;
#endif

    if (node_rx->hdr.type != NODE_RX_TYPE_DC_PDU) {

        switch (node_rx->hdr.type) {
#if defined(CONFIG_BT_OBSERVER) || \
    defined(CONFIG_BT_CTLR_SCAN_REQ_NOTIFY) || \
    defined(CONFIG_BT_CTLR_ADV_INDICATION) || \
    defined(CONFIG_BT_CTLR_SCAN_INDICATION) || \
    defined(CONFIG_BT_CTLR_PROFILE_ISR)
#if defined(CONFIG_BT_OBSERVER)
        case NODE_RX_TYPE_REPORT:
#endif /* CONFIG_BT_OBSERVER */

#if defined(CONFIG_BT_CTLR_SCAN_REQ_NOTIFY)
        case NODE_RX_TYPE_SCAN_REQ:
#endif /* CONFIG_BT_CTLR_SCAN_REQ_NOTIFY */

#if defined(CONFIG_BT_CTLR_ADV_INDICATION)
        case NODE_RX_TYPE_ADV_INDICATION:
#endif /* CONFIG_BT_CTLR_ADV_INDICATION */

#if defined(CONFIG_BT_CTLR_SCAN_INDICATION)
        case NODE_RX_TYPE_SCAN_INDICATION:
#endif /* CONFIG_BT_CTLR_SCAN_INDICATION */

#if defined(CONFIG_BT_CTLR_PROFILE_ISR)
        case NODE_RX_TYPE_PROFILE:
#endif /* CONFIG_BT_CTLR_PROFILE_ISR */
            return HCI_CLASS_EVT_DISCARDABLE;
#endif
LingaoM commented 3 months ago

https://github.com/zephyrproject-rtos/zephyr/issues/70153

The two are not directly related, but if you look carefully, they are actually indirectly related, so I will quote it here.