| .. | .. |
|---|
| 463 | 463 | atomic_inc(&priv->wmi->m_rmw_cnt); |
|---|
| 464 | 464 | } |
|---|
| 465 | 465 | |
|---|
| 466 | | -static u32 ath9k_reg_rmw_single(void *hw_priv, |
|---|
| 466 | +static void ath9k_reg_rmw_single(void *hw_priv, |
|---|
| 467 | 467 | u32 reg_offset, u32 set, u32 clr) |
|---|
| 468 | 468 | { |
|---|
| 469 | 469 | struct ath_hw *ah = hw_priv; |
|---|
| .. | .. |
|---|
| 471 | 471 | struct ath9k_htc_priv *priv = (struct ath9k_htc_priv *) common->priv; |
|---|
| 472 | 472 | struct register_rmw buf, buf_ret; |
|---|
| 473 | 473 | int ret; |
|---|
| 474 | | - u32 val = 0; |
|---|
| 475 | 474 | |
|---|
| 476 | 475 | buf.reg = cpu_to_be32(reg_offset); |
|---|
| 477 | 476 | buf.set = cpu_to_be32(set); |
|---|
| .. | .. |
|---|
| 485 | 484 | ath_dbg(common, WMI, "REGISTER RMW FAILED:(0x%04x, %d)\n", |
|---|
| 486 | 485 | reg_offset, ret); |
|---|
| 487 | 486 | } |
|---|
| 488 | | - return val; |
|---|
| 489 | 487 | } |
|---|
| 490 | 488 | |
|---|
| 491 | 489 | static u32 ath9k_reg_rmw(void *hw_priv, u32 reg_offset, u32 set, u32 clr) |
|---|
| .. | .. |
|---|
| 647 | 645 | spin_lock_init(&priv->tx.tx_lock); |
|---|
| 648 | 646 | mutex_init(&priv->mutex); |
|---|
| 649 | 647 | mutex_init(&priv->htc_pm_lock); |
|---|
| 650 | | - tasklet_init(&priv->rx_tasklet, ath9k_rx_tasklet, |
|---|
| 651 | | - (unsigned long)priv); |
|---|
| 652 | | - tasklet_init(&priv->tx_failed_tasklet, ath9k_tx_failed_tasklet, |
|---|
| 653 | | - (unsigned long)priv); |
|---|
| 648 | + tasklet_setup(&priv->rx_tasklet, ath9k_rx_tasklet); |
|---|
| 649 | + tasklet_setup(&priv->tx_failed_tasklet, ath9k_tx_failed_tasklet); |
|---|
| 654 | 650 | INIT_DELAYED_WORK(&priv->ani_work, ath9k_htc_ani_work); |
|---|
| 655 | 651 | INIT_WORK(&priv->ps_work, ath9k_ps_work); |
|---|
| 656 | 652 | INIT_WORK(&priv->fatal_work, ath9k_fatal_work); |
|---|
| .. | .. |
|---|
| 782 | 778 | SET_IEEE80211_PERM_ADDR(hw, common->macaddr); |
|---|
| 783 | 779 | |
|---|
| 784 | 780 | wiphy_ext_feature_set(hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST); |
|---|
| 781 | + wiphy_ext_feature_set(hw->wiphy, |
|---|
| 782 | + NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS); |
|---|
| 785 | 783 | } |
|---|
| 786 | 784 | |
|---|
| 787 | 785 | static int ath9k_init_firmware_version(struct ath9k_htc_priv *priv) |
|---|
| .. | .. |
|---|
| 946 | 944 | priv->hw = hw; |
|---|
| 947 | 945 | priv->htc = htc_handle; |
|---|
| 948 | 946 | priv->dev = dev; |
|---|
| 949 | | - htc_handle->drv_priv = priv; |
|---|
| 950 | 947 | SET_IEEE80211_DEV(hw, priv->dev); |
|---|
| 951 | 948 | |
|---|
| 952 | 949 | ret = ath9k_htc_wait_for_target(priv); |
|---|
| .. | .. |
|---|
| 967 | 964 | if (ret) |
|---|
| 968 | 965 | goto err_init; |
|---|
| 969 | 966 | |
|---|
| 967 | + htc_handle->drv_priv = priv; |
|---|
| 968 | + |
|---|
| 970 | 969 | return 0; |
|---|
| 971 | 970 | |
|---|
| 972 | 971 | err_init: |
|---|
| 973 | 972 | ath9k_stop_wmi(priv); |
|---|
| 974 | 973 | hif_dev = (struct hif_device_usb *)htc_handle->hif_dev; |
|---|
| 975 | 974 | ath9k_hif_usb_dealloc_urbs(hif_dev); |
|---|
| 976 | | - ath9k_destoy_wmi(priv); |
|---|
| 975 | + ath9k_destroy_wmi(priv); |
|---|
| 977 | 976 | err_free: |
|---|
| 978 | 977 | ieee80211_free_hw(hw); |
|---|
| 979 | 978 | return ret; |
|---|
| .. | .. |
|---|
| 989 | 988 | |
|---|
| 990 | 989 | ath9k_deinit_device(htc_handle->drv_priv); |
|---|
| 991 | 990 | ath9k_stop_wmi(htc_handle->drv_priv); |
|---|
| 991 | + ath9k_hif_usb_dealloc_urbs((struct hif_device_usb *)htc_handle->hif_dev); |
|---|
| 992 | + ath9k_destroy_wmi(htc_handle->drv_priv); |
|---|
| 992 | 993 | ieee80211_free_hw(htc_handle->drv_priv->hw); |
|---|
| 993 | 994 | } |
|---|
| 994 | 995 | } |
|---|