mirror of https://gitee.com/openkylin/linux.git
Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
ath.git patches for 4.15. Major changes: wil6210 * remove ssid debugfs file
This commit is contained in:
commit
e226fb5aff
|
@ -14565,7 +14565,6 @@ L: wil6210@qca.qualcomm.com
|
|||
S: Supported
|
||||
W: http://wireless.kernel.org/en/users/Drivers/wil6210
|
||||
F: drivers/net/wireless/ath/wil6210/
|
||||
F: include/uapi/linux/wil6210_uapi.h
|
||||
|
||||
WIMAX STACK
|
||||
M: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
|
||||
|
|
|
@ -889,9 +889,9 @@ static void ar5523_tx_work(struct work_struct *work)
|
|||
mutex_unlock(&ar->mutex);
|
||||
}
|
||||
|
||||
static void ar5523_tx_wd_timer(unsigned long arg)
|
||||
static void ar5523_tx_wd_timer(struct timer_list *t)
|
||||
{
|
||||
struct ar5523 *ar = (struct ar5523 *) arg;
|
||||
struct ar5523 *ar = from_timer(ar, t, tx_wd_timer);
|
||||
|
||||
ar5523_dbg(ar, "TX watchdog timer triggered\n");
|
||||
ieee80211_queue_work(ar->hw, &ar->tx_wd_work);
|
||||
|
@ -1599,8 +1599,7 @@ static int ar5523_probe(struct usb_interface *intf,
|
|||
mutex_init(&ar->mutex);
|
||||
|
||||
INIT_DELAYED_WORK(&ar->stat_work, ar5523_stat_work);
|
||||
init_timer(&ar->tx_wd_timer);
|
||||
setup_timer(&ar->tx_wd_timer, ar5523_tx_wd_timer, (unsigned long) ar);
|
||||
timer_setup(&ar->tx_wd_timer, ar5523_tx_wd_timer, 0);
|
||||
INIT_WORK(&ar->tx_wd_work, ar5523_tx_wd_work);
|
||||
INIT_WORK(&ar->tx_work, ar5523_tx_work);
|
||||
INIT_LIST_HEAD(&ar->tx_queue_pending);
|
||||
|
|
|
@ -200,9 +200,9 @@ static void ath10k_htt_rx_msdu_buff_replenish(struct ath10k_htt *htt)
|
|||
spin_unlock_bh(&htt->rx_ring.lock);
|
||||
}
|
||||
|
||||
static void ath10k_htt_rx_ring_refill_retry(unsigned long arg)
|
||||
static void ath10k_htt_rx_ring_refill_retry(struct timer_list *t)
|
||||
{
|
||||
struct ath10k_htt *htt = (struct ath10k_htt *)arg;
|
||||
struct ath10k_htt *htt = from_timer(htt, t, rx_ring.refill_retry_timer);
|
||||
|
||||
ath10k_htt_rx_msdu_buff_replenish(htt);
|
||||
}
|
||||
|
@ -507,7 +507,7 @@ int ath10k_htt_rx_alloc(struct ath10k_htt *htt)
|
|||
*htt->rx_ring.alloc_idx.vaddr = 0;
|
||||
|
||||
/* Initialize the Rx refill retry timer */
|
||||
setup_timer(timer, ath10k_htt_rx_ring_refill_retry, (unsigned long)htt);
|
||||
timer_setup(timer, ath10k_htt_rx_ring_refill_retry, 0);
|
||||
|
||||
spin_lock_init(&htt->rx_ring.lock);
|
||||
|
||||
|
|
|
@ -5585,6 +5585,59 @@ static void ath10k_mac_op_set_coverage_class(struct ieee80211_hw *hw, s16 value)
|
|||
ar->hw_params.hw_ops->set_coverage_class(ar, value);
|
||||
}
|
||||
|
||||
struct ath10k_mac_tdls_iter_data {
|
||||
u32 num_tdls_stations;
|
||||
struct ieee80211_vif *curr_vif;
|
||||
};
|
||||
|
||||
static void ath10k_mac_tdls_vif_stations_count_iter(void *data,
|
||||
struct ieee80211_sta *sta)
|
||||
{
|
||||
struct ath10k_mac_tdls_iter_data *iter_data = data;
|
||||
struct ath10k_sta *arsta = (struct ath10k_sta *)sta->drv_priv;
|
||||
struct ieee80211_vif *sta_vif = arsta->arvif->vif;
|
||||
|
||||
if (sta->tdls && sta_vif == iter_data->curr_vif)
|
||||
iter_data->num_tdls_stations++;
|
||||
}
|
||||
|
||||
static int ath10k_mac_tdls_vif_stations_count(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
||||
struct ath10k_mac_tdls_iter_data data = {};
|
||||
|
||||
data.curr_vif = vif;
|
||||
|
||||
ieee80211_iterate_stations_atomic(hw,
|
||||
ath10k_mac_tdls_vif_stations_count_iter,
|
||||
&data);
|
||||
return data.num_tdls_stations;
|
||||
}
|
||||
|
||||
static void ath10k_mac_tdls_vifs_count_iter(void *data, u8 *mac,
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
||||
struct ath10k_vif *arvif = (void *)vif->drv_priv;
|
||||
int *num_tdls_vifs = data;
|
||||
|
||||
if (vif->type != NL80211_IFTYPE_STATION)
|
||||
return;
|
||||
|
||||
if (ath10k_mac_tdls_vif_stations_count(arvif->ar->hw, vif) > 0)
|
||||
(*num_tdls_vifs)++;
|
||||
}
|
||||
|
||||
static int ath10k_mac_tdls_vifs_count(struct ieee80211_hw *hw)
|
||||
{
|
||||
int num_tdls_vifs = 0;
|
||||
|
||||
ieee80211_iterate_active_interfaces_atomic(hw,
|
||||
IEEE80211_IFACE_ITER_NORMAL,
|
||||
ath10k_mac_tdls_vifs_count_iter,
|
||||
&num_tdls_vifs);
|
||||
return num_tdls_vifs;
|
||||
}
|
||||
|
||||
static int ath10k_hw_scan(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_scan_request *hw_req)
|
||||
|
@ -5598,6 +5651,11 @@ static int ath10k_hw_scan(struct ieee80211_hw *hw,
|
|||
|
||||
mutex_lock(&ar->conf_mutex);
|
||||
|
||||
if (ath10k_mac_tdls_vif_stations_count(hw, vif) > 0) {
|
||||
ret = -EBUSY;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
spin_lock_bh(&ar->data_lock);
|
||||
switch (ar->scan.state) {
|
||||
case ATH10K_SCAN_IDLE:
|
||||
|
@ -6013,59 +6071,6 @@ static void ath10k_mac_dec_num_stations(struct ath10k_vif *arvif,
|
|||
ar->num_stations--;
|
||||
}
|
||||
|
||||
struct ath10k_mac_tdls_iter_data {
|
||||
u32 num_tdls_stations;
|
||||
struct ieee80211_vif *curr_vif;
|
||||
};
|
||||
|
||||
static void ath10k_mac_tdls_vif_stations_count_iter(void *data,
|
||||
struct ieee80211_sta *sta)
|
||||
{
|
||||
struct ath10k_mac_tdls_iter_data *iter_data = data;
|
||||
struct ath10k_sta *arsta = (struct ath10k_sta *)sta->drv_priv;
|
||||
struct ieee80211_vif *sta_vif = arsta->arvif->vif;
|
||||
|
||||
if (sta->tdls && sta_vif == iter_data->curr_vif)
|
||||
iter_data->num_tdls_stations++;
|
||||
}
|
||||
|
||||
static int ath10k_mac_tdls_vif_stations_count(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
||||
struct ath10k_mac_tdls_iter_data data = {};
|
||||
|
||||
data.curr_vif = vif;
|
||||
|
||||
ieee80211_iterate_stations_atomic(hw,
|
||||
ath10k_mac_tdls_vif_stations_count_iter,
|
||||
&data);
|
||||
return data.num_tdls_stations;
|
||||
}
|
||||
|
||||
static void ath10k_mac_tdls_vifs_count_iter(void *data, u8 *mac,
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
||||
struct ath10k_vif *arvif = (void *)vif->drv_priv;
|
||||
int *num_tdls_vifs = data;
|
||||
|
||||
if (vif->type != NL80211_IFTYPE_STATION)
|
||||
return;
|
||||
|
||||
if (ath10k_mac_tdls_vif_stations_count(arvif->ar->hw, vif) > 0)
|
||||
(*num_tdls_vifs)++;
|
||||
}
|
||||
|
||||
static int ath10k_mac_tdls_vifs_count(struct ieee80211_hw *hw)
|
||||
{
|
||||
int num_tdls_vifs = 0;
|
||||
|
||||
ieee80211_iterate_active_interfaces_atomic(hw,
|
||||
IEEE80211_IFACE_ITER_NORMAL,
|
||||
ath10k_mac_tdls_vifs_count_iter,
|
||||
&num_tdls_vifs);
|
||||
return num_tdls_vifs;
|
||||
}
|
||||
|
||||
static int ath10k_sta_state(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_sta *sta,
|
||||
|
@ -6490,6 +6495,11 @@ static int ath10k_remain_on_channel(struct ieee80211_hw *hw,
|
|||
|
||||
mutex_lock(&ar->conf_mutex);
|
||||
|
||||
if (ath10k_mac_tdls_vif_stations_count(hw, vif) > 0) {
|
||||
ret = -EBUSY;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
spin_lock_bh(&ar->data_lock);
|
||||
switch (ar->scan.state) {
|
||||
case ATH10K_SCAN_IDLE:
|
||||
|
|
|
@ -585,10 +585,10 @@ static void ath10k_pci_sleep(struct ath10k *ar)
|
|||
spin_unlock_irqrestore(&ar_pci->ps_lock, flags);
|
||||
}
|
||||
|
||||
static void ath10k_pci_ps_timer(unsigned long ptr)
|
||||
static void ath10k_pci_ps_timer(struct timer_list *t)
|
||||
{
|
||||
struct ath10k *ar = (void *)ptr;
|
||||
struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
|
||||
struct ath10k_pci *ar_pci = from_timer(ar_pci, t, ps_timer);
|
||||
struct ath10k *ar = ar_pci->ar;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&ar_pci->ps_lock, flags);
|
||||
|
@ -838,9 +838,10 @@ void ath10k_pci_rx_post(struct ath10k *ar)
|
|||
ath10k_pci_rx_post_pipe(&ar_pci->pipe_info[i]);
|
||||
}
|
||||
|
||||
void ath10k_pci_rx_replenish_retry(unsigned long ptr)
|
||||
void ath10k_pci_rx_replenish_retry(struct timer_list *t)
|
||||
{
|
||||
struct ath10k *ar = (void *)ptr;
|
||||
struct ath10k_pci *ar_pci = from_timer(ar_pci, t, rx_post_retry);
|
||||
struct ath10k *ar = ar_pci->ar;
|
||||
|
||||
ath10k_pci_rx_post(ar);
|
||||
}
|
||||
|
@ -2577,8 +2578,6 @@ void ath10k_pci_hif_power_down(struct ath10k *ar)
|
|||
*/
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
||||
static int ath10k_pci_hif_suspend(struct ath10k *ar)
|
||||
{
|
||||
/* Nothing to do; the important stuff is in the driver suspend. */
|
||||
|
@ -2627,7 +2626,6 @@ static int ath10k_pci_resume(struct ath10k *ar)
|
|||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
static bool ath10k_pci_validate_cal(void *data, size_t size)
|
||||
{
|
||||
|
@ -2782,10 +2780,8 @@ static const struct ath10k_hif_ops ath10k_pci_hif_ops = {
|
|||
.power_down = ath10k_pci_hif_power_down,
|
||||
.read32 = ath10k_pci_read32,
|
||||
.write32 = ath10k_pci_write32,
|
||||
#ifdef CONFIG_PM
|
||||
.suspend = ath10k_pci_hif_suspend,
|
||||
.resume = ath10k_pci_hif_resume,
|
||||
#endif
|
||||
.fetch_cal_eeprom = ath10k_pci_hif_fetch_cal_eeprom,
|
||||
};
|
||||
|
||||
|
@ -3169,8 +3165,7 @@ int ath10k_pci_setup_resource(struct ath10k *ar)
|
|||
spin_lock_init(&ce->ce_lock);
|
||||
spin_lock_init(&ar_pci->ps_lock);
|
||||
|
||||
setup_timer(&ar_pci->rx_post_retry, ath10k_pci_rx_replenish_retry,
|
||||
(unsigned long)ar);
|
||||
timer_setup(&ar_pci->rx_post_retry, ath10k_pci_rx_replenish_retry, 0);
|
||||
|
||||
if (QCA_REV_6174(ar) || QCA_REV_9377(ar))
|
||||
ath10k_pci_override_ce_config(ar);
|
||||
|
@ -3296,8 +3291,7 @@ static int ath10k_pci_probe(struct pci_dev *pdev,
|
|||
ar->id.subsystem_vendor = pdev->subsystem_vendor;
|
||||
ar->id.subsystem_device = pdev->subsystem_device;
|
||||
|
||||
setup_timer(&ar_pci->ps_timer, ath10k_pci_ps_timer,
|
||||
(unsigned long)ar);
|
||||
timer_setup(&ar_pci->ps_timer, ath10k_pci_ps_timer, 0);
|
||||
|
||||
ret = ath10k_pci_setup_resource(ar);
|
||||
if (ret) {
|
||||
|
|
|
@ -278,7 +278,7 @@ void ath10k_pci_hif_power_down(struct ath10k *ar);
|
|||
int ath10k_pci_alloc_pipes(struct ath10k *ar);
|
||||
void ath10k_pci_free_pipes(struct ath10k *ar);
|
||||
void ath10k_pci_free_pipes(struct ath10k *ar);
|
||||
void ath10k_pci_rx_replenish_retry(unsigned long ptr);
|
||||
void ath10k_pci_rx_replenish_retry(struct timer_list *t);
|
||||
void ath10k_pci_ce_deinit(struct ath10k *ar);
|
||||
void ath10k_pci_init_napi(struct ath10k *ar);
|
||||
int ath10k_pci_init_pipes(struct ath10k *ar);
|
||||
|
|
|
@ -406,7 +406,7 @@ static ssize_t write_file_spectral_count(struct file *file,
|
|||
if (kstrtoul(buf, 0, &val))
|
||||
return -EINVAL;
|
||||
|
||||
if (val < 0 || val > 255)
|
||||
if (val > 255)
|
||||
return -EINVAL;
|
||||
|
||||
mutex_lock(&ar->conf_mutex);
|
||||
|
|
|
@ -7870,7 +7870,8 @@ ath10k_wmi_10_4_gen_update_fw_tdls_state(struct ath10k *ar, u32 vdev_id,
|
|||
if (!skb)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
if (test_bit(WMI_SERVICE_TDLS_EXPLICIT_MODE_ONLY, ar->wmi.svc_map))
|
||||
if (test_bit(WMI_SERVICE_TDLS_EXPLICIT_MODE_ONLY, ar->wmi.svc_map) &&
|
||||
state == WMI_TDLS_ENABLE_ACTIVE)
|
||||
state = WMI_TDLS_ENABLE_PASSIVE;
|
||||
|
||||
if (test_bit(WMI_SERVICE_TDLS_UAPSD_BUFFER_STA, ar->wmi.svc_map))
|
||||
|
|
|
@ -3589,10 +3589,8 @@ static int ath6kl_cfg80211_vif_init(struct ath6kl_vif *vif)
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
setup_timer(&vif->disconnect_timer, disconnect_timer_handler,
|
||||
(unsigned long) vif->ndev);
|
||||
setup_timer(&vif->sched_scan_timer, ath6kl_wmi_sscan_timer,
|
||||
(unsigned long) vif);
|
||||
timer_setup(&vif->disconnect_timer, disconnect_timer_handler, 0);
|
||||
timer_setup(&vif->sched_scan_timer, ath6kl_wmi_sscan_timer, 0);
|
||||
|
||||
set_bit(WMM_ENABLED, &vif->flags);
|
||||
spin_lock_init(&vif->if_lock);
|
||||
|
|
|
@ -893,7 +893,7 @@ static inline u32 ath6kl_get_hi_item_addr(struct ath6kl *ar,
|
|||
|
||||
int ath6kl_configure_target(struct ath6kl *ar);
|
||||
void ath6kl_detect_error(unsigned long ptr);
|
||||
void disconnect_timer_handler(unsigned long ptr);
|
||||
void disconnect_timer_handler(struct timer_list *t);
|
||||
void init_netdev(struct net_device *dev);
|
||||
void ath6kl_cookie_init(struct ath6kl *ar);
|
||||
void ath6kl_cookie_cleanup(struct ath6kl *ar);
|
||||
|
|
|
@ -494,10 +494,9 @@ void ath6kl_connect_ap_mode_sta(struct ath6kl_vif *vif, u16 aid, u8 *mac_addr,
|
|||
netif_wake_queue(vif->ndev);
|
||||
}
|
||||
|
||||
void disconnect_timer_handler(unsigned long ptr)
|
||||
void disconnect_timer_handler(struct timer_list *t)
|
||||
{
|
||||
struct net_device *dev = (struct net_device *)ptr;
|
||||
struct ath6kl_vif *vif = netdev_priv(dev);
|
||||
struct ath6kl_vif *vif = from_timer(vif, t, disconnect_timer);
|
||||
|
||||
ath6kl_init_profile_info(vif);
|
||||
ath6kl_disconnect(vif);
|
||||
|
|
|
@ -1620,10 +1620,10 @@ void ath6kl_rx(struct htc_target *target, struct htc_packet *packet)
|
|||
ath6kl_deliver_frames_to_nw_stack(vif->ndev, skb);
|
||||
}
|
||||
|
||||
static void aggr_timeout(unsigned long arg)
|
||||
static void aggr_timeout(struct timer_list *t)
|
||||
{
|
||||
u8 i, j;
|
||||
struct aggr_info_conn *aggr_conn = (struct aggr_info_conn *) arg;
|
||||
struct aggr_info_conn *aggr_conn = from_timer(aggr_conn, t, timer);
|
||||
struct rxtid *rxtid;
|
||||
struct rxtid_stats *stats;
|
||||
|
||||
|
@ -1753,7 +1753,7 @@ void aggr_conn_init(struct ath6kl_vif *vif, struct aggr_info *aggr_info,
|
|||
|
||||
aggr_conn->aggr_sz = AGGR_SZ_DEFAULT;
|
||||
aggr_conn->dev = vif->ndev;
|
||||
setup_timer(&aggr_conn->timer, aggr_timeout, (unsigned long)aggr_conn);
|
||||
timer_setup(&aggr_conn->timer, aggr_timeout, 0);
|
||||
aggr_conn->aggr_info = aggr_info;
|
||||
|
||||
aggr_conn->timer_scheduled = false;
|
||||
|
|
|
@ -1078,9 +1078,9 @@ static int ath6kl_wmi_tkip_micerr_event_rx(struct wmi *wmi, u8 *datap, int len,
|
|||
return 0;
|
||||
}
|
||||
|
||||
void ath6kl_wmi_sscan_timer(unsigned long ptr)
|
||||
void ath6kl_wmi_sscan_timer(struct timer_list *t)
|
||||
{
|
||||
struct ath6kl_vif *vif = (struct ath6kl_vif *) ptr;
|
||||
struct ath6kl_vif *vif = from_timer(vif, t, sched_scan_timer);
|
||||
|
||||
cfg80211_sched_scan_results(vif->ar->wiphy, 0);
|
||||
}
|
||||
|
|
|
@ -2719,7 +2719,7 @@ int ath6kl_wmi_set_appie_cmd(struct wmi *wmi, u8 if_idx, u8 mgmt_frm_type,
|
|||
|
||||
int ath6kl_wmi_set_inact_period(struct wmi *wmi, u8 if_idx, int inact_timeout);
|
||||
|
||||
void ath6kl_wmi_sscan_timer(unsigned long ptr);
|
||||
void ath6kl_wmi_sscan_timer(struct timer_list *t);
|
||||
|
||||
int ath6kl_wmi_get_challenge_resp_cmd(struct wmi *wmi, u32 cookie, u32 source);
|
||||
|
||||
|
|
|
@ -750,14 +750,14 @@ void ath_reset_work(struct work_struct *work);
|
|||
bool ath_hw_check(struct ath_softc *sc);
|
||||
void ath_hw_pll_work(struct work_struct *work);
|
||||
void ath_paprd_calibrate(struct work_struct *work);
|
||||
void ath_ani_calibrate(unsigned long data);
|
||||
void ath_ani_calibrate(struct timer_list *t);
|
||||
void ath_start_ani(struct ath_softc *sc);
|
||||
void ath_stop_ani(struct ath_softc *sc);
|
||||
void ath_check_ani(struct ath_softc *sc);
|
||||
int ath_update_survey_stats(struct ath_softc *sc);
|
||||
void ath_update_survey_nf(struct ath_softc *sc, int channel);
|
||||
void ath9k_queue_reset(struct ath_softc *sc, enum ath_reset_type type);
|
||||
void ath_ps_full_sleep(unsigned long data);
|
||||
void ath_ps_full_sleep(struct timer_list *t);
|
||||
void __ath9k_flush(struct ieee80211_hw *hw, u32 queues, bool drop,
|
||||
bool sw_pending, bool timeout_override);
|
||||
|
||||
|
|
|
@ -1043,9 +1043,9 @@ static void ath_scan_channel_start(struct ath_softc *sc)
|
|||
mod_timer(&sc->offchannel.timer, jiffies + sc->offchannel.duration);
|
||||
}
|
||||
|
||||
static void ath_chanctx_timer(unsigned long data)
|
||||
static void ath_chanctx_timer(struct timer_list *t)
|
||||
{
|
||||
struct ath_softc *sc = (struct ath_softc *) data;
|
||||
struct ath_softc *sc = from_timer(sc, t, sched.timer);
|
||||
struct ath_common *common = ath9k_hw_common(sc->sc_ah);
|
||||
|
||||
ath_dbg(common, CHAN_CTX,
|
||||
|
@ -1054,9 +1054,9 @@ static void ath_chanctx_timer(unsigned long data)
|
|||
ath_chanctx_event(sc, NULL, ATH_CHANCTX_EVENT_TSF_TIMER);
|
||||
}
|
||||
|
||||
static void ath_offchannel_timer(unsigned long data)
|
||||
static void ath_offchannel_timer(struct timer_list *t)
|
||||
{
|
||||
struct ath_softc *sc = (struct ath_softc *)data;
|
||||
struct ath_softc *sc = from_timer(sc, t, offchannel.timer);
|
||||
struct ath_chanctx *ctx;
|
||||
struct ath_common *common = ath9k_hw_common(sc->sc_ah);
|
||||
|
||||
|
@ -1362,10 +1362,8 @@ void ath9k_init_channel_context(struct ath_softc *sc)
|
|||
{
|
||||
INIT_WORK(&sc->chanctx_work, ath_chanctx_work);
|
||||
|
||||
setup_timer(&sc->offchannel.timer, ath_offchannel_timer,
|
||||
(unsigned long)sc);
|
||||
setup_timer(&sc->sched.timer, ath_chanctx_timer,
|
||||
(unsigned long)sc);
|
||||
timer_setup(&sc->offchannel.timer, ath_offchannel_timer, 0);
|
||||
timer_setup(&sc->sched.timer, ath_chanctx_timer, 0);
|
||||
|
||||
init_completion(&sc->go_beacon);
|
||||
}
|
||||
|
|
|
@ -1167,7 +1167,7 @@ static ssize_t write_file_tpc(struct file *file, const char __user *user_buf,
|
|||
if (kstrtoul(buf, 0, &val))
|
||||
return -EINVAL;
|
||||
|
||||
if (val < 0 || val > 1)
|
||||
if (val > 1)
|
||||
return -EINVAL;
|
||||
|
||||
tpc_enabled = !!val;
|
||||
|
|
|
@ -191,9 +191,9 @@ static void ath_mci_ftp_adjust(struct ath_softc *sc)
|
|||
* 45ms, bt traffic will be given priority during 55% of this
|
||||
* period while wlan gets remaining 45%
|
||||
*/
|
||||
static void ath_btcoex_period_timer(unsigned long data)
|
||||
static void ath_btcoex_period_timer(struct timer_list *t)
|
||||
{
|
||||
struct ath_softc *sc = (struct ath_softc *) data;
|
||||
struct ath_softc *sc = from_timer(sc, t, btcoex.period_timer);
|
||||
struct ath_hw *ah = sc->sc_ah;
|
||||
struct ath_btcoex *btcoex = &sc->btcoex;
|
||||
enum ath_stomp_type stomp_type;
|
||||
|
@ -252,9 +252,9 @@ static void ath_btcoex_period_timer(unsigned long data)
|
|||
* Generic tsf based hw timer which configures weight
|
||||
* registers to time slice between wlan and bt traffic
|
||||
*/
|
||||
static void ath_btcoex_no_stomp_timer(unsigned long arg)
|
||||
static void ath_btcoex_no_stomp_timer(struct timer_list *t)
|
||||
{
|
||||
struct ath_softc *sc = (struct ath_softc *)arg;
|
||||
struct ath_softc *sc = from_timer(sc, t, btcoex.no_stomp_timer);
|
||||
struct ath_hw *ah = sc->sc_ah;
|
||||
struct ath_btcoex *btcoex = &sc->btcoex;
|
||||
|
||||
|
@ -284,10 +284,8 @@ static void ath_init_btcoex_timer(struct ath_softc *sc)
|
|||
btcoex->btcoex_period / 100;
|
||||
btcoex->bt_stomp_type = ATH_BTCOEX_STOMP_LOW;
|
||||
|
||||
setup_timer(&btcoex->period_timer, ath_btcoex_period_timer,
|
||||
(unsigned long) sc);
|
||||
setup_timer(&btcoex->no_stomp_timer, ath_btcoex_no_stomp_timer,
|
||||
(unsigned long) sc);
|
||||
timer_setup(&btcoex->period_timer, ath_btcoex_period_timer, 0);
|
||||
timer_setup(&btcoex->no_stomp_timer, ath_btcoex_no_stomp_timer, 0);
|
||||
|
||||
spin_lock_init(&btcoex->btcoex_lock);
|
||||
}
|
||||
|
|
|
@ -584,7 +584,7 @@ void ath9k_htc_tx_clear_slot(struct ath9k_htc_priv *priv, int slot);
|
|||
void ath9k_htc_tx_drain(struct ath9k_htc_priv *priv);
|
||||
void ath9k_htc_txstatus(struct ath9k_htc_priv *priv, void *wmi_event);
|
||||
void ath9k_tx_failed_tasklet(unsigned long data);
|
||||
void ath9k_htc_tx_cleanup_timer(unsigned long data);
|
||||
void ath9k_htc_tx_cleanup_timer(struct timer_list *t);
|
||||
bool ath9k_htc_csa_is_finished(struct ath9k_htc_priv *priv);
|
||||
|
||||
int ath9k_rx_init(struct ath9k_htc_priv *priv);
|
||||
|
|
|
@ -654,8 +654,7 @@ static int ath9k_init_priv(struct ath9k_htc_priv *priv,
|
|||
INIT_DELAYED_WORK(&priv->ani_work, ath9k_htc_ani_work);
|
||||
INIT_WORK(&priv->ps_work, ath9k_ps_work);
|
||||
INIT_WORK(&priv->fatal_work, ath9k_fatal_work);
|
||||
setup_timer(&priv->tx.cleanup_timer, ath9k_htc_tx_cleanup_timer,
|
||||
(unsigned long)priv);
|
||||
timer_setup(&priv->tx.cleanup_timer, ath9k_htc_tx_cleanup_timer, 0);
|
||||
|
||||
/*
|
||||
* Cache line size is used to size and align various
|
||||
|
|
|
@ -752,9 +752,9 @@ static void ath9k_htc_tx_cleanup_queue(struct ath9k_htc_priv *priv,
|
|||
}
|
||||
}
|
||||
|
||||
void ath9k_htc_tx_cleanup_timer(unsigned long data)
|
||||
void ath9k_htc_tx_cleanup_timer(struct timer_list *t)
|
||||
{
|
||||
struct ath9k_htc_priv *priv = (struct ath9k_htc_priv *) data;
|
||||
struct ath9k_htc_priv *priv = from_timer(priv, t, tx.cleanup_timer);
|
||||
struct ath_common *common = ath9k_hw_common(priv->ah);
|
||||
struct ath9k_htc_tx_event *event, *tmp;
|
||||
struct sk_buff *skb;
|
||||
|
|
|
@ -369,7 +369,7 @@ static void ath9k_init_misc(struct ath_softc *sc)
|
|||
struct ath_common *common = ath9k_hw_common(sc->sc_ah);
|
||||
int i = 0;
|
||||
|
||||
setup_timer(&common->ani.timer, ath_ani_calibrate, (unsigned long)sc);
|
||||
timer_setup(&common->ani.timer, ath_ani_calibrate, 0);
|
||||
|
||||
common->last_rssi = ATH_RSSI_DUMMY_MARKER;
|
||||
memcpy(common->bssidmask, ath_bcast_mac, ETH_ALEN);
|
||||
|
@ -678,7 +678,7 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc,
|
|||
tasklet_init(&sc->bcon_tasklet, ath9k_beacon_tasklet,
|
||||
(unsigned long)sc);
|
||||
|
||||
setup_timer(&sc->sleep_timer, ath_ps_full_sleep, (unsigned long)sc);
|
||||
timer_setup(&sc->sleep_timer, ath_ps_full_sleep, 0);
|
||||
INIT_WORK(&sc->hw_reset_work, ath_reset_work);
|
||||
INIT_WORK(&sc->paprd_work, ath_paprd_calibrate);
|
||||
INIT_DELAYED_WORK(&sc->hw_pll_work, ath_hw_pll_work);
|
||||
|
|
|
@ -301,11 +301,11 @@ void ath_paprd_calibrate(struct work_struct *work)
|
|||
* When the task is complete, it reschedules itself depending on the
|
||||
* appropriate interval that was calculated.
|
||||
*/
|
||||
void ath_ani_calibrate(unsigned long data)
|
||||
void ath_ani_calibrate(struct timer_list *t)
|
||||
{
|
||||
struct ath_softc *sc = (struct ath_softc *)data;
|
||||
struct ath_common *common = from_timer(common, t, ani.timer);
|
||||
struct ath_softc *sc = (struct ath_softc *)common->priv;
|
||||
struct ath_hw *ah = sc->sc_ah;
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
bool longcal = false;
|
||||
bool shortcal = false;
|
||||
bool aniflag = false;
|
||||
|
|
|
@ -93,9 +93,9 @@ static bool ath9k_setpower(struct ath_softc *sc, enum ath9k_power_mode mode)
|
|||
return ret;
|
||||
}
|
||||
|
||||
void ath_ps_full_sleep(unsigned long data)
|
||||
void ath_ps_full_sleep(struct timer_list *t)
|
||||
{
|
||||
struct ath_softc *sc = (struct ath_softc *) data;
|
||||
struct ath_softc *sc = from_timer(sc, t, sleep_timer);
|
||||
struct ath_common *common = ath9k_hw_common(sc->sc_ah);
|
||||
unsigned long flags;
|
||||
bool reset;
|
||||
|
|
|
@ -1048,50 +1048,6 @@ static const struct file_operations fops_bf = {
|
|||
.llseek = seq_lseek,
|
||||
};
|
||||
|
||||
/*---------SSID------------*/
|
||||
static ssize_t wil_read_file_ssid(struct file *file, char __user *user_buf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
struct wil6210_priv *wil = file->private_data;
|
||||
struct wireless_dev *wdev = wil_to_wdev(wil);
|
||||
|
||||
return simple_read_from_buffer(user_buf, count, ppos,
|
||||
wdev->ssid, wdev->ssid_len);
|
||||
}
|
||||
|
||||
static ssize_t wil_write_file_ssid(struct file *file, const char __user *buf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
struct wil6210_priv *wil = file->private_data;
|
||||
struct wireless_dev *wdev = wil_to_wdev(wil);
|
||||
struct net_device *ndev = wil_to_ndev(wil);
|
||||
|
||||
if (*ppos != 0) {
|
||||
wil_err(wil, "Unable to set SSID substring from [%d]\n",
|
||||
(int)*ppos);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (count > sizeof(wdev->ssid)) {
|
||||
wil_err(wil, "SSID too long, len = %d\n", (int)count);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (netif_running(ndev)) {
|
||||
wil_err(wil, "Unable to change SSID on running interface\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
wdev->ssid_len = count;
|
||||
return simple_write_to_buffer(wdev->ssid, wdev->ssid_len, ppos,
|
||||
buf, count);
|
||||
}
|
||||
|
||||
static const struct file_operations fops_ssid = {
|
||||
.read = wil_read_file_ssid,
|
||||
.write = wil_write_file_ssid,
|
||||
.open = simple_open,
|
||||
};
|
||||
|
||||
/*---------temp------------*/
|
||||
static void print_temp(struct seq_file *s, const char *prefix, u32 t)
|
||||
{
|
||||
|
@ -1695,7 +1651,6 @@ static const struct {
|
|||
{"stations", 0444, &fops_sta},
|
||||
{"desc", 0444, &fops_txdesc},
|
||||
{"bf", 0444, &fops_bf},
|
||||
{"ssid", 0644, &fops_ssid},
|
||||
{"mem_val", 0644, &fops_memread},
|
||||
{"reset", 0244, &fops_reset},
|
||||
{"rxon", 0244, &fops_rxon},
|
||||
|
|
|
@ -336,9 +336,9 @@ static void wil_disconnect_worker(struct work_struct *work)
|
|||
clear_bit(wil_status_fwconnecting, wil->status);
|
||||
}
|
||||
|
||||
static void wil_connect_timer_fn(ulong x)
|
||||
static void wil_connect_timer_fn(struct timer_list *t)
|
||||
{
|
||||
struct wil6210_priv *wil = (void *)x;
|
||||
struct wil6210_priv *wil = from_timer(wil, t, connect_timer);
|
||||
bool q;
|
||||
|
||||
wil_err(wil, "Connect timeout detected, disconnect station\n");
|
||||
|
@ -351,9 +351,9 @@ static void wil_connect_timer_fn(ulong x)
|
|||
wil_dbg_wmi(wil, "queue_work of disconnect_worker -> %d\n", q);
|
||||
}
|
||||
|
||||
static void wil_scan_timer_fn(ulong x)
|
||||
static void wil_scan_timer_fn(struct timer_list *t)
|
||||
{
|
||||
struct wil6210_priv *wil = (void *)x;
|
||||
struct wil6210_priv *wil = from_timer(wil, t, scan_timer);
|
||||
|
||||
clear_bit(wil_status_fwready, wil->status);
|
||||
wil_err(wil, "Scan timeout detected, start fw error recovery\n");
|
||||
|
@ -540,10 +540,9 @@ int wil_priv_init(struct wil6210_priv *wil)
|
|||
init_completion(&wil->halp.comp);
|
||||
|
||||
wil->bcast_vring = -1;
|
||||
setup_timer(&wil->connect_timer, wil_connect_timer_fn, (ulong)wil);
|
||||
setup_timer(&wil->scan_timer, wil_scan_timer_fn, (ulong)wil);
|
||||
setup_timer(&wil->p2p.discovery_timer, wil_p2p_discovery_timer_fn,
|
||||
(ulong)wil);
|
||||
timer_setup(&wil->connect_timer, wil_connect_timer_fn, 0);
|
||||
timer_setup(&wil->scan_timer, wil_scan_timer_fn, 0);
|
||||
timer_setup(&wil->p2p.discovery_timer, wil_p2p_discovery_timer_fn, 0);
|
||||
|
||||
INIT_WORK(&wil->disconnect_worker, wil_disconnect_worker);
|
||||
INIT_WORK(&wil->wmi_event_worker, wmi_event_worker);
|
||||
|
|
|
@ -65,9 +65,9 @@ bool wil_p2p_is_social_scan(struct cfg80211_scan_request *request)
|
|||
(request->channels[0]->hw_value == P2P_DMG_SOCIAL_CHANNEL);
|
||||
}
|
||||
|
||||
void wil_p2p_discovery_timer_fn(ulong x)
|
||||
void wil_p2p_discovery_timer_fn(struct timer_list *t)
|
||||
{
|
||||
struct wil6210_priv *wil = (void *)x;
|
||||
struct wil6210_priv *wil = from_timer(wil, t, p2p.discovery_timer);
|
||||
|
||||
wil_dbg_misc(wil, "p2p_discovery_timer_fn\n");
|
||||
|
||||
|
|
|
@ -918,7 +918,7 @@ void wil6210_mask_halp(struct wil6210_priv *wil);
|
|||
|
||||
/* P2P */
|
||||
bool wil_p2p_is_social_scan(struct cfg80211_scan_request *request);
|
||||
void wil_p2p_discovery_timer_fn(ulong x);
|
||||
void wil_p2p_discovery_timer_fn(struct timer_list *t);
|
||||
int wil_p2p_search(struct wil6210_priv *wil,
|
||||
struct cfg80211_scan_request *request);
|
||||
int wil_p2p_listen(struct wil6210_priv *wil, struct wireless_dev *wdev,
|
||||
|
|
Loading…
Reference in New Issue