Skip to content

Commit 3a999e6

Browse files
committed
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
2 parents 6cd9b49 + 891dc5e commit 3a999e6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+4016
-3120
lines changed

Documentation/feature-removal-schedule.txt

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -88,27 +88,6 @@ Who: Luis R. Rodriguez <[email protected]>
8888

8989
---------------------------
9090

91-
What: CONFIG_WIRELESS_OLD_REGULATORY - old static regulatory information
92-
When: March 2010 / desktop catchup
93-
94-
Why: The old regulatory infrastructure has been replaced with a new one
95-
which does not require statically defined regulatory domains. We do
96-
not want to keep static regulatory domains in the kernel due to the
97-
the dynamic nature of regulatory law and localization. We kept around
98-
the old static definitions for the regulatory domains of:
99-
100-
* US
101-
* JP
102-
* EU
103-
104-
and used by default the US when CONFIG_WIRELESS_OLD_REGULATORY was
105-
set. We will remove this option once the standard Linux desktop catches
106-
up with the new userspace APIs we have implemented.
107-
108-
Who: Luis R. Rodriguez <[email protected]>
109-
110-
---------------------------
111-
11291
What: dev->power.power_state
11392
When: July 2007
11493
Why: Broken design for runtime control over driver power states, confusing

drivers/net/wireless/adm8211.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1400,24 +1400,24 @@ static void adm8211_configure_filter(struct ieee80211_hw *dev,
14001400
}
14011401

