broadband-modem-mbim: report network rejections

Changes to expose network rejections for MBIM based modems.
This commit is contained in:
Ujjwal Pande
2024-06-12 09:39:12 +00:00
committed by Aleksander Morgado
parent 2904510e76
commit 4b615a2343
3 changed files with 99 additions and 0 deletions
+16
View File
@@ -5061,6 +5061,22 @@ common_process_register_state (MMBroadbandModemMbim *self,
mm_obj_dbg (self, "available data classes: '%s'", available_data_classes_str);
mm_obj_dbg (self, "preferred data classes: '%s'", preferred_data_classes_str);
if ((register_state != MBIM_REGISTER_STATE_HOME) &&
(register_state != MBIM_REGISTER_STATE_ROAMING) &&
mm_iface_modem_is_3gpp (MM_IFACE_MODEM (self))) {
MMNetworkError mm_nw_error;
MMModemAccessTechnology access_technology;
mm_nw_error = mm_modem_nw_error_from_mbim_nw_error (nw_error);
access_technology = mm_modem_access_technology_from_mbim_data_class (available_data_classes);
mm_iface_modem_3gpp_update_network_rejection (MM_IFACE_MODEM_3GPP (self),
mm_nw_error,
provider_id,
provider_name,
access_technology);
}
update_registration_info (self,
FALSE,
register_state,
+82
View File
@@ -1496,6 +1496,88 @@ mm_error_from_mbim_nw_error (MbimNwError nw_error,
"Unknown error");
}
static const MMNetworkError mbim_mm_nw_errors[] = {
[MBIM_NW_ERROR_NONE] = MM_NETWORK_ERROR_NONE,
[MBIM_NW_ERROR_IMSI_UNKNOWN_IN_HLR] = MM_NETWORK_ERROR_IMSI_UNKNOWN_IN_HLR,
[MBIM_NW_ERROR_ILLEGAL_MS] = MM_NETWORK_ERROR_ILLEGAL_MS,
[MBIM_NW_ERROR_IMSI_UNKNOWN_IN_VLR] = MM_NETWORK_ERROR_IMSI_UNKNOWN_IN_VLR,
[MBIM_NW_ERROR_IMEI_NOT_ACCEPTED] = MM_NETWORK_ERROR_IMEI_NOT_ACCEPTED,
[MBIM_NW_ERROR_ILLEGAL_ME] = MM_NETWORK_ERROR_ILLEGAL_ME,
[MBIM_NW_ERROR_GPRS_NOT_ALLOWED] = MM_NETWORK_ERROR_GPRS_NOT_ALLOWED,
[MBIM_NW_ERROR_GPRS_AND_NON_GPRS_NOT_ALLOWED] = MM_NETWORK_ERROR_GPRS_AND_NON_GPRS_NOT_ALLOWED,
[MBIM_NW_ERROR_MS_IDENTITY_NOT_DERIVED_BY_NETWORK] = MM_NETWORK_ERROR_MS_IDENTITY_NOT_DERIVED_BY_NETWORK,
[MBIM_NW_ERROR_IMPLICITLY_DETACHED] = MM_NETWORK_ERROR_IMPLICITLY_DETACHED,
[MBIM_NW_ERROR_PLMN_NOT_ALLOWED] = MM_NETWORK_ERROR_PLMN_NOT_ALLOWED,
[MBIM_NW_ERROR_LOCATION_AREA_NOT_ALLOWED] = MM_NETWORK_ERROR_LOCATION_AREA_NOT_ALLOWED,
[MBIM_NW_ERROR_ROAMING_NOT_ALLOWED_IN_LOCATION_AREA] = MM_NETWORK_ERROR_ROAMING_NOT_ALLOWED_IN_LOCATION_AREA,
[MBIM_NW_ERROR_GPRS_NOT_ALLOWED_IN_PLMN] = MM_NETWORK_ERROR_GPRS_NOT_ALLOWED_IN_PLMN,
[MBIM_NW_ERROR_NO_CELLS_IN_LOCATION_AREA] = MM_NETWORK_ERROR_NO_CELLS_IN_LOCATION_AREA,
[MBIM_NW_ERROR_MSC_TEMPORARILY_NOT_REACHABLE] = MM_NETWORK_ERROR_MSC_TEMPORARILY_NOT_REACHABLE,
[MBIM_NW_ERROR_NETWORK_FAILURE] = MM_NETWORK_ERROR_NETWORK_FAILURE,
[MBIM_NW_ERROR_MAC_FAILURE] = MM_NETWORK_ERROR_MAC_FAILURE,
[MBIM_NW_ERROR_SYNCH_FAILURE] = MM_NETWORK_ERROR_SYNCH_FAILURE,
[MBIM_NW_ERROR_CONGESTION] = MM_NETWORK_ERROR_CONGESTION,
[MBIM_NW_ERROR_GSM_AUTHENTICATION_UNACCEPTABLE] = MM_NETWORK_ERROR_GSM_AUTHENTICATION_UNACCEPTABLE,
[MBIM_NW_ERROR_NOT_AUTHORIZED_FOR_CSG] = MM_NETWORK_ERROR_NOT_AUTHORIZED_FOR_CSG,
[MBIM_NW_ERROR_INSUFFICIENT_RESOURCES] = MM_NETWORK_ERROR_INSUFFICIENT_RESOURCES,
[MBIM_NW_ERROR_MISSING_OR_UNKNOWN_APN] = MM_NETWORK_ERROR_MISSING_OR_UNKNOWN_APN,
[MBIM_NW_ERROR_UNKNOWN_PDP_ADDRESS_OR_TYPE] = MM_NETWORK_ERROR_UNKNOWN_PDP_ADDRESS_OR_TYPE,
[MBIM_NW_ERROR_USER_AUTHENTICATION_FAILED] = MM_NETWORK_ERROR_USER_AUTHENTICATION_FAILED,
[MBIM_NW_ERROR_ACTIVATION_REJECTED_BY_GGSN_OR_GW] = MM_NETWORK_ERROR_ACTIVATION_REJECTED_BY_GGSN_OR_GW,
[MBIM_NW_ERROR_ACTIVATION_REJECTED_UNSPECIFIED] = MM_NETWORK_ERROR_REDIRECTION_TO_5GCN_REQUIRED,
[MBIM_NW_ERROR_SERVICE_OPTION_NOT_SUPPORTED] = MM_NETWORK_ERROR_SERVICE_OPTION_NOT_SUPPORTED,
[MBIM_NW_ERROR_REQUESTED_SERVICE_OPTION_NOT_SUBSCRIBED] = MM_NETWORK_ERROR_REQUESTED_SERVICE_OPTION_NOT_SUBSCRIBED,
[MBIM_NW_ERROR_SERVICE_OPTION_TEMPORARILY_OUT_OF_ORDER] = MM_NETWORK_ERROR_SERVICE_OPTION_TEMPORARILY_OUT_OF_ORDER,
[MBIM_NW_ERROR_NO_PDP_CONTEXT_ACTIVATED] = MM_NETWORK_ERROR_NO_PDP_CONTEXT_ACTIVATED,
[MBIM_NW_ERROR_SEMANTIC_ERROR_IN_THE_TFT_OPERATION] = MM_NETWORK_ERROR_SEMANTIC_ERROR_IN_THE_TFT_OPERATION,
[MBIM_NW_ERROR_SYNTACTICAL_ERROR_IN_THE_TFT_OPERATION] = MM_NETWORK_ERROR_SYNTACTICAL_ERROR_IN_THE_TFT_OPERATION,
[MBIM_NW_ERROR_UNKNOWN_PDP_CONTEXT] = MM_NETWORK_ERROR_UNKNOWN_PDP_CONTEXT,
[MBIM_NW_ERROR_SEMANTIC_ERRORS_IN_PACKET_FILTER] = MM_NETWORK_ERROR_SEMANTIC_ERRORS_IN_PACKET_FILTER,
[MBIM_NW_ERROR_SYNTACTICAL_ERRORS_IN_PACKET_FILTER] = MM_NETWORK_ERROR_SYNTACTICAL_ERRORS_IN_PACKET_FILTER,
[MBIM_NW_ERROR_PDP_CONTEXT_WITHOUT_TFT_ALREADY_ACTIVATED] = MM_NETWORK_ERROR_PDP_CONTEXT_WITHOUT_TFT_ALREADY_ACTIVATED,
[MBIM_NW_ERROR_REQUEST_REJECTED_OR_BEARER_CONTROL_MODE_VIOLATION] = MM_NETWORK_ERROR_REQUEST_REJECTED_OR_BEARER_CONTROL_MODE_VIOLATION,
[MBIM_NW_ERROR_LAST_PDN_DISCONNECTION_NOT_ALLOWED] = MM_NETWORK_ERROR_LAST_PDN_DISCONNECTION_NOT_ALLOWED,
[MBIM_NW_ERROR_PDP_TYPE_IPV4_ONLY_ALLOWED] = MM_NETWORK_ERROR_PDP_TYPE_IPV4_ONLY_ALLOWED,
[MBIM_NW_ERROR_PDP_TYPE_IPV6_ONLY_ALLOWED] = MM_NETWORK_ERROR_PDP_TYPE_IPV6_ONLY_ALLOWED,
[MBIM_NW_ERROR_NO_NETWORK_SLICES_AVAILABLE] = MM_NETWORK_ERROR_NO_NETWORK_SLICES_AVAILABLE,
[MBIM_NW_ERROR_MAXIMUM_NUMBER_OF_PDP_CONTEXTS_REACHED] = MM_NETWORK_ERROR_MAXIMUM_NUMBER_OF_PDP_CONTEXTS_REACHED,
[MBIM_NW_ERROR_REQUESTED_APN_NOT_SUPPORTED_IN_CURRENT_RAT_AND_PLMN] = MM_NETWORK_ERROR_REQUESTED_APN_NOT_SUPPORTED_IN_CURRENT_RAT_AND_PLMN,
[MBIM_NW_ERROR_INSUFFICIENT_RESOURCES_FOR_SPECIFIC_SLICE_AND_DNN] = MM_NETWORK_ERROR_INSUFFICIENT_RESOURCES_FOR_SPECIFIC_SLICE_AND_DNN,
[MBIM_NW_ERROR_INSUFFICIENT_RESOURCES_FOR_SPECIFIC_SLICE] = MM_NETWORK_ERROR_INSUFFICIENT_RESOURCES_FOR_SPECIFIC_SLICE,
[MBIM_NW_ERROR_NGKSI_ALREADY_IN_USE] = MM_NETWORK_ERROR_NGKSI_ALREADY_IN_USE,
[MBIM_NW_ERROR_NON_3GPP_ACCESS_TO_5GCN_NOT_ALLOWED] = MM_NETWORK_ERROR_NON_3GPP_ACCESS_TO_5GCN_NOT_ALLOWED,
[MBIM_NW_ERROR_SERVING_NETWORK_NOT_AUTHORIZED] = MM_NETWORK_ERROR_SERVING_NETWORK_NOT_AUTHORIZED,
[MBIM_NW_ERROR_TEMPORARILY_NOT_AUTHORIZED_FOR_THIS_SNPN] = MM_NETWORK_ERROR_TEMPORARILY_NOT_AUTHORIZED_FOR_THIS_SNPN,
[MBIM_NW_ERROR_PERMANENTLY_NOT_AUTHORIZED_FOR_THIS_SNPN] = MM_NETWORK_ERROR_PERMANENTLY_NOT_AUTHORIZED_FOR_THIS_SNPN,
[MBIM_NW_ERROR_NOT_AUTHORIZED_FOR_THIS_CAG_OR_AUTHORIZED_FOR_CAG_CELLS_ONLY] = MM_NETWORK_ERROR_NOT_AUTHORIZED_FOR_THIS_CAG_OR_AUTHORIZED_FOR_CAG_CELLS_ONLY,
[MBIM_NW_ERROR_WIRELINE_ACCESS_AREA_NOT_ALLOWED] = MM_NETWORK_ERROR_WIRELINE_ACCESS_AREA_NOT_ALLOWED,
[MBIM_NW_ERROR_PAYLOAD_WAS_NOT_FORWARDED] = MM_NETWORK_ERROR_PAYLOAD_WAS_NOT_FORWARDED,
[MBIM_NW_ERROR_DNN_NOT_SUPPORTED_OR_NOT_SUBSCRIBED_IN_THE_SLICE] = MM_NETWORK_ERROR_DNN_NOT_SUPPORTED_OR_NOT_SUBSCRIBED_IN_THE_SLICE,
[MBIM_NW_ERROR_INSUFFICIENT_USER_PLANE_RESOURCES_FOR_THE_PDU_SESSION] = MM_NETWORK_ERROR_INSUFFICIENT_USER_PLANE_RESOURCES_FOR_THE_PDU_SESSION,
[MBIM_NW_ERROR_SEMANTICALLY_INCORRECT_MESSAGE] = MM_NETWORK_ERROR_SEMANTICALLY_INCORRECT_MESSAGE,
[MBIM_NW_ERROR_INVALID_MANDATORY_INFORMATION] = MM_NETWORK_ERROR_INVALID_MANDATORY_INFORMATION,
[MBIM_NW_ERROR_MESSAGE_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED] = MM_NETWORK_ERROR_MESSAGE_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED,
[MBIM_NW_ERROR_MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE] = MM_NETWORK_ERROR_MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE,
[MBIM_NW_ERROR_INFORMATION_ELEMENT_NON_EXISTENT_OR_NOT_IMPLEMENTED] = MM_NETWORK_ERROR_INFORMATION_ELEMENT_NON_EXISTENT_OR_NOT_IMPLEMENTED,
[MBIM_NW_ERROR_CONDITIONAL_IE_ERROR] = MM_NETWORK_ERROR_CONDITIONAL_IE_ERROR,
[MBIM_NW_ERROR_MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE] = MM_NETWORK_ERROR_MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE,
[MBIM_NW_ERROR_PROTOCOL_ERROR_UNSPECIFIED] = MM_NETWORK_ERROR_PROTOCOL_ERROR_UNSPECIFIED,
[MBIM_NW_ERROR_APN_RESTRICTION_VALUE_INCOMPATIBLE_WITH_ACTIVE_PDP_CONTEXT] = MM_NETWORK_ERROR_APN_RESTRICTION_VALUE_INCOMPATIBLE_WITH_ACTIVE_PDP_CONTEXT,
[MBIM_NW_ERROR_MULTIPLE_ACCESSES_TO_A_PDN_CONNECTION_NOT_ALLOWED] = MM_NETWORK_ERROR_MULTIPLE_ACCESSES_TO_A_PDN_CONNECTION_NOT_ALLOWED,
};
MMNetworkError
mm_modem_nw_error_from_mbim_nw_error (MbimNwError nw_error)
{
if (nw_error < G_N_ELEMENTS (mbim_mm_nw_errors)) {
/* convert to nw error */
return mbim_mm_nw_errors[nw_error];
}
/* fallback */
return MM_NETWORK_ERROR_UNKNOWN;
}
/*****************************************************************************/
void
+1
View File
@@ -185,5 +185,6 @@ gdouble mm_nrarfcn_to_frequency (guint32 nrarfcn,
void mm_register_mbim_errors (void);
GError *mm_error_from_mbim_nw_error (MbimNwError nw_error,
gpointer log_object);
MMNetworkError mm_modem_nw_error_from_mbim_nw_error (MbimNwError nw_error);
#endif /* MM_MODEM_HELPERS_MBIM_H */