qca-wifi: Smart Antenna WMI support for 11bit ratecode

Smart Antenna support for extracting 11bit ratecode and packing
for tx packet training.

Change-Id: I8b838f3af8a6d2060b40c912e282dd3f11bf0339
CRs-Fixed: 2506480
Bu işleme şunda yer alıyor:
Subrat Mishra
2019-08-09 19:08:36 +05:30
işlemeyi yapan: Gerrit - the friendly Code Review server
ebeveyn 77ac19d602
işleme 27912b929d
2 değiştirilmiş dosya ile 30 ekleme ve 16 silme

Dosyayı Görüntüle

@@ -3230,6 +3230,7 @@ static QDF_STATUS send_smart_ant_set_training_info_cmd_non_tlv(
wmi_buf_t buf;
int len = 0;
int ret;
uint8_t rs = 0, irs = 0;
len = sizeof(wmi_peer_sant_set_train_antenna_cmd);
buf = wmi_buf_alloc(wmi_handle, len);
@@ -3241,10 +3242,16 @@ static QDF_STATUS send_smart_ant_set_training_info_cmd_non_tlv(
cmd = (wmi_peer_sant_set_train_antenna_cmd *)wmi_buf_data(buf);
cmd->vdev_id = param->vdev_id;
WMI_CHAR_ARRAY_TO_MAC_ADDR(macaddr, &cmd->peer_macaddr);
qdf_mem_copy(&cmd->train_rate_series[0], &param->rate_array[0],
(sizeof(uint32_t)*SMART_ANT_MAX_RATE_SERIES));
qdf_mem_copy(&cmd->train_antenna_series[0], &param->antenna_array[0],
(sizeof(uint32_t)*SMART_ANT_MAX_RATE_SERIES));
for (rs = 0; rs < SMART_ANT_MAX_RATE_SERIES; rs++) {
cmd->train_rate_series[rs] =
((param->rate_array[irs] & SA_MASK_BYTE) |
((param->rate_array[irs] & SA_MASK_BYTE3) >> 8) |
((param->rate_array[irs + 1] & SA_MASK_BYTE) << 16) |
(param->rate_array[irs + 1] & SA_MASK_BYTE3));
irs += 2;
}
cmd->num_pkts = param->numpkts;
ret = wmi_unified_cmd_send(wmi_handle,
buf,

Dosyayı Görüntüle

@@ -334,7 +334,7 @@ static QDF_STATUS send_smart_ant_set_training_info_cmd_tlv(
uint8_t *buf_ptr;
int32_t len = 0;
QDF_STATUS ret;
int loop;
uint8_t loop = 0, itr = 0;
len = sizeof(*cmd) + WMI_TLV_HDR_SIZE;
len += (WMI_SMART_ANT_MAX_RATE_SERIES) *
@@ -372,7 +372,13 @@ static QDF_STATUS send_smart_ant_set_training_info_cmd_tlv(
WMITLV_TAG_STRUC_wmi_peer_smart_ant_set_train_antenna_param,
WMITLV_GET_STRUCT_TLVLEN(
wmi_peer_smart_ant_set_train_antenna_param));
train_param->train_rate_series = param->rate_array[loop];
train_param->train_rate_series_lo =
((param->rate_array[itr] & SA_MASK_RCODE) |
(param->rate_array[itr] & (SA_MASK_RCODE << 16)));
train_param->train_rate_series_hi =
((param->rate_array[itr + 1] & SA_MASK_RCODE) |
(param->rate_array[itr + 1] & (SA_MASK_RCODE << 16)));
itr += 2;
train_param->train_antenna_series = param->antenna_array[loop];
train_param->rc_flags = 0;
WMI_LOGI(FL("Series number:%d\n"), loop);
@@ -509,17 +515,18 @@ static QDF_STATUS extract_peer_ratecode_list_ev_tlv(
htindex = 0;
if (rate_cap->ratecount[0]) {
if (param_buf->num_ratecode_legacy >
SA_MAX_LEGACY_RATE_DWORDS) {
SA_MAX_LEGACY_RATE_WORDS) {
WMI_LOGE("Invalid Number of ratecode_legacy %d",
param_buf->num_ratecode_legacy);
return QDF_STATUS_E_FAILURE;
}
ofdm_rate = param_buf->ratecode_legacy;
for (i = 0; i < param_buf->num_ratecode_legacy; i++) {
ofdm_rate = param_buf->ratecode_legacy;
for (j = 0; j < SA_BYTES_IN_DWORD; j++) {
for (j = 0; j < SA_WORDS_IN_DWORD; j++) {
shift = (SA_WORD_BITS_LEN * j);
rate_cap->ratecode_legacy[htindex] =
((ofdm_rate->ratecode_legacy >> (8*j)) &
SA_MASK_BYTE);
((ofdm_rate->ratecode_legacy >> shift) &
SA_MASK_RCODE);
htindex++;
}
ofdm_rate++;
@@ -527,21 +534,21 @@ static QDF_STATUS extract_peer_ratecode_list_ev_tlv(
}
htindex = 0;
if (param_buf->num_ratecode_mcs > SA_MAX_HT_RATE_DWORDS) {
if (param_buf->num_ratecode_mcs > SA_MAX_HT_RATE_WORDS) {
WMI_LOGE("Invalid Number of ratecode_mcs %d",
param_buf->num_ratecode_mcs);
return QDF_STATUS_E_FAILURE;
}
mcs_rate = param_buf->ratecode_mcs;
for (i = 0; i < param_buf->num_ratecode_mcs; i++) {
mcs_rate = param_buf->ratecode_mcs;
for (j = 0; j < SA_BYTES_IN_DWORD; j++) {
shift = (8*j);
for (j = 0; j < SA_WORDS_IN_DWORD; j++) {
shift = (SA_WORD_BITS_LEN * j);
rate_cap->ratecode_20[htindex] =
((mcs_rate->ratecode_20 >> (shift)) & SA_MASK_BYTE);
((mcs_rate->ratecode_20 >> (shift)) & SA_MASK_RCODE);
rate_cap->ratecode_40[htindex] =
((mcs_rate->ratecode_40 >> (shift)) & SA_MASK_BYTE);
((mcs_rate->ratecode_40 >> (shift)) & SA_MASK_RCODE);
rate_cap->ratecode_80[htindex] =
((mcs_rate->ratecode_80 >> (shift)) & SA_MASK_BYTE);
((mcs_rate->ratecode_80 >> (shift)) & SA_MASK_RCODE);
htindex++;
}
mcs_rate++;