14021402
static int adm8211_add_interface(struct ieee80211_hw *dev,
1403-
struct ieee80211_if_init_conf *conf)
1403+
struct ieee80211_vif *vif)
14041404
{
14051405
struct adm8211_priv *priv = dev->priv;
14061406
if (priv->mode != NL80211_IFTYPE_MONITOR)
14071407
return -EOPNOTSUPP;
14081408

1409-
switch (conf->type) {
1409+
switch (vif->type) {
14101410
case NL80211_IFTYPE_STATION:
1411-
priv->mode = conf->type;
1411+
priv->mode = vif->type;
14121412
break;
14131413
default:
14141414
return -EOPNOTSUPP;
14151415
}
14161416

14171417
ADM8211_IDLE();
14181418

1419-
ADM8211_CSR_WRITE(PAR0, le32_to_cpu(*(__le32 *)conf->mac_addr));
1420-
ADM8211_CSR_WRITE(PAR1, le16_to_cpu(*(__le16 *)(conf->mac_addr + 4)));
1419+
ADM8211_CSR_WRITE(PAR0, le32_to_cpu(*(__le32 *)vif->addr));
1420+
ADM8211_CSR_WRITE(PAR1, le16_to_cpu(*(__le16 *)(vif->addr + 4)));
14211421

14221422
adm8211_update_mode(dev);
14231423

@@ -1427,7 +1427,7 @@ static int adm8211_add_interface(struct ieee80211_hw *dev,
14271427
}
14281428

14291429
static void adm8211_remove_interface(struct ieee80211_hw *dev,
1430-
struct ieee80211_if_init_conf *conf)
1430+
struct ieee80211_vif *vif)
14311431
{
14321432
struct adm8211_priv *priv = dev->priv;
14331433
priv->mode = NL80211_IFTYPE_MONITOR;

drivers/net/wireless/at76c50x-usb.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1789,7 +1789,7 @@ static void at76_mac80211_stop(struct ieee80211_hw *hw)
17891789
}
17901790

17911791
static int at76_add_interface(struct ieee80211_hw *hw,
1792-
struct ieee80211_if_init_conf *conf)
1792+
struct ieee80211_vif *vif)
17931793
{
17941794
struct at76_priv *priv = hw->priv;
17951795
int ret = 0;
@@ -1798,7 +1798,7 @@ static int at76_add_interface(struct ieee80211_hw *hw,
17981798

17991799
mutex_lock(&priv->mtx);
18001800

1801-
switch (conf->type) {
1801+
switch (vif->type) {
18021802
case NL80211_IFTYPE_STATION:
18031803
priv->iw_mode = IW_MODE_INFRA;
18041804
break;
@@ -1814,7 +1814,7 @@ static int at76_add_interface(struct ieee80211_hw *hw,
18141814
}
18151815

18161816
static void at76_remove_interface(struct ieee80211_hw *hw,
1817-
struct ieee80211_if_init_conf *conf)
1817+
struct ieee80211_vif *vif)
18181818
{
18191819
at76_dbg(DBG_MAC80211, "%s()", __func__);
18201820
}

drivers/net/wireless/ath/ar9170/main.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1939,7 +1939,7 @@ int ar9170_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
19391939
}
19401940

19411941
static int ar9170_op_add_interface(struct ieee80211_hw *hw,
1942-
struct ieee80211_if_init_conf *conf)
1942+
struct ieee80211_vif *vif)
19431943
{
19441944
struct ar9170 *ar = hw->priv;
19451945
struct ath_common *common = &ar->common;
@@ -1952,8 +1952,8 @@ static int ar9170_op_add_interface(struct ieee80211_hw *hw,
19521952
goto unlock;
19531953
}
19541954

1955-
ar->vif = conf->vif;
1956-
memcpy(common->macaddr, conf->mac_addr, ETH_ALEN);
1955+
ar->vif = vif;
1956+
memcpy(common->macaddr, vif->addr, ETH_ALEN);
19571957

19581958
if (modparam_nohwcrypt || (ar->vif->type != NL80211_IFTYPE_STATION)) {
19591959
ar->rx_software_decryption = true;
@@ -1973,7 +1973,7 @@ static int ar9170_op_add_interface(struct ieee80211_hw *hw,
19731973
}
19741974

19751975
static void ar9170_op_remove_interface(struct ieee80211_hw *hw,
1976-
struct ieee80211_if_init_conf *conf)
1976+
struct ieee80211_vif *vif)
19771977
{
19781978
struct ar9170 *ar = hw->priv;
19791979

drivers/net/wireless/ath/ath5k/base.c

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -225,9 +225,9 @@ static int ath5k_reset_wake(struct ath5k_softc *sc);
225225
static int ath5k_start(struct ieee80211_hw *hw);
226226
static void ath5k_stop(struct ieee80211_hw *hw);
227227
static int ath5k_add_interface(struct ieee80211_hw *hw,
228-
struct ieee80211_if_init_conf *conf);
228+
struct ieee80211_vif *vif);
229229
static void ath5k_remove_interface(struct ieee80211_hw *hw,
230-
struct ieee80211_if_init_conf *conf);
230+
struct ieee80211_vif *vif);
231231
static int ath5k_config(struct ieee80211_hw *hw, u32 changed);
232232
static u64 ath5k_prepare_multicast(struct ieee80211_hw *hw,
233233
int mc_count, struct dev_addr_list *mc_list);
@@ -1903,17 +1903,6 @@ ath5k_tasklet_rx(unsigned long data)
19031903
rxs->noise = sc->ah->ah_noise_floor;
19041904
rxs->signal = rxs->noise + rs.rs_rssi;
19051905

1906-
/* An rssi of 35 indicates you should be able use
1907-
* 54 Mbps reliably. A more elaborate scheme can be used
1908-
* here but it requires a map of SNR/throughput for each
1909-
* possible mode used */
1910-
rxs->qual = rs.rs_rssi * 100 / 35;
1911-
1912-
/* rssi can be more than 35 though, anything above that
1913-
* should be considered at 100% */
1914-
if (rxs->qual > 100)
1915-
rxs->qual = 100;
1916-
19171906
rxs->antenna = rs.rs_antenna;
19181907
rxs->rate_idx = ath5k_hw_to_driver_rix(sc, rs.rs_rate);
19191908
rxs->flag |= ath5k_rx_decrypted(sc, ds, skb, &rs);
@@ -2381,6 +2370,9 @@ ath5k_init(struct ath5k_softc *sc)
23812370
*/
23822371
ath5k_stop_locked(sc);
23832372

2373+
/* Set PHY calibration interval */
2374+
ah->ah_cal_intval = ath5k_calinterval;
2375+
23842376
/*
23852377
* The basic interface to setting the hardware in a good
23862378
* state is ``reset''. On return the hardware is known to
@@ -2408,10 +2400,6 @@ ath5k_init(struct ath5k_softc *sc)
24082400

24092401
/* Set ack to be sent at low bit-rates */
24102402
ath5k_hw_set_ack_bitrate_high(ah, false);
2411-
2412-
/* Set PHY calibration inteval */
2413-
ah->ah_cal_intval = ath5k_calinterval;
2414-
24152403
ret = 0;
24162404
done:
24172405
mmiowb();
@@ -2785,7 +2773,7 @@ static void ath5k_stop(struct ieee80211_hw *hw)
27852773
}
27862774

27872775
static int ath5k_add_interface(struct ieee80211_hw *hw,
2788-
struct ieee80211_if_init_conf *conf)
2776+
struct ieee80211_vif *vif)
27892777
{
27902778
struct ath5k_softc *sc = hw->priv;
27912779
int ret;
@@ -2796,22 +2784,22 @@ static int ath5k_add_interface(struct ieee80211_hw *hw,
27962784
goto end;
27972785
}
27982786

2799-
sc->vif = conf->vif;
2787+
sc->vif = vif;
28002788

2801-
switch (conf->type) {
2789+
switch (vif->type) {
28022790
case NL80211_IFTYPE_AP:
28032791
case NL80211_IFTYPE_STATION:
28042792
case NL80211_IFTYPE_ADHOC:
28052793
case NL80211_IFTYPE_MESH_POINT:
28062794
case NL80211_IFTYPE_MONITOR:
2807-
sc->opmode = conf->type;
2795+
sc->opmode = vif->type;
28082796
break;
28092797
default:
28102798
ret = -EOPNOTSUPP;
28112799
goto end;
28122800
}
28132801

2814-
ath5k_hw_set_lladdr(sc->ah, conf->mac_addr);
2802+
ath5k_hw_set_lladdr(sc->ah, vif->addr);
28152803
ath5k_mode_setup(sc);
28162804

28172805
ret = 0;
@@ -2822,13 +2810,13 @@ static int ath5k_add_interface(struct ieee80211_hw *hw,
28222810

28232811
static void
28242812
ath5k_remove_interface(struct ieee80211_hw *hw,
2825-
struct ieee80211_if_init_conf *conf)
2813+
struct ieee80211_vif *vif)
28262814
{
28272815
struct ath5k_softc *sc = hw->priv;
28282816
u8 mac[ETH_ALEN] = {};
28292817

28302818
mutex_lock(&sc->lock);
2831-
if (sc->vif != conf->vif)
2819+
if (sc->vif != vif)
28322820
goto end;
28332821

28342822
ath5k_hw_set_lladdr(sc->ah, mac);

drivers/net/wireless/ath/ath9k/mac.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@
7777
#define ATH9K_TXERR_XTXOP 0x08
7878
#define ATH9K_TXERR_TIMER_EXPIRED 0x10
7979
#define ATH9K_TX_ACKED 0x20
80+
#define ATH9K_TXERR_MASK \
81+
(ATH9K_TXERR_XRETRY | ATH9K_TXERR_FILT | ATH9K_TXERR_FIFO | \
82+
ATH9K_TXERR_XTXOP | ATH9K_TXERR_TIMER_EXPIRED)
8083

8184
#define ATH9K_TX_BA 0x01
8285
#define ATH9K_TX_PWRMGMT 0x02

drivers/net/wireless/ath/ath9k/main.c

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2504,6 +2504,9 @@ static void ath9k_stop(struct ieee80211_hw *hw)
25042504
return; /* another wiphy still in use */
25052505
}
25062506

2507+
/* Ensure HW is awake when we try to shut it down. */
2508+
ath9k_ps_wakeup(sc);
2509+
25072510
if (ah->btcoex_hw.enabled) {
25082511
ath9k_hw_btcoex_disable(ah);
25092512
if (ah->btcoex_hw.scheme == ATH_BTCOEX_CFG_3WIRE)
@@ -2524,6 +2527,9 @@ static void ath9k_stop(struct ieee80211_hw *hw)
25242527
/* disable HAL and put h/w to sleep */
25252528
ath9k_hw_disable(ah);
25262529
ath9k_hw_configpcipowersave(ah, 1, 1);
2530+
ath9k_ps_restore(sc);
2531+
2532+
/* Finally, put the chip in FULL SLEEP mode */
25272533
ath9k_setpower(sc, ATH9K_PM_FULL_SLEEP);
25282534

25292535
sc->sc_flags |= SC_OP_INVALID;
@@ -2534,12 +2540,12 @@ static void ath9k_stop(struct ieee80211_hw *hw)
25342540
}
25352541

25362542
static int ath9k_add_interface(struct ieee80211_hw *hw,
2537-
struct ieee80211_if_init_conf *conf)
2543+
struct ieee80211_vif *vif)
25382544
{
25392545
struct ath_wiphy *aphy = hw->priv;
25402546
struct ath_softc *sc = aphy->sc;
25412547
struct ath_common *common = ath9k_hw_common(sc->sc_ah);
2542-
struct ath_vif *avp = (void *)conf->vif->drv_priv;
2548+
struct ath_vif *avp = (void *)vif->drv_priv;
25432549
enum nl80211_iftype ic_opmode = NL80211_IFTYPE_UNSPECIFIED;
25442550
int ret = 0;
25452551

@@ -2551,7 +2557,7 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
25512557
goto out;
25522558
}
25532559

2554-
switch (conf->type) {
2560+
switch (vif->type) {
25552561
case NL80211_IFTYPE_STATION:
25562562
ic_opmode = NL80211_IFTYPE_STATION;
25572563
break;
@@ -2562,11 +2568,11 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
25622568
ret = -ENOBUFS;
25632569
goto out;
25642570
}
2565-
ic_opmode = conf->type;
2571+
ic_opmode = vif->type;
25662572
break;
25672573
default:
25682574
ath_print(common, ATH_DBG_FATAL,
2569-
"Interface type %d not yet supported\n", conf->type);
2575+
"Interface type %d not yet supported\n", vif->type);
25702576
ret = -EOPNOTSUPP;
25712577
goto out;
25722578
}
@@ -2598,18 +2604,18 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
25982604
* Enable MIB interrupts when there are hardware phy counters.
25992605
* Note we only do this (at the moment) for station mode.
26002606
*/
2601-
if ((conf->type == NL80211_IFTYPE_STATION) ||
2602-
(conf->type == NL80211_IFTYPE_ADHOC) ||
2603-
(conf->type == NL80211_IFTYPE_MESH_POINT)) {
2607+
if ((vif->type == NL80211_IFTYPE_STATION) ||
2608+
(vif->type == NL80211_IFTYPE_ADHOC) ||
2609+
(vif->type == NL80211_IFTYPE_MESH_POINT)) {
26042610
sc->imask |= ATH9K_INT_MIB;
26052611
sc->imask |= ATH9K_INT_TSFOOR;
26062612
}
26072613

26082614
ath9k_hw_set_interrupts(sc->sc_ah, sc->imask);
26092615

2610-
if (conf->type == NL80211_IFTYPE_AP ||
2611-
conf->type == NL80211_IFTYPE_ADHOC ||
2612-
conf->type == NL80211_IFTYPE_MONITOR)
2616+
if (vif->type == NL80211_IFTYPE_AP ||
2617+
vif->type == NL80211_IFTYPE_ADHOC ||
2618+
vif->type == NL80211_IFTYPE_MONITOR)
26132619
ath_start_ani(common);
26142620

26152621
out:
@@ -2618,12 +2624,12 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
26182624
}
26192625

26202626
static void ath9k_remove_interface(struct ieee80211_hw *hw,
2621-
struct ieee80211_if_init_conf *conf)
2627+
struct ieee80211_vif *vif)
26222628
{
26232629
struct ath_wiphy *aphy = hw->priv;
26242630
struct ath_softc *sc = aphy->sc;
26252631
struct ath_common *common = ath9k_hw_common(sc->sc_ah);
2626-
struct ath_vif *avp = (void *)conf->vif->drv_priv;
2632+
struct ath_vif *avp = (void *)vif->drv_priv;
26272633
int i;
26282634

26292635
ath_print(common, ATH_DBG_CONFIG, "Detach Interface\n");
@@ -2637,14 +2643,16 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
26372643
if ((sc->sc_ah->opmode == NL80211_IFTYPE_AP) ||
26382644
(sc->sc_ah->opmode == NL80211_IFTYPE_ADHOC) ||
26392645
(sc->sc_ah->opmode == NL80211_IFTYPE_MESH_POINT)) {
2646+
ath9k_ps_wakeup(sc);
26402647
ath9k_hw_stoptxdma(sc->sc_ah, sc->beacon.beaconq);
26412648
ath_beacon_return(sc, avp);
2649+
ath9k_ps_restore(sc);
26422650
}
26432651

26442652
sc->sc_flags &= ~SC_OP_BEACONS;
26452653

26462654
for (i = 0; i < ARRAY_SIZE(sc->beacon.bslot); i++) {
2647-
if (sc->beacon.bslot[i] == conf->vif) {
2655+
if (sc->beacon.bslot[i] == vif) {
26482656
printk(KERN_DEBUG "%s: vif had allocated beacon "
26492657
"slot\n", __func__);
26502658
sc->beacon.bslot[i] = NULL;
@@ -3087,15 +3095,21 @@ static int ath9k_ampdu_action(struct ieee80211_hw *hw,
30873095
case IEEE80211_AMPDU_RX_STOP:
30883096
break;
30893097
case IEEE80211_AMPDU_TX_START:
3098+
ath9k_ps_wakeup(sc);
30903099
ath_tx_aggr_start(sc, sta, tid, ssn);
30913100
ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid);
3101+
ath9k_ps_restore(sc);
30923102
break;
30933103
case IEEE80211_AMPDU_TX_STOP:
3104+
ath9k_ps_wakeup(sc);
30943105
ath_tx_aggr_stop(sc, sta, tid);
30953106
ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);
3107+
ath9k_ps_restore(sc);
30963108
break;
30973109
case IEEE80211_AMPDU_TX_OPERATIONAL:
3110+
ath9k_ps_wakeup(sc);
30983111
ath_tx_aggr_resume(sc, sta, tid);
3112+
ath9k_ps_restore(sc);
30993113
break;
31003114
default:
31013115
ath_print(ath9k_hw_common(sc->sc_ah), ATH_DBG_FATAL,

drivers/net/wireless/ath/ath9k/pci.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ static void ath_pci_bt_coex_prep(struct ath_common *common)
9696
pci_write_config_byte(pdev, ATH_PCIE_CAP_LINK_CTRL, aspm);
9797
}
9898

99-
const static struct ath_bus_ops ath_pci_bus_ops = {
99+
static const struct ath_bus_ops ath_pci_bus_ops = {
100100
.read_cachesize = ath_pci_read_cachesize,
101101
.cleanup = ath_pci_cleanup,
102102
.eeprom_read = ath_pci_eeprom_read,

drivers/net/wireless/ath/ath9k/xmit.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2072,7 +2072,7 @@ static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
20722072
&txq->axq_q, lastbf->list.prev);
20732073

20742074
txq->axq_depth--;
2075-
txok = !(ds->ds_txstat.ts_status & ATH9K_TXERR_FILT);
2075+
txok = !(ds->ds_txstat.ts_status & ATH9K_TXERR_MASK);
20762076
txq->axq_tx_inprogress = false;
20772077
spin_unlock_bh(&txq->axq_lock);
20782078

0 commit comments

Comments
 (0)