From 4ec435165753bf353b35ae700c3ed5a1421eb46b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jani=20Hirsim=C3=A4ki?= Date: Thu, 26 Jun 2025 15:02:12 +0300 Subject: [PATCH] drivers: modem_cellular: changes due to net_link_addr struct changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Recent changes to net_link_addr structure to not use pointers have made it necessary to update the modem_cellular driver to ensure compatibility with the new structure definition. Otherwise, an assertion failure occurs in subsys/net/l2/ppp/ipv6cp.c:40. This commit updates that link address is set to NET_LINK_ADDR_MAX_LENGTH least significant bytes of IMEI instead of IMEI total length. Signed-off-by: Jani Hirsimäki --- drivers/modem/modem_cellular.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/modem/modem_cellular.c b/drivers/modem/modem_cellular.c index 34f747ef8a2..0c13d2a7d0e 100644 --- a/drivers/modem/modem_cellular.c +++ b/drivers/modem/modem_cellular.c @@ -881,8 +881,17 @@ static void modem_cellular_run_init_script_event_handler(struct modem_cellular_d break; case MODEM_CELLULAR_EVENT_SCRIPT_SUCCESS: - net_if_set_link_addr(modem_ppp_get_iface(data->ppp), data->imei, - ARRAY_SIZE(data->imei), NET_LINK_UNKNOWN); + /* Get link_addr_len least significant bytes from IMEI as a link address */ + uint8_t imei_len = MODEM_CELLULAR_DATA_IMEI_LEN - 1; /* Exclude str end */ + uint8_t link_addr_len = MIN(NET_LINK_ADDR_MAX_LENGTH, imei_len); + uint8_t *link_addr_ptr = data->imei + (imei_len - link_addr_len); + int err; + + err = net_if_set_link_addr(modem_ppp_get_iface(data->ppp), link_addr_ptr, + link_addr_len, NET_LINK_UNKNOWN); + if (err) { + LOG_WRN("Failed to set link address on PPP interface (%d)", err); + } modem_chat_release(&data->chat); modem_pipe_attach(data->uart_pipe, modem_cellular_bus_pipe_handler, data);