From 877b7eb1f095fd3579176aafefd72ce3da9235c6 Mon Sep 17 00:00:00 2001 From: nbd Date: Thu, 20 Jan 2011 23:35:30 +0000 Subject: ath9k: remove virtual wiphy support - it was only experimental anyway and it is not going to be maintained anymore git-svn-id: svn://svn.openwrt.org/openwrt/trunk@25055 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/543-ath9k_remove_ath_wiphy.patch | 572 +++++++++++++++++++++ 1 file changed, 572 insertions(+) create mode 100644 package/mac80211/patches/543-ath9k_remove_ath_wiphy.patch (limited to 'package/mac80211/patches/543-ath9k_remove_ath_wiphy.patch') diff --git a/package/mac80211/patches/543-ath9k_remove_ath_wiphy.patch b/package/mac80211/patches/543-ath9k_remove_ath_wiphy.patch new file mode 100644 index 000000000..251051dd5 --- /dev/null +++ b/package/mac80211/patches/543-ath9k_remove_ath_wiphy.patch @@ -0,0 +1,572 @@ +--- a/drivers/net/wireless/ath/ath9k/ath9k.h ++++ b/drivers/net/wireless/ath/ath9k/ath9k.h +@@ -32,7 +32,6 @@ + */ + + struct ath_node; +-struct ath_wiphy; + + /* Macro to expand scalars to 64-bit objects */ + +@@ -391,7 +390,7 @@ struct ath_beacon { + + void ath_beacon_tasklet(unsigned long data); + void ath_beacon_config(struct ath_softc *sc, struct ieee80211_vif *vif); +-int ath_beacon_alloc(struct ath_wiphy *aphy, struct ieee80211_vif *vif); ++int ath_beacon_alloc(struct ath_softc *sc, struct ieee80211_vif *vif); + void ath_beacon_return(struct ath_softc *sc, struct ath_vif *avp); + int ath_beaconq_config(struct ath_softc *sc); + +@@ -611,6 +610,9 @@ struct ath_softc { + struct led_classdev led_cdev; + #endif + ++ struct ath9k_hw_cal_data caldata; ++ int last_rssi; ++ + int beacon_interval; + + #ifdef CONFIG_ATH9K_DEBUGFS +@@ -627,13 +629,6 @@ struct ath_softc { + struct pm_qos_request_list pm_qos_req; + }; + +-struct ath_wiphy { +- struct ath_softc *sc; /* shared for all virtual wiphys */ +- struct ieee80211_hw *hw; +- struct ath9k_hw_cal_data caldata; +- int last_rssi; +-}; +- + void ath9k_tasklet(unsigned long data); + int ath_reset(struct ath_softc *sc, bool retry_tx); + int ath_cabq_update(struct ath_softc *); +--- a/drivers/net/wireless/ath/ath9k/ahb.c ++++ b/drivers/net/wireless/ath/ath9k/ahb.c +@@ -54,7 +54,6 @@ static struct ath_bus_ops ath_ahb_bus_op + static int ath_ahb_probe(struct platform_device *pdev) + { + void __iomem *mem; +- struct ath_wiphy *aphy; + struct ath_softc *sc; + struct ieee80211_hw *hw; + struct resource *res; +@@ -92,8 +91,7 @@ static int ath_ahb_probe(struct platform + + irq = res->start; + +- hw = ieee80211_alloc_hw(sizeof(struct ath_wiphy) + +- sizeof(struct ath_softc), &ath9k_ops); ++ hw = ieee80211_alloc_hw(sizeof(struct ath_softc), &ath9k_ops); + if (hw == NULL) { + dev_err(&pdev->dev, "no memory for ieee80211_hw\n"); + ret = -ENOMEM; +@@ -103,10 +101,7 @@ static int ath_ahb_probe(struct platform + SET_IEEE80211_DEV(hw, &pdev->dev); + platform_set_drvdata(pdev, hw); + +- aphy = hw->priv; +- sc = (struct ath_softc *) (aphy + 1); +- aphy->sc = sc; +- aphy->hw = hw; ++ sc = hw->priv; + sc->hw = hw; + sc->dev = &pdev->dev; + sc->mem = mem; +@@ -150,8 +145,7 @@ static int ath_ahb_remove(struct platfor + struct ieee80211_hw *hw = platform_get_drvdata(pdev); + + if (hw) { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + void __iomem *mem = sc->mem; + + ath9k_deinit_device(sc); +--- a/drivers/net/wireless/ath/ath9k/pci.c ++++ b/drivers/net/wireless/ath/ath9k/pci.c +@@ -126,7 +126,6 @@ static const struct ath_bus_ops ath_pci_ + static int ath_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) + { + void __iomem *mem; +- struct ath_wiphy *aphy; + struct ath_softc *sc; + struct ieee80211_hw *hw; + u8 csz; +@@ -198,8 +197,7 @@ static int ath_pci_probe(struct pci_dev + goto err_iomap; + } + +- hw = ieee80211_alloc_hw(sizeof(struct ath_wiphy) + +- sizeof(struct ath_softc), &ath9k_ops); ++ hw = ieee80211_alloc_hw(sizeof(struct ath_softc), &ath9k_ops); + if (!hw) { + dev_err(&pdev->dev, "No memory for ieee80211_hw\n"); + ret = -ENOMEM; +@@ -209,10 +207,7 @@ static int ath_pci_probe(struct pci_dev + SET_IEEE80211_DEV(hw, &pdev->dev); + pci_set_drvdata(pdev, hw); + +- aphy = hw->priv; +- sc = (struct ath_softc *) (aphy + 1); +- aphy->sc = sc; +- aphy->hw = hw; ++ sc = hw->priv; + sc->hw = hw; + sc->dev = &pdev->dev; + sc->mem = mem; +@@ -259,8 +254,7 @@ err_dma: + static void ath_pci_remove(struct pci_dev *pdev) + { + struct ieee80211_hw *hw = pci_get_drvdata(pdev); +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + void __iomem *mem = sc->mem; + + if (!is_ath9k_unloaded) +@@ -280,8 +274,7 @@ static int ath_pci_suspend(struct device + { + struct pci_dev *pdev = to_pci_dev(device); + struct ieee80211_hw *hw = pci_get_drvdata(pdev); +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + + ath9k_hw_set_gpio(sc->sc_ah, sc->sc_ah->led_pin, 1); + +@@ -292,8 +285,7 @@ static int ath_pci_resume(struct device + { + struct pci_dev *pdev = to_pci_dev(device); + struct ieee80211_hw *hw = pci_get_drvdata(pdev); +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + u32 val; + + /* +--- a/drivers/net/wireless/ath/ath9k/beacon.c ++++ b/drivers/net/wireless/ath/ath9k/beacon.c +@@ -112,8 +112,7 @@ static void ath_beacon_setup(struct ath_ + + static void ath_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_common *common = ath9k_hw_common(sc->sc_ah); + struct ath_tx_control txctl; + +@@ -132,8 +131,7 @@ static void ath_tx_cabq(struct ieee80211 + static struct ath_buf *ath_beacon_generate(struct ieee80211_hw *hw, + struct ieee80211_vif *vif) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_common *common = ath9k_hw_common(sc->sc_ah); + struct ath_buf *bf; + struct ath_vif *avp; +@@ -222,9 +220,8 @@ static struct ath_buf *ath_beacon_genera + return bf; + } + +-int ath_beacon_alloc(struct ath_wiphy *aphy, struct ieee80211_vif *vif) ++int ath_beacon_alloc(struct ath_softc *sc, struct ieee80211_vif *vif) + { +- struct ath_softc *sc = aphy->sc; + struct ath_common *common = ath9k_hw_common(sc->sc_ah); + struct ath_vif *avp; + struct ath_buf *bf; +--- a/drivers/net/wireless/ath/ath9k/gpio.c ++++ b/drivers/net/wireless/ath/ath9k/gpio.c +@@ -88,8 +88,7 @@ static bool ath_is_rfkill_set(struct ath + + void ath9k_rfkill_poll_state(struct ieee80211_hw *hw) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + bool blocked = !!ath_is_rfkill_set(sc); + + wiphy_rfkill_set_hw_state(hw->wiphy, blocked); +--- a/drivers/net/wireless/ath/ath9k/init.c ++++ b/drivers/net/wireless/ath/ath9k/init.c +@@ -270,8 +270,7 @@ static int ath9k_reg_notifier(struct wip + struct regulatory_request *request) + { + struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy); +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_regulatory *reg = ath9k_hw_regulatory(sc->sc_ah); + + return ath_reg_notifier_apply(wiphy, request, reg); +@@ -724,7 +723,6 @@ int ath9k_init_device(u16 devid, struct + const struct ath_bus_ops *bus_ops) + { + struct ieee80211_hw *hw = sc->hw; +- struct ath_wiphy *aphy = hw->priv; + struct ath_common *common; + struct ath_hw *ah; + int error = 0; +@@ -786,7 +784,7 @@ int ath9k_init_device(u16 devid, struct + + INIT_WORK(&sc->hw_check_work, ath_hw_check); + INIT_WORK(&sc->paprd_work, ath_paprd_calibrate); +- aphy->last_rssi = ATH_RSSI_DUMMY_MARKER; ++ sc->last_rssi = ATH_RSSI_DUMMY_MARKER; + + ath_init_leds(sc); + ath_start_rfkill_poll(sc); +--- a/drivers/net/wireless/ath/ath9k/main.c ++++ b/drivers/net/wireless/ath/ath9k/main.c +@@ -215,7 +215,6 @@ static void ath_update_survey_stats(stru + int ath_set_channel(struct ath_softc *sc, struct ieee80211_hw *hw, + struct ath9k_channel *hchan) + { +- struct ath_wiphy *aphy = hw->priv; + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); + struct ieee80211_conf *conf = &common->hw->conf; +@@ -262,7 +261,7 @@ int ath_set_channel(struct ath_softc *sc + fastcc = false; + + if (!(sc->sc_flags & SC_OP_OFFCHANNEL)) +- caldata = &aphy->caldata; ++ caldata = &sc->caldata; + + ath_dbg(common, ATH_DBG_CONFIG, + "(%u MHz) -> (%u MHz), conf_is_ht40: %d fastcc: %d\n", +@@ -841,7 +840,6 @@ static void ath9k_bss_assoc_info(struct + struct ieee80211_vif *vif, + struct ieee80211_bss_conf *bss_conf) + { +- struct ath_wiphy *aphy = hw->priv; + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); + +@@ -865,7 +863,7 @@ static void ath9k_bss_assoc_info(struct + ath_beacon_config(sc, vif); + + /* Reset rssi stats */ +- aphy->last_rssi = ATH_RSSI_DUMMY_MARKER; ++ sc->last_rssi = ATH_RSSI_DUMMY_MARKER; + sc->sc_ah->stats.avgbrssi = ATH_RSSI_DUMMY_MARKER; + + sc->sc_flags |= SC_OP_ANI_RUN; +@@ -1062,8 +1060,7 @@ void ath9k_update_ichannel(struct ath_so + + static int ath9k_start(struct ieee80211_hw *hw) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); + struct ieee80211_channel *curchan = hw->conf.channel; +@@ -1180,8 +1177,7 @@ mutex_unlock: + static int ath9k_tx(struct ieee80211_hw *hw, + struct sk_buff *skb) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_common *common = ath9k_hw_common(sc->sc_ah); + struct ath_tx_control txctl; + struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; +@@ -1244,8 +1240,7 @@ exit: + + static void ath9k_stop(struct ieee80211_hw *hw) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); + +@@ -1377,8 +1372,7 @@ void ath9k_calculate_iter_data(struct ie + struct ieee80211_vif *vif, + struct ath9k_vif_iter_data *iter_data) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); + +@@ -1402,8 +1396,7 @@ void ath9k_calculate_iter_data(struct ie + static void ath9k_calculate_summary_state(struct ieee80211_hw *hw, + struct ieee80211_vif *vif) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); + struct ath9k_vif_iter_data iter_data; +@@ -1459,8 +1452,7 @@ static void ath9k_calculate_summary_stat + static void ath9k_do_vif_add_setup(struct ieee80211_hw *hw, + struct ieee80211_vif *vif) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + + ath9k_calculate_summary_state(hw, vif); + +@@ -1473,7 +1465,7 @@ static void ath9k_do_vif_add_setup(struc + * in the info_changed method and set up beacons properly + * there. + */ +- error = ath_beacon_alloc(aphy, vif); ++ error = ath_beacon_alloc(sc, vif); + if (error) + ath9k_reclaim_beacon(sc, vif); + else +@@ -1485,8 +1477,7 @@ static void ath9k_do_vif_add_setup(struc + static int ath9k_add_interface(struct ieee80211_hw *hw, + struct ieee80211_vif *vif) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); + struct ath_vif *avp = (void *)vif->drv_priv; +@@ -1546,8 +1537,7 @@ static int ath9k_change_interface(struct + enum nl80211_iftype new_type, + bool p2p) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_common *common = ath9k_hw_common(sc->sc_ah); + int ret = 0; + +@@ -1589,8 +1579,7 @@ out: + static void ath9k_remove_interface(struct ieee80211_hw *hw, + struct ieee80211_vif *vif) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_common *common = ath9k_hw_common(sc->sc_ah); + + ath_dbg(common, ATH_DBG_CONFIG, "Detach Interface\n"); +@@ -1644,8 +1633,7 @@ static void ath9k_disable_ps(struct ath_ + + static int ath9k_config(struct ieee80211_hw *hw, u32 changed) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); + struct ieee80211_conf *conf = &hw->conf; +@@ -1789,8 +1777,7 @@ static void ath9k_configure_filter(struc + unsigned int *total_flags, + u64 multicast) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + u32 rfilt; + + changed_flags &= SUPPORTED_FILTERS; +@@ -1810,8 +1797,7 @@ static int ath9k_sta_add(struct ieee8021 + struct ieee80211_vif *vif, + struct ieee80211_sta *sta) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + + ath_node_attach(sc, sta); + +@@ -1822,8 +1808,7 @@ static int ath9k_sta_remove(struct ieee8 + struct ieee80211_vif *vif, + struct ieee80211_sta *sta) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + + ath_node_detach(sc, sta); + +@@ -1833,8 +1818,7 @@ static int ath9k_sta_remove(struct ieee8 + static int ath9k_conf_tx(struct ieee80211_hw *hw, u16 queue, + const struct ieee80211_tx_queue_params *params) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_common *common = ath9k_hw_common(sc->sc_ah); + struct ath_txq *txq; + struct ath9k_tx_queue_info qi; +@@ -1878,8 +1862,7 @@ static int ath9k_set_key(struct ieee8021 + struct ieee80211_sta *sta, + struct ieee80211_key_conf *key) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_common *common = ath9k_hw_common(sc->sc_ah); + int ret = 0; + +@@ -1923,8 +1906,7 @@ static void ath9k_bss_info_changed(struc + struct ieee80211_bss_conf *bss_conf, + u32 changed) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(ah); + struct ath_vif *avp = (void *)vif->drv_priv; +@@ -1954,7 +1936,7 @@ static void ath9k_bss_info_changed(struc + if ((changed & BSS_CHANGED_BEACON) || + ((changed & BSS_CHANGED_BEACON_ENABLED) && bss_conf->enable_beacon)) { + ath9k_hw_stoptxdma(sc->sc_ah, sc->beacon.beaconq); +- error = ath_beacon_alloc(aphy, vif); ++ error = ath_beacon_alloc(sc, vif); + if (!error) + ath_beacon_config(sc, vif); + } +@@ -1991,7 +1973,7 @@ static void ath9k_bss_info_changed(struc + if (vif->type == NL80211_IFTYPE_AP) { + sc->sc_flags |= SC_OP_TSF_RESET; + ath9k_hw_stoptxdma(sc->sc_ah, sc->beacon.beaconq); +- error = ath_beacon_alloc(aphy, vif); ++ error = ath_beacon_alloc(sc, vif); + if (!error) + ath_beacon_config(sc, vif); + } else { +@@ -2029,9 +2011,8 @@ static void ath9k_bss_info_changed(struc + + static u64 ath9k_get_tsf(struct ieee80211_hw *hw) + { ++ struct ath_softc *sc = hw->priv; + u64 tsf; +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; + + mutex_lock(&sc->mutex); + ath9k_ps_wakeup(sc); +@@ -2044,8 +2025,7 @@ static u64 ath9k_get_tsf(struct ieee8021 + + static void ath9k_set_tsf(struct ieee80211_hw *hw, u64 tsf) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + + mutex_lock(&sc->mutex); + ath9k_ps_wakeup(sc); +@@ -2056,8 +2036,7 @@ static void ath9k_set_tsf(struct ieee802 + + static void ath9k_reset_tsf(struct ieee80211_hw *hw) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + + mutex_lock(&sc->mutex); + +@@ -2074,8 +2053,7 @@ static int ath9k_ampdu_action(struct iee + struct ieee80211_sta *sta, + u16 tid, u16 *ssn, u8 buf_size) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + int ret = 0; + + local_bh_disable(); +@@ -2120,8 +2098,7 @@ static int ath9k_ampdu_action(struct iee + static int ath9k_get_survey(struct ieee80211_hw *hw, int idx, + struct survey_info *survey) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_common *common = ath9k_hw_common(sc->sc_ah); + struct ieee80211_supported_band *sband; + struct ieee80211_channel *chan; +@@ -2157,8 +2134,7 @@ static int ath9k_get_survey(struct ieee8 + + static void ath9k_set_coverage_class(struct ieee80211_hw *hw, u8 coverage_class) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_hw *ah = sc->sc_ah; + + mutex_lock(&sc->mutex); +--- a/drivers/net/wireless/ath/ath9k/rc.c ++++ b/drivers/net/wireless/ath/ath9k/rc.c +@@ -1560,8 +1560,7 @@ static void ath_rate_add_sta_debugfs(voi + + static void *ath_rate_alloc(struct ieee80211_hw *hw, struct dentry *debugfsdir) + { +- struct ath_wiphy *aphy = hw->priv; +- return aphy->sc; ++ return hw->priv; + } + + static void ath_rate_free(void *priv) +--- a/drivers/net/wireless/ath/ath9k/recv.c ++++ b/drivers/net/wireless/ath/ath9k/recv.c +@@ -927,7 +927,7 @@ static void ath9k_process_rssi(struct at + struct ieee80211_hdr *hdr, + struct ath_rx_status *rx_stats) + { +- struct ath_wiphy *aphy = hw->priv; ++ struct ath_softc *sc = hw->priv; + struct ath_hw *ah = common->ah; + int last_rssi; + __le16 fc; +@@ -947,9 +947,9 @@ static void ath9k_process_rssi(struct at + } + + if (rx_stats->rs_rssi != ATH9K_RSSI_BAD && !rx_stats->rs_moreaggr) +- ATH_RSSI_LPF(aphy->last_rssi, rx_stats->rs_rssi); ++ ATH_RSSI_LPF(sc->last_rssi, rx_stats->rs_rssi); + +- last_rssi = aphy->last_rssi; ++ last_rssi = sc->last_rssi; + if (likely(last_rssi != ATH_RSSI_DUMMY_MARKER)) + rx_stats->rs_rssi = ATH_EP_RND(last_rssi, + ATH_RSSI_EP_MULTIPLIER); +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -1440,8 +1440,7 @@ static enum ath9k_pkt_type get_hw_packet + static void setup_frame_info(struct ieee80211_hw *hw, struct sk_buff *skb, + int framelen) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); + struct ieee80211_sta *sta = tx_info->control.sta; + struct ieee80211_key_conf *hw_key = tx_info->control.hw_key; +@@ -1659,8 +1658,7 @@ static struct ath_buf *ath_tx_setup_buff + struct ath_txq *txq, + struct sk_buff *skb) + { +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_hw *ah = sc->sc_ah; + struct ath_common *common = ath9k_hw_common(sc->sc_ah); + struct ath_frame_info *fi = get_frame_info(skb); +@@ -1761,8 +1759,7 @@ int ath_tx_start(struct ieee80211_hw *hw + struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; + struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); + struct ieee80211_sta *sta = info->control.sta; +- struct ath_wiphy *aphy = hw->priv; +- struct ath_softc *sc = aphy->sc; ++ struct ath_softc *sc = hw->priv; + struct ath_txq *txq = txctl->txq; + struct ath_buf *bf; + int padpos, padsize; -- cgit v1.2.3