|
@@ -135,14 +135,15 @@ static int iwlagn_rx_reply_error(struct iwl_priv *priv,
|
|
|
struct iwl_device_cmd *cmd)
|
|
|
{
|
|
|
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
|
|
+ struct iwl_error_resp *err_resp = (void *)pkt->data;
|
|
|
|
|
|
IWL_ERR(priv, "Error Reply type 0x%08X cmd %s (0x%02X) "
|
|
|
"seq 0x%04X ser 0x%08X\n",
|
|
|
- le32_to_cpu(pkt->u.err_resp.error_type),
|
|
|
- get_cmd_string(pkt->u.err_resp.cmd_id),
|
|
|
- pkt->u.err_resp.cmd_id,
|
|
|
- le16_to_cpu(pkt->u.err_resp.bad_cmd_seq_num),
|
|
|
- le32_to_cpu(pkt->u.err_resp.error_info));
|
|
|
+ le32_to_cpu(err_resp->error_type),
|
|
|
+ get_cmd_string(err_resp->cmd_id),
|
|
|
+ err_resp->cmd_id,
|
|
|
+ le16_to_cpu(err_resp->bad_cmd_seq_num),
|
|
|
+ le32_to_cpu(err_resp->error_info));
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -150,7 +151,7 @@ static int iwlagn_rx_csa(struct iwl_priv *priv, struct iwl_rx_cmd_buffer *rxb,
|
|
|
struct iwl_device_cmd *cmd)
|
|
|
{
|
|
|
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
|
|
- struct iwl_csa_notification *csa = &(pkt->u.csa_notif);
|
|
|
+ struct iwl_csa_notification *csa = (void *)pkt->data;
|
|
|
/*
|
|
|
* MULTI-FIXME
|
|
|
* See iwlagn_mac_channel_switch.
|
|
@@ -181,7 +182,7 @@ static int iwlagn_rx_spectrum_measure_notif(struct iwl_priv *priv,
|
|
|
struct iwl_device_cmd *cmd)
|
|
|
{
|
|
|
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
|
|
- struct iwl_spectrum_notification *report = &(pkt->u.spectrum_notif);
|
|
|
+ struct iwl_spectrum_notification *report = (void *)pkt->data;
|
|
|
|
|
|
if (!report->state) {
|
|
|
IWL_DEBUG_11H(priv,
|
|
@@ -200,7 +201,7 @@ static int iwlagn_rx_pm_sleep_notif(struct iwl_priv *priv,
|
|
|
{
|
|
|
#ifdef CONFIG_IWLWIFI_DEBUG
|
|
|
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
|
|
- struct iwl_sleep_notification *sleep = &(pkt->u.sleep_notif);
|
|
|
+ struct iwl_sleep_notification *sleep = (void *)pkt->data;
|
|
|
IWL_DEBUG_RX(priv, "sleep mode: %d, src: %d\n",
|
|
|
sleep->pm_sleep_mode, sleep->pm_wakeup_src);
|
|
|
#endif
|
|
@@ -217,7 +218,7 @@ static int iwlagn_rx_pm_debug_statistics_notif(struct iwl_priv *priv,
|
|
|
IWL_DEBUG_RADIO(priv, "Dumping %d bytes of unhandled "
|
|
|
"notification for %s:\n", len,
|
|
|
get_cmd_string(pkt->hdr.cmd));
|
|
|
- iwl_print_hex_dump(priv, IWL_DL_RADIO, pkt->u.raw, len);
|
|
|
+ iwl_print_hex_dump(priv, IWL_DL_RADIO, pkt->data, len);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -226,7 +227,7 @@ static int iwlagn_rx_beacon_notif(struct iwl_priv *priv,
|
|
|
struct iwl_device_cmd *cmd)
|
|
|
{
|
|
|
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
|
|
- struct iwlagn_beacon_notif *beacon = (void *)pkt->u.raw;
|
|
|
+ struct iwlagn_beacon_notif *beacon = (void *)pkt->data;
|
|
|
#ifdef CONFIG_IWLWIFI_DEBUG
|
|
|
u16 status = le16_to_cpu(beacon->beacon_notify_hdr.status.status);
|
|
|
u8 rate = iwl_hw_get_rate(beacon->beacon_notify_hdr.rate_n_flags);
|
|
@@ -515,7 +516,7 @@ static int iwlagn_rx_statistics(struct iwl_priv *priv,
|
|
|
|
|
|
if (len == sizeof(struct iwl_bt_notif_statistics)) {
|
|
|
struct iwl_bt_notif_statistics *stats;
|
|
|
- stats = &pkt->u.stats_bt;
|
|
|
+ stats = (void *)&pkt->data;
|
|
|
flag = &stats->flag;
|
|
|
common = &stats->general.common;
|
|
|
rx_non_phy = &stats->rx.general.common;
|
|
@@ -533,7 +534,7 @@ static int iwlagn_rx_statistics(struct iwl_priv *priv,
|
|
|
#endif
|
|
|
} else if (len == sizeof(struct iwl_notif_statistics)) {
|
|
|
struct iwl_notif_statistics *stats;
|
|
|
- stats = &pkt->u.stats;
|
|
|
+ stats = (void *)&pkt->data;
|
|
|
flag = &stats->flag;
|
|
|
common = &stats->general.common;
|
|
|
rx_non_phy = &stats->rx.general;
|
|
@@ -601,8 +602,9 @@ static int iwlagn_rx_reply_statistics(struct iwl_priv *priv,
|
|
|
struct iwl_device_cmd *cmd)
|
|
|
{
|
|
|
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
|
|
+ struct iwl_notif_statistics *stats = (void *)pkt->data;
|
|
|
|
|
|
- if (le32_to_cpu(pkt->u.stats.flag) & UCODE_STATISTICS_CLEAR_MSK) {
|
|
|
+ if (le32_to_cpu(stats->flag) & UCODE_STATISTICS_CLEAR_MSK) {
|
|
|
#ifdef CONFIG_IWLWIFI_DEBUGFS
|
|
|
memset(&priv->accum_stats, 0,
|
|
|
sizeof(priv->accum_stats));
|
|
@@ -624,7 +626,8 @@ static int iwlagn_rx_card_state_notif(struct iwl_priv *priv,
|
|
|
struct iwl_device_cmd *cmd)
|
|
|
{
|
|
|
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
|
|
- u32 flags = le32_to_cpu(pkt->u.card_state_notif.flags);
|
|
|
+ struct iwl_card_state_notif *card_state_notif = (void *)pkt->data;
|
|
|
+ u32 flags = le32_to_cpu(card_state_notif->flags);
|
|
|
unsigned long status = priv->shrd->status;
|
|
|
|
|
|
IWL_DEBUG_RF_KILL(priv, "Card state received: HW:%s SW:%s CT:%s\n",
|
|
@@ -678,9 +681,8 @@ static int iwlagn_rx_missed_beacon_notif(struct iwl_priv *priv,
|
|
|
|
|
|
{
|
|
|
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
|
|
- struct iwl_missed_beacon_notif *missed_beacon;
|
|
|
+ struct iwl_missed_beacon_notif *missed_beacon = (void *)pkt->data;
|
|
|
|
|
|
- missed_beacon = &pkt->u.missed_beacon;
|
|
|
if (le32_to_cpu(missed_beacon->consecutive_missed_beacons) >
|
|
|
priv->missed_beacon_threshold) {
|
|
|
IWL_DEBUG_CALIB(priv,
|
|
@@ -704,7 +706,7 @@ static int iwlagn_rx_reply_rx_phy(struct iwl_priv *priv,
|
|
|
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
|
|
|
|
|
priv->last_phy_res_valid = true;
|
|
|
- memcpy(&priv->last_phy_res, pkt->u.raw,
|
|
|
+ memcpy(&priv->last_phy_res, pkt->data,
|
|
|
sizeof(struct iwl_rx_phy_res));
|
|
|
return 0;
|
|
|
}
|
|
@@ -949,12 +951,12 @@ static int iwlagn_rx_reply_rx(struct iwl_priv *priv,
|
|
|
* received.
|
|
|
*/
|
|
|
if (pkt->hdr.cmd == REPLY_RX) {
|
|
|
- phy_res = (struct iwl_rx_phy_res *)pkt->u.raw;
|
|
|
- header = (struct ieee80211_hdr *)(pkt->u.raw + sizeof(*phy_res)
|
|
|
+ phy_res = (struct iwl_rx_phy_res *)pkt->data;
|
|
|
+ header = (struct ieee80211_hdr *)(pkt->data + sizeof(*phy_res)
|
|
|
+ phy_res->cfg_phy_cnt);
|
|
|
|
|
|
len = le16_to_cpu(phy_res->byte_count);
|
|
|
- rx_pkt_status = *(__le32 *)(pkt->u.raw + sizeof(*phy_res) +
|
|
|
+ rx_pkt_status = *(__le32 *)(pkt->data + sizeof(*phy_res) +
|
|
|
phy_res->cfg_phy_cnt + len);
|
|
|
ampdu_status = le32_to_cpu(rx_pkt_status);
|
|
|
} else {
|
|
@@ -963,10 +965,10 @@ static int iwlagn_rx_reply_rx(struct iwl_priv *priv,
|
|
|
return 0;
|
|
|
}
|
|
|
phy_res = &priv->last_phy_res;
|
|
|
- amsdu = (struct iwl_rx_mpdu_res_start *)pkt->u.raw;
|
|
|
- header = (struct ieee80211_hdr *)(pkt->u.raw + sizeof(*amsdu));
|
|
|
+ amsdu = (struct iwl_rx_mpdu_res_start *)pkt->data;
|
|
|
+ header = (struct ieee80211_hdr *)(pkt->data + sizeof(*amsdu));
|
|
|
len = le16_to_cpu(amsdu->byte_count);
|
|
|
- rx_pkt_status = *(__le32 *)(pkt->u.raw + sizeof(*amsdu) + len);
|
|
|
+ rx_pkt_status = *(__le32 *)(pkt->data + sizeof(*amsdu) + len);
|
|
|
ampdu_status = iwlagn_translate_rx_status(priv,
|
|
|
le32_to_cpu(rx_pkt_status));
|
|
|
}
|
|
@@ -1051,7 +1053,7 @@ static int iwlagn_rx_noa_notification(struct iwl_priv *priv,
|
|
|
{
|
|
|
struct iwl_wipan_noa_data *new_data, *old_data;
|
|
|
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
|
|
- struct iwl_wipan_noa_notification *noa_notif = (void *)pkt->u.raw;
|
|
|
+ struct iwl_wipan_noa_notification *noa_notif = (void *)pkt->data;
|
|
|
|
|
|
/* no condition -- we're in softirq */
|
|
|
old_data = rcu_dereference_protected(priv->noa_data, true);
|