mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 10:11:38 -04:00
mwifiex: enhance tdls link setup condition
TDLS link status - channel switching, off channel or base channel itself indicates that TDLS link is setup. Signed-off-by: Xinming Hu <huxm@marvell.com> Signed-off-by: Cathy Luo <cluo@marvell.com> Signed-off-by: Avinash Patil <patila@marvell.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
@@ -1333,6 +1333,21 @@ static inline u8 mwifiex_is_any_intf_active(struct mwifiex_private *priv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline u8 mwifiex_is_tdls_link_setup(u8 status)
|
||||
{
|
||||
switch (status) {
|
||||
case TDLS_SETUP_COMPLETE:
|
||||
case TDLS_CHAN_SWITCHING:
|
||||
case TDLS_IN_BASE_CHAN:
|
||||
case TDLS_IN_OFF_CHAN:
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
int mwifiex_init_shutdown_fw(struct mwifiex_private *priv,
|
||||
u32 func_init_shutdown);
|
||||
int mwifiex_add_card(void *, struct semaphore *, struct mwifiex_if_ops *, u8);
|
||||
|
||||
@@ -273,7 +273,7 @@ mwifiex_process_sta_tx_pause_event(struct mwifiex_private *priv,
|
||||
tp_tlv->pkt_cnt);
|
||||
status = mwifiex_get_tdls_link_status
|
||||
(priv, tp_tlv->peermac);
|
||||
if (status == TDLS_SETUP_COMPLETE) {
|
||||
if (mwifiex_is_tdls_link_setup(status)) {
|
||||
spin_lock_irqsave(&priv->sta_list_spinlock,
|
||||
flags);
|
||||
sta_ptr = mwifiex_get_sta_entry
|
||||
|
||||
@@ -49,7 +49,7 @@ static void mwifiex_restore_tdls_packets(struct mwifiex_private *priv,
|
||||
tid = skb->priority;
|
||||
tid_down = mwifiex_wmm_downgrade_tid(priv, tid);
|
||||
|
||||
if (status == TDLS_SETUP_COMPLETE) {
|
||||
if (mwifiex_is_tdls_link_setup(status)) {
|
||||
ra_list = mwifiex_wmm_get_queue_raptr(priv, tid, mac);
|
||||
ra_list->tdls_link = true;
|
||||
tx_info->flags |= MWIFIEX_BUF_FLAG_TDLS_PKT;
|
||||
@@ -1147,7 +1147,7 @@ int mwifiex_get_tdls_list(struct mwifiex_private *priv,
|
||||
|
||||
spin_lock_irqsave(&priv->sta_list_spinlock, flags);
|
||||
list_for_each_entry(sta_ptr, &priv->sta_list, list) {
|
||||
if (sta_ptr->tdls_status == TDLS_SETUP_COMPLETE) {
|
||||
if (mwifiex_is_tdls_link_setup(sta_ptr->tdls_status)) {
|
||||
ether_addr_copy(peer->peer_addr, sta_ptr->mac_addr);
|
||||
peer++;
|
||||
count++;
|
||||
@@ -1301,7 +1301,7 @@ void mwifiex_auto_tdls_update_peer_status(struct mwifiex_private *priv,
|
||||
if ((link_status == TDLS_NOT_SETUP) &&
|
||||
(peer->tdls_status == TDLS_SETUP_INPROGRESS))
|
||||
peer->failure_count++;
|
||||
else if (link_status == TDLS_SETUP_COMPLETE)
|
||||
else if (mwifiex_is_tdls_link_setup(link_status))
|
||||
peer->failure_count = 0;
|
||||
|
||||
peer->tdls_status = link_status;
|
||||
@@ -1373,7 +1373,7 @@ void mwifiex_check_auto_tdls(unsigned long context)
|
||||
|
||||
if (((tdls_peer->rssi >= MWIFIEX_TDLS_RSSI_LOW) ||
|
||||
!tdls_peer->rssi) &&
|
||||
tdls_peer->tdls_status == TDLS_SETUP_COMPLETE) {
|
||||
mwifiex_is_tdls_link_setup(tdls_peer->tdls_status)) {
|
||||
tdls_peer->tdls_status = TDLS_LINK_TEARDOWN;
|
||||
mwifiex_dbg(priv->adapter, MSG,
|
||||
"teardown TDLS link,peer=%pM rssi=%d\n",
|
||||
|
||||
@@ -162,8 +162,8 @@ void mwifiex_ralist_add(struct mwifiex_private *priv, const u8 *ra)
|
||||
ra_list->amsdu_in_ampdu = false;
|
||||
ra_list->tx_paused = false;
|
||||
if (!mwifiex_queuing_ra_based(priv)) {
|
||||
if (mwifiex_get_tdls_link_status(priv, ra) ==
|
||||
TDLS_SETUP_COMPLETE) {
|
||||
if (mwifiex_is_tdls_link_setup
|
||||
(mwifiex_get_tdls_link_status(priv, ra))) {
|
||||
ra_list->tdls_link = true;
|
||||
ra_list->is_11n_enabled =
|
||||
mwifiex_tdls_peer_11n_enabled(priv, ra);
|
||||
@@ -806,6 +806,9 @@ mwifiex_wmm_add_buf_txqueue(struct mwifiex_private *priv,
|
||||
!mwifiex_is_skb_mgmt_frame(skb)) {
|
||||
switch (tdls_status) {
|
||||
case TDLS_SETUP_COMPLETE:
|
||||
case TDLS_CHAN_SWITCHING:
|
||||
case TDLS_IN_BASE_CHAN:
|
||||
case TDLS_IN_OFF_CHAN:
|
||||
ra_list = mwifiex_wmm_get_queue_raptr(priv, tid_down,
|
||||
ra);
|
||||
tx_info->flags |= MWIFIEX_BUF_FLAG_TDLS_PKT;
|
||||
|
||||
Reference in New Issue
Block a user