Loading Documentation/devicetree/bindings/net/wireless/qcom,ath10k.yaml +4 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,8 @@ properties: required: - iommus ieee80211-freq-limit: true qcom,ath10k-calibration-data: $ref: /schemas/types.yaml#/definitions/uint8-array description: Loading Loading @@ -164,6 +166,7 @@ required: additionalProperties: false allOf: - $ref: ieee80211.yaml# - if: properties: compatible: Loading Loading @@ -355,4 +358,5 @@ examples: "msi14", "msi15", "legacy"; ieee80211-freq-limit = <5470000 5875000>; }; drivers/net/wireless/ath/ath10k/ahb.c +3 −17 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ MODULE_DEVICE_TABLE(of, ath10k_ahb_of_match); static inline struct ath10k_ahb *ath10k_ahb_priv(struct ath10k *ar) { return &((struct ath10k_pci *)ar->drv_priv)->ahb[0]; return &ath10k_pci_priv(ar)->ahb[0]; } static void ath10k_ahb_write32(struct ath10k *ar, u32 offset, u32 value) Loading Loading @@ -816,23 +816,13 @@ static int ath10k_ahb_probe(struct platform_device *pdev) err_core_destroy: ath10k_core_destroy(ar); platform_set_drvdata(pdev, NULL); return ret; } static int ath10k_ahb_remove(struct platform_device *pdev) static void ath10k_ahb_remove(struct platform_device *pdev) { struct ath10k *ar = platform_get_drvdata(pdev); struct ath10k_ahb *ar_ahb; if (!ar) return -EINVAL; ar_ahb = ath10k_ahb_priv(ar); if (!ar_ahb) return -EINVAL; ath10k_dbg(ar, ATH10K_DBG_AHB, "ahb remove\n"); Loading @@ -844,10 +834,6 @@ static int ath10k_ahb_remove(struct platform_device *pdev) ath10k_ahb_clock_disable(ar); ath10k_ahb_resource_deinit(ar); ath10k_core_destroy(ar); platform_set_drvdata(pdev, NULL); return 0; } static struct platform_driver ath10k_ahb_driver = { Loading @@ -856,7 +842,7 @@ static struct platform_driver ath10k_ahb_driver = { .of_match_table = ath10k_ahb_of_match, }, .probe = ath10k_ahb_probe, .remove = ath10k_ahb_remove, .remove_new = ath10k_ahb_remove, }; int ath10k_ahb_init(void) Loading drivers/net/wireless/ath/ath10k/core.c +0 −9 Original line number Diff line number Diff line Loading @@ -2504,7 +2504,6 @@ EXPORT_SYMBOL(ath10k_core_napi_sync_disable); static void ath10k_core_restart(struct work_struct *work) { struct ath10k *ar = container_of(work, struct ath10k, restart_work); struct ath10k_vif *arvif; int ret; set_bit(ATH10K_FLAG_CRASH_FLUSH, &ar->dev_flags); Loading Loading @@ -2543,14 +2542,6 @@ static void ath10k_core_restart(struct work_struct *work) ar->state = ATH10K_STATE_RESTARTING; ath10k_halt(ar); ath10k_scan_finish(ar); if (ar->hw_params.hw_restart_disconnect) { list_for_each_entry(arvif, &ar->arvifs, list) { if (arvif->is_up && arvif->vdev_type == WMI_VDEV_TYPE_STA) ieee80211_hw_restart_disconnect(arvif->vif); } } ieee80211_restart_hw(ar->hw); break; case ATH10K_STATE_OFF: Loading drivers/net/wireless/ath/ath10k/htt.h +3 −3 Original line number Diff line number Diff line Loading @@ -707,7 +707,7 @@ struct htt_rx_indication_prefix { __le16 fw_rx_desc_bytes; u8 pad0; u8 pad1; }; } __packed; struct htt_rx_indication { struct htt_rx_indication_hdr hdr; Loading Loading @@ -1565,7 +1565,7 @@ struct htt_tx_fetch_ind { /* ath10k_htt_get_tx_fetch_ind_resp_ids() */ DECLARE_FLEX_ARRAY(__le32, resp_ids); DECLARE_FLEX_ARRAY(struct htt_tx_fetch_record, records); }; } __packed; } __packed; static inline void * Loading Loading @@ -1723,7 +1723,7 @@ struct htt_resp { struct htt_tx_mode_switch_ind tx_mode_switch_ind; struct htt_channel_change chan_change; struct htt_peer_tx_stats peer_tx_stats; }; } __packed; } __packed; /*** host side structures follow ***/ Loading drivers/net/wireless/ath/ath10k/mac.c +7 −0 Original line number Diff line number Diff line Loading @@ -8109,6 +8109,7 @@ static void ath10k_reconfig_complete(struct ieee80211_hw *hw, enum ieee80211_reconfig_type reconfig_type) { struct ath10k *ar = hw->priv; struct ath10k_vif *arvif; if (reconfig_type != IEEE80211_RECONFIG_TYPE_RESTART) return; Loading @@ -8123,6 +8124,12 @@ static void ath10k_reconfig_complete(struct ieee80211_hw *hw, ar->state = ATH10K_STATE_ON; ieee80211_wake_queues(ar->hw); clear_bit(ATH10K_FLAG_RESTARTING, &ar->dev_flags); if (ar->hw_params.hw_restart_disconnect) { list_for_each_entry(arvif, &ar->arvifs, list) { if (arvif->is_up && arvif->vdev_type == WMI_VDEV_TYPE_STA) ieee80211_hw_restart_disconnect(arvif->vif); } } } mutex_unlock(&ar->conf_mutex); Loading Loading
Documentation/devicetree/bindings/net/wireless/qcom,ath10k.yaml +4 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,8 @@ properties: required: - iommus ieee80211-freq-limit: true qcom,ath10k-calibration-data: $ref: /schemas/types.yaml#/definitions/uint8-array description: Loading Loading @@ -164,6 +166,7 @@ required: additionalProperties: false allOf: - $ref: ieee80211.yaml# - if: properties: compatible: Loading Loading @@ -355,4 +358,5 @@ examples: "msi14", "msi15", "legacy"; ieee80211-freq-limit = <5470000 5875000>; };
drivers/net/wireless/ath/ath10k/ahb.c +3 −17 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ MODULE_DEVICE_TABLE(of, ath10k_ahb_of_match); static inline struct ath10k_ahb *ath10k_ahb_priv(struct ath10k *ar) { return &((struct ath10k_pci *)ar->drv_priv)->ahb[0]; return &ath10k_pci_priv(ar)->ahb[0]; } static void ath10k_ahb_write32(struct ath10k *ar, u32 offset, u32 value) Loading Loading @@ -816,23 +816,13 @@ static int ath10k_ahb_probe(struct platform_device *pdev) err_core_destroy: ath10k_core_destroy(ar); platform_set_drvdata(pdev, NULL); return ret; } static int ath10k_ahb_remove(struct platform_device *pdev) static void ath10k_ahb_remove(struct platform_device *pdev) { struct ath10k *ar = platform_get_drvdata(pdev); struct ath10k_ahb *ar_ahb; if (!ar) return -EINVAL; ar_ahb = ath10k_ahb_priv(ar); if (!ar_ahb) return -EINVAL; ath10k_dbg(ar, ATH10K_DBG_AHB, "ahb remove\n"); Loading @@ -844,10 +834,6 @@ static int ath10k_ahb_remove(struct platform_device *pdev) ath10k_ahb_clock_disable(ar); ath10k_ahb_resource_deinit(ar); ath10k_core_destroy(ar); platform_set_drvdata(pdev, NULL); return 0; } static struct platform_driver ath10k_ahb_driver = { Loading @@ -856,7 +842,7 @@ static struct platform_driver ath10k_ahb_driver = { .of_match_table = ath10k_ahb_of_match, }, .probe = ath10k_ahb_probe, .remove = ath10k_ahb_remove, .remove_new = ath10k_ahb_remove, }; int ath10k_ahb_init(void) Loading
drivers/net/wireless/ath/ath10k/core.c +0 −9 Original line number Diff line number Diff line Loading @@ -2504,7 +2504,6 @@ EXPORT_SYMBOL(ath10k_core_napi_sync_disable); static void ath10k_core_restart(struct work_struct *work) { struct ath10k *ar = container_of(work, struct ath10k, restart_work); struct ath10k_vif *arvif; int ret; set_bit(ATH10K_FLAG_CRASH_FLUSH, &ar->dev_flags); Loading Loading @@ -2543,14 +2542,6 @@ static void ath10k_core_restart(struct work_struct *work) ar->state = ATH10K_STATE_RESTARTING; ath10k_halt(ar); ath10k_scan_finish(ar); if (ar->hw_params.hw_restart_disconnect) { list_for_each_entry(arvif, &ar->arvifs, list) { if (arvif->is_up && arvif->vdev_type == WMI_VDEV_TYPE_STA) ieee80211_hw_restart_disconnect(arvif->vif); } } ieee80211_restart_hw(ar->hw); break; case ATH10K_STATE_OFF: Loading
drivers/net/wireless/ath/ath10k/htt.h +3 −3 Original line number Diff line number Diff line Loading @@ -707,7 +707,7 @@ struct htt_rx_indication_prefix { __le16 fw_rx_desc_bytes; u8 pad0; u8 pad1; }; } __packed; struct htt_rx_indication { struct htt_rx_indication_hdr hdr; Loading Loading @@ -1565,7 +1565,7 @@ struct htt_tx_fetch_ind { /* ath10k_htt_get_tx_fetch_ind_resp_ids() */ DECLARE_FLEX_ARRAY(__le32, resp_ids); DECLARE_FLEX_ARRAY(struct htt_tx_fetch_record, records); }; } __packed; } __packed; static inline void * Loading Loading @@ -1723,7 +1723,7 @@ struct htt_resp { struct htt_tx_mode_switch_ind tx_mode_switch_ind; struct htt_channel_change chan_change; struct htt_peer_tx_stats peer_tx_stats; }; } __packed; } __packed; /*** host side structures follow ***/ Loading
drivers/net/wireless/ath/ath10k/mac.c +7 −0 Original line number Diff line number Diff line Loading @@ -8109,6 +8109,7 @@ static void ath10k_reconfig_complete(struct ieee80211_hw *hw, enum ieee80211_reconfig_type reconfig_type) { struct ath10k *ar = hw->priv; struct ath10k_vif *arvif; if (reconfig_type != IEEE80211_RECONFIG_TYPE_RESTART) return; Loading @@ -8123,6 +8124,12 @@ static void ath10k_reconfig_complete(struct ieee80211_hw *hw, ar->state = ATH10K_STATE_ON; ieee80211_wake_queues(ar->hw); clear_bit(ATH10K_FLAG_RESTARTING, &ar->dev_flags); if (ar->hw_params.hw_restart_disconnect) { list_for_each_entry(arvif, &ar->arvifs, list) { if (arvif->is_up && arvif->vdev_type == WMI_VDEV_TYPE_STA) ieee80211_hw_restart_disconnect(arvif->vif); } } } mutex_unlock(&ar->conf_mutex); Loading