| .. | .. |
|---|
| 491 | 491 | { |
|---|
| 492 | 492 | struct tid_ampdu_tx *tid_tx; |
|---|
| 493 | 493 | struct ieee80211_local *local = sta->local; |
|---|
| 494 | | - struct ieee80211_sub_if_data *sdata = sta->sdata; |
|---|
| 494 | + struct ieee80211_sub_if_data *sdata; |
|---|
| 495 | 495 | struct ieee80211_ampdu_params params = { |
|---|
| 496 | 496 | .sta = &sta->sta, |
|---|
| 497 | 497 | .action = IEEE80211_AMPDU_TX_START, |
|---|
| .. | .. |
|---|
| 521 | 521 | */ |
|---|
| 522 | 522 | synchronize_net(); |
|---|
| 523 | 523 | |
|---|
| 524 | + sdata = sta->sdata; |
|---|
| 524 | 525 | params.ssn = sta->tid_seq[tid] >> 4; |
|---|
| 525 | 526 | ret = drv_ampdu_action(local, sdata, ¶ms); |
|---|
| 526 | 527 | tid_tx->ssn = params.ssn; |
|---|
| .. | .. |
|---|
| 534 | 535 | */ |
|---|
| 535 | 536 | set_bit(HT_AGG_STATE_DRV_READY, &tid_tx->state); |
|---|
| 536 | 537 | } else if (ret) { |
|---|
| 538 | + if (!sdata) |
|---|
| 539 | + return; |
|---|
| 540 | + |
|---|
| 537 | 541 | ht_dbg(sdata, |
|---|
| 538 | 542 | "BA request denied - HW unavailable for %pM tid %d\n", |
|---|
| 539 | 543 | sta->sta.addr, tid); |
|---|