LinuxKPI: 802.11: pass internal variable to lkpi_80211_mo_sta_state()
With mac80211 operations (MO) tracing on we have seen some ill-ordered executions of MO functions. In order to limit visibility of the mac80211 sta, pass the internal version into lkpi_80211_mo_sta_state() and only there convert to the argument needed. This mostly eases tracing and debugging. Sposnored by: The FreeBSD Foundation MFC after: 3 days
This commit is contained in:
parent
0e69c95915
commit
e7fe037310
@ -906,7 +906,6 @@ lkpi_sta_scan_to_auth(struct ieee80211vap *vap, enum ieee80211_state nstate, int
|
||||
struct ieee80211_vif *vif;
|
||||
struct ieee80211_node *ni;
|
||||
struct lkpi_sta *lsta;
|
||||
struct ieee80211_sta *sta;
|
||||
enum ieee80211_bss_changed bss_changed;
|
||||
struct ieee80211_prep_tx_info prep_tx_info;
|
||||
uint32_t changed;
|
||||
@ -1032,8 +1031,7 @@ lkpi_sta_scan_to_auth(struct ieee80211vap *vap, enum ieee80211_state nstate, int
|
||||
KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
|
||||
KASSERT(lsta->state == IEEE80211_STA_NOTEXIST, ("%s: lsta %p state not "
|
||||
"NOTEXIST: %#x\n", __func__, lsta, lsta->state));
|
||||
sta = LSTA_TO_STA(lsta);
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, sta, IEEE80211_STA_NONE);
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_NONE);
|
||||
if (error != 0) {
|
||||
IMPROVE("do we need to undo the chan ctx?");
|
||||
goto out;
|
||||
@ -1052,7 +1050,7 @@ lkpi_sta_scan_to_auth(struct ieee80211vap *vap, enum ieee80211_state nstate, int
|
||||
* XXX-BZ and by now we know that this does not work on all drivers
|
||||
* for all queues.
|
||||
*/
|
||||
lkpi_wake_tx_queues(hw, sta, false, false);
|
||||
lkpi_wake_tx_queues(hw, LSTA_TO_STA(lsta), false, false);
|
||||
|
||||
/* Start mgd_prepare_tx. */
|
||||
memset(&prep_tx_info, 0, sizeof(prep_tx_info));
|
||||
@ -1132,7 +1130,7 @@ lkpi_sta_auth_to_scan(struct ieee80211vap *vap, enum ieee80211_state nstate, int
|
||||
KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
|
||||
KASSERT(lsta->state == IEEE80211_STA_NONE, ("%s: lsta %p state not "
|
||||
"NONE: %#x, nstate %d arg %d\n", __func__, lsta, lsta->state, nstate, arg));
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, sta, IEEE80211_STA_NOTEXIST);
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_NOTEXIST);
|
||||
if (error != 0) {
|
||||
IMPROVE("do we need to undo the chan ctx?");
|
||||
goto out;
|
||||
@ -1188,7 +1186,6 @@ lkpi_sta_auth_to_assoc(struct ieee80211vap *vap, enum ieee80211_state nstate, in
|
||||
struct ieee80211_vif *vif;
|
||||
struct ieee80211_node *ni;
|
||||
struct lkpi_sta *lsta;
|
||||
struct ieee80211_sta *sta;
|
||||
struct ieee80211_prep_tx_info prep_tx_info;
|
||||
int error;
|
||||
|
||||
@ -1209,8 +1206,7 @@ lkpi_sta_auth_to_assoc(struct ieee80211vap *vap, enum ieee80211_state nstate, in
|
||||
KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
|
||||
KASSERT(lsta->state == IEEE80211_STA_NONE, ("%s: lsta %p state not "
|
||||
"NONE: %#x\n", __func__, lsta, lsta->state));
|
||||
sta = LSTA_TO_STA(lsta);
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, sta, IEEE80211_STA_AUTH);
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_AUTH);
|
||||
if (error != 0)
|
||||
goto out;
|
||||
|
||||
@ -1233,7 +1229,7 @@ lkpi_sta_auth_to_assoc(struct ieee80211vap *vap, enum ieee80211_state nstate, in
|
||||
}
|
||||
|
||||
/* Wake tx queue to get packet out. */
|
||||
lkpi_wake_tx_queues(hw, sta, true, true);
|
||||
lkpi_wake_tx_queues(hw, LSTA_TO_STA(lsta), true, true);
|
||||
|
||||
/*
|
||||
* <twiddle> .. we end up in "assoc_to_run"
|
||||
@ -1378,7 +1374,7 @@ _lkpi_sta_assoc_to_down(struct ieee80211vap *vap, enum ieee80211_state nstate, i
|
||||
KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
|
||||
KASSERT(lsta->state == IEEE80211_STA_AUTH, ("%s: lsta %p state not "
|
||||
"AUTH: %#x\n", __func__, lsta, lsta->state));
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, sta, IEEE80211_STA_NONE);
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_NONE);
|
||||
if (error != 0)
|
||||
goto out;
|
||||
|
||||
@ -1388,7 +1384,7 @@ _lkpi_sta_assoc_to_down(struct ieee80211vap *vap, enum ieee80211_state nstate, i
|
||||
KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
|
||||
KASSERT(lsta->state == IEEE80211_STA_NONE, ("%s: lsta %p state not "
|
||||
"NONE: %#x, nstate %d arg %d\n", __func__, lsta, lsta->state, nstate, arg));
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, sta, IEEE80211_STA_NOTEXIST);
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_NOTEXIST);
|
||||
if (error != 0) {
|
||||
IMPROVE("do we need to undo the chan ctx?");
|
||||
goto out;
|
||||
@ -1506,7 +1502,7 @@ lkpi_sta_assoc_to_run(struct ieee80211vap *vap, enum ieee80211_state nstate, int
|
||||
"AUTH: %#x\n", __func__, lsta, lsta->state));
|
||||
sta = LSTA_TO_STA(lsta);
|
||||
sta->aid = IEEE80211_NODE_AID(ni);
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, sta, IEEE80211_STA_ASSOC);
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_ASSOC);
|
||||
if (error != 0)
|
||||
goto out;
|
||||
|
||||
@ -1576,7 +1572,7 @@ lkpi_sta_assoc_to_run(struct ieee80211vap *vap, enum ieee80211_state nstate, int
|
||||
KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
|
||||
KASSERT(lsta->state == IEEE80211_STA_ASSOC, ("%s: lsta %p state not "
|
||||
"ASSOC: %#x\n", __func__, lsta, lsta->state));
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, sta, IEEE80211_STA_AUTHORIZED);
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_AUTHORIZED);
|
||||
if (error != 0) {
|
||||
IMPROVE("undo some changes?");
|
||||
goto out;
|
||||
@ -1693,7 +1689,7 @@ lkpi_sta_run_to_assoc(struct ieee80211vap *vap, enum ieee80211_state nstate, int
|
||||
KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
|
||||
KASSERT(lsta->state == IEEE80211_STA_AUTHORIZED, ("%s: lsta %p state not "
|
||||
"AUTHORIZED: %#x\n", __func__, lsta, lsta->state));
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, sta, IEEE80211_STA_ASSOC);
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_ASSOC);
|
||||
if (error != 0)
|
||||
goto out;
|
||||
|
||||
@ -1703,7 +1699,7 @@ lkpi_sta_run_to_assoc(struct ieee80211vap *vap, enum ieee80211_state nstate, int
|
||||
KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
|
||||
KASSERT(lsta->state == IEEE80211_STA_ASSOC, ("%s: lsta %p state not "
|
||||
"ASSOC: %#x\n", __func__, lsta, lsta->state));
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, sta, IEEE80211_STA_AUTH);
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_AUTH);
|
||||
if (error != 0)
|
||||
goto out;
|
||||
|
||||
@ -1800,7 +1796,7 @@ lkpi_sta_run_to_init(struct ieee80211vap *vap, enum ieee80211_state nstate, int
|
||||
KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
|
||||
KASSERT(lsta->state == IEEE80211_STA_AUTHORIZED, ("%s: lsta %p state not "
|
||||
"AUTHORIZED: %#x\n", __func__, lsta, lsta->state));
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, sta, IEEE80211_STA_ASSOC);
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_ASSOC);
|
||||
if (error != 0)
|
||||
goto out;
|
||||
|
||||
@ -1810,7 +1806,7 @@ lkpi_sta_run_to_init(struct ieee80211vap *vap, enum ieee80211_state nstate, int
|
||||
KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
|
||||
KASSERT(lsta->state == IEEE80211_STA_ASSOC, ("%s: lsta %p state not "
|
||||
"ASSOC: %#x\n", __func__, lsta, lsta->state));
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, sta, IEEE80211_STA_AUTH);
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_AUTH);
|
||||
if (error != 0)
|
||||
goto out;
|
||||
|
||||
@ -1820,7 +1816,7 @@ lkpi_sta_run_to_init(struct ieee80211vap *vap, enum ieee80211_state nstate, int
|
||||
KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
|
||||
KASSERT(lsta->state == IEEE80211_STA_AUTH, ("%s: lsta %p state not "
|
||||
"AUTH: %#x\n", __func__, lsta, lsta->state));
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, sta, IEEE80211_STA_NONE);
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_NONE);
|
||||
if (error != 0)
|
||||
goto out;
|
||||
|
||||
@ -1830,7 +1826,7 @@ lkpi_sta_run_to_init(struct ieee80211vap *vap, enum ieee80211_state nstate, int
|
||||
KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
|
||||
KASSERT(lsta->state == IEEE80211_STA_NONE, ("%s: lsta %p state not "
|
||||
"NONE: %#x, nstate %d arg %d\n", __func__, lsta, lsta->state, nstate, arg));
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, sta, IEEE80211_STA_NOTEXIST);
|
||||
error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_NOTEXIST);
|
||||
if (error != 0) {
|
||||
IMPROVE("do we need to undo the chan ctx?");
|
||||
goto out;
|
||||
|
@ -239,7 +239,7 @@ u64 lkpi_80211_mo_prepare_multicast(struct ieee80211_hw *,
|
||||
void lkpi_80211_mo_configure_filter(struct ieee80211_hw *, unsigned int,
|
||||
unsigned int *, u64);
|
||||
int lkpi_80211_mo_sta_state(struct ieee80211_hw *, struct ieee80211_vif *,
|
||||
struct ieee80211_sta *, enum ieee80211_sta_state);
|
||||
struct lkpi_sta *, enum ieee80211_sta_state);
|
||||
int lkpi_80211_mo_config(struct ieee80211_hw *, uint32_t);
|
||||
int lkpi_80211_mo_assign_vif_chanctx(struct ieee80211_hw *, struct ieee80211_vif *,
|
||||
struct ieee80211_chanctx_conf *);
|
||||
|
@ -377,14 +377,14 @@ lkpi_80211_mo_sta_remove(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
|
||||
int
|
||||
lkpi_80211_mo_sta_state(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
struct ieee80211_sta *sta, enum ieee80211_sta_state nstate)
|
||||
struct lkpi_sta *lsta, enum ieee80211_sta_state nstate)
|
||||
{
|
||||
struct lkpi_hw *lhw;
|
||||
struct lkpi_sta *lsta;
|
||||
struct ieee80211_sta *sta;
|
||||
int error;
|
||||
|
||||
lhw = HW_TO_LHW(hw);
|
||||
lsta = STA_TO_LSTA(sta);
|
||||
sta = LSTA_TO_STA(lsta);
|
||||
if (lhw->ops->sta_state != NULL) {
|
||||
LKPI_80211_TRACE_MO("hw %p vif %p sta %p nstate %d", hw, vif, sta, nstate);
|
||||
error = lhw->ops->sta_state(hw, vif, sta, lsta->state, nstate);
|
||||
|
Loading…
Reference in New Issue
Block a user