Commit 52443579 authored by Jérôme Pouiller's avatar Jérôme Pouiller Committed by Greg Kroah-Hartman

staging: wfx: simplify hif_handle_tx_data()

Since enum action has now only two cases, it can be dropped. Then
hif_handle_tx_data() can be simplified.
Signed-off-by: default avatarJérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200115135338.14374-63-Jerome.Pouiller@silabs.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 7bc71e80
...@@ -359,16 +359,13 @@ bool wfx_tx_queues_is_empty(struct wfx_dev *wdev) ...@@ -359,16 +359,13 @@ bool wfx_tx_queues_is_empty(struct wfx_dev *wdev)
static bool hif_handle_tx_data(struct wfx_vif *wvif, struct sk_buff *skb, static bool hif_handle_tx_data(struct wfx_vif *wvif, struct sk_buff *skb,
struct wfx_queue *queue) struct wfx_queue *queue)
{ {
bool handled = false;
struct wfx_tx_priv *tx_priv = wfx_skb_tx_priv(skb);
struct hif_req_tx *req = wfx_skb_txreq(skb); struct hif_req_tx *req = wfx_skb_txreq(skb);
struct ieee80211_hdr *frame = (struct ieee80211_hdr *) (req->frame + req->data_flags.fc_offset); struct ieee80211_key_conf *hw_key = wfx_skb_tx_priv(skb)->hw_key;
struct ieee80211_hdr *frame =
enum { (struct ieee80211_hdr *)(req->frame + req->data_flags.fc_offset);
do_wep,
do_tx,
} action = do_tx;
// FIXME: mac80211 is smart enough to handle BSS loss. Driver should not
// try to do anything about that.
if (ieee80211_is_nullfunc(frame->frame_control)) { if (ieee80211_is_nullfunc(frame->frame_control)) {
mutex_lock(&wvif->bss_loss_lock); mutex_lock(&wvif->bss_loss_lock);
if (wvif->bss_loss_state) { if (wvif->bss_loss_state) {
...@@ -376,31 +373,24 @@ static bool hif_handle_tx_data(struct wfx_vif *wvif, struct sk_buff *skb, ...@@ -376,31 +373,24 @@ static bool hif_handle_tx_data(struct wfx_vif *wvif, struct sk_buff *skb,
req->queue_id.queue_id = HIF_QUEUE_ID_VOICE; req->queue_id.queue_id = HIF_QUEUE_ID_VOICE;
} }
mutex_unlock(&wvif->bss_loss_lock); mutex_unlock(&wvif->bss_loss_lock);
} else if (ieee80211_has_protected(frame->frame_control) &&
tx_priv->hw_key &&
tx_priv->hw_key->keyidx != wvif->wep_default_key_id &&
(tx_priv->hw_key->cipher == WLAN_CIPHER_SUITE_WEP40 ||
tx_priv->hw_key->cipher == WLAN_CIPHER_SUITE_WEP104)) {
action = do_wep;
} }
switch (action) { // FIXME: identify the exact scenario matched by this condition. Does it
case do_wep: // happen yet?
if (ieee80211_has_protected(frame->frame_control) &&
hw_key && hw_key->keyidx != wvif->wep_default_key_id &&
(hw_key->cipher == WLAN_CIPHER_SUITE_WEP40 ||
hw_key->cipher == WLAN_CIPHER_SUITE_WEP104)) {
wfx_tx_lock(wvif->wdev); wfx_tx_lock(wvif->wdev);
WARN_ON(wvif->wep_pending_skb); WARN_ON(wvif->wep_pending_skb);
wvif->wep_default_key_id = tx_priv->hw_key->keyidx; wvif->wep_default_key_id = hw_key->keyidx;
wvif->wep_pending_skb = skb; wvif->wep_pending_skb = skb;
if (!schedule_work(&wvif->wep_key_work)) if (!schedule_work(&wvif->wep_key_work))
wfx_tx_unlock(wvif->wdev); wfx_tx_unlock(wvif->wdev);
handled = true; return true;
break; } else {
case do_tx: return false;
break;
default:
/* Do nothing */
break;
} }
return handled;
} }
static int wfx_get_prio_queue(struct wfx_vif *wvif, static int wfx_get_prio_queue(struct wfx_vif *wvif,
......
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