Commit 398e6ba5 authored by Siva Rebbagondla's avatar Siva Rebbagondla Committed by Khalid Elmously

UBUNTU: SAUCE: Redpine: fix for firmware assert upon assoc timeout

BugLink: https://bugs.launchpad.net/bugs/1804360

When Association timeout happens and station tries to scan, observed below
firmware assert.

Root cause: When association starts, driver is sending station add peer
notify to firmware but when Association timeout happens, driver is not
sending station peer delete to Firmware. Hence, FW is going into DEEP SLEEP
in associated state, which causes below Firmware assert.

Fix: sending station delete peer notify when assoc timeout happens

...skipping...
wlan0: authenticate with ac:a3:1e:a1:1e:85
wlan0: send auth to ac:a3:1e:a1:1e:85 (try 1/3)
wlan0: authenticated
wlan0: associate with ac:a3:1e:a1:1e:85 (try 1/3)
wlan0: associate with ac:a3:1e:a1:1e:85 (try 2/3)
wlan0: associate with ac:a3:1e:a1:1e:85 (try 3/3)
wlan0: association with ac:a3:1e:a1:1e:85 timed out
ven_rsi_91x: rsi_disable_ps: Cannot accept disable PS in PS_NONE state
ven_rsi_91x: rsi_interrupt_handler: ==> FIRMWARE Assert <==
ven_rsi_91x: rsi_interrupt_handler: Firmware Status is 0xa
IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
Signed-off-by: default avatarSiva Rebbagondla <siva.rebbagondla@redpinesignals.com>
Acked-By: default avatarWen-chien Jesse Sung <jesse.sung@canonical.com>
Acked-By: default avatarShrirang Bagul <shrirang.bagul@canonical.com>
Signed-off-by: default avatarKleber Sacilotto de Souza <kleber.souza@canonical.com>
parent 9ef4a539
...@@ -2687,7 +2687,24 @@ static int rsi_mac80211_roc(struct ieee80211_hw *hw, ...@@ -2687,7 +2687,24 @@ static int rsi_mac80211_roc(struct ieee80211_hw *hw,
return status; return status;
} }
static void rsi_mac80211_event_callback(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
const struct ieee80211_event *event)
{
struct rsi_hw *adapter = hw->priv;
struct rsi_common *common = adapter->priv;
struct ieee80211_bss_conf *bss = &adapter->vifs[0]->bss_conf;
if (event->type == MLME_EVENT && event->u.mlme.data == ASSOC_EVENT &&
event->u.mlme.status == MLME_TIMEOUT) {
ven_rsi_dbg(ERR_ZONE, "%s: ASSOC Timeout: reason = %d\n",
__func__, event->u.mlme.reason);
rsi_send_sta_notify_frame(common, STA_OPMODE,
STA_DISCONNECTED,
bss->bssid, bss->qos,
bss->aid, 0);
}
}
static struct ieee80211_ops mac80211_ops = { static struct ieee80211_ops mac80211_ops = {
.tx = rsi_mac80211_tx, .tx = rsi_mac80211_tx,
...@@ -2722,6 +2739,7 @@ static struct ieee80211_ops mac80211_ops = { ...@@ -2722,6 +2739,7 @@ static struct ieee80211_ops mac80211_ops = {
#endif #endif
.remain_on_channel = rsi_mac80211_roc, .remain_on_channel = rsi_mac80211_roc,
.cancel_remain_on_channel = rsi_mac80211_cancel_roc, .cancel_remain_on_channel = rsi_mac80211_cancel_roc,
.event_callback = rsi_mac80211_event_callback,
}; };
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment