iwlwifi: add inline helper for packet lengths
Add an inline helper function for getting an RX packet's length or payload length and use it throughout the code (most of which I did using an spatch.) While at it, adjust some code, and remove a bogus comment from the dvm calibration code. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Reviewed-by: Eran Harary <eran.harary@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
This commit is contained in:
parent
e36b766d0c
commit
65b30348db
@ -407,9 +407,8 @@ static bool iwl_resume_status_fn(struct iwl_notif_wait_data *notif_wait,
|
||||
{
|
||||
struct iwl_resume_data *resume_data = data;
|
||||
struct iwl_priv *priv = resume_data->priv;
|
||||
u32 len = le32_to_cpu(pkt->len_n_flags) & FH_RSCSR_FRAME_SIZE_MSK;
|
||||
|
||||
if (len - 4 != sizeof(*resume_data->cmd)) {
|
||||
if (iwl_rx_packet_payload_len(pkt) != sizeof(*resume_data->cmd)) {
|
||||
IWL_ERR(priv, "rx wrong size data\n");
|
||||
return true;
|
||||
}
|
||||
|
@ -205,8 +205,7 @@ static int iwlagn_rx_pm_debug_statistics_notif(struct iwl_priv *priv,
|
||||
struct iwl_device_cmd *cmd)
|
||||
{
|
||||
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
||||
u32 __maybe_unused len =
|
||||
le32_to_cpu(pkt->len_n_flags) & FH_RSCSR_FRAME_SIZE_MSK;
|
||||
u32 __maybe_unused len = iwl_rx_packet_len(pkt);
|
||||
IWL_DEBUG_RADIO(priv, "Dumping %d bytes of unhandled "
|
||||
"notification for PM_DEBUG_STATISTIC_NOTIFIC:\n", len);
|
||||
iwl_print_hex_dump(priv, IWL_DL_RADIO, pkt->data, len);
|
||||
@ -457,7 +456,7 @@ static int iwlagn_rx_statistics(struct iwl_priv *priv,
|
||||
const int reg_recalib_period = 60;
|
||||
int change;
|
||||
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
||||
u32 len = le32_to_cpu(pkt->len_n_flags) & FH_RSCSR_FRAME_SIZE_MSK;
|
||||
u32 len = iwl_rx_packet_payload_len(pkt);
|
||||
__le32 *flag;
|
||||
struct statistics_general_common *common;
|
||||
struct statistics_rx_non_phy *rx_non_phy;
|
||||
@ -467,8 +466,6 @@ static int iwlagn_rx_statistics(struct iwl_priv *priv,
|
||||
struct statistics_tx *tx;
|
||||
struct statistics_bt_activity *bt_activity;
|
||||
|
||||
len -= sizeof(struct iwl_cmd_header); /* skip header */
|
||||
|
||||
IWL_DEBUG_RX(priv, "Statistics notification received (%d bytes).\n",
|
||||
len);
|
||||
|
||||
|
@ -389,7 +389,6 @@ static bool iwlagn_wait_calib(struct iwl_notif_wait_data *notif_wait,
|
||||
{
|
||||
struct iwl_priv *priv = data;
|
||||
struct iwl_calib_hdr *hdr;
|
||||
int len;
|
||||
|
||||
if (pkt->hdr.cmd != CALIBRATION_RES_NOTIFICATION) {
|
||||
WARN_ON(pkt->hdr.cmd != CALIBRATION_COMPLETE_NOTIFICATION);
|
||||
@ -397,12 +396,8 @@ static bool iwlagn_wait_calib(struct iwl_notif_wait_data *notif_wait,
|
||||
}
|
||||
|
||||
hdr = (struct iwl_calib_hdr *)pkt->data;
|
||||
len = le32_to_cpu(pkt->len_n_flags) & FH_RSCSR_FRAME_SIZE_MSK;
|
||||
|
||||
/* reduce the size by the length field itself */
|
||||
len -= sizeof(__le32);
|
||||
|
||||
if (iwl_calib_set(priv, hdr, len))
|
||||
if (iwl_calib_set(priv, hdr, iwl_rx_packet_payload_len(pkt)))
|
||||
IWL_ERR(priv, "Failed to record calibration data %d\n",
|
||||
hdr->op_code);
|
||||
|
||||
|
@ -176,6 +176,16 @@ struct iwl_rx_packet {
|
||||
u8 data[];
|
||||
} __packed;
|
||||
|
||||
static inline u32 iwl_rx_packet_len(const struct iwl_rx_packet *pkt)
|
||||
{
|
||||
return le32_to_cpu(pkt->len_n_flags) & FH_RSCSR_FRAME_SIZE_MSK;
|
||||
}
|
||||
|
||||
static inline u32 iwl_rx_packet_payload_len(const struct iwl_rx_packet *pkt)
|
||||
{
|
||||
return iwl_rx_packet_len(pkt) - sizeof(pkt->hdr);
|
||||
}
|
||||
|
||||
/**
|
||||
* enum CMD_MODE - how to send the host commands ?
|
||||
*
|
||||
|
@ -886,8 +886,7 @@ static int iwl_mvm_get_last_nonqos_seq(struct iwl_mvm *mvm,
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
size = le32_to_cpu(cmd.resp_pkt->len_n_flags) & FH_RSCSR_FRAME_SIZE_MSK;
|
||||
size -= sizeof(cmd.resp_pkt->hdr);
|
||||
size = iwl_rx_packet_payload_len(cmd.resp_pkt);
|
||||
if (size < sizeof(__le16)) {
|
||||
err = -EINVAL;
|
||||
} else {
|
||||
@ -1211,9 +1210,8 @@ static int __iwl_mvm_suspend(struct ieee80211_hw *hw,
|
||||
if (ret)
|
||||
goto out;
|
||||
#ifdef CONFIG_IWLWIFI_DEBUGFS
|
||||
len = le32_to_cpu(d3_cfg_cmd.resp_pkt->len_n_flags) &
|
||||
FH_RSCSR_FRAME_SIZE_MSK;
|
||||
if (len >= sizeof(u32) * 2) {
|
||||
len = iwl_rx_packet_payload_len(d3_cfg_cmd.resp_pkt);
|
||||
if (len >= sizeof(u32)) {
|
||||
mvm->d3_test_pme_ptr =
|
||||
le32_to_cpup((__le32 *)d3_cfg_cmd.resp_pkt->data);
|
||||
}
|
||||
@ -1668,8 +1666,8 @@ static bool iwl_mvm_query_wakeup_reasons(struct iwl_mvm *mvm,
|
||||
else
|
||||
status_size = sizeof(struct iwl_wowlan_status_v4);
|
||||
|
||||
len = le32_to_cpu(cmd.resp_pkt->len_n_flags) & FH_RSCSR_FRAME_SIZE_MSK;
|
||||
if (len - sizeof(struct iwl_cmd_header) < status_size) {
|
||||
len = iwl_rx_packet_payload_len(cmd.resp_pkt);
|
||||
if (len < status_size) {
|
||||
IWL_ERR(mvm, "Invalid WoWLAN status response!\n");
|
||||
goto out_free_resp;
|
||||
}
|
||||
@ -1704,8 +1702,7 @@ static bool iwl_mvm_query_wakeup_reasons(struct iwl_mvm *mvm,
|
||||
status.wake_packet = status_v4->wake_packet;
|
||||
}
|
||||
|
||||
if (len - sizeof(struct iwl_cmd_header) !=
|
||||
status_size + ALIGN(status.wake_packet_bufsize, 4)) {
|
||||
if (len != status_size + ALIGN(status.wake_packet_bufsize, 4)) {
|
||||
IWL_ERR(mvm, "Invalid WoWLAN status response!\n");
|
||||
goto out_free_resp;
|
||||
}
|
||||
|
@ -249,12 +249,12 @@ static bool iwl_mvm_time_event_response(struct iwl_notif_wait_data *notif_wait,
|
||||
container_of(notif_wait, struct iwl_mvm, notif_wait);
|
||||
struct iwl_mvm_time_event_data *te_data = data;
|
||||
struct iwl_time_event_resp *resp;
|
||||
int resp_len = le32_to_cpu(pkt->len_n_flags) & FH_RSCSR_FRAME_SIZE_MSK;
|
||||
int resp_len = iwl_rx_packet_payload_len(pkt);
|
||||
|
||||
if (WARN_ON(pkt->hdr.cmd != TIME_EVENT_CMD))
|
||||
return true;
|
||||
|
||||
if (WARN_ON_ONCE(resp_len != sizeof(pkt->hdr) + sizeof(*resp))) {
|
||||
if (WARN_ON_ONCE(resp_len != sizeof(*resp))) {
|
||||
IWL_ERR(mvm, "Invalid TIME_EVENT_CMD response\n");
|
||||
return true;
|
||||
}
|
||||
|
@ -168,8 +168,8 @@ int iwl_mvm_send_cmd_status(struct iwl_mvm *mvm, struct iwl_host_cmd *cmd,
|
||||
goto out_free_resp;
|
||||
}
|
||||
|
||||
resp_len = le32_to_cpu(pkt->len_n_flags) & FH_RSCSR_FRAME_SIZE_MSK;
|
||||
if (WARN_ON_ONCE(resp_len != sizeof(pkt->hdr) + sizeof(*resp))) {
|
||||
resp_len = iwl_rx_packet_payload_len(pkt);
|
||||
if (WARN_ON_ONCE(resp_len != sizeof(*resp))) {
|
||||
ret = -EIO;
|
||||
goto out_free_resp;
|
||||
}
|
||||
|
@ -615,7 +615,7 @@ static void iwl_pcie_rx_handle_rb(struct iwl_trans *trans,
|
||||
rxcb._offset, get_cmd_string(trans_pcie, pkt->hdr.cmd),
|
||||
pkt->hdr.cmd);
|
||||
|
||||
len = le32_to_cpu(pkt->len_n_flags) & FH_RSCSR_FRAME_SIZE_MSK;
|
||||
len = iwl_rx_packet_len(pkt);
|
||||
len += sizeof(u32); /* account for status word */
|
||||
trace_iwlwifi_dev_rx(trans->dev, trans, pkt, len);
|
||||
trace_iwlwifi_dev_rx_data(trans->dev, trans, pkt, len);
|
||||
|
Loading…
Reference in New Issue
Block a user