Skip to content

Commit 4ec4351

Browse files
jhirsikartben
authored andcommitted
drivers: modem_cellular: changes due to net_link_addr struct changes
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 <jani.hirsimaki@nordicsemi.no>
1 parent 3b0e134 commit 4ec4351

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

drivers/modem/modem_cellular.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -881,8 +881,17 @@ static void modem_cellular_run_init_script_event_handler(struct modem_cellular_d
881881
break;
882882

883883
case MODEM_CELLULAR_EVENT_SCRIPT_SUCCESS:
884-
net_if_set_link_addr(modem_ppp_get_iface(data->ppp), data->imei,
885-
ARRAY_SIZE(data->imei), NET_LINK_UNKNOWN);
884+
/* Get link_addr_len least significant bytes from IMEI as a link address */
885+
uint8_t imei_len = MODEM_CELLULAR_DATA_IMEI_LEN - 1; /* Exclude str end */
886+
uint8_t link_addr_len = MIN(NET_LINK_ADDR_MAX_LENGTH, imei_len);
887+
uint8_t *link_addr_ptr = data->imei + (imei_len - link_addr_len);
888+
int err;
889+
890+
err = net_if_set_link_addr(modem_ppp_get_iface(data->ppp), link_addr_ptr,
891+
link_addr_len, NET_LINK_UNKNOWN);
892+
if (err) {
893+
LOG_WRN("Failed to set link address on PPP interface (%d)", err);
894+
}
886895

887896
modem_chat_release(&data->chat);
888897
modem_pipe_attach(data->uart_pipe, modem_cellular_bus_pipe_handler, data);

0 commit comments

Comments
 (0)