lkml.org 
[lkml]   [2020]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 61/65] staging: wfx: remove check for interface state
    Date
    From: Jérôme Pouiller <jerome.pouiller@silabs.com>

    Obviously, the value of wvif->state as no reason to be wrong. At least,
    if it the case, dropping the frame is probably not the bast thing to do.

    Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
    ---
    drivers/staging/wfx/queue.c | 50 +++++++++----------------------------
    1 file changed, 12 insertions(+), 38 deletions(-)

    diff --git a/drivers/staging/wfx/queue.c b/drivers/staging/wfx/queue.c
    index c87d64fbb88f..e0c609c35a7b 100644
    --- a/drivers/staging/wfx/queue.c
    +++ b/drivers/staging/wfx/queue.c
    @@ -365,52 +365,26 @@ static bool hif_handle_tx_data(struct wfx_vif *wvif, struct sk_buff *skb,
    struct ieee80211_hdr *frame = (struct ieee80211_hdr *) (req->frame + req->data_flags.fc_offset);

    enum {
    - do_drop,
    do_wep,
    do_tx,
    } action = do_tx;

    - switch (wvif->vif->type) {
    - case NL80211_IFTYPE_STATION:
    - if (wvif->state < WFX_STATE_PRE_STA)
    - action = do_drop;
    - break;
    - case NL80211_IFTYPE_AP:
    - if (!wvif->state)
    - action = do_drop;
    - break;
    - case NL80211_IFTYPE_ADHOC:
    - if (wvif->state != WFX_STATE_IBSS)
    - action = do_drop;
    - break;
    - case NL80211_IFTYPE_MONITOR:
    - default:
    - action = do_drop;
    - break;
    - }
    -
    - if (action == do_tx) {
    - if (ieee80211_is_nullfunc(frame->frame_control)) {
    - mutex_lock(&wvif->bss_loss_lock);
    - if (wvif->bss_loss_state) {
    - wvif->bss_loss_confirm_id = req->packet_id;
    - req->queue_id.queue_id = HIF_QUEUE_ID_VOICE;
    - }
    - 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;
    + if (ieee80211_is_nullfunc(frame->frame_control)) {
    + mutex_lock(&wvif->bss_loss_lock);
    + if (wvif->bss_loss_state) {
    + wvif->bss_loss_confirm_id = req->packet_id;
    + req->queue_id.queue_id = HIF_QUEUE_ID_VOICE;
    }
    + 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) {
    - case do_drop:
    - wfx_pending_remove(wvif->wdev, skb);
    - handled = true;
    - break;
    case do_wep:
    wfx_tx_lock(wvif->wdev);
    WARN_ON(wvif->wep_pending_skb);
    --
    2.25.0
    \
     
     \ /
      Last update: 2020-01-15 14:57    [W:2.636 / U:0.112 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site