drivers: can: mcan: report error on no available extended CAN-ID filters
Only add the filter ID offset for extended CAN-ID filters if the filter was added successfully. Raise log level from info to warning if filter addition failed but only log it once. Fix bounds check for removing an extended CAN-ID filter. Fixes: #44721 Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
This commit is contained in:
parent
51053932a3
commit
d311af4bf4
1 changed files with 6 additions and 8 deletions
|
@ -865,7 +865,7 @@ int can_mcan_add_rx_filter_std(struct can_mcan_data *data,
|
|||
filter_id = can_mcan_get_free_std(msg_ram->std_filt);
|
||||
|
||||
if (filter_id == -ENOSPC) {
|
||||
LOG_INF("No free standard id filter left");
|
||||
LOG_WRN("No free standard id filter left");
|
||||
return -ENOSPC;
|
||||
}
|
||||
|
||||
|
@ -927,7 +927,7 @@ static int can_mcan_add_rx_filter_ext(struct can_mcan_data *data,
|
|||
filter_id = can_mcan_get_free_ext(msg_ram->ext_filt);
|
||||
|
||||
if (filter_id == -ENOSPC) {
|
||||
LOG_INF("No free extended id filter left");
|
||||
LOG_WRN("No free extended id filter left");
|
||||
return -ENOSPC;
|
||||
}
|
||||
|
||||
|
@ -979,11 +979,9 @@ int can_mcan_add_rx_filter(struct can_mcan_data *data,
|
|||
} else {
|
||||
filter_id = can_mcan_add_rx_filter_ext(data, msg_ram, callback,
|
||||
user_data, filter);
|
||||
filter_id += NUM_STD_FILTER_DATA;
|
||||
}
|
||||
|
||||
if (filter_id == -ENOSPC) {
|
||||
LOG_INF("No free filter left");
|
||||
if (filter_id >= 0) {
|
||||
filter_id += NUM_STD_FILTER_DATA;
|
||||
}
|
||||
}
|
||||
|
||||
return filter_id;
|
||||
|
@ -995,7 +993,7 @@ void can_mcan_remove_rx_filter(struct can_mcan_data *data,
|
|||
k_mutex_lock(&data->inst_mutex, K_FOREVER);
|
||||
if (filter_id >= NUM_STD_FILTER_DATA) {
|
||||
filter_id -= NUM_STD_FILTER_DATA;
|
||||
if (filter_id >= NUM_STD_FILTER_DATA) {
|
||||
if (filter_id >= NUM_EXT_FILTER_DATA) {
|
||||
LOG_ERR("Wrong filter id");
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue