staging: r8188eu: use ieee80211 helpers to check the frame type
authorMartin Kaiser <martin@kaiser.cx>
Sun, 27 Feb 2022 16:41:41 +0000 (17:41 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 1 Mar 2022 21:34:15 +0000 (22:34 +0100)
Use the ieee80211_is_... helper functions to check the frame type in
the validate_recv_frame function. Add a temporary variable for the
16-bit frame control field.

Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Link: https://lore.kernel.org/r/20220227164147.1168847-3-martin@kaiser.cx
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/r8188eu/core/rtw_recv.c

index 1133239..e95c9a4 100644 (file)
@@ -3,6 +3,7 @@
 
 #define _RTW_RECV_C_
 
+#include <linux/ieee80211.h>
 #include "../include/osdep_service.h"
 #include "../include/drv_types.h"
 #include "../include/recv_osdep.h"
@@ -1056,12 +1057,12 @@ static int validate_recv_frame(struct adapter *adapter, struct recv_frame *precv
 
        /* then call check if rx seq/frag. duplicated. */
 
-       u8 type;
        u8 subtype;
        int retval = _SUCCESS;
        u8 bDumpRxPkt;
        struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
        u8 *ptr = precv_frame->rx_data;
+       __le16 fc = *(__le16 *)ptr;
        u8  ver = (unsigned char)(*ptr) & 0x3;
        struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv;
 
@@ -1077,7 +1078,6 @@ static int validate_recv_frame(struct adapter *adapter, struct recv_frame *precv
                goto exit;
        }
 
-       type =  GetFrameType(ptr);
        subtype = GetFrameSubType(ptr); /* bit(7)~bit(2) */
 
        pattrib->to_fr_ds = get_tofr_ds(ptr);
@@ -1093,16 +1093,14 @@ static int validate_recv_frame(struct adapter *adapter, struct recv_frame *precv
 
        /* Dump rx packets */
        GetHalDefVar8188EUsb(adapter, HAL_DEF_DBG_DUMP_RXPKT, &bDumpRxPkt);
-       switch (type) {
-       case IEEE80211_FTYPE_MGMT:
+
+       if (ieee80211_is_mgmt(fc)) {
                validate_recv_mgnt_frame(adapter, precv_frame);
                retval = _FAIL; /*  only data frame return _SUCCESS */
-               break;
-       case WIFI_CTRL_TYPE: /* ctrl */
+       } else if (ieee80211_is_ctl(fc)) {
                validate_recv_ctrl_frame(adapter, precv_frame);
                retval = _FAIL; /*  only data frame return _SUCCESS */
-               break;
-       case WIFI_DATA_TYPE: /* data */
+       } else if (ieee80211_is_data(fc)) {
                rtw_led_control(adapter, LED_CTL_RX);
                pattrib->qos = (subtype & BIT(7)) ? 1 : 0;
                retval = validate_recv_data_frame(adapter, precv_frame);
@@ -1110,11 +1108,8 @@ static int validate_recv_frame(struct adapter *adapter, struct recv_frame *precv
                        struct recv_priv *precvpriv = &adapter->recvpriv;
                        precvpriv->rx_drop++;
                }
-               break;
-       default:
+       } else
                retval = _FAIL;
-               break;
-       }
 
 exit: