diff options
Diffstat (limited to 'drivers/net/wireless/ath9k/main.c')
-rw-r--r-- | drivers/net/wireless/ath9k/main.c | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c index 2a6e089062f3..1ba18006f475 100644 --- a/drivers/net/wireless/ath9k/main.c +++ b/drivers/net/wireless/ath9k/main.c | |||
@@ -1405,7 +1405,7 @@ static void ath9k_configure_filter(struct ieee80211_hw *hw, | |||
1405 | static void ath9k_sta_notify(struct ieee80211_hw *hw, | 1405 | static void ath9k_sta_notify(struct ieee80211_hw *hw, |
1406 | struct ieee80211_vif *vif, | 1406 | struct ieee80211_vif *vif, |
1407 | enum sta_notify_cmd cmd, | 1407 | enum sta_notify_cmd cmd, |
1408 | const u8 *addr) | 1408 | struct ieee80211_sta *sta) |
1409 | { | 1409 | { |
1410 | struct ath_softc *sc = hw->priv; | 1410 | struct ath_softc *sc = hw->priv; |
1411 | struct ath_node *an; | 1411 | struct ath_node *an; |
@@ -1413,19 +1413,18 @@ static void ath9k_sta_notify(struct ieee80211_hw *hw, | |||
1413 | DECLARE_MAC_BUF(mac); | 1413 | DECLARE_MAC_BUF(mac); |
1414 | 1414 | ||
1415 | spin_lock_irqsave(&sc->node_lock, flags); | 1415 | spin_lock_irqsave(&sc->node_lock, flags); |
1416 | an = ath_node_find(sc, (u8 *) addr); | 1416 | an = ath_node_find(sc, sta->addr); |
1417 | spin_unlock_irqrestore(&sc->node_lock, flags); | 1417 | spin_unlock_irqrestore(&sc->node_lock, flags); |
1418 | 1418 | ||
1419 | switch (cmd) { | 1419 | switch (cmd) { |
1420 | case STA_NOTIFY_ADD: | 1420 | case STA_NOTIFY_ADD: |
1421 | spin_lock_irqsave(&sc->node_lock, flags); | 1421 | spin_lock_irqsave(&sc->node_lock, flags); |
1422 | if (!an) { | 1422 | if (!an) { |
1423 | ath_node_attach(sc, (u8 *)addr, 0); | 1423 | ath_node_attach(sc, sta->addr, 0); |
1424 | DPRINTF(sc, ATH_DBG_CONFIG, "%s: Attach a node: %s\n", | 1424 | DPRINTF(sc, ATH_DBG_CONFIG, "%s: Attach a node: %s\n", |
1425 | __func__, | 1425 | __func__, print_mac(mac, sta->addr)); |
1426 | print_mac(mac, addr)); | ||
1427 | } else { | 1426 | } else { |
1428 | ath_node_get(sc, (u8 *)addr); | 1427 | ath_node_get(sc, sta->addr); |
1429 | } | 1428 | } |
1430 | spin_unlock_irqrestore(&sc->node_lock, flags); | 1429 | spin_unlock_irqrestore(&sc->node_lock, flags); |
1431 | break; | 1430 | break; |
@@ -1438,7 +1437,7 @@ static void ath9k_sta_notify(struct ieee80211_hw *hw, | |||
1438 | ath_node_put(sc, an, ATH9K_BH_STATUS_INTACT); | 1437 | ath_node_put(sc, an, ATH9K_BH_STATUS_INTACT); |
1439 | DPRINTF(sc, ATH_DBG_CONFIG, "%s: Put a node: %s\n", | 1438 | DPRINTF(sc, ATH_DBG_CONFIG, "%s: Put a node: %s\n", |
1440 | __func__, | 1439 | __func__, |
1441 | print_mac(mac, addr)); | 1440 | print_mac(mac, sta->addr)); |
1442 | } | 1441 | } |
1443 | break; | 1442 | break; |
1444 | default: | 1443 | default: |
@@ -1581,45 +1580,44 @@ static void ath9k_reset_tsf(struct ieee80211_hw *hw) | |||
1581 | 1580 | ||
1582 | static int ath9k_ampdu_action(struct ieee80211_hw *hw, | 1581 | static int ath9k_ampdu_action(struct ieee80211_hw *hw, |
1583 | enum ieee80211_ampdu_mlme_action action, | 1582 | enum ieee80211_ampdu_mlme_action action, |
1584 | const u8 *addr, | 1583 | struct ieee80211_sta *sta, |
1585 | u16 tid, | 1584 | u16 tid, u16 *ssn) |
1586 | u16 *ssn) | ||
1587 | { | 1585 | { |
1588 | struct ath_softc *sc = hw->priv; | 1586 | struct ath_softc *sc = hw->priv; |
1589 | int ret = 0; | 1587 | int ret = 0; |
1590 | 1588 | ||
1591 | switch (action) { | 1589 | switch (action) { |
1592 | case IEEE80211_AMPDU_RX_START: | 1590 | case IEEE80211_AMPDU_RX_START: |
1593 | ret = ath_rx_aggr_start(sc, addr, tid, ssn); | 1591 | ret = ath_rx_aggr_start(sc, sta->addr, tid, ssn); |
1594 | if (ret < 0) | 1592 | if (ret < 0) |
1595 | DPRINTF(sc, ATH_DBG_FATAL, | 1593 | DPRINTF(sc, ATH_DBG_FATAL, |
1596 | "%s: Unable to start RX aggregation\n", | 1594 | "%s: Unable to start RX aggregation\n", |
1597 | __func__); | 1595 | __func__); |
1598 | break; | 1596 | break; |
1599 | case IEEE80211_AMPDU_RX_STOP: | 1597 | case IEEE80211_AMPDU_RX_STOP: |
1600 | ret = ath_rx_aggr_stop(sc, addr, tid); | 1598 | ret = ath_rx_aggr_stop(sc, sta->addr, tid); |
1601 | if (ret < 0) | 1599 | if (ret < 0) |
1602 | DPRINTF(sc, ATH_DBG_FATAL, | 1600 | DPRINTF(sc, ATH_DBG_FATAL, |
1603 | "%s: Unable to stop RX aggregation\n", | 1601 | "%s: Unable to stop RX aggregation\n", |
1604 | __func__); | 1602 | __func__); |
1605 | break; | 1603 | break; |
1606 | case IEEE80211_AMPDU_TX_START: | 1604 | case IEEE80211_AMPDU_TX_START: |
1607 | ret = ath_tx_aggr_start(sc, addr, tid, ssn); | 1605 | ret = ath_tx_aggr_start(sc, sta->addr, tid, ssn); |
1608 | if (ret < 0) | 1606 | if (ret < 0) |
1609 | DPRINTF(sc, ATH_DBG_FATAL, | 1607 | DPRINTF(sc, ATH_DBG_FATAL, |
1610 | "%s: Unable to start TX aggregation\n", | 1608 | "%s: Unable to start TX aggregation\n", |
1611 | __func__); | 1609 | __func__); |
1612 | else | 1610 | else |
1613 | ieee80211_start_tx_ba_cb_irqsafe(hw, (u8 *)addr, tid); | 1611 | ieee80211_start_tx_ba_cb_irqsafe(hw, sta->addr, tid); |
1614 | break; | 1612 | break; |
1615 | case IEEE80211_AMPDU_TX_STOP: | 1613 | case IEEE80211_AMPDU_TX_STOP: |
1616 | ret = ath_tx_aggr_stop(sc, addr, tid); | 1614 | ret = ath_tx_aggr_stop(sc, sta->addr, tid); |
1617 | if (ret < 0) | 1615 | if (ret < 0) |
1618 | DPRINTF(sc, ATH_DBG_FATAL, | 1616 | DPRINTF(sc, ATH_DBG_FATAL, |
1619 | "%s: Unable to stop TX aggregation\n", | 1617 | "%s: Unable to stop TX aggregation\n", |
1620 | __func__); | 1618 | __func__); |
1621 | 1619 | ||
1622 | ieee80211_stop_tx_ba_cb_irqsafe(hw, (u8 *)addr, tid); | 1620 | ieee80211_stop_tx_ba_cb_irqsafe(hw, sta->addr, tid); |
1623 | break; | 1621 | break; |
1624 | default: | 1622 | default: |
1625 | DPRINTF(sc, ATH_DBG_FATAL, | 1623 | DPRINTF(sc, ATH_DBG_FATAL, |