-
iwl_hwrate_to_plcp_idx
-
Let's see what is stored inside
rate_n_flags
and what callsiwl_hwrate_to_plcp_idx
:-
rs_rate_from_ucode_rate
This function calls
iwl_hwrate_to_plcp_idx
passingucode_rate
as a argument.-
What is ucode_rate?
-
iwl_mvm_rs_tx_status
This function calls
rs_rate_from_ucode_rate
passingtx_resp_hwrate
as theucode_rate
argument.-
What is
tx_resp_hwrate
?It is set by this line:
u32 tx_resp_hwrate = (uintptr_t)info->status.status_driver_data[1];
-
What is
status_driver_data[1]
?-
In
mvm/tx.c:iwl_mvm_rx_tx_cmd_single
:info->status.status_driver_data[1] = (void *)(uintptr_t)le32_to_cpu(tx_resp->initial_rate);
-
What is
tx_resp->initial_rate
?struct iwl_mvm_tx_resp
notifies that firmware is transmitting a packet.The
initial_rate
member is described asFor non-agg: rate of the successful Tx. For agg: rate of the Tx of all the batch. RATE_MCS_*
In
iwl_mvm_rx_tx_cmd_single
theinitial_rate
comes from thedata
member ofstruct iwl_rx_packet
.-
iwl_mvm_rx_tx_cmd
It is a function which calls either
iwl_mvm_rx_tx_cmd_single
oriwl_mvm_rx_tx_cmd_agg
depending on thetx_resp->frame_count
value.
-
It looks like
tx_resp
is the data of a packet. (?) -
-
In
mvm/tx.c:iwl_mvm_tx_reclaim
:ba_info->status.status_driver_data[1] = (void *)(uintptr_t)rate;
-
-
-
-
-
-
rs_pretty_print_rate
It is a debug function. Skipping...
-
-