broadband-modem-qmi: update current capabilities loading logic

Changes being:

 * Don't rely on the band preference TLVs presence. The band preference TLVs are
   always given, even if the modem doesn't support the specific capability right
   away. E.g. a GSM/UMTS/LTE modem configured with 'gsm-umts' capability (no
   'lte') still shows the LTE band preference TLV in the SSP responses.

 * Don't automatically add LTE as current capability. We needed this when we
   were not able to change capabilities, so that we didn't lose the ability to
   set 4G mode as allowed.
This commit is contained in:
Aleksander Morgado
2013-06-05 19:15:15 +02:00
parent 83a8e08c37
commit da606ef572
4 changed files with 16 additions and 91 deletions
+16 -56
View File
@@ -64,33 +64,23 @@ test_uml290 (void)
/* QCDM -> CDMA/EVDO */
ctx.nas_ssp_mode_preference_mask = (QMI_NAS_RAT_MODE_PREFERENCE_CDMA_1X |
QMI_NAS_RAT_MODE_PREFERENCE_CDMA_1XEVDO);
ctx.nas_ssp_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_ssp_lte_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_tp_mask = 0; /* Unsupported */
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_GSM_UMTS |
MM_MODEM_CAPABILITY_CDMA_EVDO |
MM_MODEM_CAPABILITY_LTE);
test_capabilities_expected (&ctx,
(MM_MODEM_CAPABILITY_CDMA_EVDO |
MM_MODEM_CAPABILITY_LTE));
test_capabilities_expected (&ctx, MM_MODEM_CAPABILITY_CDMA_EVDO);
/* QCDM -> GSM/UMTS */
ctx.nas_ssp_mode_preference_mask = (QMI_NAS_RAT_MODE_PREFERENCE_GSM |
QMI_NAS_RAT_MODE_PREFERENCE_UMTS);
ctx.nas_ssp_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_ssp_lte_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_tp_mask = 0; /* Unsupported */
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_GSM_UMTS |
MM_MODEM_CAPABILITY_CDMA_EVDO |
MM_MODEM_CAPABILITY_LTE);
test_capabilities_expected (&ctx,
(MM_MODEM_CAPABILITY_GSM_UMTS |
MM_MODEM_CAPABILITY_LTE));
test_capabilities_expected (&ctx, MM_MODEM_CAPABILITY_GSM_UMTS);
/* QCDM -> Automatic */
ctx.nas_ssp_mode_preference_mask = 0;
ctx.nas_ssp_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_ssp_lte_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_tp_mask = 0; /* Unsupported */
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_GSM_UMTS |
MM_MODEM_CAPABILITY_CDMA_EVDO |
@@ -117,8 +107,6 @@ test_adu960s (void)
MMQmiCapabilitiesContext ctx;
ctx.nas_ssp_mode_preference_mask = 0;
ctx.nas_ssp_band_preference_mask = 0;
ctx.nas_ssp_lte_band_preference_mask = 0;
ctx.nas_tp_mask = 0; /* Unsupported */
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_GSM_UMTS |
MM_MODEM_CAPABILITY_CDMA_EVDO |
@@ -144,10 +132,8 @@ test_gobi1k_gsm (void)
MMQmiCapabilitiesContext ctx;
ctx.nas_ssp_mode_preference_mask = 0; /* Unsupported */
ctx.nas_ssp_band_preference_mask = 0; /* Unsupported */
ctx.nas_ssp_lte_band_preference_mask = 0; /* Unsupported */
ctx.nas_tp_mask = QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_AUTO;
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_GSM_UMTS);
ctx.dms_capabilities = MM_MODEM_CAPABILITY_GSM_UMTS;
test_capabilities_expected (&ctx, MM_MODEM_CAPABILITY_GSM_UMTS);
}
@@ -166,10 +152,8 @@ test_gobi1k_cdma (void)
MMQmiCapabilitiesContext ctx;
ctx.nas_ssp_mode_preference_mask = 0; /* Unsupported */
ctx.nas_ssp_band_preference_mask = 0; /* Unsupported */
ctx.nas_ssp_lte_band_preference_mask = 0; /* Unsupported */
ctx.nas_tp_mask = QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_AUTO;
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_CDMA_EVDO);
ctx.dms_capabilities = MM_MODEM_CAPABILITY_CDMA_EVDO;
test_capabilities_expected (&ctx, MM_MODEM_CAPABILITY_CDMA_EVDO);
}
@@ -191,26 +175,20 @@ test_gobi2k_gsm (void)
/* QCDM -> Automatic */
ctx.nas_ssp_mode_preference_mask = 0; /* Unsupported */
ctx.nas_ssp_band_preference_mask = 0; /* Unsupported */
ctx.nas_ssp_lte_band_preference_mask = 0; /* Unsupported */
ctx.nas_tp_mask = QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_AUTO;
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_GSM_UMTS);
ctx.dms_capabilities = MM_MODEM_CAPABILITY_GSM_UMTS;
test_capabilities_expected (&ctx, MM_MODEM_CAPABILITY_GSM_UMTS);
/* QCDM -> UMTS only */
ctx.nas_ssp_mode_preference_mask = 0; /* Unsupported */
ctx.nas_ssp_band_preference_mask = 0; /* Unsupported */
ctx.nas_ssp_lte_band_preference_mask = 0; /* Unsupported */
ctx.nas_tp_mask = (QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_3GPP | QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_CDMA_OR_WCDMA);
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_GSM_UMTS);
ctx.dms_capabilities = MM_MODEM_CAPABILITY_GSM_UMTS;
test_capabilities_expected (&ctx, MM_MODEM_CAPABILITY_GSM_UMTS);
/* QCDM -> GPRS only */
ctx.nas_ssp_mode_preference_mask = 0; /* Unsupported */
ctx.nas_ssp_band_preference_mask = 0; /* Unsupported */
ctx.nas_ssp_lte_band_preference_mask = 0; /* Unsupported */
ctx.nas_tp_mask = (QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_3GPP | QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_AMPS_OR_GSM);
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_GSM_UMTS);
ctx.dms_capabilities = MM_MODEM_CAPABILITY_GSM_UMTS;
test_capabilities_expected (&ctx, MM_MODEM_CAPABILITY_GSM_UMTS);
}
@@ -232,26 +210,20 @@ test_gobi2k_cdma (void)
/* QCDM -> Automatic */
ctx.nas_ssp_mode_preference_mask = 0; /* Unsupported */
ctx.nas_ssp_band_preference_mask = 0; /* Unsupported */
ctx.nas_ssp_lte_band_preference_mask = 0; /* Unsupported */
ctx.nas_tp_mask = QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_AUTO;
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_CDMA_EVDO);
ctx.dms_capabilities = MM_MODEM_CAPABILITY_CDMA_EVDO;
test_capabilities_expected (&ctx, MM_MODEM_CAPABILITY_CDMA_EVDO);
/* QCDM -> CDMA only */
ctx.nas_ssp_mode_preference_mask = 0; /* Unsupported */
ctx.nas_ssp_band_preference_mask = 0; /* Unsupported */
ctx.nas_ssp_lte_band_preference_mask = 0; /* Unsupported */
ctx.nas_tp_mask = (QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_3GPP2 | QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_CDMA_OR_WCDMA);
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_CDMA_EVDO);
ctx.dms_capabilities = MM_MODEM_CAPABILITY_CDMA_EVDO;
test_capabilities_expected (&ctx, MM_MODEM_CAPABILITY_CDMA_EVDO);
/* QCDM -> EVDO only */
ctx.nas_ssp_mode_preference_mask = 0; /* Unsupported */
ctx.nas_ssp_band_preference_mask = 0; /* Unsupported */
ctx.nas_ssp_lte_band_preference_mask = 0; /* Unsupported */
ctx.nas_tp_mask = (QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_3GPP2 | QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_HDR);
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_CDMA_EVDO);
ctx.dms_capabilities = MM_MODEM_CAPABILITY_CDMA_EVDO;
test_capabilities_expected (&ctx, MM_MODEM_CAPABILITY_CDMA_EVDO);
}
@@ -278,26 +250,20 @@ test_gobi3k_gsm (void)
QMI_NAS_RAT_MODE_PREFERENCE_CDMA_1XEVDO |
QMI_NAS_RAT_MODE_PREFERENCE_GSM |
QMI_NAS_RAT_MODE_PREFERENCE_UMTS);
ctx.nas_ssp_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_ssp_lte_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_tp_mask = QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_AUTO;
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_GSM_UMTS);
ctx.dms_capabilities = MM_MODEM_CAPABILITY_GSM_UMTS;
test_capabilities_expected (&ctx, MM_MODEM_CAPABILITY_GSM_UMTS);
/* QCDM -> GSM only */
ctx.nas_ssp_mode_preference_mask = (QMI_NAS_RAT_MODE_PREFERENCE_GSM);
ctx.nas_ssp_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_ssp_lte_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_tp_mask = (QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_3GPP | QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_AMPS_OR_GSM);
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_GSM_UMTS);
ctx.dms_capabilities = MM_MODEM_CAPABILITY_GSM_UMTS;
test_capabilities_expected (&ctx, MM_MODEM_CAPABILITY_GSM_UMTS);
/* QCDM -> UMTS only */
ctx.nas_ssp_mode_preference_mask = (QMI_NAS_RAT_MODE_PREFERENCE_UMTS);
ctx.nas_ssp_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_ssp_lte_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_tp_mask = (QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_3GPP | QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_CDMA_OR_WCDMA);
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_GSM_UMTS);
ctx.dms_capabilities = MM_MODEM_CAPABILITY_GSM_UMTS;
test_capabilities_expected (&ctx, MM_MODEM_CAPABILITY_GSM_UMTS);
}
@@ -324,26 +290,20 @@ test_gobi3k_cdma (void)
QMI_NAS_RAT_MODE_PREFERENCE_CDMA_1XEVDO |
QMI_NAS_RAT_MODE_PREFERENCE_GSM |
QMI_NAS_RAT_MODE_PREFERENCE_UMTS);
ctx.nas_ssp_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_ssp_lte_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_tp_mask = QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_AUTO;
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_CDMA_EVDO);
ctx.dms_capabilities = MM_MODEM_CAPABILITY_CDMA_EVDO;
test_capabilities_expected (&ctx, MM_MODEM_CAPABILITY_CDMA_EVDO);
/* QCDM -> CDMA only */
ctx.nas_ssp_mode_preference_mask = (QMI_NAS_RAT_MODE_PREFERENCE_CDMA_1X);
ctx.nas_ssp_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_ssp_lte_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_tp_mask = (QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_3GPP2 | QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_CDMA_OR_WCDMA);
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_CDMA_EVDO);
ctx.dms_capabilities = MM_MODEM_CAPABILITY_CDMA_EVDO;
test_capabilities_expected (&ctx, MM_MODEM_CAPABILITY_CDMA_EVDO);
/* QCDM -> EVDO only */
ctx.nas_ssp_mode_preference_mask = (QMI_NAS_RAT_MODE_PREFERENCE_CDMA_1XEVDO);
ctx.nas_ssp_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_ssp_lte_band_preference_mask = 0; /* TODO: Add proper value */
ctx.nas_tp_mask = (QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_3GPP2 | QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_HDR);
ctx.dms_capabilities = (MM_MODEM_CAPABILITY_CDMA_EVDO);
ctx.dms_capabilities = MM_MODEM_CAPABILITY_CDMA_EVDO;
test_capabilities_expected (&ctx, MM_MODEM_CAPABILITY_CDMA_EVDO);
}