Loading drivers/net/wireless/ath/ath10k/ahb.c +23 −84 Original line number Diff line number Diff line Loading @@ -91,59 +91,37 @@ static int ath10k_ahb_clock_init(struct ath10k *ar) { struct ath10k_ahb *ar_ahb = ath10k_ahb_priv(ar); struct device *dev; int ret; dev = &ar_ahb->pdev->dev; ar_ahb->cmd_clk = clk_get(dev, "wifi_wcss_cmd"); ar_ahb->cmd_clk = devm_clk_get(dev, "wifi_wcss_cmd"); if (IS_ERR_OR_NULL(ar_ahb->cmd_clk)) { ath10k_err(ar, "failed to get cmd clk: %ld\n", PTR_ERR(ar_ahb->cmd_clk)); ret = ar_ahb->cmd_clk ? PTR_ERR(ar_ahb->cmd_clk) : -ENODEV; goto out; return ar_ahb->cmd_clk ? PTR_ERR(ar_ahb->cmd_clk) : -ENODEV; } ar_ahb->ref_clk = clk_get(dev, "wifi_wcss_ref"); ar_ahb->ref_clk = devm_clk_get(dev, "wifi_wcss_ref"); if (IS_ERR_OR_NULL(ar_ahb->ref_clk)) { ath10k_err(ar, "failed to get ref clk: %ld\n", PTR_ERR(ar_ahb->ref_clk)); ret = ar_ahb->ref_clk ? PTR_ERR(ar_ahb->ref_clk) : -ENODEV; goto err_cmd_clk_put; return ar_ahb->ref_clk ? PTR_ERR(ar_ahb->ref_clk) : -ENODEV; } ar_ahb->rtc_clk = clk_get(dev, "wifi_wcss_rtc"); ar_ahb->rtc_clk = devm_clk_get(dev, "wifi_wcss_rtc"); if (IS_ERR_OR_NULL(ar_ahb->rtc_clk)) { ath10k_err(ar, "failed to get rtc clk: %ld\n", PTR_ERR(ar_ahb->rtc_clk)); ret = ar_ahb->rtc_clk ? PTR_ERR(ar_ahb->rtc_clk) : -ENODEV; goto err_ref_clk_put; return ar_ahb->rtc_clk ? PTR_ERR(ar_ahb->rtc_clk) : -ENODEV; } return 0; err_ref_clk_put: clk_put(ar_ahb->ref_clk); err_cmd_clk_put: clk_put(ar_ahb->cmd_clk); out: return ret; } static void ath10k_ahb_clock_deinit(struct ath10k *ar) { struct ath10k_ahb *ar_ahb = ath10k_ahb_priv(ar); if (!IS_ERR_OR_NULL(ar_ahb->cmd_clk)) clk_put(ar_ahb->cmd_clk); if (!IS_ERR_OR_NULL(ar_ahb->ref_clk)) clk_put(ar_ahb->ref_clk); if (!IS_ERR_OR_NULL(ar_ahb->rtc_clk)) clk_put(ar_ahb->rtc_clk); ar_ahb->cmd_clk = NULL; ar_ahb->ref_clk = NULL; ar_ahb->rtc_clk = NULL; Loading Loading @@ -213,92 +191,51 @@ static int ath10k_ahb_rst_ctrl_init(struct ath10k *ar) { struct ath10k_ahb *ar_ahb = ath10k_ahb_priv(ar); struct device *dev; int ret; dev = &ar_ahb->pdev->dev; ar_ahb->core_cold_rst = reset_control_get(dev, "wifi_core_cold"); if (IS_ERR_OR_NULL(ar_ahb->core_cold_rst)) { ar_ahb->core_cold_rst = devm_reset_control_get(dev, "wifi_core_cold"); if (IS_ERR(ar_ahb->core_cold_rst)) { ath10k_err(ar, "failed to get core cold rst ctrl: %ld\n", PTR_ERR(ar_ahb->core_cold_rst)); ret = ar_ahb->core_cold_rst ? PTR_ERR(ar_ahb->core_cold_rst) : -ENODEV; goto out; return PTR_ERR(ar_ahb->core_cold_rst); } ar_ahb->radio_cold_rst = reset_control_get(dev, "wifi_radio_cold"); if (IS_ERR_OR_NULL(ar_ahb->radio_cold_rst)) { ar_ahb->radio_cold_rst = devm_reset_control_get(dev, "wifi_radio_cold"); if (IS_ERR(ar_ahb->radio_cold_rst)) { ath10k_err(ar, "failed to get radio cold rst ctrl: %ld\n", PTR_ERR(ar_ahb->radio_cold_rst)); ret = ar_ahb->radio_cold_rst ? PTR_ERR(ar_ahb->radio_cold_rst) : -ENODEV; goto err_core_cold_rst_put; return PTR_ERR(ar_ahb->radio_cold_rst); } ar_ahb->radio_warm_rst = reset_control_get(dev, "wifi_radio_warm"); if (IS_ERR_OR_NULL(ar_ahb->radio_warm_rst)) { ar_ahb->radio_warm_rst = devm_reset_control_get(dev, "wifi_radio_warm"); if (IS_ERR(ar_ahb->radio_warm_rst)) { ath10k_err(ar, "failed to get radio warm rst ctrl: %ld\n", PTR_ERR(ar_ahb->radio_warm_rst)); ret = ar_ahb->radio_warm_rst ? PTR_ERR(ar_ahb->radio_warm_rst) : -ENODEV; goto err_radio_cold_rst_put; return PTR_ERR(ar_ahb->radio_warm_rst); } ar_ahb->radio_srif_rst = reset_control_get(dev, "wifi_radio_srif"); if (IS_ERR_OR_NULL(ar_ahb->radio_srif_rst)) { ar_ahb->radio_srif_rst = devm_reset_control_get(dev, "wifi_radio_srif"); if (IS_ERR(ar_ahb->radio_srif_rst)) { ath10k_err(ar, "failed to get radio srif rst ctrl: %ld\n", PTR_ERR(ar_ahb->radio_srif_rst)); ret = ar_ahb->radio_srif_rst ? PTR_ERR(ar_ahb->radio_srif_rst) : -ENODEV; goto err_radio_warm_rst_put; return PTR_ERR(ar_ahb->radio_srif_rst); } ar_ahb->cpu_init_rst = reset_control_get(dev, "wifi_cpu_init"); if (IS_ERR_OR_NULL(ar_ahb->cpu_init_rst)) { ar_ahb->cpu_init_rst = devm_reset_control_get(dev, "wifi_cpu_init"); if (IS_ERR(ar_ahb->cpu_init_rst)) { ath10k_err(ar, "failed to get cpu init rst ctrl: %ld\n", PTR_ERR(ar_ahb->cpu_init_rst)); ret = ar_ahb->cpu_init_rst ? PTR_ERR(ar_ahb->cpu_init_rst) : -ENODEV; goto err_radio_srif_rst_put; return PTR_ERR(ar_ahb->cpu_init_rst); } return 0; err_radio_srif_rst_put: reset_control_put(ar_ahb->radio_srif_rst); err_radio_warm_rst_put: reset_control_put(ar_ahb->radio_warm_rst); err_radio_cold_rst_put: reset_control_put(ar_ahb->radio_cold_rst); err_core_cold_rst_put: reset_control_put(ar_ahb->core_cold_rst); out: return ret; } static void ath10k_ahb_rst_ctrl_deinit(struct ath10k *ar) { struct ath10k_ahb *ar_ahb = ath10k_ahb_priv(ar); if (!IS_ERR_OR_NULL(ar_ahb->core_cold_rst)) reset_control_put(ar_ahb->core_cold_rst); if (!IS_ERR_OR_NULL(ar_ahb->radio_cold_rst)) reset_control_put(ar_ahb->radio_cold_rst); if (!IS_ERR_OR_NULL(ar_ahb->radio_warm_rst)) reset_control_put(ar_ahb->radio_warm_rst); if (!IS_ERR_OR_NULL(ar_ahb->radio_srif_rst)) reset_control_put(ar_ahb->radio_srif_rst); if (!IS_ERR_OR_NULL(ar_ahb->cpu_init_rst)) reset_control_put(ar_ahb->cpu_init_rst); ar_ahb->core_cold_rst = NULL; ar_ahb->radio_cold_rst = NULL; ar_ahb->radio_warm_rst = NULL; Loading Loading @@ -572,6 +509,7 @@ static int ath10k_ahb_resource_init(struct ath10k *ar) ar_ahb->irq = platform_get_irq_byname(pdev, "legacy"); if (ar_ahb->irq < 0) { ath10k_err(ar, "failed to get irq number: %d\n", ar_ahb->irq); ret = ar_ahb->irq; goto err_clock_deinit; } Loading Loading @@ -850,6 +788,7 @@ static int ath10k_ahb_probe(struct platform_device *pdev) chip_id = ath10k_ahb_soc_read32(ar, SOC_CHIP_ID_ADDRESS); if (chip_id == 0xffffffff) { ath10k_err(ar, "failed to get chip id\n"); ret = -ENODEV; goto err_halt_device; } Loading drivers/net/wireless/ath/ath10k/ce.c +8 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ * chooses what to send (buffer address, length). The destination * side keeps a supply of "anonymous receive buffers" available and * it handles incoming data as it arrives (when the destination * recieves an interrupt). * receives an interrupt). * * The sender may send a simple buffer (address/length) or it may * send a small list of buffers. When a small list is sent, hardware Loading Loading @@ -433,6 +433,13 @@ void ath10k_ce_rx_update_write_idx(struct ath10k_ce_pipe *pipe, u32 nentries) unsigned int nentries_mask = dest_ring->nentries_mask; unsigned int write_index = dest_ring->write_index; u32 ctrl_addr = pipe->ctrl_addr; u32 cur_write_idx = ath10k_ce_dest_ring_write_index_get(ar, ctrl_addr); /* Prevent CE ring stuck issue that will occur when ring is full. * Make sure that write index is 1 less than read index. */ if ((cur_write_idx + nentries) == dest_ring->sw_index) nentries -= 1; write_index = CE_RING_IDX_ADD(nentries_mask, write_index, nentries); ath10k_ce_dest_ring_write_index_set(ar, ctrl_addr, write_index); Loading drivers/net/wireless/ath/ath10k/core.c +16 −1 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board_ext_size = QCA988X_BOARD_EXT_DATA_SZ, }, .hw_ops = &qca988x_ops, .decap_align_bytes = 4, }, { .id = QCA9887_HW_1_0_VERSION, Loading @@ -87,6 +88,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board_ext_size = QCA9887_BOARD_EXT_DATA_SZ, }, .hw_ops = &qca988x_ops, .decap_align_bytes = 4, }, { .id = QCA6174_HW_2_1_VERSION, Loading @@ -105,6 +107,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board_ext_size = QCA6174_BOARD_EXT_DATA_SZ, }, .hw_ops = &qca988x_ops, .decap_align_bytes = 4, }, { .id = QCA6174_HW_2_1_VERSION, Loading @@ -123,6 +126,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board_ext_size = QCA6174_BOARD_EXT_DATA_SZ, }, .hw_ops = &qca988x_ops, .decap_align_bytes = 4, }, { .id = QCA6174_HW_3_0_VERSION, Loading @@ -141,6 +145,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board_ext_size = QCA6174_BOARD_EXT_DATA_SZ, }, .hw_ops = &qca988x_ops, .decap_align_bytes = 4, }, { .id = QCA6174_HW_3_2_VERSION, Loading @@ -160,6 +165,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board_ext_size = QCA6174_BOARD_EXT_DATA_SZ, }, .hw_ops = &qca988x_ops, .decap_align_bytes = 4, }, { .id = QCA99X0_HW_2_0_DEV_VERSION, Loading @@ -184,6 +190,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { }, .sw_decrypt_mcast_mgmt = true, .hw_ops = &qca99x0_ops, .decap_align_bytes = 1, }, { .id = QCA9984_HW_1_0_DEV_VERSION, Loading @@ -208,6 +215,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { }, .sw_decrypt_mcast_mgmt = true, .hw_ops = &qca99x0_ops, .decap_align_bytes = 1, }, { .id = QCA9888_HW_2_0_DEV_VERSION, Loading @@ -231,6 +239,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { }, .sw_decrypt_mcast_mgmt = true, .hw_ops = &qca99x0_ops, .decap_align_bytes = 1, }, { .id = QCA9377_HW_1_0_DEV_VERSION, Loading @@ -249,6 +258,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board_ext_size = QCA9377_BOARD_EXT_DATA_SZ, }, .hw_ops = &qca988x_ops, .decap_align_bytes = 4, }, { .id = QCA9377_HW_1_1_DEV_VERSION, Loading @@ -267,6 +277,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board_ext_size = QCA9377_BOARD_EXT_DATA_SZ, }, .hw_ops = &qca988x_ops, .decap_align_bytes = 4, }, { .id = QCA4019_HW_1_0_DEV_VERSION, Loading @@ -292,6 +303,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { }, .sw_decrypt_mcast_mgmt = true, .hw_ops = &qca99x0_ops, .decap_align_bytes = 1, }, }; Loading Loading @@ -1960,6 +1972,9 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode, goto err_hif_stop; } if (ar->max_num_vdevs >= 64) ar->free_vdev_map = 0xFFFFFFFFFFFFFFFFLL; else ar->free_vdev_map = (1LL << ar->max_num_vdevs) - 1; INIT_LIST_HEAD(&ar->arvifs); Loading drivers/net/wireless/ath/ath10k/core.h +4 −4 Original line number Diff line number Diff line Loading @@ -201,10 +201,10 @@ struct ath10k_fw_stats_pdev { /* PDEV stats */ s32 ch_noise_floor; u32 tx_frame_count; u32 rx_frame_count; u32 rx_clear_count; u32 cycle_count; u32 tx_frame_count; /* Cycles spent transmitting frames */ u32 rx_frame_count; /* Cycles spent receiving frames */ u32 rx_clear_count; /* Total channel busy time, evidently */ u32 cycle_count; /* Total on-channel time */ u32 phy_err_count; u32 chan_tx_power; u32 ack_rx_bad; Loading drivers/net/wireless/ath/ath10k/htt.h +4 −4 Original line number Diff line number Diff line Loading @@ -595,7 +595,7 @@ enum htt_rx_mpdu_status { /* only accept EAPOL frames */ HTT_RX_IND_MPDU_STATUS_UNAUTH_PEER, HTT_RX_IND_MPDU_STATUS_OUT_OF_SYNC, /* Non-data in promiscous mode */ /* Non-data in promiscuous mode */ HTT_RX_IND_MPDU_STATUS_MGMT_CTRL, HTT_RX_IND_MPDU_STATUS_TKIP_MIC_ERR, HTT_RX_IND_MPDU_STATUS_DECRYPT_ERR, Loading Loading @@ -900,7 +900,7 @@ struct htt_rx_in_ord_ind { * Purpose: indicate how many 32-bit integers follow the message header * - NUM_CHARS * Bits 31:16 * Purpose: indicate how many 8-bit charaters follow the series of integers * Purpose: indicate how many 8-bit characters follow the series of integers */ struct htt_rx_test { u8 num_ints; Loading Loading @@ -1042,10 +1042,10 @@ struct htt_dbg_stats_wal_tx_stats { /* illegal rate phy errors */ __le32 illgl_rate_phy_err; /* wal pdev continous xretry */ /* wal pdev continuous xretry */ __le32 pdev_cont_xretry; /* wal pdev continous xretry */ /* wal pdev continuous xretry */ __le32 pdev_tx_timeout; /* wal pdev resets */ Loading Loading
drivers/net/wireless/ath/ath10k/ahb.c +23 −84 Original line number Diff line number Diff line Loading @@ -91,59 +91,37 @@ static int ath10k_ahb_clock_init(struct ath10k *ar) { struct ath10k_ahb *ar_ahb = ath10k_ahb_priv(ar); struct device *dev; int ret; dev = &ar_ahb->pdev->dev; ar_ahb->cmd_clk = clk_get(dev, "wifi_wcss_cmd"); ar_ahb->cmd_clk = devm_clk_get(dev, "wifi_wcss_cmd"); if (IS_ERR_OR_NULL(ar_ahb->cmd_clk)) { ath10k_err(ar, "failed to get cmd clk: %ld\n", PTR_ERR(ar_ahb->cmd_clk)); ret = ar_ahb->cmd_clk ? PTR_ERR(ar_ahb->cmd_clk) : -ENODEV; goto out; return ar_ahb->cmd_clk ? PTR_ERR(ar_ahb->cmd_clk) : -ENODEV; } ar_ahb->ref_clk = clk_get(dev, "wifi_wcss_ref"); ar_ahb->ref_clk = devm_clk_get(dev, "wifi_wcss_ref"); if (IS_ERR_OR_NULL(ar_ahb->ref_clk)) { ath10k_err(ar, "failed to get ref clk: %ld\n", PTR_ERR(ar_ahb->ref_clk)); ret = ar_ahb->ref_clk ? PTR_ERR(ar_ahb->ref_clk) : -ENODEV; goto err_cmd_clk_put; return ar_ahb->ref_clk ? PTR_ERR(ar_ahb->ref_clk) : -ENODEV; } ar_ahb->rtc_clk = clk_get(dev, "wifi_wcss_rtc"); ar_ahb->rtc_clk = devm_clk_get(dev, "wifi_wcss_rtc"); if (IS_ERR_OR_NULL(ar_ahb->rtc_clk)) { ath10k_err(ar, "failed to get rtc clk: %ld\n", PTR_ERR(ar_ahb->rtc_clk)); ret = ar_ahb->rtc_clk ? PTR_ERR(ar_ahb->rtc_clk) : -ENODEV; goto err_ref_clk_put; return ar_ahb->rtc_clk ? PTR_ERR(ar_ahb->rtc_clk) : -ENODEV; } return 0; err_ref_clk_put: clk_put(ar_ahb->ref_clk); err_cmd_clk_put: clk_put(ar_ahb->cmd_clk); out: return ret; } static void ath10k_ahb_clock_deinit(struct ath10k *ar) { struct ath10k_ahb *ar_ahb = ath10k_ahb_priv(ar); if (!IS_ERR_OR_NULL(ar_ahb->cmd_clk)) clk_put(ar_ahb->cmd_clk); if (!IS_ERR_OR_NULL(ar_ahb->ref_clk)) clk_put(ar_ahb->ref_clk); if (!IS_ERR_OR_NULL(ar_ahb->rtc_clk)) clk_put(ar_ahb->rtc_clk); ar_ahb->cmd_clk = NULL; ar_ahb->ref_clk = NULL; ar_ahb->rtc_clk = NULL; Loading Loading @@ -213,92 +191,51 @@ static int ath10k_ahb_rst_ctrl_init(struct ath10k *ar) { struct ath10k_ahb *ar_ahb = ath10k_ahb_priv(ar); struct device *dev; int ret; dev = &ar_ahb->pdev->dev; ar_ahb->core_cold_rst = reset_control_get(dev, "wifi_core_cold"); if (IS_ERR_OR_NULL(ar_ahb->core_cold_rst)) { ar_ahb->core_cold_rst = devm_reset_control_get(dev, "wifi_core_cold"); if (IS_ERR(ar_ahb->core_cold_rst)) { ath10k_err(ar, "failed to get core cold rst ctrl: %ld\n", PTR_ERR(ar_ahb->core_cold_rst)); ret = ar_ahb->core_cold_rst ? PTR_ERR(ar_ahb->core_cold_rst) : -ENODEV; goto out; return PTR_ERR(ar_ahb->core_cold_rst); } ar_ahb->radio_cold_rst = reset_control_get(dev, "wifi_radio_cold"); if (IS_ERR_OR_NULL(ar_ahb->radio_cold_rst)) { ar_ahb->radio_cold_rst = devm_reset_control_get(dev, "wifi_radio_cold"); if (IS_ERR(ar_ahb->radio_cold_rst)) { ath10k_err(ar, "failed to get radio cold rst ctrl: %ld\n", PTR_ERR(ar_ahb->radio_cold_rst)); ret = ar_ahb->radio_cold_rst ? PTR_ERR(ar_ahb->radio_cold_rst) : -ENODEV; goto err_core_cold_rst_put; return PTR_ERR(ar_ahb->radio_cold_rst); } ar_ahb->radio_warm_rst = reset_control_get(dev, "wifi_radio_warm"); if (IS_ERR_OR_NULL(ar_ahb->radio_warm_rst)) { ar_ahb->radio_warm_rst = devm_reset_control_get(dev, "wifi_radio_warm"); if (IS_ERR(ar_ahb->radio_warm_rst)) { ath10k_err(ar, "failed to get radio warm rst ctrl: %ld\n", PTR_ERR(ar_ahb->radio_warm_rst)); ret = ar_ahb->radio_warm_rst ? PTR_ERR(ar_ahb->radio_warm_rst) : -ENODEV; goto err_radio_cold_rst_put; return PTR_ERR(ar_ahb->radio_warm_rst); } ar_ahb->radio_srif_rst = reset_control_get(dev, "wifi_radio_srif"); if (IS_ERR_OR_NULL(ar_ahb->radio_srif_rst)) { ar_ahb->radio_srif_rst = devm_reset_control_get(dev, "wifi_radio_srif"); if (IS_ERR(ar_ahb->radio_srif_rst)) { ath10k_err(ar, "failed to get radio srif rst ctrl: %ld\n", PTR_ERR(ar_ahb->radio_srif_rst)); ret = ar_ahb->radio_srif_rst ? PTR_ERR(ar_ahb->radio_srif_rst) : -ENODEV; goto err_radio_warm_rst_put; return PTR_ERR(ar_ahb->radio_srif_rst); } ar_ahb->cpu_init_rst = reset_control_get(dev, "wifi_cpu_init"); if (IS_ERR_OR_NULL(ar_ahb->cpu_init_rst)) { ar_ahb->cpu_init_rst = devm_reset_control_get(dev, "wifi_cpu_init"); if (IS_ERR(ar_ahb->cpu_init_rst)) { ath10k_err(ar, "failed to get cpu init rst ctrl: %ld\n", PTR_ERR(ar_ahb->cpu_init_rst)); ret = ar_ahb->cpu_init_rst ? PTR_ERR(ar_ahb->cpu_init_rst) : -ENODEV; goto err_radio_srif_rst_put; return PTR_ERR(ar_ahb->cpu_init_rst); } return 0; err_radio_srif_rst_put: reset_control_put(ar_ahb->radio_srif_rst); err_radio_warm_rst_put: reset_control_put(ar_ahb->radio_warm_rst); err_radio_cold_rst_put: reset_control_put(ar_ahb->radio_cold_rst); err_core_cold_rst_put: reset_control_put(ar_ahb->core_cold_rst); out: return ret; } static void ath10k_ahb_rst_ctrl_deinit(struct ath10k *ar) { struct ath10k_ahb *ar_ahb = ath10k_ahb_priv(ar); if (!IS_ERR_OR_NULL(ar_ahb->core_cold_rst)) reset_control_put(ar_ahb->core_cold_rst); if (!IS_ERR_OR_NULL(ar_ahb->radio_cold_rst)) reset_control_put(ar_ahb->radio_cold_rst); if (!IS_ERR_OR_NULL(ar_ahb->radio_warm_rst)) reset_control_put(ar_ahb->radio_warm_rst); if (!IS_ERR_OR_NULL(ar_ahb->radio_srif_rst)) reset_control_put(ar_ahb->radio_srif_rst); if (!IS_ERR_OR_NULL(ar_ahb->cpu_init_rst)) reset_control_put(ar_ahb->cpu_init_rst); ar_ahb->core_cold_rst = NULL; ar_ahb->radio_cold_rst = NULL; ar_ahb->radio_warm_rst = NULL; Loading Loading @@ -572,6 +509,7 @@ static int ath10k_ahb_resource_init(struct ath10k *ar) ar_ahb->irq = platform_get_irq_byname(pdev, "legacy"); if (ar_ahb->irq < 0) { ath10k_err(ar, "failed to get irq number: %d\n", ar_ahb->irq); ret = ar_ahb->irq; goto err_clock_deinit; } Loading Loading @@ -850,6 +788,7 @@ static int ath10k_ahb_probe(struct platform_device *pdev) chip_id = ath10k_ahb_soc_read32(ar, SOC_CHIP_ID_ADDRESS); if (chip_id == 0xffffffff) { ath10k_err(ar, "failed to get chip id\n"); ret = -ENODEV; goto err_halt_device; } Loading
drivers/net/wireless/ath/ath10k/ce.c +8 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ * chooses what to send (buffer address, length). The destination * side keeps a supply of "anonymous receive buffers" available and * it handles incoming data as it arrives (when the destination * recieves an interrupt). * receives an interrupt). * * The sender may send a simple buffer (address/length) or it may * send a small list of buffers. When a small list is sent, hardware Loading Loading @@ -433,6 +433,13 @@ void ath10k_ce_rx_update_write_idx(struct ath10k_ce_pipe *pipe, u32 nentries) unsigned int nentries_mask = dest_ring->nentries_mask; unsigned int write_index = dest_ring->write_index; u32 ctrl_addr = pipe->ctrl_addr; u32 cur_write_idx = ath10k_ce_dest_ring_write_index_get(ar, ctrl_addr); /* Prevent CE ring stuck issue that will occur when ring is full. * Make sure that write index is 1 less than read index. */ if ((cur_write_idx + nentries) == dest_ring->sw_index) nentries -= 1; write_index = CE_RING_IDX_ADD(nentries_mask, write_index, nentries); ath10k_ce_dest_ring_write_index_set(ar, ctrl_addr, write_index); Loading
drivers/net/wireless/ath/ath10k/core.c +16 −1 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board_ext_size = QCA988X_BOARD_EXT_DATA_SZ, }, .hw_ops = &qca988x_ops, .decap_align_bytes = 4, }, { .id = QCA9887_HW_1_0_VERSION, Loading @@ -87,6 +88,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board_ext_size = QCA9887_BOARD_EXT_DATA_SZ, }, .hw_ops = &qca988x_ops, .decap_align_bytes = 4, }, { .id = QCA6174_HW_2_1_VERSION, Loading @@ -105,6 +107,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board_ext_size = QCA6174_BOARD_EXT_DATA_SZ, }, .hw_ops = &qca988x_ops, .decap_align_bytes = 4, }, { .id = QCA6174_HW_2_1_VERSION, Loading @@ -123,6 +126,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board_ext_size = QCA6174_BOARD_EXT_DATA_SZ, }, .hw_ops = &qca988x_ops, .decap_align_bytes = 4, }, { .id = QCA6174_HW_3_0_VERSION, Loading @@ -141,6 +145,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board_ext_size = QCA6174_BOARD_EXT_DATA_SZ, }, .hw_ops = &qca988x_ops, .decap_align_bytes = 4, }, { .id = QCA6174_HW_3_2_VERSION, Loading @@ -160,6 +165,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board_ext_size = QCA6174_BOARD_EXT_DATA_SZ, }, .hw_ops = &qca988x_ops, .decap_align_bytes = 4, }, { .id = QCA99X0_HW_2_0_DEV_VERSION, Loading @@ -184,6 +190,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { }, .sw_decrypt_mcast_mgmt = true, .hw_ops = &qca99x0_ops, .decap_align_bytes = 1, }, { .id = QCA9984_HW_1_0_DEV_VERSION, Loading @@ -208,6 +215,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { }, .sw_decrypt_mcast_mgmt = true, .hw_ops = &qca99x0_ops, .decap_align_bytes = 1, }, { .id = QCA9888_HW_2_0_DEV_VERSION, Loading @@ -231,6 +239,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { }, .sw_decrypt_mcast_mgmt = true, .hw_ops = &qca99x0_ops, .decap_align_bytes = 1, }, { .id = QCA9377_HW_1_0_DEV_VERSION, Loading @@ -249,6 +258,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board_ext_size = QCA9377_BOARD_EXT_DATA_SZ, }, .hw_ops = &qca988x_ops, .decap_align_bytes = 4, }, { .id = QCA9377_HW_1_1_DEV_VERSION, Loading @@ -267,6 +277,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board_ext_size = QCA9377_BOARD_EXT_DATA_SZ, }, .hw_ops = &qca988x_ops, .decap_align_bytes = 4, }, { .id = QCA4019_HW_1_0_DEV_VERSION, Loading @@ -292,6 +303,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { }, .sw_decrypt_mcast_mgmt = true, .hw_ops = &qca99x0_ops, .decap_align_bytes = 1, }, }; Loading Loading @@ -1960,6 +1972,9 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode, goto err_hif_stop; } if (ar->max_num_vdevs >= 64) ar->free_vdev_map = 0xFFFFFFFFFFFFFFFFLL; else ar->free_vdev_map = (1LL << ar->max_num_vdevs) - 1; INIT_LIST_HEAD(&ar->arvifs); Loading
drivers/net/wireless/ath/ath10k/core.h +4 −4 Original line number Diff line number Diff line Loading @@ -201,10 +201,10 @@ struct ath10k_fw_stats_pdev { /* PDEV stats */ s32 ch_noise_floor; u32 tx_frame_count; u32 rx_frame_count; u32 rx_clear_count; u32 cycle_count; u32 tx_frame_count; /* Cycles spent transmitting frames */ u32 rx_frame_count; /* Cycles spent receiving frames */ u32 rx_clear_count; /* Total channel busy time, evidently */ u32 cycle_count; /* Total on-channel time */ u32 phy_err_count; u32 chan_tx_power; u32 ack_rx_bad; Loading
drivers/net/wireless/ath/ath10k/htt.h +4 −4 Original line number Diff line number Diff line Loading @@ -595,7 +595,7 @@ enum htt_rx_mpdu_status { /* only accept EAPOL frames */ HTT_RX_IND_MPDU_STATUS_UNAUTH_PEER, HTT_RX_IND_MPDU_STATUS_OUT_OF_SYNC, /* Non-data in promiscous mode */ /* Non-data in promiscuous mode */ HTT_RX_IND_MPDU_STATUS_MGMT_CTRL, HTT_RX_IND_MPDU_STATUS_TKIP_MIC_ERR, HTT_RX_IND_MPDU_STATUS_DECRYPT_ERR, Loading Loading @@ -900,7 +900,7 @@ struct htt_rx_in_ord_ind { * Purpose: indicate how many 32-bit integers follow the message header * - NUM_CHARS * Bits 31:16 * Purpose: indicate how many 8-bit charaters follow the series of integers * Purpose: indicate how many 8-bit characters follow the series of integers */ struct htt_rx_test { u8 num_ints; Loading Loading @@ -1042,10 +1042,10 @@ struct htt_dbg_stats_wal_tx_stats { /* illegal rate phy errors */ __le32 illgl_rate_phy_err; /* wal pdev continous xretry */ /* wal pdev continuous xretry */ __le32 pdev_cont_xretry; /* wal pdev continous xretry */ /* wal pdev continuous xretry */ __le32 pdev_tx_timeout; /* wal pdev resets */ Loading