Skip to content

Commit

Permalink
Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kva…
Browse files Browse the repository at this point in the history
…lo/ath.git

ath.git patches for 4.15. Major changes:

wil6210

* remove ssid debugfs file
  • Loading branch information
Kalle Valo committed Nov 2, 2017
2 parents e6b3b2e + 7ac7676 commit e226fb5
Show file tree
Hide file tree
Showing 28 changed files with 128 additions and 179 deletions.
1 change: 0 additions & 1 deletion MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
7 changes: 3 additions & 4 deletions drivers/net/wireless/ath/ar5523/ar5523.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down
6 changes: 3 additions & 3 deletions drivers/net/wireless/ath/ath10k/htt_rx.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down Expand Up @@ -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);

Expand Down
116 changes: 63 additions & 53 deletions drivers/net/wireless/ath/ath10k/mac.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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:
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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:
Expand Down
22 changes: 8 additions & 14 deletions drivers/net/wireless/ath/ath10k/pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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);
}
Expand Down Expand Up @@ -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. */
Expand Down Expand Up @@ -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)
{
Expand Down Expand Up @@ -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,
};

Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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) {
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/wireless/ath/ath10k/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/wireless/ath/ath10k/spectral.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
3 changes: 2 additions & 1 deletion drivers/net/wireless/ath/ath10k/wmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down
6 changes: 2 additions & 4 deletions drivers/net/wireless/ath/ath6kl/cfg80211.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/wireless/ath/ath6kl/core.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
5 changes: 2 additions & 3 deletions drivers/net/wireless/ath/ath6kl/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
6 changes: 3 additions & 3 deletions drivers/net/wireless/ath/ath6kl/txrx.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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;
Expand Down
4 changes: 2 additions & 2 deletions drivers/net/wireless/ath/ath6kl/wmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/wireless/ath/ath6kl/wmi.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
4 changes: 2 additions & 2 deletions drivers/net/wireless/ath/ath9k/ath9k.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
Loading

0 comments on commit e226fb5

Please sign in to comment.