qcacmn: Convert wireless modes to host internal values

Convert the wireless_modes HALPHY capability from FW defined REGDMN_MODE
values to host internal WMI_HOST_REGDMN_MODE values. This will help make
host code independent of target specific definitions.

Change-Id: I6d325f76959b35a3f854ade680f4d058c9d4bfcb
CRs-Fixed: 1061096
Cette révision appartient à :
Pratik Gandhi
2017-01-05 19:38:41 +05:30
révisé par qcabuildsw
Parent dad75ffbce
révision 33bb714364
2 fichiers modifiés avec 158 ajouts et 0 suppressions

Voir le fichier

@@ -5545,12 +5545,89 @@ static QDF_STATUS extract_hal_reg_cap_non_tlv(wmi_unified_t wmi_handle,
TARGET_HAL_REG_CAPABILITIES *cap)
{
wmi_service_ready_event *ev;
u_int32_t wireless_modes_orig = 0;
ev = (wmi_service_ready_event *) evt_buf;
qdf_mem_copy(cap, &ev->hal_reg_capabilities,
sizeof(TARGET_HAL_REG_CAPABILITIES));
/* Convert REGDMN_MODE values sent by target to host internal
* WMI_HOST_REGDMN_MODE values.
*
* REGULATORY TODO :
* REGDMN_MODE_11AC_VHT*_2G values are not used by the
* host currently. Add this in the future if required.
*/
wireless_modes_orig = ev->hal_reg_capabilities.wireless_modes;
cap->wireless_modes = 0;
if (wireless_modes_orig & REGDMN_MODE_11A)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11A;
if (wireless_modes_orig & REGDMN_MODE_TURBO)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_TURBO;
if (wireless_modes_orig & REGDMN_MODE_11B)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11B;
if (wireless_modes_orig & REGDMN_MODE_PUREG)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_PUREG;
if (wireless_modes_orig & REGDMN_MODE_11G)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11G;
if (wireless_modes_orig & REGDMN_MODE_108G)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_108G;
if (wireless_modes_orig & REGDMN_MODE_108A)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_108A;
if (wireless_modes_orig & REGDMN_MODE_XR)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_XR;
if (wireless_modes_orig & REGDMN_MODE_11A_HALF_RATE)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11A_HALF_RATE;
if (wireless_modes_orig & REGDMN_MODE_11A_QUARTER_RATE)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11A_QUARTER_RATE;
if (wireless_modes_orig & REGDMN_MODE_11NG_HT20)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NG_HT20;
if (wireless_modes_orig & REGDMN_MODE_11NA_HT20)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NA_HT20;
if (wireless_modes_orig & REGDMN_MODE_11NG_HT40PLUS)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NG_HT40PLUS;
if (wireless_modes_orig & REGDMN_MODE_11NG_HT40MINUS)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NG_HT40MINUS;
if (wireless_modes_orig & REGDMN_MODE_11NA_HT40PLUS)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NA_HT40PLUS;
if (wireless_modes_orig & REGDMN_MODE_11NA_HT40MINUS)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11NA_HT40MINUS;
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT20)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT20;
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT40PLUS)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT40PLUS;
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT40MINUS)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT40MINUS;
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT80)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT80;
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT160)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT160;
if (wireless_modes_orig & REGDMN_MODE_11AC_VHT80_80)
cap->wireless_modes |= WMI_HOST_REGDMN_MODE_11AC_VHT80_80;
return QDF_STATUS_SUCCESS;
}