From nobody Sat Feb 7 18:15:10 2026 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B131D30E842 for ; Mon, 2 Feb 2026 07:08:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770016096; cv=none; b=iZVSLPjF3YvaPaaQ+iLQXlP0+5iRvvtlkn0nZc0vmy8aafsvZRvcXwBRwushmPhxY6q0etv4J1GUq9fL4HItPaYOaCFLFA8rqcMObDUZ5m/q5XTdbFMYjdIgliKznDqL5pvHwd55EsC8QpZjfWjYwXpiyPTa5sDNvdRIzLOSisI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770016096; c=relaxed/simple; bh=lpWYvh7dqR/x0vZXCzTGE1VKlcdLj1oQVQB5nHGjuu0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AshVh+7n2KlIwBsPEteurx2N63w7fsAgNU7+tAP9+q9PP75O5rXiET8/oDTHIR+kETqWmCahcEifcKFci62TE7cPhwJWbwEs0nPHgikYgnT2W1EeJ2iTEdMsaJN2nT4N/ENQ+0ZwWfnqZz4H6DTowczkjbqW485DbphHQHN165o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=gHp6Y3jx; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gHp6Y3jx" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-48069a48629so42101455e9.0 for ; Sun, 01 Feb 2026 23:08:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770016093; x=1770620893; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=d6eWckwE+jmzFc1g1wPivXZpnaZArCu0DUT5/MbIzAw=; b=gHp6Y3jxjzH2h5gFKRPnC9rvFWjDmJ84Too+UcL8O+i4Xb9/bjFCKu212NqEG+k7nm Zjz1f4IvmDWp5I1rjI+EABNvQ5cQlGAIRDiq1CXMTOOot8jbq+lKprIKpQ/7L7a3pUxd ScTypMaPXfK7fK0nLgENhURQv5DapPBkvHCOojjH9LR9OCzIu1dKWaZ2wCtVuRT97uei xZlVIC3LinvyaEBG+sXQHi7F+IWdSPAEi5O2kEcHM498eMwxCsjVIAYdBYCziXX4WOff yNenEG/89egCZqi/CIRgxPTmJWJrxlxSMoa0HlmG+vwF8PGfyD+MWdUHU4orNuPiEd/A ivWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770016093; x=1770620893; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=d6eWckwE+jmzFc1g1wPivXZpnaZArCu0DUT5/MbIzAw=; b=wDuCVdWXqMmCBJ3L/to6D0lMdYQ9E0LDvXJ98wYJbUmZ/2pFvPRHbnyUK+9wX7hXNE SlfkkPaEUtxy2dXq8nYV3RtxQIXpn52D+pzaFjIfk+33Pl47KCl0OwvowqiN003hsmMF oLbe5W4C9P2nB9724wTalDElCKicuJVWVnLSb7GQh5Y8ybcC1S9JIY2K8TmdHgLnvaY/ GvH0D5dwx6utt+ImvhRMyfyFcmO9oCFDaCwB7p/mYP6cHdj6KxPOGhCRtHaEU5s9D8C4 7ud2xyJ0R25Vi/Lm3rArjWIJ7VepvKZui31RBvfwa5kFFu7ikGLe/gcMuU8QtNF3XQOW RZxg== X-Forwarded-Encrypted: i=1; AJvYcCVaJHdXiD1Z7s+11UZApTc1qKg2aM8fuULgZOIqmqW2e7RcUoohrR2KbZLd/6x3/YgakwgVORS/T0PzuMw=@vger.kernel.org X-Gm-Message-State: AOJu0YxiEBuQ4AqDXEUsPDebQMWeOr4jMJ/YVeptr2NRn+JNALIOpCDI 3r1ADVAZpOdoXL0fI5jZKIH7nFHe4UOyjTEmZhMNx3IOamu1RCpJVMUCkyzh+sg= X-Gm-Gg: AZuq6aIDiYHxffQW2Eubes79JNQsCYu+XHUzzhUyEfDt4QU/+j6JN8TIWE9K25dtsnc X25r3OzQFrQAIJGRTvkrCALE/6O24TRTVZ0Atna2C1EgdhVXujuDavTw6+Y02d/qPKxee9aPPP/ Uo7iQJeKcSrvaoWr1PsYvQtbUPgbtIHtwN1iLhl6BjOBArOQl+maYdR3XGwg7vk54x/KYFdcbhP D2JWQDDXWchU2geKjwuPYbQYiy5M0tS+lHAhdJrK9hJoQxbeRB8C5IVEGWfZJGPd7NTf1mhevDQ ctYFg+5rZnUPn2o5e0oFEypitBBFpV5pdEZDUUE2Q+GtIMqMcJm2vk5FFLGZ4zKxnO4NC99fGCa OQPq5GxF8iY2DyzTjp3KqLSGQ/Q1MV8JfV1UVRTj2bmHV8HAVa7/jW9Ut89sXYnKSEd7XdAAfEM LJ1IgGpPOzPhgskHbNDSFdA/ipDR2jmoiXpkgRI4eUfv6o4I55Gbaeu+gyYu0QvQPDZBNY4Uue X-Received: by 2002:a05:600d:8449:b0:482:ef72:5778 with SMTP id 5b1f17b1804b1-482ef7258admr52506095e9.8.1770016092838; Sun, 01 Feb 2026 23:08:12 -0800 (PST) Received: from LGPC ([31.223.131.66]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4806cde00e8sm371369315e9.6.2026.02.01.23.08.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Feb 2026 23:08:12 -0800 (PST) From: Luka Gejak To: Greg Kroah-Hartman Cc: Dan Carpenter , linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Luka Gejak Subject: [PATCH v1 1/5] staging: rtl8723bs: remove unused code for other Realtek chips Date: Mon, 2 Feb 2026 08:07:48 +0100 Message-ID: <20260202070752.3391-2-lukagejak5@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260202070752.3391-1-lukagejak5@gmail.com> References: <20260202070752.3391-1-lukagejak5@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Remove unused definitions and function declarations that were left over from other Realtek chips: - Remove rtl8192c_translate_rx_signal_stuff() and rtl8192c_query_rx_desc_status() function declarations from rtl8192c_recv.h. These functions are declared but never implemented or used in the 8723bs driver. - Remove unused RECV_BLK_SZ, RECV_BLK_CNT, and RECV_BLK_TH defines from rtl8192c_recv.h. These are not referenced anywhere in the driver. - Remove unused MAX_PATH_NUM_* definitions for other chips (92CS, 8188E, 8192E, 8812A, 8821A, 8814A, 8822B) from odm.h. Only MAX_PATH_NUM_8723B is actually used by the driver. This addresses the first TODO item: find and remove any code for other chips that is left over. Signed-off-by: Luka Gejak --- drivers/staging/rtl8723bs/hal/odm.h | 7 ------- drivers/staging/rtl8723bs/include/rtl8192c_recv.h | 8 -------- 2 files changed, 15 deletions(-) diff --git a/drivers/staging/rtl8723bs/hal/odm.h b/drivers/staging/rtl8723b= s/hal/odm.h index 1c929d88e596..38830552d5bc 100644 --- a/drivers/staging/rtl8723bs/hal/odm.h +++ b/drivers/staging/rtl8723bs/hal/odm.h @@ -202,14 +202,7 @@ struct odm_rate_adaptive { /* */ /* Declare for common info */ /* */ -#define MAX_PATH_NUM_92CS 2 -#define MAX_PATH_NUM_8188E 1 -#define MAX_PATH_NUM_8192E 2 #define MAX_PATH_NUM_8723B 1 -#define MAX_PATH_NUM_8812A 2 -#define MAX_PATH_NUM_8821A 1 -#define MAX_PATH_NUM_8814A 4 -#define MAX_PATH_NUM_8822B 2 =20 #define IQK_THRESHOLD 8 #define DPK_THRESHOLD 4 diff --git a/drivers/staging/rtl8723bs/include/rtl8192c_recv.h b/drivers/st= aging/rtl8723bs/include/rtl8192c_recv.h index 9664758e21be..b63625ab4e45 100644 --- a/drivers/staging/rtl8723bs/include/rtl8192c_recv.h +++ b/drivers/staging/rtl8723bs/include/rtl8192c_recv.h @@ -7,10 +7,6 @@ #ifndef _RTL8192C_RECV_H_ #define _RTL8192C_RECV_H_ =20 -#define RECV_BLK_SZ 512 -#define RECV_BLK_CNT 16 -#define RECV_BLK_TH RECV_BLK_CNT - #define MAX_RECVBUF_SZ (10240) =20 struct phy_stat { @@ -34,8 +30,4 @@ struct phy_stat { /* Rx smooth factor */ #define Rx_Smooth_Factor (20) =20 - -void rtl8192c_translate_rx_signal_stuff(union recv_frame *precvframe, stru= ct phy_stat *pphy_status); -void rtl8192c_query_rx_desc_status(union recv_frame *precvframe, struct re= cv_stat *pdesc); - #endif --=20 2.52.0 From nobody Sat Feb 7 18:15:10 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DC86B30F529 for ; Mon, 2 Feb 2026 07:08:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770016098; cv=none; b=hIAFijG5IV8YZTnTRKGfCChROFjApsPl0EBVuGRH4LoxezJYg3omCjfoH2K9mLQVx3qyk0BHXmBhe+t7+OP5/5ltdRejke+eK2wlfPvS1NsbxJFSRLVZEeyj+1+aLidLidwgVOxQQ75E1MIjKhQHLJOs/Qr8z8PFPfE15RESN4Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770016098; c=relaxed/simple; bh=s7IIdjcLxuh6+n0VJBXhhL+f6Nq2uAQBkFKm9y4KgGs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Y4yN8kdlNnh3QsnLOLT55G0BRk2WW+8z20oynbqvGkscM9GQmRUVdR/KDxfFPgV+irivwsPhCIfue28OLQOlMG8nxRwnxfxHKew8/lL2BNYJfQJfIqjG6/sFa5In/MxMGblJvBoypkvofaEnSYB7tfKHs1ahjIyMUF7bamzSMmg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=WA+bEDVy; arc=none smtp.client-ip=209.85.128.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="WA+bEDVy" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4801eb2c0a5so39178865e9.3 for ; Sun, 01 Feb 2026 23:08:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770016094; x=1770620894; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Q9Zo+xZOmys4w+M80kAYROROAzS7qHaFRwNjWPdoPuM=; b=WA+bEDVyKTpjxMX+qG+tpYjJLD2QafGfpI7b9PBMhvEeRwzW4ZjkNCdqolRwwrzkmT Bhe3tMQ24SmyeTcfenYp80lN2G5AHzIZY1qYPjGXkXXXW4f24wQmkmHpcZAGeuqX4zec PDJNZb6qTQZF/S0DTWtR3PNJvI2+znWwznOeQvsIb6Kzy+LYKMTAjzbm5mlFDG0OqdpG oE5r0Oi8GORvOFDzGw3MwluM6Rh8f9X8OkDnhPQeySKLVDHMUE2C80a+k96PUoTygVgq qPM2IKVsgic6LvZn5XcEtZG/9JXIZknKfzG9Mqm5arEb+RKeWfU4iqoQ1qDjgp3ait0g iZ7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770016094; x=1770620894; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Q9Zo+xZOmys4w+M80kAYROROAzS7qHaFRwNjWPdoPuM=; b=YUDkSXY6XIuxu4AePJ074recppB1QeKg7Lxm5RNSORASAY5s/HFsvtA53wNMPVBFtV TVbWwgFjb/y5D63vjeJ6f4neVzepP8Ir1j4pNJSamkuEP/HvoT1E2+BzPwe4tNFgLbIP bLPaSK43hAfMdWx8Q+/27hwov7OeIK+WBs9ryekbepBp1ouX8xcdLCQdLpurHIE7KKsM imgX/mwAYaFKGARHOyNDQZjUPJ84wduQ83Y8Os22MYOTz11gED8k0uwSvF6ZpVpMyk8E nLk4oUcFBsYWA1FFAP6fdwOPLDsbTzlMlWvCbDvtU2mnGfRvhDIxJxRQXnEwMV7sa+4a adlw== X-Forwarded-Encrypted: i=1; AJvYcCXoGDXy+O4D3XSgaoDy1SCtl0D+UJ008riGQzw8icTXnTzhQ8g49M35K1owvkChsrI4+9RfvA/nWNL/v/w=@vger.kernel.org X-Gm-Message-State: AOJu0YyzovYLbsbgjux82VMySPbq7NZ6kVgiouln4gSSMK062fIZce6Y wBsGanwVpfwkRzgfTB1e8R9LAhHThNHt2rpGl7HHkLfj1+yTU62pCDM= X-Gm-Gg: AZuq6aInp6kkwfTxQI31RZ8rZWBxd7N3tGu6g1F+3I9gXRHvMzoUjBZIjM9JBqN/jB0 +PQv0j2LJGG31ir0xaaAG3ADpAIpIEAnJHPsI/azVIidiFX+simsK2LZ/Oho2NJiHwpKQKjTs17 ePnF/Cg6Vf/ZmB2/sY8AhKRRNrLqOpKYA9m2/oAjem3OI5/bJHBgIi+WKKIW8k0tsacLlP0NXWC cxBNxYu7CUjSBc2GXQQGomlW0fOusuMik7fA3pYvdgi7cC3cZtraN3UkwenxcIYMdmJfNJwfbAi dtlSFm40BWgt44MSY9GFNAlEFEv2T68jcjQWuDFW4atR6/Ll0/tDZdxrYPWPXlLWvKXqBElqB3+ DG5kkFI5hi3SaTSIokeTA+Digfbcfc3rXWJwnPyJiAm23oLkD8elzco6qUO/XjNcFq3F32l2fru /lgfyUOwRlfHONocFkBjf8nSrTXOZ9OHfayIdoqYboULAlL08/stulRfTItMqvpg== X-Received: by 2002:a05:600c:3152:b0:47d:6140:3284 with SMTP id 5b1f17b1804b1-482db4a1011mr122359325e9.37.1770016094178; Sun, 01 Feb 2026 23:08:14 -0800 (PST) Received: from LGPC ([31.223.131.66]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4806cde00e8sm371369315e9.6.2026.02.01.23.08.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Feb 2026 23:08:13 -0800 (PST) From: Luka Gejak To: Greg Kroah-Hartman Cc: Dan Carpenter , linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Luka Gejak Subject: [PATCH v1 2/5] staging: rtl8723bs: convert PSTA_INFO_T to struct sta_info * Date: Mon, 2 Feb 2026 08:07:49 +0100 Message-ID: <20260202070752.3391-3-lukagejak5@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260202070752.3391-1-lukagejak5@gmail.com> References: <20260202070752.3391-1-lukagejak5@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Replace the vendor-specific PSTA_INFO_T typedef with the standard Linux kernel type 'struct sta_info *' throughout the driver. Changes: - Replace all usages of PSTA_INFO_T with struct sta_info * in odm.c, odm.h, and odm_HWConfig.c - Remove the PSTA_INFO_T and STA_INFO_T macro definitions from odm_types.h as they are no longer needed This addresses the second TODO item: convert any remaining unusual variable types. Signed-off-by: Luka Gejak --- drivers/staging/rtl8723bs/hal/odm.c | 10 +++++----- drivers/staging/rtl8723bs/hal/odm.h | 4 ++-- drivers/staging/rtl8723bs/hal/odm_HWConfig.c | 2 +- drivers/staging/rtl8723bs/hal/odm_types.h | 3 --- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/drivers/staging/rtl8723bs/hal/odm.c b/drivers/staging/rtl8723b= s/hal/odm.c index 639b6da2302b..a22354f728c1 100644 --- a/drivers/staging/rtl8723bs/hal/odm.c +++ b/drivers/staging/rtl8723bs/hal/odm.c @@ -141,7 +141,7 @@ static void odm_CommonInfoSelfUpdate(struct dm_odm_t *p= DM_Odm) { u8 EntryCnt =3D 0; u8 i; - PSTA_INFO_T pEntry; + struct sta_info *pEntry; =20 if (*(pDM_Odm->pBandWidth) =3D=3D ODM_BW40M) { if (*(pDM_Odm->pSecChOffset) =3D=3D 1) @@ -194,7 +194,7 @@ u32 ODM_Get_Rate_Bitmap( u8 rssi_level ) { - PSTA_INFO_T pEntry; + struct sta_info *pEntry; u32 rate_bitmap =3D 0; u8 WirelessMode; =20 @@ -264,7 +264,7 @@ static void odm_RefreshRateAdaptiveMaskCE(struct dm_odm= _t *pDM_Odm) return; =20 for (i =3D 0; i < ODM_ASSOCIATE_ENTRY_NUM; i++) { - PSTA_INFO_T pstat =3D pDM_Odm->pODM_StaInfo[i]; + struct sta_info *pstat =3D pDM_Odm->pODM_StaInfo[i]; =20 if (IS_STA_VALID(pstat)) { if (is_multicast_ether_addr(pstat->hwaddr)) /* if (psta->mac_id =3D=3D= 1) */ @@ -841,7 +841,7 @@ void ODM_CmnInfoHook(struct dm_odm_t *pDM_Odm, enum odm= _cmninfo_e CmnInfo, void /* pDM_Odm->BTCoexist =3D (bool *)pValue; */ =20 /* case ODM_CMNINFO_STA_STATUS: */ - /* pDM_Odm->pODM_StaInfo[] =3D (PSTA_INFO_T)pValue; */ + /* pDM_Odm->pODM_StaInfo[] =3D (struct sta_info *)pValue; */ /* break; */ =20 /* case ODM_CMNINFO_PHY_STATUS: */ @@ -875,7 +875,7 @@ void ODM_CmnInfoPtrArrayHook( /* Dynamic call by reference pointer. */ /* */ case ODM_CMNINFO_STA_STATUS: - pDM_Odm->pODM_StaInfo[Index] =3D (PSTA_INFO_T)pValue; + pDM_Odm->pODM_StaInfo[Index] =3D (struct sta_info *)pValue; break; /* To remove the compiler warning, must add an empty default statement to= handle the other values. */ default: diff --git a/drivers/staging/rtl8723bs/hal/odm.h b/drivers/staging/rtl8723b= s/hal/odm.h index 38830552d5bc..856d454b0181 100644 --- a/drivers/staging/rtl8723bs/hal/odm.h +++ b/drivers/staging/rtl8723bs/hal/odm.h @@ -853,7 +853,7 @@ struct dm_odm_t { /* DM_Out_Source_Dynamic_Mechanism_St= ructure */ /* 2 Define STA info. */ /* _ODM_STA_INFO */ /* 2012/01/12 MH For MP, we need to reduce one array pointer for default= port.?? */ - PSTA_INFO_T pODM_StaInfo[ODM_ASSOCIATE_ENTRY_NUM]; + struct sta_info *pODM_StaInfo[ODM_ASSOCIATE_ENTRY_NUM]; =20 /* */ /* 2012/02/14 MH Add to share 88E ra with other SW team. */ @@ -910,7 +910,7 @@ struct dm_odm_t { /* DM_Out_Source_Dynamic_Mechanism_St= ructure */ /* u8 binitialized; for dm_initial_gain_Multi_STA use. */ /* for Antenna diversity */ /* u8 AntDivCfg; 0:OFF , 1:ON, 2:by efuse */ - /* PSTA_INFO_T RSSI_target; */ + /* struct sta_info *RSSI_target; */ =20 bool *pbDriverStopped; bool *pbDriverIsGoingToPnpSetPowerSleep; diff --git a/drivers/staging/rtl8723bs/hal/odm_HWConfig.c b/drivers/staging= /rtl8723bs/hal/odm_HWConfig.c index 994b8c578e7a..5bb27b872052 100644 --- a/drivers/staging/rtl8723bs/hal/odm_HWConfig.c +++ b/drivers/staging/rtl8723bs/hal/odm_HWConfig.c @@ -256,7 +256,7 @@ static void odm_Process_RSSIForDM( u8 RSSI_max, RSSI_min, i; u32 OFDM_pkt =3D 0; u32 Weighting =3D 0; - PSTA_INFO_T pEntry; + struct sta_info *pEntry; =20 =20 if (pPktinfo->station_id =3D=3D 0xFF) diff --git a/drivers/staging/rtl8723bs/hal/odm_types.h b/drivers/staging/rt= l8723bs/hal/odm_types.h index 8168dc14e879..893fa87852d8 100644 --- a/drivers/staging/rtl8723bs/hal/odm_types.h +++ b/drivers/staging/rtl8723bs/hal/odm_types.h @@ -33,9 +33,6 @@ enum hal_status { #define ODM_ENDIAN_TYPE ODM_ENDIAN_BIG #endif =20 - #define STA_INFO_T struct sta_info - #define PSTA_INFO_T struct sta_info * - #define SET_TX_DESC_ANTSEL_A_88E(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE= (__pTxDesc+8, 24, 1, __Value) #define SET_TX_DESC_ANTSEL_B_88E(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE= (__pTxDesc+8, 25, 1, __Value) #define SET_TX_DESC_ANTSEL_C_88E(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE= (__pTxDesc+28, 29, 1, __Value) --=20 2.52.0 From nobody Sat Feb 7 18:15:10 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8022330F532 for ; Mon, 2 Feb 2026 07:08:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770016099; cv=none; b=XehYsbinF0+LsemNeL2uYzkqum6tBi+BW6hGeMT4PohoRSbD7pIhLeY8t3B9NDPsgA1nKcA2FMx8VxUZ4NZEmaAaf3Rr4NyK6xBp9ntO1M5IpDPxmPkAjcZIsQ61HpMzZoAW/9Wp6jC7apm/RHeXFMIDGlAB0OVh3v19Fe75bcI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770016099; c=relaxed/simple; bh=xyFUA+Rr1fD0C/mj0m8k1z2I36E46fObyTvKQ2wzAhY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EQLFSPZzGQUNNOq4wHqMBZxgWrn/P/aAOWjo6mc7beKj9H8OkJ3PoSpvHHO2FllWpN3frxTXMSyDjc/qA+WOKGxQk2Eth2FJc1FULwgbtarJ89r9khdZRKtPgk2T0OzhRMl1tVJL9HUxegkQGQCggGvGnvtVWnyemg7U0qIsQvQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=iTTjZWYq; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iTTjZWYq" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-4806f9e61f9so19889205e9.1 for ; Sun, 01 Feb 2026 23:08:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770016096; x=1770620896; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=48woEiIX85ekoCemrmYDBxnq2r9PqULP0TC+DEo87X0=; b=iTTjZWYqx67yPsoMKjEF01hIvcH4Dp+ewvN3vz1J9hTOuKGrJKrQ5taiKAXD1mkrtP MH4PT24aPi7AmUoHxXEVD5AJsiBzaghEsryOe3jCJw/MfWH+OFeIiZ5eMqpecrUVdczL BRZcJ+m7oqiCFIWmnymHbsUtuHz8kCzdpN9j7r41E3nZHW0b/M+joromkrrgkVmsbS4g 7X7pRm6IqhODMEVYag+kjWHk7zlJ7fMXzpkqwYTaYaZTbUuFog1jGBTQmPodWtY5HVhD JZVXGdRvOjEvZfJm0Vb/jCdOCNGsXJSofM24sAOmsX3JHNgRtO8iG005m5vht6Wtq+aQ Gj6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770016096; x=1770620896; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=48woEiIX85ekoCemrmYDBxnq2r9PqULP0TC+DEo87X0=; b=KcGcSSf4VCKIRiti7QlPQo8rgSr8JNLql4ctxxOkyhgW845mJcm0GZpIXQl6FDXRyf bM7hhkXs8bhbB0Qsir0Krlt3PbJwqRT51ixv8539jRi/bRx3IZOe/1mdBjGIVgVdtHs7 Ah8XFGdbv8CiIbUJfX+UUL+AeuY4PCiXdX39X0uvBCaw6zj9JIlk1z74235H06BzHvs7 tEqTcCLWH3sGXZmgm44nu0BJ+uqQjMU8Kr315EzIabNFXgtV5DsGH2duckVM7QVrI5uv 8qorNyais7ZoJlgKp9jQJDgmErcIiGVEidx6b/0CKmimQwsMmyQWYduQSUVLyOCdYXi+ zovw== X-Forwarded-Encrypted: i=1; AJvYcCWMU9sbARAZ86vkYLabrXpFLTONNBoXljVu88Wi3+yzP8iWE8TNBoc51B9I/j6WuAhiEwkWMv/wJi3WLEQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yx7zPDTcOuvMJt7Z6xerc+ZmPfFCRiHjOlBsheGysPUcEJB0bai IIoLkvCTy7mlJYKP0gosWoRzMGhpuy58yZeqj5MzhhBq557eZzJ9kSA= X-Gm-Gg: AZuq6aL6jdcIzN6jSchegI+hRZYqcuXxO96Z17E7tBGs2nAoTZbjBNo5kG+Cvx1bLdp JjV6gceTNfnzbzEwDHHd53MBCD5QtOiZa6je2ViAinnbU4ay/QIYHxWxTWW1irgZQkA2f7R7maa ZN8CHxFce4c492kAookt4OHiRw4z1hOU5oXfMriWMExkjy/4F3x7pB7DcmRWNxQYLi0LDGJURJv mZCm1BN77K69p3k3kFU1VqEvAWWsYJo1tNFzEagvAYoiqEIVAOqDKma7otUKWcdu4ed0ydByImU PvaCj3nq93U1/x9ths3cEGEHO8scuaPcdtpEq4JOjswhB/TTGZ8wdiZirvfbdAYV1lajFIE8c0p eYp6dK/tQGyzayUSZrnJS+LI2brHVC0lcNgrvmrYDytGcpEUBLmrJvP1RuySXbXwSKK/fc5zOjX RfR3Qf8MZmqL9Kvg9DQUxFcrzkW14q4td+nDWzelw/UcUB7VzTX0iFBn/H3VZQ5A== X-Received: by 2002:a05:600c:350c:b0:47f:8c05:786b with SMTP id 5b1f17b1804b1-482db48d476mr124123015e9.28.1770016095464; Sun, 01 Feb 2026 23:08:15 -0800 (PST) Received: from LGPC ([31.223.131.66]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4806cde00e8sm371369315e9.6.2026.02.01.23.08.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Feb 2026 23:08:14 -0800 (PST) From: Luka Gejak To: Greg Kroah-Hartman Cc: Dan Carpenter , linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Luka Gejak Subject: [PATCH v1 3/5] staging: rtl8723bs: remove NDIS type aliases Date: Mon, 2 Feb 2026 08:07:50 +0100 Message-ID: <20260202070752.3391-4-lukagejak5@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260202070752.3391-1-lukagejak5@gmail.com> References: <20260202070752.3391-1-lukagejak5@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Remove Windows NDIS-style type aliases and replace with standard Linux kernel types: - Remove NDIS_802_11_MAC_ADDRESS typedef, use u8[ETH_ALEN] directly - Remove NDIS_802_11_RATES typedef (unused) - Remove NDIS_802_11_RATES_EX typedef, use u8[NDIS_802_11_LENGTH_RATES_EX] - Remove NDIS_802_11_PMKID_VALUE typedef (unused) - Update struct wlan_bssid_ex and struct FW_Sta_Info members - Replace sizeof(NDIS_802_11_MAC_ADDRESS) with ETH_ALEN This makes the code more readable and follows Linux kernel coding style by using explicit types instead of Windows-style typedefs. Signed-off-by: Luka Gejak --- drivers/staging/rtl8723bs/core/rtw_sta_mgt.c | 2 +- drivers/staging/rtl8723bs/include/rtw_ioctl_set.h | 3 --- drivers/staging/rtl8723bs/include/rtw_mlme_ext.h | 2 +- drivers/staging/rtl8723bs/include/wlan_bssdef.h | 12 ++++-------- drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 4 ++-- 5 files changed, 8 insertions(+), 15 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_sta_mgt.c b/drivers/staging= /rtl8723bs/core/rtw_sta_mgt.c index 3e80d03c4ec9..f67732e44082 100644 --- a/drivers/staging/rtl8723bs/core/rtw_sta_mgt.c +++ b/drivers/staging/rtl8723bs/core/rtw_sta_mgt.c @@ -492,7 +492,7 @@ struct sta_info *rtw_get_stainfo(struct sta_priv *pstap= riv, u8 *hwaddr) u32 rtw_init_bcmc_stainfo(struct adapter *padapter) { struct sta_info *psta; - NDIS_802_11_MAC_ADDRESS bcast_addr =3D {0xff, 0xff, 0xff, 0xff, 0xff, 0xf= f}; + u8 bcast_addr[ETH_ALEN] =3D {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; =20 struct sta_priv *pstapriv =3D &padapter->stapriv; /* struct __queue *pstapending =3D &padapter->xmitpriv.bm_pending; */ diff --git a/drivers/staging/rtl8723bs/include/rtw_ioctl_set.h b/drivers/st= aging/rtl8723bs/include/rtw_ioctl_set.h index ab349de733c8..d8dd4b6d7aca 100644 --- a/drivers/staging/rtl8723bs/include/rtw_ioctl_set.h +++ b/drivers/staging/rtl8723bs/include/rtw_ioctl_set.h @@ -7,9 +7,6 @@ #ifndef __RTW_IOCTL_SET_H_ #define __RTW_IOCTL_SET_H_ =20 - -typedef u8 NDIS_802_11_PMKID_VALUE[16]; - u8 rtw_set_802_11_authentication_mode(struct adapter *pdapter, enum ndis_8= 02_11_authentication_mode authmode); u8 rtw_set_802_11_add_wep(struct adapter *padapter, struct ndis_802_11_wep= *wep); u8 rtw_set_802_11_disassociate(struct adapter *padapter); diff --git a/drivers/staging/rtl8723bs/include/rtw_mlme_ext.h b/drivers/sta= ging/rtl8723bs/include/rtw_mlme_ext.h index dd5080056e58..e6d4c47a6729 100644 --- a/drivers/staging/rtl8723bs/include/rtw_mlme_ext.h +++ b/drivers/staging/rtl8723bs/include/rtw_mlme_ext.h @@ -253,7 +253,7 @@ struct FW_Sta_Info { u32 status; u32 rx_pkt; u32 retry; - NDIS_802_11_RATES_EX SupportedRates; + u8 SupportedRates[NDIS_802_11_LENGTH_RATES_EX]; }; =20 /* diff --git a/drivers/staging/rtl8723bs/include/wlan_bssdef.h b/drivers/stag= ing/rtl8723bs/include/wlan_bssdef.h index eb38594c8f5c..7071bd1a02fa 100644 --- a/drivers/staging/rtl8723bs/include/wlan_bssdef.h +++ b/drivers/staging/rtl8723bs/include/wlan_bssdef.h @@ -15,10 +15,6 @@ #define NDIS_802_11_LENGTH_RATES 8 #define NDIS_802_11_LENGTH_RATES_EX 16 =20 -typedef unsigned char NDIS_802_11_MAC_ADDRESS[6]; -typedef unsigned char NDIS_802_11_RATES[NDIS_802_11_LENGTH_RATES]; = /* Set of 8 data rates */ -typedef unsigned char NDIS_802_11_RATES_EX[NDIS_802_11_LENGTH_RATES_EX];= /* Set of 16 data rates */ - struct ndis_802_11_ssid { u32 ssid_length; u8 ssid[32]; @@ -64,10 +60,10 @@ struct ndis_80211_var_ie { }; =20 /* Length is the 4 bytes multiples of the sum of - * sizeof (NDIS_802_11_MAC_ADDRESS) + 2 + + * 6 (mac_address) + 2 + * sizeof (struct ndis_802_11_ssid) + sizeof (u32) + * sizeof (long) + sizeof (enum ndis_802_11_network_type) + - * sizeof (struct ndis_802_11_conf) + sizeof (NDIS_802_11_RATES_EX) + ie_l= ength + * sizeof (struct ndis_802_11_conf) + 16 (supported_rates) + ie_length * * Except for ie_length, all other fields are fixed length. Therefore, we = can * define a macro to present the partial sum. @@ -155,7 +151,7 @@ struct wlan_bcn_info { */ struct wlan_bssid_ex { u32 length; - NDIS_802_11_MAC_ADDRESS mac_address; + u8 mac_address[ETH_ALEN]; u8 reserved[2];/* 0]: IS beacon frame */ struct ndis_802_11_ssid ssid; u32 privacy; @@ -163,7 +159,7 @@ struct wlan_bssid_ex { enum ndis_802_11_network_type network_type_in_use; struct ndis_802_11_conf configuration; enum ndis_802_11_network_infrastructure infrastructure_mode; - NDIS_802_11_RATES_EX supported_rates; + u8 supported_rates[NDIS_802_11_LENGTH_RATES_EX]; struct wlan_phy_info phy_info; u32 ie_length; u8 ies[MAX_IE_SZ]; /* timestamp, beacon interval, and capability informa= tion) */ diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/st= aging/rtl8723bs/os_dep/ioctl_cfg80211.c index 60edeae1cffe..5488940ffe2e 100644 --- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c +++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c @@ -378,7 +378,7 @@ void rtw_cfg80211_ibss_indicate_connect(struct adapter = *padapter) return; } if (!memcmp(&(scanned->network.ssid), &(pnetwork->ssid), sizeof(struct = ndis_802_11_ssid)) - && !memcmp(scanned->network.mac_address, pnetwork->mac_address, sizeof= (NDIS_802_11_MAC_ADDRESS)) + && !memcmp(scanned->network.mac_address, pnetwork->mac_address, ETH_AL= EN) ) rtw_cfg80211_inform_bss(padapter, scanned); else @@ -419,7 +419,7 @@ void rtw_cfg80211_indicate_connect(struct adapter *pada= pter) goto check_bss; } =20 - if (!memcmp(scanned->network.mac_address, pnetwork->mac_address, sizeof(= NDIS_802_11_MAC_ADDRESS)) + if (!memcmp(scanned->network.mac_address, pnetwork->mac_address, ETH_ALE= N) && !memcmp(&(scanned->network.ssid), &(pnetwork->ssid), sizeof(struct n= dis_802_11_ssid)) ) rtw_cfg80211_inform_bss(padapter, scanned); --=20 2.52.0 From nobody Sat Feb 7 18:15:10 2026 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ABC1030F7F2 for ; Mon, 2 Feb 2026 07:08:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770016100; cv=none; b=NtfbQ4Pk/9oIxr+0vcXiAobbzASgNMWXLidNJaKW1igiWN2BO0mpWoJRZ4BHVqhrKKhsbxqkpFU9Yw29RO/LNeCJm9JuRu0gVcUFfjrCUTATo6Cj/EwnlzLvenKzYre8pmej1RBKJcoWqPDIsjTxu3rv2u3zrt4fsfq7fPzfkZQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770016100; c=relaxed/simple; bh=Y2TihLrOXjfbjF9u/PEFAJ1IZQVaQ8uExnYSn5AvcKo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BP7WtMtJX99KhW3fWkZz+pgC7QkW4D47ZJSOk7R6oxGI4nt1H6D6RJFUGIheNVDuLM8qW7FPvsCw8NR5jQyuaIBPU9vNqHJd5ndKU4FyWJLw3yHA3x9JIz9LwuvxQT4AnZb/RZPrx9niYa3KNABChHMFHWjLTraj2PL4bUJXoSk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=i2C9DS7z; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="i2C9DS7z" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-47ee0291921so37456745e9.3 for ; Sun, 01 Feb 2026 23:08:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770016097; x=1770620897; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4WkmcG7TJgIhlqZphFb6n3UZ0JclZwmZQJHhSQXufXg=; b=i2C9DS7zcp69pXJoJxaPHEN3N+z0KWEspRXnVA46p+GDRNCxr3qUv2VUMeDJdrUnfp E4g7btZljX1sodFIktIwdYlr2pBf6uG4wJJOYTJ0liWMqkQ6DHPE5+wTiVeslfM4zSSr PJqAyvW4UCQIvXuyNjDqGVKeR+RhCu8Pmkx00siFfse5lCmW9hjjXV8hAmWYO90g5Y48 ltJz/7NQPyL1lp+lnj9Hoek/Im4GtcSK73zSe+JBAcA+itfUTWHNoDVloKOkrd0OcvWf px7tb1l2SKdNapHk4PxUEPdbQk+XxnbZ1nU9GzgrrtbOVdCvaJdGqxqU0lNWtFDE8c3l LJwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770016097; x=1770620897; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=4WkmcG7TJgIhlqZphFb6n3UZ0JclZwmZQJHhSQXufXg=; b=rv/uRqIm7FicZRNJIdMPkes7CosOCVbUSShfVa4mcuApAieAfvmjFIPNztm5TnUZUt /ZLC1HM809Vxx2/4TAXJHhWdNG9r0Dck1OfKDmwBs1RI2w77wznvqhpTOT87Vin6vzmt vcTH7QNOrb5CzbR+Iy6DSzrC6fS9YEG3fsGF9AlhwuKKNZcz7StWUfbYTZzGVrhmoV0R u5L1VE+2jb1wHEBTWOMipdgQiHgs/tEitMRtd95EjnILqPh+C6HicH8mWqC+8I1jTAUK 8cDvOZOucrrGC8ReBymPJLnW6K78AEWVLdoTSYnlVaGbKxOm0t7h995ioKjtLKf1YIOt RMYQ== X-Forwarded-Encrypted: i=1; AJvYcCUU4i/Cvkg9RCABbVcbtPRiwB0vwCphvHpkcKWKOMic8Sv5wJG1kdo8bDX8JyUZ9JoRbvMJ4JXGW1sPB5E=@vger.kernel.org X-Gm-Message-State: AOJu0YzVAVuMMRljqbWgrsJObXDcL1TwEtGhOEtUQCzRQfKEPqky4dR3 C2UuRNCsGZnWhEAKTeUjQKssP7+TBMS/zRDuCTYMIG4Z5lxHa7qTxIZxJTCDr5U= X-Gm-Gg: AZuq6aJDPglOG/5hpJZrLbHHiiTFukRqPaJNOF3XpiNU3Ny1/G87e0Wxz6s8FcSzDhH 39QhAIm4yZmdHFsTlsOiXRASLzgd04eZXZ+73Fo3XMM/OvijcejLtiHr1+NQmurhxMRO6MHajMk KU0lk9FaAlKhm08L1O/LxU7jrpGAfpLxGDJZgjaDZH8gCzEU9Xeqb3Y+VKk6K9AWeBdr1XWv+nA j+Gi//ZSlSgfbvgTs8w1ZieG+qFUl5oB/YqLk6XqPRDFmn9gDv77IclNgmrq2jrVZ5inUGtb4sc 8/EmMV8bXu5Zrzz3yL9N7KV1Kr6BbzArf1Eb2FryXtW/PKd4su3i6xiYiScfw+jR3t6yPhj09Y3 0vQNSE1IYIsSoUx8Z1mxzC/Uilt0skhr0e0fTejA0MRrrWXAsKkXLDrXTWwaNjizfVFAsp7eWZm TSQ32nrJhmBd0AhMAAQAMODVTz51QBQjEL5mWx+T+Uw2Uv3h7wlFQgMMVWVgZw9w== X-Received: by 2002:a05:600c:4e0b:b0:480:6dff:e786 with SMTP id 5b1f17b1804b1-482db4f6f67mr120444815e9.37.1770016096807; Sun, 01 Feb 2026 23:08:16 -0800 (PST) Received: from LGPC ([31.223.131.66]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4806cde00e8sm371369315e9.6.2026.02.01.23.08.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Feb 2026 23:08:16 -0800 (PST) From: Luka Gejak To: Greg Kroah-Hartman Cc: Dan Carpenter , linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Luka Gejak Subject: [PATCH v1 4/5] staging: rtl8723bs: remove redundant MAC_ARG macro Date: Mon, 2 Feb 2026 08:07:51 +0100 Message-ID: <20260202070752.3391-5-lukagejak5@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260202070752.3391-1-lukagejak5@gmail.com> References: <20260202070752.3391-1-lukagejak5@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The driver already uses the kernel's %pM format specifier for printing MAC addresses. The MAC_ARG() macro was a no-op that simply returned its argument, making it redundant when used with %pM. Remove the MAC_ARG() macro definitions from ieee80211.h and osdep_service.h, and update all call sites to pass the MAC address pointer directly to %pM. Also remove the unused IP_ARG() macro. This addresses TODO item: find codes that can use %pM formatting. Signed-off-by: Luka Gejak --- drivers/staging/rtl8723bs/core/rtw_cmd.c | 2 +- drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 8 ++++---- drivers/staging/rtl8723bs/core/rtw_wlan_util.c | 2 +- drivers/staging/rtl8723bs/include/ieee80211.h | 2 -- drivers/staging/rtl8723bs/include/osdep_service.h | 4 ---- 5 files changed, 6 insertions(+), 12 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_cmd.c b/drivers/staging/rtl= 8723bs/core/rtw_cmd.c index ef2d92b5588a..27eddd22e064 100644 --- a/drivers/staging/rtl8723bs/core/rtw_cmd.c +++ b/drivers/staging/rtl8723bs/core/rtw_cmd.c @@ -930,7 +930,7 @@ u8 rtw_clearstakey_cmd(struct adapter *padapter, struct= sta_info *sta, u8 enqueu while ((cam_id =3D rtw_camid_search(padapter, sta->hwaddr, -1)) >=3D 0) { netdev_dbg(padapter->pnetdev, "clear key for addr:%pM, camid:%d\n", - MAC_ARG(sta->hwaddr), cam_id); + sta->hwaddr, cam_id); clear_cam_entry(padapter, cam_id); rtw_camid_free(padapter, cam_id); } diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/stagin= g/rtl8723bs/core/rtw_mlme_ext.c index b61841bf16a5..8297cf85eb7b 100644 --- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c +++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c @@ -5595,7 +5595,7 @@ u8 setkey_hdl(struct adapter *padapter, u8 *pbuf) write_cam(padapter, cam_id, ctrl, addr, pparm->key); netdev_dbg(padapter->pnetdev, "set group key camid:%d, addr:%pM, kid:%d, type:%s\n", - cam_id, MAC_ARG(addr), pparm->keyid, + cam_id, addr, pparm->keyid, security_type_str(pparm->algorithm)); } =20 @@ -5625,7 +5625,7 @@ u8 set_stakey_hdl(struct adapter *padapter, u8 *pbuf) psta =3D rtw_get_stainfo(pstapriv, pparm->addr); if (!psta) { netdev_dbg(padapter->pnetdev, "%s sta:%pM not found\n", - __func__, MAC_ARG(pparm->addr)); + __func__, pparm->addr); ret =3D H2C_REJECTED; goto exit; } @@ -5640,14 +5640,14 @@ u8 set_stakey_hdl(struct adapter *padapter, u8 *pbu= f) while ((cam_id =3D rtw_camid_search(padapter, pparm->addr, -1)) >=3D 0) { netdev_dbg(padapter->pnetdev, "clear key for addr:%pM, camid:%d\n", - MAC_ARG(pparm->addr), cam_id); + pparm->addr, cam_id); clear_cam_entry(padapter, cam_id); rtw_camid_free(padapter, cam_id); } } else { netdev_dbg(padapter->pnetdev, "set pairwise key camid:%d, addr:%pM, kid:%d, type:%s\n", - cam_id, MAC_ARG(pparm->addr), pparm->keyid, + cam_id, pparm->addr, pparm->keyid, security_type_str(pparm->algorithm)); ctrl =3D BIT(15) | ((pparm->algorithm) << 2) | pparm->keyid; write_cam(padapter, cam_id, ctrl, pparm->addr, pparm->key); diff --git a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c b/drivers/stagi= ng/rtl8723bs/core/rtw_wlan_util.c index 5ffefa50699e..3f71e62d0198 100644 --- a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c +++ b/drivers/staging/rtl8723bs/core/rtw_wlan_util.c @@ -617,7 +617,7 @@ s16 rtw_camid_alloc(struct adapter *adapter, struct sta= _info *sta, u8 kid) netdev_dbg(adapter->pnetdev, FUNC_ADPT_FMT " pairwise key with %pM id:%u no room\n", FUNC_ADPT_ARG(adapter), - MAC_ARG(sta->hwaddr), kid); + sta->hwaddr, kid); else netdev_dbg(adapter->pnetdev, FUNC_ADPT_FMT " group key id:%u no room\n", diff --git a/drivers/staging/rtl8723bs/include/ieee80211.h b/drivers/stagin= g/rtl8723bs/include/ieee80211.h index 1098b0209200..8ae6fa6dd63e 100644 --- a/drivers/staging/rtl8723bs/include/ieee80211.h +++ b/drivers/staging/rtl8723bs/include/ieee80211.h @@ -506,8 +506,6 @@ Total: 28-2340 bytes =20 #define DEFAULT_MAX_SCAN_AGE (15 * HZ) #define DEFAULT_FTS 2346 -#define MAC_ARG(x) (x) -#define IP_ARG(x) (x) =20 static inline int is_multicast_mac_addr(const u8 *addr) { diff --git a/drivers/staging/rtl8723bs/include/osdep_service.h b/drivers/st= aging/rtl8723bs/include/osdep_service.h index 8b1634f4091e..6458ff95ff9d 100644 --- a/drivers/staging/rtl8723bs/include/osdep_service.h +++ b/drivers/staging/rtl8723bs/include/osdep_service.h @@ -91,10 +91,6 @@ static inline int rtw_bug_check(void *parg1, void *parg2= , void *parg3, void *par =20 #define _RND(sz, r) ((((sz)+((r)-1))/(r))*(r)) =20 -#ifndef MAC_ARG -#define MAC_ARG(x) (x) -#endif - extern void rtw_free_netdev(struct net_device *netdev); =20 /* Macros for handling unaligned memory accesses */ --=20 2.52.0 From nobody Sat Feb 7 18:15:10 2026 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E5DCB30F7F8 for ; Mon, 2 Feb 2026 07:08:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770016109; cv=none; b=iO8yeRyze779TAqlOm6nvsHXqZTyQQHR6SWvbcpx/VZriEeBj/cWr8TOQDqVFqvySJsgvc6O9PRpHCm9u3toSONiW7tFB5xog+Fz8bdtBB0X7Jz23qJkbhvwlBnriGbv6NKxG9OijkRatq/4dyz50/O+JnWZ0s/UY27HiRvewuk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770016109; c=relaxed/simple; bh=41zgYDgbnkyOQMqhsr2KsUP69VLL0Qp4SIBdcXepZy8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VX9bfqlNSfmCS9PDX1zgm6XxZFwdskKbrBQ+yS+6gm307ZtCkXVjryIogl1nH0r7GebXa5Mzle4uwNx62Kg1ItFEsjyZHbXPKH5+Gg/K61u7fNNa6rmfgYMQCc4dMA85AHn6eiVMNywzWZawcJY9TLjz5odOBxgikIkgKjJdcA0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=GYhcoggc; arc=none smtp.client-ip=209.85.128.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GYhcoggc" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-4806bf03573so19347405e9.2 for ; Sun, 01 Feb 2026 23:08:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770016099; x=1770620899; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LBuzjt2LRxef0TL7GSYxiUp/69wUdZJuPZv+/8VMa6c=; b=GYhcoggczcJrM1DvGqyKqCw+oB7Rs8M5N+wIrPoYucMZ96cDeopWJ8w832Xqci8cr+ o4cm7RHHhAAb0i0hNU2a3v5lgmSQkd9QPTtbc76eKkZLmiQ8K8p7gBUBYbMBw4V1MInV bI5fOAoMfrya83yu7hYIxi6awDSQvNaWY2ctB4qAmnS0TPijUmkbeM5d/s0NhMvFAraX f2Irtxc+Jbslf2bpv5VgBcIKcrrg/Rwc3n72xeLKx0U2Jgwp5vicCOo1sMOit9cGWgdA yRl6LJPYgUV7Khh9BdgrQiqf+Fgg64XTo9zykNlerfck3JtqL2eMT2eVKl6JF719vABy OERQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770016099; x=1770620899; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=LBuzjt2LRxef0TL7GSYxiUp/69wUdZJuPZv+/8VMa6c=; b=OsT9Co93eXhbwZtVUjDf6i7sHbRE+WiNucLFm98RAKZ+8PLJPqJiJtNbbxgvuu+V2N ZzFzY0n2Wx8IcSuNcLEm9vJZFgA6XB3sAOhuTJ8xfL0WM1o8RwdAhnKORnBmGOs9OLlp Ik0eE57R97fpDXp4bT6CPcdrDuU8bOwiIVquHmS0JSRYy7Mb2HuIEeQTaMAWI2I3E8iu uZUeIi8iZtMrwvxszhxYrk14nNqmw3OrX9kXVkTvuqKdgneEElQuI83ZNuEae9qIICsj nPx/8sPi0mc/UQF7FIIM3TDhtw95MLcde1zKHwhF7wDVd46QzT5nEJHnDpOik+kEoT1f nuLQ== X-Forwarded-Encrypted: i=1; AJvYcCWAod+RzXDdNE2+Rc42Obu/zlKGop5UKus2DTjPeCYTC4mvBS7/RhBfV73JR+8rFIbEbIPhMltLEJ6kr9M=@vger.kernel.org X-Gm-Message-State: AOJu0Yx+K0kvHF9leY3D35eMzq9HbaapKtC54RFfxmmI9/a7WS0ULoHJ PrqKeQuYZbVq4zBnrdeQMBwes9WpjXEanWpEKYhQZc6m5XEg6hNht70dL+ydsZM= X-Gm-Gg: AZuq6aLx/mHr54wP79nJlNGrPGTVpNZqbwM7O+TQ+WIV/zexpi1c+fDHLKI3G1/JsJQ zRQmwoQXHXfxgJIOd6Qiz32ejqhh+t9zBO1JO7hlcT0UUnoHf2N6sEIbnJhSkQizFIhdVXtf7yh IcpS1QipV4njtwz6aZ4aD6vT/eb9licjaZz8tAMP4YI1o9ucrDhBWeP7wW1LIfBnO4i/kDCJOMf YwShJ1Ksyyhw701piCIwI4BuYZ4lT9TTQ5hweJ1kj9VCS8f4H3kxQjZMH4Utbrj+p1h9LWAnWjV 6x+jHPkwS4n8UOAkYo5RYMo4oKM17iZJPzVs9TcAc89c4JXeE8ut1Kk06rQodruBIe2+6IqX0vt PLAN+Ib8K3Xz3bOWy39HjAiGq7sSDhQUnjDPa31IqfrPemW028wJxoPnfO2O1g3f3pYmyi6Ipl2 OHk8qqz7W3IlSTbd8WcH3yQn0+ogYMZ8af34ipvQvutuwClRBhGWRVDexFRJESow== X-Received: by 2002:a05:600d:6402:20b0:482:e5d4:b7ca with SMTP id 5b1f17b1804b1-482e5d4b849mr78154975e9.8.1770016098557; Sun, 01 Feb 2026 23:08:18 -0800 (PST) Received: from LGPC ([31.223.131.66]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4806cde00e8sm371369315e9.6.2026.02.01.23.08.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Feb 2026 23:08:17 -0800 (PST) From: Luka Gejak To: Greg Kroah-Hartman Cc: Dan Carpenter , linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Luka Gejak Subject: [PATCH v1 5/5] staging: rtl8723bs: fix LONG_LINE warnings across C files Date: Mon, 2 Feb 2026 08:07:52 +0100 Message-ID: <20260202070752.3391-6-lukagejak5@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260202070752.3391-1-lukagejak5@gmail.com> References: <20260202070752.3391-1-lukagejak5@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Refactor lines exceeding 100 characters to comply with kernel coding style. All changes preserve original logic and behavior. Techniques used: - Move trailing comments to separate lines above code - Break long function signatures across multiple lines - Extract complex expressions into named temp variables - Use scoped blocks for local variable declarations - Create pointer aliases for deeply nested struct accesses - Simplify compound conditionals with intermediate booleans Files modified: - core/: rtw_cmd.c, rtw_ieee80211.c, rtw_io.c, rtw_ioctl_set.c, rtw_mlme.c, rtw_mlme_ext.c, rtw_pwrctrl.c, rtw_recv.c, rtw_security.c, rtw_wlan_util.c, rtw_xmit.c - hal/: HalBtc8723b1Ant.c, HalBtc8723b2Ant.c, HalPhyRf.c, HalPhyRf_8723B.c, hal_com.c, hal_com_phycfg.c, hal_intf.c, hal_sdio.c, odm.c, odm_DIG.c, odm_HWConfig.c, rtl8723b_cmd.c, rtl8723b_hal_init.c, rtl8723b_phycfg.c, rtl8723b_rf6052.c, rtl8723bs_recv.c, rtl8723bs_xmit.c, sdio_halinit.c - os_dep/: ioctl_cfg80211.c, os_intfs.c, sdio_intf.c, xmit_linux.c Signed-off-by: Luka Gejak --- drivers/staging/rtl8723bs/core/rtw_cmd.c | 142 ++--- .../staging/rtl8723bs/core/rtw_ieee80211.c | 36 +- drivers/staging/rtl8723bs/core/rtw_io.c | 4 +- .../staging/rtl8723bs/core/rtw_ioctl_set.c | 16 +- drivers/staging/rtl8723bs/core/rtw_mlme.c | 103 ++-- drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 492 ++++++++++++------ drivers/staging/rtl8723bs/core/rtw_pwrctrl.c | 3 +- drivers/staging/rtl8723bs/core/rtw_recv.c | 123 +++-- drivers/staging/rtl8723bs/core/rtw_security.c | 11 +- .../staging/rtl8723bs/core/rtw_wlan_util.c | 215 +++++--- drivers/staging/rtl8723bs/core/rtw_xmit.c | 62 ++- .../staging/rtl8723bs/hal/HalBtc8723b1Ant.c | 35 +- .../staging/rtl8723bs/hal/HalBtc8723b2Ant.c | 29 +- drivers/staging/rtl8723bs/hal/HalPhyRf.c | 36 +- .../staging/rtl8723bs/hal/HalPhyRf_8723B.c | 166 ++++-- drivers/staging/rtl8723bs/hal/hal_com.c | 10 +- .../staging/rtl8723bs/hal/hal_com_phycfg.c | 22 +- drivers/staging/rtl8723bs/hal/hal_intf.c | 4 +- drivers/staging/rtl8723bs/hal/hal_sdio.c | 4 +- drivers/staging/rtl8723bs/hal/odm.c | 18 +- drivers/staging/rtl8723bs/hal/odm_DIG.c | 38 +- drivers/staging/rtl8723bs/hal/odm_HWConfig.c | 17 +- drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c | 103 +++- .../staging/rtl8723bs/hal/rtl8723b_hal_init.c | 64 ++- .../staging/rtl8723bs/hal/rtl8723b_phycfg.c | 54 +- .../staging/rtl8723bs/hal/rtl8723b_rf6052.c | 6 +- .../staging/rtl8723bs/hal/rtl8723bs_recv.c | 6 +- .../staging/rtl8723bs/hal/rtl8723bs_xmit.c | 5 +- drivers/staging/rtl8723bs/hal/sdio_halinit.c | 17 +- .../staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 134 +++-- drivers/staging/rtl8723bs/os_dep/os_intfs.c | 17 +- drivers/staging/rtl8723bs/os_dep/sdio_intf.c | 3 +- drivers/staging/rtl8723bs/os_dep/xmit_linux.c | 8 +- 33 files changed, 1364 insertions(+), 639 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_cmd.c b/drivers/staging/rtl= 8723bs/core/rtw_cmd.c index 27eddd22e064..1a417beb426c 100644 --- a/drivers/staging/rtl8723bs/core/rtw_cmd.c +++ b/drivers/staging/rtl8723bs/core/rtw_cmd.c @@ -171,20 +171,18 @@ int rtw_init_cmd_priv(struct cmd_priv *pcmdpriv) pcmdpriv->cmd_seq =3D 1; =20 pcmdpriv->cmd_allocated_buf =3D rtw_zmalloc(MAX_CMDSZ + CMDBUFF_ALIGN_SZ); - if (!pcmdpriv->cmd_allocated_buf) return -ENOMEM; =20 - pcmdpriv->cmd_buf =3D pcmdpriv->cmd_allocated_buf + CMDBUFF_ALIGN_SZ - = ((SIZE_PTR)(pcmdpriv->cmd_allocated_buf) & (CMDBUFF_ALIGN_SZ-1)); + pcmdpriv->cmd_buf =3D PTR_ALIGN(pcmdpriv->cmd_allocated_buf, CMDBUFF_ALIG= N_SZ); =20 pcmdpriv->rsp_allocated_buf =3D rtw_zmalloc(MAX_RSPSZ + 4); - if (!pcmdpriv->rsp_allocated_buf) { kfree(pcmdpriv->cmd_allocated_buf); return -ENOMEM; } =20 - pcmdpriv->rsp_buf =3D pcmdpriv->rsp_allocated_buf + 4 - ((SIZE_PTR)(pcm= dpriv->rsp_allocated_buf) & 3); + pcmdpriv->rsp_buf =3D PTR_ALIGN(pcmdpriv->rsp_allocated_buf, 4); =20 pcmdpriv->cmd_issued_cnt =3D 0; pcmdpriv->cmd_done_cnt =3D 0; @@ -393,7 +391,7 @@ int rtw_cmd_thread(void *context) while (1) { if (wait_for_completion_interruptible(&pcmdpriv->cmd_queue_comp)) { netdev_dbg(padapter->pnetdev, - FUNC_ADPT_FMT " wait_for_completion_interruptible(&pcmdpriv->cmd_qu= eue_comp) return !=3D 0, break\n", + FUNC_ADPT_FMT " cmd_queue_comp interrupted\n", FUNC_ADPT_ARG(padapter)); break; } @@ -727,31 +725,33 @@ u8 rtw_joinbss_cmd(struct adapter *padapter, struct = wlan_network *pnetwork) memcpy(&psecuritypriv->authenticator_ie[1], &psecnetwork->ies[12], (256-= 1)); =20 psecnetwork->ie_length =3D 0; - /* Added by Albert 2009/02/18 */ - /* If the driver wants to use the bssid to create the connection. */ - /* If not, we have to copy the connecting AP's MAC address to it so tha= t */ - /* the driver just has the bssid information for PMKIDList searching. */ =20 + /* If not using bssid, copy connecting AP's MAC for PMKIDList searching.= */ if (!pmlmepriv->assoc_by_bssid) - memcpy(&pmlmepriv->assoc_bssid[0], &pnetwork->network.mac_address[0], ET= H_ALEN); - - psecnetwork->ie_length =3D rtw_restruct_sec_ie(padapter, &pnetwork->netwo= rk.ies[0], &psecnetwork->ies[0], pnetwork->network.ie_length); + memcpy(pmlmepriv->assoc_bssid, pnetwork->network.mac_address, ETH_ALEN); =20 - pqospriv->qos_option =3D 0; - - if (pregistrypriv->wmm_enable) { - tmp_len =3D rtw_restruct_wmm_ie(padapter, &pnetwork->network.ies[0], &ps= ecnetwork->ies[0], pnetwork->network.ie_length, psecnetwork->ie_length); - - if (psecnetwork->ie_length !=3D tmp_len) { - psecnetwork->ie_length =3D tmp_len; - pqospriv->qos_option =3D 1; /* There is WMM IE in this corresp. beacon = */ - } else { - pqospriv->qos_option =3D 0;/* There is no WMM IE in this corresp. beaco= n */ + { + u8 *src_ie =3D pnetwork->network.ies; + u8 *dst_ie =3D psecnetwork->ies; + int src_len =3D pnetwork->network.ie_length; + + psecnetwork->ie_length =3D rtw_restruct_sec_ie(padapter, src_ie, + dst_ie, src_len); + + pqospriv->qos_option =3D 0; + if (pregistrypriv->wmm_enable) { + tmp_len =3D rtw_restruct_wmm_ie(padapter, src_ie, dst_ie, + src_len, psecnetwork->ie_length); + if (psecnetwork->ie_length !=3D tmp_len) { + psecnetwork->ie_length =3D tmp_len; + pqospriv->qos_option =3D 1; + } } - } =20 - phtpriv->ht_option =3D false; - ptmp =3D rtw_get_ie(&pnetwork->network.ies[12], WLAN_EID_HT_CAPABILITY, &= tmp_len, pnetwork->network.ie_length-12); + phtpriv->ht_option =3D false; + ptmp =3D rtw_get_ie(&src_ie[12], WLAN_EID_HT_CAPABILITY, + &tmp_len, src_len - 12); + } if (pregistrypriv->ht_enable && ptmp && tmp_len > 0) { /* Added by Albert 2010/06/23 */ /* For the WEP mode, we will use the bg mode to do the connection to avo= id some IOT issue. */ @@ -788,7 +788,8 @@ u8 rtw_joinbss_cmd(struct adapter *padapter, struct wl= an_network *pnetwork) return res; } =20 -u8 rtw_disassoc_cmd(struct adapter *padapter, u32 deauth_timeout_ms, bool = enqueue) /* for sta_mode */ +/* for sta_mode */ +u8 rtw_disassoc_cmd(struct adapter *padapter, u32 deauth_timeout_ms, bool = enqueue) { struct cmd_obj *cmdobj =3D NULL; struct disconnect_parm *param =3D NULL; @@ -824,10 +825,12 @@ u8 rtw_disassoc_cmd(struct adapter *padapter, u32 dea= uth_timeout_ms, bool enqueu return res; } =20 -u8 rtw_setopmode_cmd(struct adapter *padapter, enum ndis_802_11_network_i= nfrastructure networktype, bool enqueue) +u8 rtw_setopmode_cmd(struct adapter *padapter, + enum ndis_802_11_network_infrastructure networktype, + bool enqueue) { - struct cmd_obj *ph2c; - struct setopmode_parm *psetop; + struct cmd_obj *ph2c; + struct setopmode_parm *psetop; =20 struct cmd_priv *pcmdpriv =3D &padapter->cmdpriv; u8 res =3D _SUCCESS; @@ -881,10 +884,14 @@ u8 rtw_setstakey_cmd(struct adapter *padapter, struct= sta_info *sta, u8 unicast_ else GET_ENCRY_ALGO(psecuritypriv, sta, psetstakey_para->algorithm, false); =20 - if (unicast_key) + if (unicast_key) { memcpy(&psetstakey_para->key, &sta->dot118021x_UncstKey, 16); - else - memcpy(&psetstakey_para->key, &psecuritypriv->dot118021XGrpKey[psecurity= priv->dot118021XGrpKeyid].skey, 16); + } else { + u8 keyid =3D psecuritypriv->dot118021XGrpKeyid; + u8 *grpkey =3D psecuritypriv->dot118021XGrpKey[keyid].skey; + + memcpy(&psetstakey_para->key, grpkey, 16); + } =20 /* jeff: set this because at least sw key is ready */ padapter->securitypriv.busetkipkey =3D true; @@ -1105,22 +1112,23 @@ u8 rtw_dynamic_chk_wk_cmd(struct adapter *padapter) static void collect_traffic_statistics(struct adapter *padapter) { struct dvobj_priv *pdvobjpriv =3D adapter_to_dvobj(padapter); + struct rtw_traffic_statistics *stats =3D &pdvobjpriv->traffic_stat; =20 - /* Tx */ - pdvobjpriv->traffic_stat.tx_bytes =3D padapter->xmitpriv.tx_bytes; - pdvobjpriv->traffic_stat.tx_pkts =3D padapter->xmitpriv.tx_pkts; - pdvobjpriv->traffic_stat.tx_drop =3D padapter->xmitpriv.tx_drop; + /* Tx */ + stats->tx_bytes =3D padapter->xmitpriv.tx_bytes; + stats->tx_pkts =3D padapter->xmitpriv.tx_pkts; + stats->tx_drop =3D padapter->xmitpriv.tx_drop; =20 - /* Rx */ - pdvobjpriv->traffic_stat.rx_bytes =3D padapter->recvpriv.rx_bytes; - pdvobjpriv->traffic_stat.rx_pkts =3D padapter->recvpriv.rx_pkts; - pdvobjpriv->traffic_stat.rx_drop =3D padapter->recvpriv.rx_drop; + /* Rx */ + stats->rx_bytes =3D padapter->recvpriv.rx_bytes; + stats->rx_pkts =3D padapter->recvpriv.rx_pkts; + stats->rx_drop =3D padapter->recvpriv.rx_drop; =20 - /* Calculate throughput in last interval */ - pdvobjpriv->traffic_stat.cur_tx_bytes =3D pdvobjpriv->traffic_stat.tx_byt= es - pdvobjpriv->traffic_stat.last_tx_bytes; - pdvobjpriv->traffic_stat.cur_rx_bytes =3D pdvobjpriv->traffic_stat.rx_byt= es - pdvobjpriv->traffic_stat.last_rx_bytes; - pdvobjpriv->traffic_stat.last_tx_bytes =3D pdvobjpriv->traffic_stat.tx_by= tes; - pdvobjpriv->traffic_stat.last_rx_bytes =3D pdvobjpriv->traffic_stat.rx_by= tes; + /* Calculate throughput in last interval */ + stats->cur_tx_bytes =3D stats->tx_bytes - stats->last_tx_bytes; + stats->cur_rx_bytes =3D stats->rx_bytes - stats->last_rx_bytes; + stats->last_tx_bytes =3D stats->tx_bytes; + stats->last_rx_bytes =3D stats->rx_bytes; =20 pdvobjpriv->traffic_stat.cur_tx_tp =3D (u32)(pdvobjpriv->traffic_stat.cur= _tx_bytes * 8/2/1024/1024); pdvobjpriv->traffic_stat.cur_rx_tp =3D (u32)(pdvobjpriv->traffic_stat.cur= _rx_bytes * 8/2/1024/1024); @@ -1168,28 +1176,33 @@ u8 traffic_status_watchdog(struct adapter *padapter= , u8 from_timer) bHigherBusyTxTraffic =3D true; } =20 - /* check traffic for powersaving. */ - if (((pmlmepriv->LinkDetectInfo.NumRxUnicastOkInPeriod + pmlmepriv->Link= DetectInfo.NumTxOkInPeriod) > 8) || - (pmlmepriv->LinkDetectInfo.NumRxUnicastOkInPeriod > 2)) { - bEnterPS =3D false; + /* check traffic for powersaving */ + { + struct rt_link_detect_t *ldi =3D &pmlmepriv->LinkDetectInfo; + u32 total_ok =3D ldi->NumRxUnicastOkInPeriod + ldi->NumTxOkInPeriod; + bool has_traffic =3D (total_ok > 8) || (ldi->NumRxUnicastOkInPeriod > 2= ); =20 - if (bBusyTraffic) { - if (pmlmepriv->LinkDetectInfo.TrafficTransitionCount <=3D 4) - pmlmepriv->LinkDetectInfo.TrafficTransitionCount =3D 4; + if (has_traffic) { + bEnterPS =3D false; =20 - pmlmepriv->LinkDetectInfo.TrafficTransitionCount++; + if (bBusyTraffic) { + if (ldi->TrafficTransitionCount <=3D 4) + ldi->TrafficTransitionCount =3D 4; =20 - if (pmlmepriv->LinkDetectInfo.TrafficTransitionCount > 30/*TrafficTran= sitionLevel*/) - pmlmepriv->LinkDetectInfo.TrafficTransitionCount =3D 30; - } - } else { - if (pmlmepriv->LinkDetectInfo.TrafficTransitionCount >=3D 2) - pmlmepriv->LinkDetectInfo.TrafficTransitionCount -=3D 2; - else - pmlmepriv->LinkDetectInfo.TrafficTransitionCount =3D 0; + ldi->TrafficTransitionCount++; =20 - if (pmlmepriv->LinkDetectInfo.TrafficTransitionCount =3D=3D 0) - bEnterPS =3D true; + if (ldi->TrafficTransitionCount > 30) + ldi->TrafficTransitionCount =3D 30; + } + } else { + if (ldi->TrafficTransitionCount >=3D 2) + ldi->TrafficTransitionCount -=3D 2; + else + ldi->TrafficTransitionCount =3D 0; + + if (ldi->TrafficTransitionCount =3D=3D 0) + bEnterPS =3D true; + } } =20 /* LeisurePS only work in infra mode. */ @@ -1739,7 +1752,8 @@ u8 rtw_drvextra_cmd_hdl(struct adapter *padapter, uns= igned char *pbuf) pdrvextra_cmd =3D (struct drvextra_cmd_parm *)pbuf; =20 switch (pdrvextra_cmd->ec_id) { - case DYNAMIC_CHK_WK_CID:/* only primary padapter go to this cmd, but exe= cute dynamic_chk_wk_hdl() for two interfaces */ + /* only primary padapter goes to this cmd, but execute for two interfaces= */ + case DYNAMIC_CHK_WK_CID: dynamic_chk_wk_hdl(padapter); break; case POWER_SAVING_CTRL_WK_CID: diff --git a/drivers/staging/rtl8723bs/core/rtw_ieee80211.c b/drivers/stagi= ng/rtl8723bs/core/rtw_ieee80211.c index 8fdeeda88a6d..b7eab83989ca 100644 --- a/drivers/staging/rtl8723bs/core/rtw_ieee80211.c +++ b/drivers/staging/rtl8723bs/core/rtw_ieee80211.c @@ -333,11 +333,17 @@ int rtw_generate_ie(struct registry_priv *pregistrypr= iv) ie =3D rtw_set_ie(ie, WLAN_EID_DS_PARAMS, 1, (u8 *)&(pdev_network->config= uration.ds_config), &sz); =20 /* IBSS Parameter Set */ + { + u8 *atim =3D (u8 *)&pdev_network->configuration.atim_window; =20 - ie =3D rtw_set_ie(ie, WLAN_EID_IBSS_PARAMS, 2, (u8 *)&(pdev_network->conf= iguration.atim_window), &sz); + ie =3D rtw_set_ie(ie, WLAN_EID_IBSS_PARAMS, 2, atim, &sz); + } + + if (rateLen > 8) { + u8 *ext_rates =3D pdev_network->supported_rates + 8; =20 - if (rateLen > 8) - ie =3D rtw_set_ie(ie, WLAN_EID_EXT_SUPP_RATES, (rateLen - 8), (pdev_netw= ork->supported_rates + 8), &sz); + ie =3D rtw_set_ie(ie, WLAN_EID_EXT_SUPP_RATES, rateLen - 8, ext_rates, &= sz); + } =20 /* HT Cap. */ if ((pregistrypriv->wireless_mode & WIRELESS_11_24N) && @@ -437,7 +443,8 @@ int rtw_get_wpa2_cipher_suite(u8 *s) return 0; } =20 -int rtw_parse_wpa_ie(u8 *wpa_ie, int wpa_ie_len, int *group_cipher, int *p= airwise_cipher, int *is_8021x) +int rtw_parse_wpa_ie(u8 *wpa_ie, int wpa_ie_len, int *group_cipher, + int *pairwise_cipher, int *is_8021x) { int i, ret =3D _SUCCESS; int left, count; @@ -500,7 +507,8 @@ int rtw_parse_wpa_ie(u8 *wpa_ie, int wpa_ie_len, int *g= roup_cipher, int *pairwis return ret; } =20 -int rtw_parse_wpa2_ie(u8 *rsn_ie, int rsn_ie_len, int *group_cipher, int *= pairwise_cipher, int *is_8021x) +int rtw_parse_wpa2_ie(u8 *rsn_ie, int rsn_ie_len, int *group_cipher, + int *pairwise_cipher, int *is_8021x) { int i, ret =3D _SUCCESS; int left, count; @@ -738,7 +746,8 @@ u8 *rtw_get_wps_attr(u8 *wps_ie, uint wps_ielen, u16 ta= rget_attr_id, u8 *buf_att * * Returns: the address of the specific WPS attribute content found, or NU= LL */ -u8 *rtw_get_wps_attr_content(u8 *wps_ie, uint wps_ielen, u16 target_attr_i= d, u8 *buf_content, uint *len_content) +u8 *rtw_get_wps_attr_content(u8 *wps_ie, uint wps_ielen, u16 target_attr_i= d, + u8 *buf_content, uint *len_content) { u8 *attr_ptr; u32 attr_len; @@ -1019,7 +1028,11 @@ static int rtw_get_cipher_info(struct wlan_network *= pnetwork) pbuf =3D rtw_get_wpa2_ie(&pnetwork->network.ies[12], &wpa_ielen, pnetwor= k->network.ie_length-12); =20 if (pbuf && (wpa_ielen > 0)) { - if (_SUCCESS =3D=3D rtw_parse_wpa2_ie(pbuf, wpa_ielen+2, &group_cipher,= &pairwise_cipher, &is8021x)) { + int ret2 =3D rtw_parse_wpa2_ie(pbuf, wpa_ielen + 2, + &group_cipher, + &pairwise_cipher, + &is8021x); + if (ret2 =3D=3D _SUCCESS) { pnetwork->bcn_info.pairwise_cipher =3D pairwise_cipher; pnetwork->bcn_info.group_cipher =3D group_cipher; pnetwork->bcn_info.is_8021x =3D is8021x; @@ -1065,7 +1078,11 @@ void rtw_get_bcn_info(struct wlan_network *pnetwork) =20 /* get bwmode and ch_offset */ /* parsing HT_CAP_IE */ - p =3D rtw_get_ie(pnetwork->network.ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_C= APABILITY, &len, pnetwork->network.ie_length - _FIXED_IE_LENGTH_); + { + u8 *ies_start =3D pnetwork->network.ies + _FIXED_IE_LENGTH_; + uint ies_len =3D pnetwork->network.ie_length - _FIXED_IE_LENGTH_; + + p =3D rtw_get_ie(ies_start, WLAN_EID_HT_CAPABILITY, &len, ies_len); if (p && len > 0) { pht_cap =3D (struct ieee80211_ht_cap *)(p + 2); pnetwork->bcn_info.ht_cap_info =3D le16_to_cpu(pht_cap->cap_info); @@ -1073,7 +1090,8 @@ void rtw_get_bcn_info(struct wlan_network *pnetwork) pnetwork->bcn_info.ht_cap_info =3D 0; } /* parsing HT_INFO_IE */ - p =3D rtw_get_ie(pnetwork->network.ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_O= PERATION, &len, pnetwork->network.ie_length - _FIXED_IE_LENGTH_); + p =3D rtw_get_ie(ies_start, WLAN_EID_HT_OPERATION, &len, ies_len); + } if (p && len > 0) { pht_info =3D (struct HT_info_element *)(p + 2); pnetwork->bcn_info.ht_info_infos_0 =3D pht_info->infos[0]; diff --git a/drivers/staging/rtl8723bs/core/rtw_io.c b/drivers/staging/rtl8= 723bs/core/rtw_io.c index fe9f94001eed..9dd1b747acb9 100644 --- a/drivers/staging/rtl8723bs/core/rtw_io.c +++ b/drivers/staging/rtl8723bs/core/rtw_io.c @@ -115,7 +115,9 @@ u32 rtw_write_port(struct adapter *adapter, u32 addr, u= 32 cnt, u8 *pmem) return _write_port(pintfhdl, addr, cnt, pmem); } =20 -int rtw_init_io_priv(struct adapter *padapter, void (*set_intf_ops)(struct= adapter *padapter, struct _io_ops *pops)) +int rtw_init_io_priv(struct adapter *padapter, + void (*set_intf_ops)(struct adapter *padapter, + struct _io_ops *pops)) { struct io_priv *piopriv =3D &padapter->iopriv; struct intf_hdl *pintf =3D &piopriv->intf; diff --git a/drivers/staging/rtl8723bs/core/rtw_ioctl_set.c b/drivers/stagi= ng/rtl8723bs/core/rtw_ioctl_set.c index 587a87fbffeb..f16e94b28448 100644 --- a/drivers/staging/rtl8723bs/core/rtw_ioctl_set.c +++ b/drivers/staging/rtl8723bs/core/rtw_ioctl_set.c @@ -174,7 +174,11 @@ u8 rtw_set_802_11_ssid(struct adapter *padapter, struc= t ndis_802_11_ssid *ssid) set_fwstate(pmlmepriv, WIFI_ADHOC_STATE); } } else { - goto release_mlme_lock;/* it means driver is in WIFI_ADHOC_MASTER_STA= TE, we needn't create bss again. */ + /* + * already in WIFI_ADHOC_MASTER_STATE, + * no need to create bss again + */ + goto release_mlme_lock; } } else { rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_JOINBSS, 1); @@ -309,8 +313,9 @@ u8 rtw_set_802_11_infrastructure_mode(struct adapter *p= adapter, rtw_free_assoc_resources(padapter, 1); =20 if ((*pold_state =3D=3D Ndis802_11Infrastructure) || (*pold_state =3D=3D= Ndis802_11IBSS)) { + /* clr Linked_state; issue dis-assoc_cmd already checked above */ if (check_fwstate(pmlmepriv, _FW_LINKED) =3D=3D true) - rtw_indicate_disconnect(padapter); /* will clr Linked_state; before th= is function, we must have checked whether issue dis-assoc_cmd or not */ + rtw_indicate_disconnect(padapter); } =20 *pold_state =3D networktype; @@ -365,7 +370,9 @@ u8 rtw_set_802_11_disassociate(struct adapter *padapter) return true; } =20 -u8 rtw_set_802_11_bssid_list_scan(struct adapter *padapter, struct ndis_80= 2_11_ssid *pssid, int ssid_max_num) +u8 rtw_set_802_11_bssid_list_scan(struct adapter *padapter, + struct ndis_802_11_ssid *pssid, + int ssid_max_num) { struct mlme_priv *pmlmepriv =3D &padapter->mlmepriv; u8 res =3D true; @@ -399,7 +406,8 @@ u8 rtw_set_802_11_bssid_list_scan(struct adapter *padap= ter, struct ndis_802_11_s return res; } =20 -u8 rtw_set_802_11_authentication_mode(struct adapter *padapter, enum ndis_= 802_11_authentication_mode authmode) +u8 rtw_set_802_11_authentication_mode(struct adapter *padapter, + enum ndis_802_11_authentication_mode authmode) { struct security_priv *psecuritypriv =3D &padapter->securitypriv; int res; diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme.c b/drivers/staging/rt= l8723bs/core/rtw_mlme.c index 5e79a720710f..1e4414af2c88 100644 --- a/drivers/staging/rtl8723bs/core/rtw_mlme.c +++ b/drivers/staging/rtl8723bs/core/rtw_mlme.c @@ -52,7 +52,8 @@ int rtw_init_mlme_priv(struct adapter *padapter) pmlmepriv->pscanned =3D NULL; pmlmepriv->fw_state =3D WIFI_STATION_STATE; /* Must sync with rtw_wdev_a= lloc() */ pmlmepriv->cur_network.network.infrastructure_mode =3D Ndis802_11AutoUnkn= own; - pmlmepriv->scan_mode =3D SCAN_ACTIVE;/* 1: active, 0: passive. Maybe som= eday we should rename this varable to "active_mode" (Jeff) */ + /* 1: active, 0: passive. Maybe someday rename to "active_mode" */ + pmlmepriv->scan_mode =3D SCAN_ACTIVE; =20 spin_lock_init(&pmlmepriv->lock); INIT_LIST_HEAD(&pmlmepriv->free_bss_pool.queue); @@ -376,7 +377,8 @@ int is_same_network(struct wlan_bssid_ex *src, struct w= lan_bssid_ex *dst, u8 fea (d_cap & WLAN_CAPABILITY_ESS)); } =20 -struct wlan_network *_rtw_find_same_network(struct __queue *scanned_queue,= struct wlan_network *network) +struct wlan_network *_rtw_find_same_network(struct __queue *scanned_queue, + struct wlan_network *network) { struct list_head *phead, *plist; struct wlan_network *found =3D NULL; @@ -427,7 +429,8 @@ void update_network(struct wlan_bssid_ex *dst, struct w= lan_bssid_ex *src, long rssi_final; =20 /* The rule below is 1/5 for sample value, 4/5 for history value */ - if (check_fwstate(&padapter->mlmepriv, _FW_LINKED) && is_same_network(&pa= dapter->mlmepriv.cur_network.network, src, 0)) { + if (check_fwstate(&padapter->mlmepriv, _FW_LINKED) && + is_same_network(&padapter->mlmepriv.cur_network.network, src, 0)) { /* Take the recvpriv's value for the connected AP*/ ss_final =3D padapter->recvpriv.signal_strength; sq_final =3D padapter->recvpriv.signal_qual; @@ -469,10 +472,13 @@ static void update_current_network(struct adapter *ad= apter, struct wlan_bssid_ex &pmlmepriv->cur_network.network, &pmlmepriv->cur_network.network); =20 - if ((check_fwstate(pmlmepriv, _FW_LINKED) =3D=3D true) && (is_same_networ= k(&pmlmepriv->cur_network.network, pnetwork, 0))) { + if ((check_fwstate(pmlmepriv, _FW_LINKED) =3D=3D true) && + (is_same_network(&pmlmepriv->cur_network.network, pnetwork, 0))) { update_network(&pmlmepriv->cur_network.network, pnetwork, adapter, true); - rtw_update_protection(adapter, (pmlmepriv->cur_network.network.ies) + si= zeof(struct ndis_802_11_fix_ie), - pmlmepriv->cur_network.network.ie_length); + rtw_update_protection(adapter, + (pmlmepriv->cur_network.network.ies) + + sizeof(struct ndis_802_11_fix_ie), + pmlmepriv->cur_network.network.ie_length); } } =20 @@ -609,7 +615,10 @@ int rtw_is_desired_network(struct adapter *adapter, st= ruct wlan_network *pnetwor privacy =3D pnetwork->network.privacy; =20 if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) { - if (rtw_get_wps_ie(pnetwork->network.ies+_FIXED_IE_LENGTH_, pnetwork->ne= twork.ie_length-_FIXED_IE_LENGTH_, NULL, &wps_ielen)) + u8 *ies =3D pnetwork->network.ies + _FIXED_IE_LENGTH_; + uint ie_len =3D pnetwork->network.ie_length - _FIXED_IE_LENGTH_; + + if (rtw_get_wps_ie(ies, ie_len, NULL, &wps_ielen)) return true; else return false; @@ -617,12 +626,14 @@ int rtw_is_desired_network(struct adapter *adapter, s= truct wlan_network *pnetwor if (adapter->registrypriv.wifi_spec =3D=3D 1) { /* for correct flow of 8= 021X to do.... */ u8 *p =3D NULL; uint ie_len =3D 0; + u8 *ies =3D pnetwork->network.ies + _BEACON_IE_OFFSET_; + uint ies_len =3D pnetwork->network.ie_length - _BEACON_IE_OFFSET_; =20 if ((desired_encmode =3D=3D Ndis802_11EncryptionDisabled) && (privacy != =3D 0)) bselected =3D false; =20 if (psecuritypriv->ndisauthtype =3D=3D Ndis802_11AuthModeWPA2PSK) { - p =3D rtw_get_ie(pnetwork->network.ies + _BEACON_IE_OFFSET_, WLAN_EID_R= SN, &ie_len, (pnetwork->network.ie_length - _BEACON_IE_OFFSET_)); + p =3D rtw_get_ie(ies, WLAN_EID_RSN, &ie_len, ies_len); if (p && ie_len > 0) bselected =3D true; else @@ -968,7 +979,8 @@ void rtw_scan_abort(struct adapter *adapter) pmlmeext->scan_abort =3D false; } =20 -static struct sta_info *rtw_joinbss_update_stainfo(struct adapter *padapte= r, struct wlan_network *pnetwork) +static struct sta_info *rtw_joinbss_update_stainfo(struct adapter *padapte= r, + struct wlan_network *pnetwork) { int i; struct sta_info *bmc_sta, *psta =3D NULL; @@ -1052,7 +1064,9 @@ static struct sta_info *rtw_joinbss_update_stainfo(st= ruct adapter *padapter, str =20 /* pnetwork : returns from rtw_joinbss_event_callback */ /* ptarget_wlan: found from scanned_queue */ -static void rtw_joinbss_update_network(struct adapter *padapter, struct wl= an_network *ptarget_wlan, struct wlan_network *pnetwork) +static void rtw_joinbss_update_network(struct adapter *padapter, + struct wlan_network *ptarget_wlan, + struct wlan_network *pnetwork) { struct mlme_priv *pmlmepriv =3D &padapter->mlmepriv; struct wlan_network *cur_network =3D &pmlmepriv->cur_network; @@ -1070,7 +1084,8 @@ static void rtw_joinbss_update_network(struct adapter= *padapter, struct wlan_net padapter->recvpriv.signal_strength =3D ptarget_wlan->network.phy_info.sig= nal_strength; padapter->recvpriv.signal_qual =3D ptarget_wlan->network.phy_info.signal_= quality; /* the ptarget_wlan->network.rssi is raw data, we use ptarget_wlan->netwo= rk.phy_info.signal_strength instead (has scaled) */ - padapter->recvpriv.rssi =3D translate_percentage_to_dbm(ptarget_wlan->net= work.phy_info.signal_strength); + padapter->recvpriv.rssi =3D + translate_percentage_to_dbm(ptarget_wlan->network.phy_info.signal_streng= th); =20 rtw_set_signal_stat_timer(&padapter->recvpriv); =20 @@ -1095,7 +1110,9 @@ static void rtw_joinbss_update_network(struct adapter= *padapter, struct wlan_net rtw_update_protection(padapter, (cur_network->network.ies) + sizeof(struc= t ndis_802_11_fix_ie), (cur_network->network.ie_length)); =20 - rtw_update_ht_cap(padapter, cur_network->network.ies, cur_network->networ= k.ie_length, (u8) cur_network->network.configuration.ds_config); + rtw_update_ht_cap(padapter, cur_network->network.ies, + cur_network->network.ie_length, + (u8)cur_network->network.configuration.ds_config); } =20 static struct rt_pmkid_list backupPMKIDList[NUM_PMKID_CACHE]; @@ -1117,7 +1134,8 @@ void rtw_reset_securitypriv(struct adapter *adapter) /* Backup the btkip_countermeasure information. */ /* When the countermeasure is trigger, the driver have to disconnect wi= th AP for 60 seconds. */ =20 - memcpy(&backupPMKIDList[0], &adapter->securitypriv.PMKIDList[0], sizeof(= struct rt_pmkid_list) * NUM_PMKID_CACHE); + memcpy(&backupPMKIDList[0], &adapter->securitypriv.PMKIDList[0], + sizeof(struct rt_pmkid_list) * NUM_PMKID_CACHE); backupPMKIDIndex =3D adapter->securitypriv.PMKIDIndex; backupTKIPCountermeasure =3D adapter->securitypriv.btkip_countermeasure; backupTKIPcountermeasure_time =3D adapter->securitypriv.btkip_countermea= sure_time; @@ -1129,7 +1147,8 @@ void rtw_reset_securitypriv(struct adapter *adapter) =20 /* Added by Albert 2009/02/18 */ /* Restore the PMK information to securitypriv structure for the follow= ing connection. */ - memcpy(&adapter->securitypriv.PMKIDList[0], &backupPMKIDList[0], sizeof(= struct rt_pmkid_list) * NUM_PMKID_CACHE); + memcpy(&adapter->securitypriv.PMKIDList[0], &backupPMKIDList[0], + sizeof(struct rt_pmkid_list) * NUM_PMKID_CACHE); adapter->securitypriv.PMKIDIndex =3D backupPMKIDIndex; adapter->securitypriv.btkip_countermeasure =3D backupTKIPCountermeasure; adapter->securitypriv.btkip_countermeasure_time =3D backupTKIPcountermea= sure_time; @@ -1177,7 +1196,8 @@ void rtw_joinbss_event_prehandle(struct adapter *adap= ter, u8 *pbuf) struct wlan_network *pcur_wlan =3D NULL, *ptarget_wlan =3D NULL; unsigned int the_same_macaddr =3D false; =20 - the_same_macaddr =3D !memcmp(pnetwork->network.mac_address, cur_network->= network.mac_address, ETH_ALEN); + the_same_macaddr =3D !memcmp(pnetwork->network.mac_address, + cur_network->network.mac_address, ETH_ALEN); =20 pnetwork->network.length =3D get_wlan_bssid_ex_sz(&pnetwork->network); if (pnetwork->network.length > sizeof(struct wlan_bssid_ex)) @@ -1361,9 +1381,9 @@ void rtw_stassoc_event_callback(struct adapter *adapt= er, u8 *pbuf) /* for AD-HOC mode */ psta =3D rtw_get_stainfo(&adapter->stapriv, pstassoc->macaddr); if (psta) { - /* the sta have been in sta_info_queue =3D> do nothing */ - - return; /* between drv has received this event before and fw have not y= et to set key to CAM_ENTRY) */ + /* sta already in sta_info_queue, do nothing */ + /* drv received this event but fw hasn't set key to CAM_ENTRY yet */ + return; } =20 psta =3D rtw_alloc_stainfo(&adapter->stapriv, pstassoc->macaddr); @@ -1447,7 +1467,8 @@ void rtw_stadel_event_callback(struct adapter *adapte= r, u8 *pbuf) =20 if (adapter->registrypriv.wifi_spec =3D=3D 1) { roam =3D false; - } else if (reason =3D=3D WLAN_REASON_EXPIRATION_CHK && rtw_chk_roam_flag= s(adapter, RTW_ROAM_ON_EXPIRED)) { + } else if (reason =3D=3D WLAN_REASON_EXPIRATION_CHK && + rtw_chk_roam_flags(adapter, RTW_ROAM_ON_EXPIRED)) { roam =3D true; } else if (reason =3D=3D WLAN_REASON_ACTIVE_ROAM && rtw_chk_roam_flags(a= dapter, RTW_ROAM_ACTIVE)) { roam =3D true; @@ -1916,7 +1937,8 @@ signed int rtw_set_auth(struct adapter *adapter, stru= ct security_priv *psecurity return res; } =20 -signed int rtw_set_key(struct adapter *adapter, struct security_priv *psec= uritypriv, signed int keyid, u8 set_tx, bool enqueue) +signed int rtw_set_key(struct adapter *adapter, struct security_priv *psec= uritypriv, + signed int keyid, u8 set_tx, bool enqueue) { u8 keylen; struct cmd_obj *pcmd; @@ -1991,7 +2013,8 @@ signed int rtw_set_key(struct adapter *adapter, struc= t security_priv *psecurityp } =20 /* adjust ies for rtw_joinbss_cmd in WMM */ -int rtw_restruct_wmm_ie(struct adapter *adapter, u8 *in_ie, u8 *out_ie, ui= nt in_len, uint initial_out_len) +int rtw_restruct_wmm_ie(struct adapter *adapter, u8 *in_ie, u8 *out_ie, + uint in_len, uint initial_out_len) { unsigned int ielength =3D 0; unsigned int i, j; @@ -2021,7 +2044,7 @@ int rtw_restruct_wmm_ie(struct adapter *adapter, u8 *= in_ie, u8 *out_ie, uint in_ return ielength; } =20 -/* Ported from 8185: IsInPreAuthKeyList().=20 +/* Ported from 8185: IsInPreAuthKeyList(). * (Renamed from SecIsInPreAuthKeyList(), 2006-10-13.) * Added by Annie, 2006-05-07. * @@ -2302,7 +2325,9 @@ void rtw_build_wmm_ie_ht(struct adapter *padapter, u8= *out_ie, uint *pout_len) } =20 /* the function is >=3D passive_level */ -unsigned int rtw_restructure_ht_ie(struct adapter *padapter, u8 *in_ie, u8= *out_ie, uint in_len, uint *pout_len, u8 channel) +unsigned int rtw_restructure_ht_ie(struct adapter *padapter, u8 *in_ie, + u8 *out_ie, uint in_len, + uint *pout_len, u8 channel) { u32 ielen, out_len; enum ieee80211_max_ampdu_length_exp max_rx_ampdu_factor; @@ -2448,20 +2473,26 @@ void rtw_update_ht_cap(struct adapter *padapter, u8= *pie, uint ie_len, u8 channe phtpriv->ampdu_enable =3D true; =20 /* check Max Rx A-MPDU Size */ - len =3D 0; - p =3D rtw_get_ie(pie+sizeof(struct ndis_802_11_fix_ie), WLAN_EID_HT_CAPAB= ILITY, &len, ie_len-sizeof(struct ndis_802_11_fix_ie)); - if (p && len > 0) { - pht_capie =3D (struct ieee80211_ht_cap *)(p+2); - max_ampdu_sz =3D (pht_capie->ampdu_params_info & IEEE80211_HT_CAP_AMPDU_= FACTOR); - max_ampdu_sz =3D 1 << (max_ampdu_sz+3); /* max_ampdu_sz (kbytes); */ - - phtpriv->rx_ampdu_maxlen =3D max_ampdu_sz; - } + { + u8 *ies =3D pie + sizeof(struct ndis_802_11_fix_ie); + uint ies_len =3D ie_len - sizeof(struct ndis_802_11_fix_ie); + + len =3D 0; + p =3D rtw_get_ie(ies, WLAN_EID_HT_CAPABILITY, &len, ies_len); + if (p && len > 0) { + pht_capie =3D (struct ieee80211_ht_cap *)(p+2); + max_ampdu_sz =3D pht_capie->ampdu_params_info & + IEEE80211_HT_CAP_AMPDU_FACTOR; + max_ampdu_sz =3D 1 << (max_ampdu_sz+3); /* max_ampdu_sz (kbytes); */ + + phtpriv->rx_ampdu_maxlen =3D max_ampdu_sz; + } =20 - len =3D 0; - p =3D rtw_get_ie(pie+sizeof(struct ndis_802_11_fix_ie), WLAN_EID_HT_OPERA= TION, &len, ie_len-sizeof(struct ndis_802_11_fix_ie)); - if (p && len > 0) { - /* todo: */ + len =3D 0; + p =3D rtw_get_ie(ies, WLAN_EID_HT_OPERATION, &len, ies_len); + if (p && len > 0) { + /* todo: */ + } } =20 if ((pregistrypriv->bw_mode & 0x0f) > 0) diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/stagin= g/rtl8723bs/core/rtw_mlme_ext.c index 8297cf85eb7b..62411b204be9 100644 --- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c +++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c @@ -62,12 +62,14 @@ static unsigned char REALTEK_96B_IE[] =3D {0x00, 0xe0, = 0x4c, 0x02, 0x01, 0x20}; =20 /* ChannelPlan definitions */ static struct rt_channel_plan_2g RTW_ChannelPlan2G[RT_CHANNEL_DOMAIN_2G_MA= X] =3D { - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13}, /* 0x00, RT_CHANNEL_= DOMAIN_2G_WORLD , Passive scan CH 12, 13 */ + /* 0x00, RT_CHANNEL_DOMAIN_2G_WORLD, Passive scan CH 12, 13 */ + {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13}, {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13}, /* 0x01, RT_CHANNEL_= DOMAIN_2G_ETSI1 */ {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 11}, /* 0x02, RT_CHANNEL_DOMAIN_= 2G_FCC1 */ {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}, 14}, /* 0x03, RT_CHANN= EL_DOMAIN_2G_MIKK1 */ {{10, 11, 12, 13}, 4}, /* 0x04, RT_CHANNEL_DOMAIN_2G_ETSI2 */ - {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}, 14}, /* 0x05, RT_CHANN= EL_DOMAIN_2G_GLOBAL , Passive scan CH 12, 13, 14 */ + /* 0x05, RT_CHANNEL_DOMAIN_2G_GLOBAL, Passive scan CH 12, 13, 14 */ + {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}, 14}, {{}, 0}, /* 0x06, RT_CHANNEL_DOMAIN_2G_NULL */ }; =20 @@ -194,15 +196,24 @@ int init_hw_mlme_ext(struct adapter *padapter) void init_mlme_default_rate_set(struct adapter *padapter) { struct mlme_ext_priv *pmlmeext =3D &padapter->mlmeextpriv; - - unsigned char mixed_datarate[NumRates] =3D {_1M_RATE_, _2M_RATE_, _5M_RAT= E_, _11M_RATE_, _6M_RATE_, _9M_RATE_, _12M_RATE_, _18M_RATE_, _24M_RATE_, _= 36M_RATE_, _48M_RATE_, _54M_RATE_, 0xff}; - unsigned char mixed_basicrate[NumRates] =3D {_1M_RATE_, _2M_RATE_, _5M_RA= TE_, _11M_RATE_, _6M_RATE_, _12M_RATE_, _24M_RATE_, 0xff,}; - unsigned char supported_mcs_set[16] =3D {0xff, 0xff, 0x00, 0x00, 0x01, 0x= 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; + static const unsigned char mixed_datarate[NumRates] =3D { + _1M_RATE_, _2M_RATE_, _5M_RATE_, _11M_RATE_, + _6M_RATE_, _9M_RATE_, _12M_RATE_, _18M_RATE_, + _24M_RATE_, _36M_RATE_, _48M_RATE_, _54M_RATE_, 0xff + }; + static const unsigned char mixed_basicrate[NumRates] =3D { + _1M_RATE_, _2M_RATE_, _5M_RATE_, _11M_RATE_, + _6M_RATE_, _12M_RATE_, _24M_RATE_, 0xff + }; + static const unsigned char supported_mcs_set[16] =3D { + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; =20 memcpy(pmlmeext->datarate, mixed_datarate, NumRates); memcpy(pmlmeext->basicrate, mixed_basicrate, NumRates); - - memcpy(pmlmeext->default_supported_mcs_set, supported_mcs_set, sizeof(pml= meext->default_supported_mcs_set)); + memcpy(pmlmeext->default_supported_mcs_set, supported_mcs_set, + sizeof(pmlmeext->default_supported_mcs_set)); } =20 static void init_mlme_ext_priv_value(struct adapter *padapter) @@ -319,7 +330,8 @@ static void init_channel_list(struct adapter *padapter,= struct rt_channel_info * =20 } =20 -static u8 init_channel_set(struct adapter *padapter, u8 ChannelPlan, struc= t rt_channel_info *channel_set) +static u8 init_channel_set(struct adapter *padapter, u8 ChannelPlan, + struct rt_channel_info *channel_set) { u8 index, chanset_size =3D 0; u8 b2_4GBand =3D false; @@ -340,22 +352,27 @@ static u8 init_channel_set(struct adapter *padapter, = u8 ChannelPlan, struct rt_c =20 if (b2_4GBand) { for (index =3D 0; index < RTW_ChannelPlan2G[Index2G].Len; index++) { - channel_set[chanset_size].ChannelNum =3D RTW_ChannelPlan2G[Index2G].Cha= nnel[index]; - - if ((ChannelPlan =3D=3D RT_CHANNEL_DOMAIN_GLOBAL_DOAMIN) ||/* Channel 1= ~11 is active, and 12~14 is passive */ - (ChannelPlan =3D=3D RT_CHANNEL_DOMAIN_GLOBAL_NULL)) { - if (channel_set[chanset_size].ChannelNum >=3D 1 && channel_set[chanset= _size].ChannelNum <=3D 11) - channel_set[chanset_size].ScanType =3D SCAN_ACTIVE; - else if ((channel_set[chanset_size].ChannelNum >=3D 12 && channel_set= [chanset_size].ChannelNum <=3D 14)) - channel_set[chanset_size].ScanType =3D SCAN_PASSIVE; + struct rt_channel_info *ch =3D &channel_set[chanset_size]; + + ch->ChannelNum =3D RTW_ChannelPlan2G[Index2G].Channel[index]; + + if ((ChannelPlan =3D=3D RT_CHANNEL_DOMAIN_GLOBAL_DOAMIN) || + (ChannelPlan =3D=3D RT_CHANNEL_DOMAIN_GLOBAL_NULL)) { + /* Channel 1~11 active, 12~14 passive */ + if (ch->ChannelNum >=3D 1 && ch->ChannelNum <=3D 11) + ch->ScanType =3D SCAN_ACTIVE; + else if (ch->ChannelNum >=3D 12 && ch->ChannelNum <=3D 14) + ch->ScanType =3D SCAN_PASSIVE; } else if (ChannelPlan =3D=3D RT_CHANNEL_DOMAIN_WORLD_WIDE_13 || - Index2G =3D=3D RT_CHANNEL_DOMAIN_2G_WORLD) { /* channel 12~13, passi= ve scan */ - if (channel_set[chanset_size].ChannelNum <=3D 11) - channel_set[chanset_size].ScanType =3D SCAN_ACTIVE; + Index2G =3D=3D RT_CHANNEL_DOMAIN_2G_WORLD) { + /* channel 12~13, passive scan */ + if (ch->ChannelNum <=3D 11) + ch->ScanType =3D SCAN_ACTIVE; else - channel_set[chanset_size].ScanType =3D SCAN_PASSIVE; - } else - channel_set[chanset_size].ScanType =3D SCAN_ACTIVE; + ch->ScanType =3D SCAN_PASSIVE; + } else { + ch->ScanType =3D SCAN_ACTIVE; + } =20 chanset_size++; } @@ -391,8 +408,11 @@ void init_mlme_ext_priv(struct adapter *padapter) =20 init_mlme_ap_info(padapter); =20 - pmlmeext->max_chan_nums =3D init_channel_set(padapter, pmlmepriv->Channel= Plan, pmlmeext->channel_set); - init_channel_list(padapter, pmlmeext->channel_set, pmlmeext->max_chan_num= s, &pmlmeext->channel_list); + pmlmeext->max_chan_nums =3D init_channel_set(padapter, + pmlmepriv->ChannelPlan, + pmlmeext->channel_set); + init_channel_list(padapter, pmlmeext->channel_set, + pmlmeext->max_chan_nums, &pmlmeext->channel_list); pmlmeext->last_scan_time =3D 0; pmlmeext->chan_scan_time =3D SURVEY_TO; pmlmeext->mlmeext_init =3D true; @@ -417,7 +437,9 @@ void free_mlme_ext_priv(struct mlme_ext_priv *pmlmeext) } } =20 -static void _mgt_dispatcher(struct adapter *padapter, struct mlme_handler = *ptable, union recv_frame *precv_frame) +static void _mgt_dispatcher(struct adapter *padapter, + struct mlme_handler *ptable, + union recv_frame *precv_frame) { u8 *pframe =3D precv_frame->u.hdr.rx_data; =20 @@ -571,8 +593,10 @@ unsigned int OnBeacon(struct adapter *padapter, union = recv_frame *precv_frame) int ret =3D _SUCCESS; u8 *p =3D NULL; u32 ielen =3D 0; + u8 *ie_start =3D pframe + sizeof(struct ieee80211_hdr_3addr) + _BEACON_IE= _OFFSET_; + int ie_len =3D len - sizeof(struct ieee80211_hdr_3addr) - _BEACON_IE_OFFS= ET_; =20 - p =3D rtw_get_ie(pframe + sizeof(struct ieee80211_hdr_3addr) + _BEACON_IE= _OFFSET_, WLAN_EID_EXT_SUPP_RATES, &ielen, precv_frame->u.hdr.len - sizeof(= struct ieee80211_hdr_3addr) - _BEACON_IE_OFFSET_); + p =3D rtw_get_ie(ie_start, WLAN_EID_EXT_SUPP_RATES, &ielen, ie_len); if (p && ielen > 0) { if (p + 2 + ielen < pframe + len) { if ((*(p + 1 + ielen) =3D=3D 0x2D) && (*(p + 2 + ielen) !=3D 0x2D)) @@ -599,7 +623,12 @@ unsigned int OnBeacon(struct adapter *padapter, union = recv_frame *precv_frame) } =20 /* check the vendor of the assoc AP */ - pmlmeinfo->assoc_AP_vendor =3D check_assoc_AP(pframe+sizeof(struct ieee= 80211_hdr_3addr), len-sizeof(struct ieee80211_hdr_3addr)); + { + u8 *ap_ie =3D pframe + sizeof(struct ieee80211_hdr_3addr); + int ap_ie_len =3D len - sizeof(struct ieee80211_hdr_3addr); + + pmlmeinfo->assoc_AP_vendor =3D check_assoc_AP(ap_ie, ap_ie_len); + } =20 /* update TSF Value */ update_TSF(pmlmeext, pframe, len); @@ -618,7 +647,8 @@ unsigned int OnBeacon(struct adapter *padapter, union r= ecv_frame *precv_frame) return _SUCCESS; } =20 - if (((pmlmeinfo->state&0x03) =3D=3D WIFI_FW_STATION_STATE) && (pmlmeinfo= ->state & WIFI_FW_ASSOC_SUCCESS)) { + if ((pmlmeinfo->state & 0x03) =3D=3D WIFI_FW_STATION_STATE && + (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) { psta =3D rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe)); if (psta) { ret =3D rtw_check_bcn_info(padapter, pframe, len); @@ -650,9 +680,17 @@ unsigned int OnBeacon(struct adapter *padapter, union = recv_frame *precv_frame) goto _END_ONBEACON_; =20 /* get supported rate */ - if (update_sta_support_rate(padapter, (pframe + WLAN_HDR_A3_LEN + _BEA= CON_IE_OFFSET_), (len - WLAN_HDR_A3_LEN - _BEACON_IE_OFFSET_), cam_idx) =3D= =3D _FAIL) { - pmlmeinfo->FW_sta_info[cam_idx].status =3D 0; - goto _END_ONBEACON_; + { + u8 *rate_ie =3D pframe + WLAN_HDR_A3_LEN + _BEACON_IE_OFFSET_; + int rate_len =3D len - WLAN_HDR_A3_LEN - _BEACON_IE_OFFSET_; + int ret; + + ret =3D update_sta_support_rate(padapter, rate_ie, + rate_len, cam_idx); + if (ret =3D=3D _FAIL) { + pmlmeinfo->FW_sta_info[cam_idx].status =3D 0; + goto _END_ONBEACON_; + } } =20 /* update TSF Value */ @@ -800,9 +838,11 @@ unsigned int OnAuth(struct adapter *padapter, union re= cv_frame *precv_frame) pstat->state |=3D WIFI_FW_AUTH_STATE; pstat->authalg =3D algorithm; } else if (seq =3D=3D 3) { + u8 *auth_ie =3D pframe + WLAN_HDR_A3_LEN + 4 + _AUTH_IE_OFFSET_; + int auth_len =3D len - WLAN_HDR_A3_LEN - _AUTH_IE_OFFSET_ - 4; =20 - p =3D rtw_get_ie(pframe + WLAN_HDR_A3_LEN + 4 + _AUTH_IE_OFFSET_, WLAN_= EID_CHALLENGE, (int *)&ie_len, - len - WLAN_HDR_A3_LEN - _AUTH_IE_OFFSET_ - 4); + p =3D rtw_get_ie(auth_ie, WLAN_EID_CHALLENGE, (int *)&ie_len, + auth_len); =20 if (!p || ie_len <=3D 0) { status =3D WLAN_STATUS_CHALLENGE_FAIL; @@ -1021,7 +1061,12 @@ unsigned int OnAssocReq(struct adapter *padapter, un= ion recv_frame *precv_frame) goto OnAssocReqFail; =20 /* check if the supported rate is ok */ - p =3D rtw_get_ie(pframe + WLAN_HDR_A3_LEN + ie_offset, WLAN_EID_SUPP_RATE= S, &ie_len, pkt_len - WLAN_HDR_A3_LEN - ie_offset); + { + u8 *rate_ie =3D pframe + WLAN_HDR_A3_LEN + ie_offset; + int rate_ie_len =3D pkt_len - WLAN_HDR_A3_LEN - ie_offset; + + p =3D rtw_get_ie(rate_ie, WLAN_EID_SUPP_RATES, &ie_len, rate_ie_len); + } if (!p) { /* use our own rate set as statoin used */ /* memcpy(supportRate, AP_BSSRATE, AP_BSSRATE_LEN); */ @@ -1070,7 +1115,9 @@ unsigned int OnAssocReq(struct adapter *padapter, uni= on recv_frame *precv_frame) wpa_ie =3D elems.rsn_ie; wpa_ie_len =3D elems.rsn_ie_len; =20 - if (rtw_parse_wpa2_ie(wpa_ie-2, wpa_ie_len+2, &group_cipher, &pairwise_c= ipher, NULL) =3D=3D _SUCCESS) { + if (rtw_parse_wpa2_ie(wpa_ie - 2, wpa_ie_len + 2, + &group_cipher, &pairwise_cipher, + NULL) =3D=3D _SUCCESS) { pstat->dot8021xalg =3D 1;/* psk, todo:802.1x */ pstat->wpa_psk |=3D BIT(1); =20 @@ -1133,8 +1180,12 @@ unsigned int OnAssocReq(struct adapter *padapter, un= ion recv_frame *precv_frame) && (pstat->flags & (WLAN_STA_WPS|WLAN_STA_MAYBE_WPS))) { if (pmlmepriv->wps_beacon_ie) { u8 selected_registrar =3D 0; + u8 *wps_ie =3D pmlmepriv->wps_beacon_ie; + uint wps_len =3D pmlmepriv->wps_beacon_ie_len; =20 - rtw_get_wps_attr_content(pmlmepriv->wps_beacon_ie, pmlmepriv->wps_beac= on_ie_len, WPS_ATTR_SELECTED_REGISTRAR, &selected_registrar, NULL); + rtw_get_wps_attr_content(wps_ie, wps_len, + WPS_ATTR_SELECTED_REGISTRAR, + &selected_registrar, NULL); =20 if (!selected_registrar) { status =3D WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA; @@ -2156,11 +2207,18 @@ void issue_beacon(struct adapter *padapter, int tim= eout_ms) u8 *wps_ie; uint wps_ielen; u8 sr =3D 0; - - wps_ie =3D rtw_get_wps_ie(pmgntframe->buf_addr+TXDESC_OFFSET+sizeof(str= uct ieee80211_hdr_3addr)+_BEACON_IE_OFFSET_, - pattrib->pktlen-sizeof(struct ieee80211_hdr_3addr)-_BEACON_IE_OFFSET_,= NULL, &wps_ielen); + u8 *bcn_ie =3D pmgntframe->buf_addr + TXDESC_OFFSET + + sizeof(struct ieee80211_hdr_3addr) + + _BEACON_IE_OFFSET_; + int bcn_ie_len =3D pattrib->pktlen - + sizeof(struct ieee80211_hdr_3addr) - + _BEACON_IE_OFFSET_; + + wps_ie =3D rtw_get_wps_ie(bcn_ie, bcn_ie_len, NULL, &wps_ielen); if (wps_ie && wps_ielen > 0) - rtw_get_wps_attr_content(wps_ie, wps_ielen, WPS_ATTR_SELECTED_REGISTR= AR, (u8 *)(&sr), NULL); + rtw_get_wps_attr_content(wps_ie, wps_ielen, + WPS_ATTR_SELECTED_REGISTRAR, + &sr, NULL); if (sr !=3D 0) set_fwstate(pmlmepriv, WIFI_UNDER_WPS); else @@ -2191,33 +2249,47 @@ void issue_beacon(struct adapter *padapter, int tim= eout_ms) pframe +=3D 2; pattrib->pktlen +=3D 2; =20 - /* SSID */ - pframe =3D rtw_set_ie(pframe, WLAN_EID_SSID, cur_network->ssid.ssid_lengt= h, cur_network->ssid.ssid, &pattrib->pktlen); + { + u8 *ssid =3D cur_network->ssid.ssid; + int ssid_len =3D cur_network->ssid.ssid_length; + u8 *rates =3D cur_network->supported_rates; + u8 ds_cfg =3D cur_network->configuration.ds_config; =20 - /* supported rates... */ - rate_len =3D rtw_get_rateset_len(cur_network->supported_rates); - pframe =3D rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, ((rate_len > 8) ? 8 : = rate_len), cur_network->supported_rates, &pattrib->pktlen); + /* SSID */ + pframe =3D rtw_set_ie(pframe, WLAN_EID_SSID, ssid_len, ssid, + &pattrib->pktlen); =20 - /* DS parameter set */ - pframe =3D rtw_set_ie(pframe, WLAN_EID_DS_PARAMS, 1, (unsigned char *)&(c= ur_network->configuration.ds_config), &pattrib->pktlen); + /* supported rates */ + rate_len =3D rtw_get_rateset_len(rates); + pframe =3D rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, + min_t(int, rate_len, 8), rates, + &pattrib->pktlen); + + /* DS parameter set */ + pframe =3D rtw_set_ie(pframe, WLAN_EID_DS_PARAMS, 1, &ds_cfg, + &pattrib->pktlen); + } =20 - /* if ((pmlmeinfo->state&0x03) =3D=3D WIFI_FW_ADHOC_STATE) */ { u8 erpinfo =3D 0; - u32 ATIMWindow; - /* IBSS Parameter Set... */ - /* ATIMWindow =3D cur->configuration.ATIMWindow; */ - ATIMWindow =3D 0; - pframe =3D rtw_set_ie(pframe, WLAN_EID_IBSS_PARAMS, 2, (unsigned char *)= (&ATIMWindow), &pattrib->pktlen); + u32 ATIMWindow =3D 0; + + /* IBSS Parameter Set */ + pframe =3D rtw_set_ie(pframe, WLAN_EID_IBSS_PARAMS, 2, + (unsigned char *)&ATIMWindow, &pattrib->pktlen); =20 /* ERP IE */ - pframe =3D rtw_set_ie(pframe, WLAN_EID_ERP_INFO, 1, &erpinfo, &pattrib->= pktlen); + pframe =3D rtw_set_ie(pframe, WLAN_EID_ERP_INFO, 1, &erpinfo, + &pattrib->pktlen); } =20 + /* EXTENDED SUPPORTED RATE */ + if (rate_len > 8) { + u8 *ext_rates =3D cur_network->supported_rates + 8; =20 - /* EXTERNDED SUPPORTED RATE */ - if (rate_len > 8) - pframe =3D rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (rate_len - 8), (= cur_network->supported_rates + 8), &pattrib->pktlen); + pframe =3D rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, + rate_len - 8, ext_rates, &pattrib->pktlen); + } =20 =20 /* todo:HT for adhoc */ @@ -2296,7 +2368,10 @@ void issue_probersp(struct adapter *padapter, unsign= ed char *da, u8 is_valid_p2p return; =20 if ((pmlmeinfo->state&0x03) =3D=3D WIFI_FW_AP_STATE) { - pwps_ie =3D rtw_get_wps_ie(cur_network->ies+_FIXED_IE_LENGTH_, cur_netwo= rk->ie_length-_FIXED_IE_LENGTH_, NULL, &wps_ielen); + u8 *ie_ptr =3D cur_network->ies + _FIXED_IE_LENGTH_; + int ie_len =3D cur_network->ie_length - _FIXED_IE_LENGTH_; + + pwps_ie =3D rtw_get_wps_ie(ie_ptr, ie_len, NULL, &wps_ielen); =20 /* inerset & update wps_probe_resp_ie */ if (pmlmepriv->wps_probe_resp_ie && pwps_ie && wps_ielen > 0) { @@ -2392,33 +2467,49 @@ void issue_probersp(struct adapter *padapter, unsig= ned char *da, u8 is_valid_p2p pattrib->pktlen +=3D 2; =20 /* below for ad-hoc mode */ + { + u8 *ssid =3D cur_network->ssid.ssid; + int ssid_len =3D cur_network->ssid.ssid_length; + u8 *rates =3D cur_network->supported_rates; + u8 ds_cfg =3D cur_network->configuration.ds_config; + + /* SSID */ + pframe =3D rtw_set_ie(pframe, WLAN_EID_SSID, ssid_len, ssid, + &pattrib->pktlen); + + /* supported rates */ + rate_len =3D rtw_get_rateset_len(rates); + pframe =3D rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, + min_t(int, rate_len, 8), rates, + &pattrib->pktlen); + + /* DS parameter set */ + pframe =3D rtw_set_ie(pframe, WLAN_EID_DS_PARAMS, 1, &ds_cfg, + &pattrib->pktlen); + } =20 - /* SSID */ - pframe =3D rtw_set_ie(pframe, WLAN_EID_SSID, cur_network->ssid.ssid_leng= th, cur_network->ssid.ssid, &pattrib->pktlen); - - /* supported rates... */ - rate_len =3D rtw_get_rateset_len(cur_network->supported_rates); - pframe =3D rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, ((rate_len > 8) ? 8 := rate_len), cur_network->supported_rates, &pattrib->pktlen); - - /* DS parameter set */ - pframe =3D rtw_set_ie(pframe, WLAN_EID_DS_PARAMS, 1, (unsigned char *)&(= cur_network->configuration.ds_config), &pattrib->pktlen); - - if ((pmlmeinfo->state&0x03) =3D=3D WIFI_FW_ADHOC_STATE) { + if ((pmlmeinfo->state & 0x03) =3D=3D WIFI_FW_ADHOC_STATE) { u8 erpinfo =3D 0; - u32 ATIMWindow; - /* IBSS Parameter Set... */ - /* ATIMWindow =3D cur->configuration.ATIMWindow; */ - ATIMWindow =3D 0; - pframe =3D rtw_set_ie(pframe, WLAN_EID_IBSS_PARAMS, 2, (unsigned char *= )(&ATIMWindow), &pattrib->pktlen); + u32 ATIMWindow =3D 0; + + /* IBSS Parameter Set */ + pframe =3D rtw_set_ie(pframe, WLAN_EID_IBSS_PARAMS, 2, + (unsigned char *)&ATIMWindow, + &pattrib->pktlen); =20 /* ERP IE */ - pframe =3D rtw_set_ie(pframe, WLAN_EID_ERP_INFO, 1, &erpinfo, &pattrib-= >pktlen); + pframe =3D rtw_set_ie(pframe, WLAN_EID_ERP_INFO, 1, &erpinfo, + &pattrib->pktlen); } =20 + /* EXTENDED SUPPORTED RATE */ + if (rate_len > 8) { + u8 *ext_rates =3D cur_network->supported_rates + 8; =20 - /* EXTERNDED SUPPORTED RATE */ - if (rate_len > 8) - pframe =3D rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (rate_len - 8), = (cur_network->supported_rates + 8), &pattrib->pktlen); + pframe =3D rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, + rate_len - 8, ext_rates, + &pattrib->pktlen); + } =20 =20 /* todo:HT for adhoc */ @@ -2497,8 +2588,11 @@ static int _issue_probereq(struct adapter *padapter, get_rate_set(padapter, bssrate, &bssrate_len); =20 if (bssrate_len > 8) { - pframe =3D rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, 8, bssrate, &(pattrib= ->pktlen)); - pframe =3D rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (bssrate_len - 8)= , (bssrate + 8), &(pattrib->pktlen)); + pframe =3D rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, 8, bssrate, + &pattrib->pktlen); + pframe =3D rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, + bssrate_len - 8, bssrate + 8, + &pattrib->pktlen); } else { pframe =3D rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, bssrate_len, bssrate,= &(pattrib->pktlen)); } @@ -2533,8 +2627,8 @@ inline void issue_probereq(struct adapter *padapter, = struct ndis_802_11_ssid *ps _issue_probereq(padapter, pssid, da, 0, 1, false); } =20 -int issue_probereq_ex(struct adapter *padapter, struct ndis_802_11_ssid *p= ssid, u8 *da, u8 ch, bool append_wps, - int try_cnt, int wait_ms) +int issue_probereq_ex(struct adapter *padapter, struct ndis_802_11_ssid *p= ssid, + u8 *da, u8 ch, bool append_wps, int try_cnt, int wait_ms) { int ret; int i =3D 0; @@ -2641,14 +2735,16 @@ void issue_auth(struct adapter *padapter, struct st= a_info *psta, unsigned short memcpy(pwlanhdr->addr2, myid(&padapter->eeprompriv), ETH_ALEN); memcpy(pwlanhdr->addr3, get_my_bssid(&pmlmeinfo->network), ETH_ALEN); =20 - /* setting auth algo number */ - val16 =3D (pmlmeinfo->auth_algo =3D=3D dot11AuthAlgrthm_Shared) ? 1 : 0;= /* 0:OPEN System, 1:Shared key */ + /* setting auth algo number: 0=3DOPEN System, 1=3DShared key */ + val16 =3D (pmlmeinfo->auth_algo =3D=3D dot11AuthAlgrthm_Shared) ? 1 : 0; if (val16) use_shared_key =3D 1; le_tmp =3D cpu_to_le16(val16); =20 /* setting IV for auth seq #3 */ - if ((pmlmeinfo->auth_seq =3D=3D 3) && (pmlmeinfo->state & WIFI_FW_AUTH_S= TATE) && (use_shared_key =3D=3D 1)) { + if (pmlmeinfo->auth_seq =3D=3D 3 && + (pmlmeinfo->state & WIFI_FW_AUTH_STATE) && + use_shared_key =3D=3D 1) { __le32 le_tmp32; =20 val32 =3D ((pmlmeinfo->iv++) | (pmlmeinfo->key_index << 30)); @@ -2670,8 +2766,11 @@ void issue_auth(struct adapter *padapter, struct sta= _info *psta, unsigned short pframe =3D rtw_set_fixed_ie(pframe, _STATUS_CODE_, (unsigned char *)&le_= tmp, &(pattrib->pktlen)); =20 /* then checking to see if sending challenging text... */ - if ((pmlmeinfo->auth_seq =3D=3D 3) && (pmlmeinfo->state & WIFI_FW_AUTH_S= TATE) && (use_shared_key =3D=3D 1)) { - pframe =3D rtw_set_ie(pframe, WLAN_EID_CHALLENGE, 128, pmlmeinfo->chg_t= xt, &(pattrib->pktlen)); + if (pmlmeinfo->auth_seq =3D=3D 3 && + (pmlmeinfo->state & WIFI_FW_AUTH_STATE) && + use_shared_key =3D=3D 1) { + pframe =3D rtw_set_ie(pframe, WLAN_EID_CHALLENGE, 128, + pmlmeinfo->chg_txt, &pattrib->pktlen); =20 SetPrivacy(fctrl); =20 @@ -2694,7 +2793,8 @@ void issue_auth(struct adapter *padapter, struct sta_= info *psta, unsigned short } =20 =20 -void issue_asocrsp(struct adapter *padapter, unsigned short status, struct= sta_info *pstat, int pkt_type) +void issue_asocrsp(struct adapter *padapter, unsigned short status, + struct sta_info *pstat, int pkt_type) { struct xmit_frame *pmgntframe; struct ieee80211_hdr *pwlanhdr; @@ -2755,18 +2855,25 @@ void issue_asocrsp(struct adapter *padapter, unsign= ed short status, struct sta_i pframe =3D rtw_set_fixed_ie(pframe, _ASOC_ID_, (unsigned char *)&le_tmp, = &(pattrib->pktlen)); =20 if (pstat->bssratelen <=3D 8) { - pframe =3D rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, pstat->bssratelen, ps= tat->bssrateset, &(pattrib->pktlen)); + pframe =3D rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, + pstat->bssratelen, pstat->bssrateset, + &pattrib->pktlen); } else { - pframe =3D rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, 8, pstat->bssrateset,= &(pattrib->pktlen)); - pframe =3D rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (pstat->bssratele= n-8), pstat->bssrateset+8, &(pattrib->pktlen)); + pframe =3D rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, 8, + pstat->bssrateset, &pattrib->pktlen); + pframe =3D rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, + pstat->bssratelen - 8, pstat->bssrateset + 8, + &pattrib->pktlen); } =20 if ((pstat->flags & WLAN_STA_HT) && (pmlmepriv->htpriv.ht_option)) { uint ie_len =3D 0; + u8 *beacon_ie =3D ie + _BEACON_IE_OFFSET_; + int beacon_len =3D pnetwork->ie_length - _BEACON_IE_OFFSET_; =20 /* FILL HT CAP INFO IE */ - /* p =3D hostapd_eid_ht_capabilities_info(hapd, p); */ - pbuf =3D rtw_get_ie(ie + _BEACON_IE_OFFSET_, WLAN_EID_HT_CAPABILITY, &ie= _len, (pnetwork->ie_length - _BEACON_IE_OFFSET_)); + pbuf =3D rtw_get_ie(beacon_ie, WLAN_EID_HT_CAPABILITY, + &ie_len, beacon_len); if (pbuf && ie_len > 0) { memcpy(pframe, pbuf, ie_len+2); pframe +=3D (ie_len+2); @@ -2774,8 +2881,8 @@ void issue_asocrsp(struct adapter *padapter, unsigned= short status, struct sta_i } =20 /* FILL HT ADD INFO IE */ - /* p =3D hostapd_eid_ht_operation(hapd, p); */ - pbuf =3D rtw_get_ie(ie + _BEACON_IE_OFFSET_, WLAN_EID_HT_OPERATION, &ie_= len, (pnetwork->ie_length - _BEACON_IE_OFFSET_)); + pbuf =3D rtw_get_ie(beacon_ie, WLAN_EID_HT_OPERATION, + &ie_len, beacon_len); if (pbuf && ie_len > 0) { memcpy(pframe, pbuf, ie_len+2); pframe +=3D (ie_len+2); @@ -2790,7 +2897,10 @@ void issue_asocrsp(struct adapter *padapter, unsigne= d short status, struct sta_i unsigned char WMM_PARA_IE[] =3D {0x00, 0x50, 0xf2, 0x02, 0x01, 0x01}; =20 for (pbuf =3D ie + _BEACON_IE_OFFSET_; ; pbuf +=3D (ie_len + 2)) { - pbuf =3D rtw_get_ie(pbuf, WLAN_EID_VENDOR_SPECIFIC, &ie_len, (pnetwork-= >ie_length - _BEACON_IE_OFFSET_ - (ie_len + 2))); + int remaining =3D pnetwork->ie_length - _BEACON_IE_OFFSET_ - (ie_len + = 2); + + pbuf =3D rtw_get_ie(pbuf, WLAN_EID_VENDOR_SPECIFIC, + &ie_len, remaining); if (pbuf && !memcmp(pbuf+2, WMM_PARA_IE, 6)) { memcpy(pframe, pbuf, ie_len+2); pframe +=3D (ie_len+2); @@ -2880,7 +2990,13 @@ void issue_assocreq(struct adapter *padapter) pattrib->pktlen +=3D 2; =20 /* SSID */ - pframe =3D rtw_set_ie(pframe, WLAN_EID_SSID, pmlmeinfo->network.ssid.ssi= d_length, pmlmeinfo->network.ssid.ssid, &(pattrib->pktlen)); + { + u8 *ssid =3D pmlmeinfo->network.ssid.ssid; + int ssid_len =3D pmlmeinfo->network.ssid.ssid_length; + + pframe =3D rtw_set_ie(pframe, WLAN_EID_SSID, ssid_len, ssid, + &pattrib->pktlen); + } =20 /* supported rate & extended supported rate */ =20 @@ -2928,10 +3044,15 @@ void issue_assocreq(struct adapter *padapter) =20 =20 if (bssrate_len > 8) { - pframe =3D rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, 8, bssrate, &(pattrib= ->pktlen)); - pframe =3D rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (bssrate_len - 8)= , (bssrate + 8), &(pattrib->pktlen)); - } else - pframe =3D rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, bssrate_len, bssrate,= &(pattrib->pktlen)); + pframe =3D rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, 8, bssrate, + &pattrib->pktlen); + pframe =3D rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, + bssrate_len - 8, bssrate + 8, + &pattrib->pktlen); + } else { + pframe =3D rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, bssrate_len, + bssrate, &pattrib->pktlen); + } =20 /* vendor specific IE, such as WPA, WMM, WPS */ for (i =3D sizeof(struct ndis_802_11_fix_ie); i < pmlmeinfo->network.ie_l= ength;) { @@ -2953,7 +3074,9 @@ void issue_assocreq(struct adapter *padapter) vs_ie_length =3D 14; } =20 - pframe =3D rtw_set_ie(pframe, WLAN_EID_VENDOR_SPECIFIC, vs_ie_length, = pIE->data, &(pattrib->pktlen)); + pframe =3D rtw_set_ie(pframe, WLAN_EID_VENDOR_SPECIFIC, + vs_ie_length, pIE->data, + &pattrib->pktlen); } break; =20 @@ -2963,15 +3086,22 @@ void issue_assocreq(struct adapter *padapter) case WLAN_EID_HT_CAPABILITY: if (padapter->mlmepriv.htpriv.ht_option) { if (!(is_ap_in_tkip(padapter))) { - memcpy(&(pmlmeinfo->HT_caps), pIE->data, sizeof(struct HT_caps_elemen= t)); - pframe =3D rtw_set_ie(pframe, WLAN_EID_HT_CAPABILITY, pIE->length, (u= 8 *)(&(pmlmeinfo->HT_caps)), &(pattrib->pktlen)); + memcpy(&pmlmeinfo->HT_caps, pIE->data, + sizeof(struct HT_caps_element)); + pframe =3D rtw_set_ie(pframe, WLAN_EID_HT_CAPABILITY, + pIE->length, + (u8 *)&pmlmeinfo->HT_caps, + &pattrib->pktlen); } } break; =20 case WLAN_EID_EXT_CAPABILITY: - if (padapter->mlmepriv.htpriv.ht_option) - pframe =3D rtw_set_ie(pframe, WLAN_EID_EXT_CAPABILITY, pIE->length, pI= E->data, &(pattrib->pktlen)); + if (padapter->mlmepriv.htpriv.ht_option) { + pframe =3D rtw_set_ie(pframe, WLAN_EID_EXT_CAPABILITY, + pIE->length, pIE->data, + &pattrib->pktlen); + } break; default: break; @@ -3072,7 +3202,8 @@ static int _issue_nulldata(struct adapter *padapter, = unsigned char *da, * When wait_ms > 0, this function should be called at process context * da =3D=3D NULL for station mode */ -int issue_nulldata(struct adapter *padapter, unsigned char *da, unsigned i= nt power_mode, int try_cnt, int wait_ms) +int issue_nulldata(struct adapter *padapter, unsigned char *da, + unsigned int power_mode, int try_cnt, int wait_ms) { int ret; int i =3D 0; @@ -3217,7 +3348,8 @@ static int _issue_qos_nulldata(struct adapter *padapt= er, unsigned char *da, =20 /* when wait_ms >0 , this function should be called at process context */ /* da =3D=3D NULL for station mode */ -int issue_qos_nulldata(struct adapter *padapter, unsigned char *da, u16 ti= d, int try_cnt, int wait_ms) +int issue_qos_nulldata(struct adapter *padapter, unsigned char *da, u16 ti= d, + int try_cnt, int wait_ms) { int ret; int i =3D 0; @@ -3346,7 +3478,8 @@ int issue_deauth_ex(struct adapter *padapter, u8 *da,= unsigned short reason, int return ret; } =20 -void issue_action_SA_Query(struct adapter *padapter, unsigned char *raddr,= unsigned char action, unsigned short tid) +void issue_action_SA_Query(struct adapter *padapter, unsigned char *raddr, + unsigned char action, unsigned short tid) { u8 category =3D RTW_WLAN_CATEGORY_SA_QUERY; struct xmit_frame *pmgntframe; @@ -3413,7 +3546,8 @@ void issue_action_SA_Query(struct adapter *padapter, = unsigned char *raddr, unsig dump_mgntframe(padapter, pmgntframe); } =20 -void issue_action_BA(struct adapter *padapter, unsigned char *raddr, unsig= ned char action, unsigned short status) +void issue_action_BA(struct adapter *padapter, unsigned char *raddr, + unsigned char action, unsigned short status) { u8 category =3D RTW_WLAN_CATEGORY_BACK; u16 start_seq; @@ -3516,17 +3650,20 @@ void issue_action_BA(struct adapter *padapter, unsi= gned char *raddr, unsigned ch else rtw_hal_get_def_var(padapter, HW_VAR_MAX_RX_AMPDU_FACTOR, &max_rx_ampdu_factor); - - if (max_rx_ampdu_factor =3D=3D IEEE80211_HT_MAX_AMPDU_64K) - BA_para_set =3D ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f= ) | 0x1000); /* 64 buffer size */ - else if (max_rx_ampdu_factor =3D=3D IEEE80211_HT_MAX_AMPDU_32K) - BA_para_set =3D ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f= ) | 0x0800); /* 32 buffer size */ - else if (max_rx_ampdu_factor =3D=3D IEEE80211_HT_MAX_AMPDU_16K) - BA_para_set =3D ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f= ) | 0x0400); /* 16 buffer size */ - else if (max_rx_ampdu_factor =3D=3D IEEE80211_HT_MAX_AMPDU_8K) - BA_para_set =3D ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f= ) | 0x0200); /* 8 buffer size */ - else - BA_para_set =3D ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f= ) | 0x1000); /* 64 buffer size */ + { + u16 ba_mask =3D le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f; + + if (max_rx_ampdu_factor =3D=3D IEEE80211_HT_MAX_AMPDU_64K) + BA_para_set =3D ba_mask | 0x1000; /* 64 buffer size */ + else if (max_rx_ampdu_factor =3D=3D IEEE80211_HT_MAX_AMPDU_32K) + BA_para_set =3D ba_mask | 0x0800; /* 32 buffer size */ + else if (max_rx_ampdu_factor =3D=3D IEEE80211_HT_MAX_AMPDU_16K) + BA_para_set =3D ba_mask | 0x0400; /* 16 buffer size */ + else if (max_rx_ampdu_factor =3D=3D IEEE80211_HT_MAX_AMPDU_8K) + BA_para_set =3D ba_mask | 0x0200; /* 8 buffer size */ + else + BA_para_set =3D ba_mask | 0x1000; /* 64 buffer size */ + } =20 if (hal_btcoex_IsBTCoexCtrlAMPDUSize(padapter) && padapter->driver_rx_ampdu_factor =3D=3D 0xFF) { @@ -3542,8 +3679,16 @@ void issue_action_BA(struct adapter *padapter, unsig= ned char *raddr, unsigned ch else /* auto */ le_tmp =3D cpu_to_le16(BA_para_set); =20 - pframe =3D rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(le_tmp)), &(= pattrib->pktlen)); - pframe =3D rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(pmlmeinfo->A= DDBA_req.BA_timeout_value)), &(pattrib->pktlen)); + pframe =3D rtw_set_fixed_ie(pframe, 2, (unsigned char *)&le_tmp, + &pattrib->pktlen); + { + unsigned char *ba_timeout; + + ba_timeout =3D (unsigned char *) + &pmlmeinfo->ADDBA_req.BA_timeout_value; + pframe =3D rtw_set_fixed_ie(pframe, 2, ba_timeout, + &pattrib->pktlen); + } break; case 2:/* DELBA */ BA_para_set =3D (status & 0x1F) << 3; @@ -3657,7 +3802,13 @@ static void issue_action_BSSCoexistPacket(struct ada= pter *padapter) =20 pbss_network =3D (struct wlan_bssid_ex *)&pnetwork->network; =20 - p =3D rtw_get_ie(pbss_network->ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_CAP= ABILITY, &len, pbss_network->ie_length - _FIXED_IE_LENGTH_); + { + u8 *bss_ie =3D pbss_network->ies + _FIXED_IE_LENGTH_; + int bss_len =3D pbss_network->ie_length - _FIXED_IE_LENGTH_; + + p =3D rtw_get_ie(bss_ie, WLAN_EID_HT_CAPABILITY, + &len, bss_len); + } if (!p || len =3D=3D 0) {/* non-HT */ =20 if (pbss_network->configuration.ds_config <=3D 0) @@ -3692,7 +3843,9 @@ static void issue_action_BSSCoexistPacket(struct adap= ter *padapter) } } =20 - pframe =3D rtw_set_ie(pframe, WLAN_EID_BSS_INTOLERANT_CHL_REPORT, k, I= nfoContent, &(pattrib->pktlen)); + pframe =3D rtw_set_ie(pframe, + WLAN_EID_BSS_INTOLERANT_CHL_REPORT, + k, InfoContent, &pattrib->pktlen); =20 } =20 @@ -3762,9 +3915,12 @@ unsigned int send_beacon(struct adapter *padapter) cond_resched(); rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, (u8 *)(&bxmitok)); poll++; - } while ((poll%10) !=3D 0 && false =3D=3D bxmitok && !padapter->bSurpris= eRemoved && !padapter->bDriverStopped); + } while ((poll % 10) !=3D 0 && !bxmitok && + !padapter->bSurpriseRemoved && + !padapter->bDriverStopped); =20 - } while (false =3D=3D bxmitok && issue < 100 && !padapter->bSurpriseRemov= ed && !padapter->bDriverStopped); + } while (!bxmitok && issue < 100 && + !padapter->bSurpriseRemoved && !padapter->bDriverStopped); =20 if (padapter->bSurpriseRemoved || padapter->bDriverStopped) return _FAIL; @@ -3804,10 +3960,14 @@ void site_survey(struct adapter *padapter) if (pmlmeext->sitesurvey_res.channel_idx =3D=3D 0) { #ifdef DBG_FIXED_CHAN if (pmlmeext->fixed_chan !=3D 0xff) - set_channel_bwmode(padapter, pmlmeext->fixed_chan, HAL_PRIME_CHNL_OFFS= ET_DONT_CARE, CHANNEL_WIDTH_20); + set_channel_bwmode(padapter, pmlmeext->fixed_chan, + HAL_PRIME_CHNL_OFFSET_DONT_CARE, + CHANNEL_WIDTH_20); else #endif - set_channel_bwmode(padapter, survey_channel, HAL_PRIME_CHNL_OFFSET_DON= T_CARE, CHANNEL_WIDTH_20); + set_channel_bwmode(padapter, survey_channel, + HAL_PRIME_CHNL_OFFSET_DONT_CARE, + CHANNEL_WIDTH_20); } else { #ifdef DBG_FIXED_CHAN if (pmlmeext->fixed_chan !=3D 0xff) @@ -3856,7 +4016,9 @@ void site_survey(struct adapter *padapter) /* switch back to the original channel */ /* SelectChannel(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offs= et); */ =20 - set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_of= fset, pmlmeext->cur_bwmode); + set_channel_bwmode(padapter, pmlmeext->cur_channel, + pmlmeext->cur_ch_offset, + pmlmeext->cur_bwmode); =20 /* flush 4-AC Queue after site_survey */ /* val8 =3D 0; */ @@ -3893,7 +4055,8 @@ void site_survey(struct adapter *padapter) } =20 /* collect bss info from Beacon and Probe request/response frames. */ -u8 collect_bss_info(struct adapter *padapter, union recv_frame *precv_fram= e, struct wlan_bssid_ex *bssid) +u8 collect_bss_info(struct adapter *padapter, union recv_frame *precv_fram= e, + struct wlan_bssid_ex *bssid) { int i; u32 len; @@ -3940,9 +4103,13 @@ u8 collect_bss_info(struct adapter *padapter, union = recv_frame *precv_frame, str memcpy(bssid->ies, (pframe + sizeof(struct ieee80211_hdr_3addr)), bssid->= ie_length); =20 /* get the signal strength */ - bssid->rssi =3D precv_frame->u.hdr.attrib.phy_info.RecvSignalPower; /* i= n dBM.raw data */ - bssid->phy_info.signal_quality =3D precv_frame->u.hdr.attrib.phy_info.Sig= nalQuality;/* in percentage */ - bssid->phy_info.signal_strength =3D precv_frame->u.hdr.attrib.phy_info.Si= gnalStrength;/* in percentage */ + { + struct phy_info *phy =3D &precv_frame->u.hdr.attrib.phy_info; + + bssid->rssi =3D phy->RecvSignalPower; /* in dBM.raw data */ + bssid->phy_info.signal_quality =3D phy->SignalQuality; /* in percentage = */ + bssid->phy_info.signal_strength =3D phy->SignalStrength; /* in percentag= e */ + } =20 /* checking SSID */ p =3D rtw_get_ie(bssid->ies + ie_offset, WLAN_EID_SSID, &len, bssid->ie_l= ength - ie_offset); @@ -3971,7 +4138,8 @@ u8 collect_bss_info(struct adapter *padapter, union r= ecv_frame *precv_frame, str i =3D len; } =20 - p =3D rtw_get_ie(bssid->ies + ie_offset, WLAN_EID_EXT_SUPP_RATES, &len, b= ssid->ie_length - ie_offset); + p =3D rtw_get_ie(bssid->ies + ie_offset, WLAN_EID_EXT_SUPP_RATES, &len, + bssid->ie_length - ie_offset); if (p) { if (len > (NDIS_802_11_LENGTH_RATES_EX-i)) return _FAIL; @@ -4029,7 +4197,8 @@ u8 collect_bss_info(struct adapter *padapter, union r= ecv_frame *precv_frame, str if ((pregistrypriv->wifi_spec =3D=3D 1) && (false =3D=3D pmlmeinfo->bwmod= e_updated)) { struct mlme_priv *pmlmepriv =3D &padapter->mlmepriv; =20 - p =3D rtw_get_ie(bssid->ies + ie_offset, WLAN_EID_HT_CAPABILITY, &len, b= ssid->ie_length - ie_offset); + p =3D rtw_get_ie(bssid->ies + ie_offset, WLAN_EID_HT_CAPABILITY, &len, + bssid->ie_length - ie_offset); if (p && len > 0) { struct HT_caps_element *pHT_caps; =20 @@ -4073,8 +4242,8 @@ void start_create_ibss(struct adapter *padapter) rtw_hal_set_hwreg(padapter, HW_VAR_DO_IQK, NULL); =20 /* switch channel */ - /* SelectChannel(padapter, pmlmeext->cur_channel, HAL_PRIME_CHNL_OFFSET_= DONT_CARE); */ - set_channel_bwmode(padapter, pmlmeext->cur_channel, HAL_PRIME_CHNL_OFFSE= T_DONT_CARE, CHANNEL_WIDTH_20); + set_channel_bwmode(padapter, pmlmeext->cur_channel, + HAL_PRIME_CHNL_OFFSET_DONT_CARE, CHANNEL_WIDTH_20); =20 beacon_timing_control(padapter); =20 @@ -4202,7 +4371,8 @@ void start_clnt_assoc(struct adapter *padapter) set_link_timer(pmlmeext, REASSOC_TO); } =20 -unsigned int receive_disconnect(struct adapter *padapter, unsigned char *M= acAddr, unsigned short reason) +unsigned int receive_disconnect(struct adapter *padapter, unsigned char *M= acAddr, + unsigned short reason) { struct mlme_ext_priv *pmlmeext =3D &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo =3D &(pmlmeext->mlmext_info); @@ -4249,7 +4419,8 @@ static void process_80211d(struct adapter *padapter, = struct wlan_bssid_ex *bssid u8 noc; /* number of channel */ u8 j, k; =20 - ie =3D rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_COUNTRY, &len= , bssid->ie_length - _FIXED_IE_LENGTH_); + ie =3D rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_COUNTRY, &len, + bssid->ie_length - _FIXED_IE_LENGTH_); if (!ie) return; if (len < 6) @@ -4510,7 +4681,8 @@ void report_join_res(struct adapter *padapter, int re= s) pc2h_evt_hdr->seq =3D atomic_inc_return(&pmlmeext->event_seq); =20 pjoinbss_evt =3D (struct joinbss_event *)(pevtcmd + sizeof(struct C2HEven= t_Header)); - memcpy((unsigned char *)(&(pjoinbss_evt->network.network)), &(pmlmeinfo->= network), sizeof(struct wlan_bssid_ex)); + memcpy((unsigned char *)(&(pjoinbss_evt->network.network)), + &(pmlmeinfo->network), sizeof(struct wlan_bssid_ex)); pjoinbss_evt->network.join_res =3D pjoinbss_evt->network.aid =3D res; =20 =20 @@ -4680,7 +4852,9 @@ void update_sta_info(struct adapter *padapter, struct= sta_info *psta) =20 psta->htpriv.ampdu_enable =3D pmlmepriv->htpriv.ampdu_enable; =20 - psta->htpriv.rx_ampdu_min_spacing =3D (pmlmeinfo->HT_caps.u.HT_cap_eleme= nt.AMPDU_para&IEEE80211_HT_CAP_AMPDU_DENSITY)>>2; + psta->htpriv.rx_ampdu_min_spacing =3D + (pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & + IEEE80211_HT_CAP_AMPDU_DENSITY) >> 2; =20 if (support_short_GI(padapter, &(pmlmeinfo->HT_caps), CHANNEL_WIDTH_20)) psta->htpriv.sgi_20m =3D true; @@ -4895,7 +5069,9 @@ void mlmeext_sta_add_event_callback(struct adapter *p= adapter, struct sta_info *p rtw_hal_update_sta_rate_mask(padapter, psta); =20 /* ToDo: HT for Ad-hoc */ - psta->wireless_mode =3D rtw_check_network_type(psta->bssrateset, psta->bs= sratelen, pmlmeext->cur_channel); + psta->wireless_mode =3D rtw_check_network_type(psta->bssrateset, + psta->bssratelen, + pmlmeext->cur_channel); psta->raid =3D networktype_to_raid_ex(padapter, psta); =20 /* rate radaptive */ @@ -4989,9 +5165,14 @@ void linked_status_chk(struct adapter *padapter) { if (rx_chk !=3D _SUCCESS) { if (pmlmeext->retry =3D=3D 0) { - issue_probereq_ex(padapter, &pmlmeinfo->network.ssid, pmlmeinfo->net= work.mac_address, 0, 0, 0, 0); - issue_probereq_ex(padapter, &pmlmeinfo->network.ssid, pmlmeinfo->net= work.mac_address, 0, 0, 0, 0); - issue_probereq_ex(padapter, &pmlmeinfo->network.ssid, pmlmeinfo->net= work.mac_address, 0, 0, 0, 0); + struct ndis_802_11_ssid *ssid; + u8 *mac; + + ssid =3D &pmlmeinfo->network.ssid; + mac =3D pmlmeinfo->network.mac_address; + issue_probereq_ex(padapter, ssid, mac, 0, 0, 0, 0); + issue_probereq_ex(padapter, ssid, mac, 0, 0, 0, 0); + issue_probereq_ex(padapter, ssid, mac, 0, 0, 0, 0); } } =20 @@ -5409,9 +5590,12 @@ u8 disconnect_hdl(struct adapter *padapter, unsigned= char *pbuf) u8 val8; =20 if (is_client_associated_to_ap(padapter)) - issue_deauth_ex(padapter, pnetwork->mac_address, WLAN_REASON_DEAUTH_LEAV= ING, param->deauth_timeout_ms/100, 100); + issue_deauth_ex(padapter, pnetwork->mac_address, + WLAN_REASON_DEAUTH_LEAVING, + param->deauth_timeout_ms / 100, 100); =20 - if (((pmlmeinfo->state&0x03) =3D=3D WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->= state&0x03) =3D=3D WIFI_FW_AP_STATE)) { + if (((pmlmeinfo->state & 0x03) =3D=3D WIFI_FW_ADHOC_STATE) || + ((pmlmeinfo->state & 0x03) =3D=3D WIFI_FW_AP_STATE)) { /* Stop BCN */ val8 =3D 0; rtw_hal_set_hwreg(padapter, HW_VAR_BCN_FUNC, (u8 *)(&val8)); @@ -5529,7 +5713,8 @@ u8 sitesurvey_cmd_hdl(struct adapter *padapter, u8 *p= buf) } } =20 - if ((pmlmeext->sitesurvey_res.state =3D=3D SCAN_START) || (pmlmeext->site= survey_res.state =3D=3D SCAN_TXNULL)) { + if ((pmlmeext->sitesurvey_res.state =3D=3D SCAN_START) || + (pmlmeext->sitesurvey_res.state =3D=3D SCAN_TXNULL)) { /* disable dynamic functions, such as high power, DIG */ Save_DM_Func_Flag(padapter); Switch_DM_Func(padapter, DYNAMIC_FUNC_DISABLE, false); @@ -5936,8 +6121,11 @@ u8 set_chplan_hdl(struct adapter *padapter, unsigned= char *pbuf) =20 setChannelPlan_param =3D (struct SetChannelPlan_param *)pbuf; =20 - pmlmeext->max_chan_nums =3D init_channel_set(padapter, setChannelPlan_par= am->channel_plan, pmlmeext->channel_set); - init_channel_list(padapter, pmlmeext->channel_set, pmlmeext->max_chan_num= s, &pmlmeext->channel_list); + pmlmeext->max_chan_nums =3D init_channel_set(padapter, + setChannelPlan_param->channel_plan, + pmlmeext->channel_set); + init_channel_list(padapter, pmlmeext->channel_set, + pmlmeext->max_chan_nums, &pmlmeext->channel_list); =20 if (padapter->rtw_wdev && padapter->rtw_wdev->wiphy) { struct regulatory_request request; diff --git a/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c b/drivers/staging= /rtl8723bs/core/rtw_pwrctrl.c index 0ef788abf403..405df520e5cc 100644 --- a/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c +++ b/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c @@ -335,7 +335,8 @@ static u8 PS_RDY_CHECK(struct adapter *padapter) return true; } =20 -void rtw_set_ps_mode(struct adapter *padapter, u8 ps_mode, u8 smart_ps, u8= bcn_ant_mode, const char *msg) +void rtw_set_ps_mode(struct adapter *padapter, u8 ps_mode, u8 smart_ps, + u8 bcn_ant_mode, const char *msg) { struct pwrctrl_priv *pwrpriv =3D adapter_to_pwrctl(padapter); =20 diff --git a/drivers/staging/rtl8723bs/core/rtw_recv.c b/drivers/staging/rt= l8723bs/core/rtw_recv.c index e893cb6fa273..341ab6ff5a88 100644 --- a/drivers/staging/rtl8723bs/core/rtw_recv.c +++ b/drivers/staging/rtl8723bs/core/rtw_recv.c @@ -47,14 +47,23 @@ signed int _rtw_init_recv_priv(struct recv_priv *precvp= riv, struct adapter *pada =20 precvpriv->free_recvframe_cnt =3D NR_RECVFRAME; =20 - precvpriv->pallocated_frame_buf =3D vzalloc(NR_RECVFRAME * sizeof(union r= ecv_frame) + RXFRAME_ALIGN_SZ); + { + size_t sz =3D NR_RECVFRAME * sizeof(union recv_frame) + RXFRAME_ALIGN_SZ; + + precvpriv->pallocated_frame_buf =3D vzalloc(sz); + } =20 if (!precvpriv->pallocated_frame_buf) { res =3D _FAIL; goto exit; } =20 - precvpriv->precv_frame_buf =3D (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(precvpriv= ->pallocated_frame_buf), RXFRAME_ALIGN_SZ); + { + SIZE_PTR aligned =3D N_BYTE_ALIGMENT((SIZE_PTR)(precvpriv->pallocated_fr= ame_buf), + RXFRAME_ALIGN_SZ); + + precvpriv->precv_frame_buf =3D (u8 *)aligned; + } /* precvpriv->precv_frame_buf =3D precvpriv->pallocated_frame_buf + RXFRA= ME_ALIGN_SZ - */ /* ((SIZE_PTR) (precvpriv->pallocated_frame_buf) &(RXFRAME_ALIGN_SZ-1)); = */ =20 @@ -390,11 +399,15 @@ static signed int recvframe_chkmic(struct adapter *ad= apter, union recv_frame *p mickey =3D &stainfo->dot11tkiprxmickey.skey[0]; } =20 - datalen =3D precvframe->u.hdr.len-prxattrib->hdrlen-prxattrib->iv_len-p= rxattrib->icv_len-8;/* icv_len included the mic code */ + /* icv_len included the mic code */ + datalen =3D precvframe->u.hdr.len - prxattrib->hdrlen - + prxattrib->iv_len - prxattrib->icv_len - 8; pframe =3D precvframe->u.hdr.rx_data; - payload =3D pframe+prxattrib->hdrlen+prxattrib->iv_len; + payload =3D pframe + prxattrib->hdrlen + prxattrib->iv_len; =20 - rtw_seccalctkipmic(mickey, pframe, payload, datalen, &miccode[0], (unsi= gned char)prxattrib->priority); /* care the length of the data */ + /* care the length of the data */ + rtw_seccalctkipmic(mickey, pframe, payload, datalen, + &miccode[0], (unsigned char)prxattrib->priority); =20 pframemic =3D payload+datalen; =20 @@ -409,7 +422,10 @@ static signed int recvframe_chkmic(struct adapter *ada= pter, union recv_frame *p if (bmic_err =3D=3D true) { /* double check key_index for some timing issue , */ /* cannot compare with psecuritypriv->dot118021XGrpKeyid also cause t= iming issue */ - if ((is_multicast_ether_addr(prxattrib->ra) =3D=3D true) && (prxattri= b->key_index !=3D pmlmeinfo->key_index)) + bool is_mcast =3D is_multicast_ether_addr(prxattrib->ra); + bool key_mismatch =3D prxattrib->key_index !=3D pmlmeinfo->key_index; + + if (is_mcast && key_mismatch) brpt_micerror =3D false; =20 if (prxattrib->bdecrypted && brpt_micerror) @@ -463,28 +479,37 @@ static union recv_frame *decryptor(struct adapter *pa= dapter, union recv_frame *p } } =20 - if ((prxattrib->encrypt > 0) && ((prxattrib->bdecrypted =3D=3D 0) || (pse= curitypriv->sw_decrypt =3D=3D true))) { - psecuritypriv->hw_decrypted =3D false; + { + bool need_decrypt =3D prxattrib->encrypt > 0; + bool not_decrypted =3D !prxattrib->bdecrypted; + bool sw_decrypt =3D psecuritypriv->sw_decrypt; + bool decrypted_ok; =20 - switch (prxattrib->encrypt) { - case _WEP40_: - case _WEP104_: - rtw_wep_decrypt(padapter, (u8 *)precv_frame); - break; - case _TKIP_: - res =3D rtw_tkip_decrypt(padapter, (u8 *)precv_frame); - break; - case _AES_: - res =3D rtw_aes_decrypt(padapter, (u8 *)precv_frame); - break; - default: + if (need_decrypt && (not_decrypted || sw_decrypt)) { + psecuritypriv->hw_decrypted =3D false; + + switch (prxattrib->encrypt) { + case _WEP40_: + case _WEP104_: + rtw_wep_decrypt(padapter, (u8 *)precv_frame); + break; + case _TKIP_: + res =3D rtw_tkip_decrypt(padapter, (u8 *)precv_frame); + break; + case _AES_: + res =3D rtw_aes_decrypt(padapter, (u8 *)precv_frame); + break; + default: break; + } + } else { + decrypted_ok =3D prxattrib->bdecrypted =3D=3D 1 && + prxattrib->encrypt > 0 && + (psecuritypriv->busetkipkey =3D=3D 1 || + prxattrib->encrypt !=3D _TKIP_); + if (decrypted_ok) + psecuritypriv->hw_decrypted =3D true; } - } else if (prxattrib->bdecrypted =3D=3D 1 && prxattrib->encrypt > 0 && - (psecuritypriv->busetkipkey =3D=3D 1 || prxattrib->encrypt !=3D _TKIP= _) - ) { - psecuritypriv->hw_decrypted =3D true; - } else { } =20 if (res =3D=3D _FAIL) { @@ -564,7 +589,8 @@ static union recv_frame *portctrl(struct adapter *adapt= er, union recv_frame *pre return prtnframe; } =20 -static signed int recv_decache(union recv_frame *precv_frame, u8 bretry, s= truct stainfo_rxcache *prxcache) +static signed int recv_decache(union recv_frame *precv_frame, u8 bretry, + struct stainfo_rxcache *prxcache) { signed int tid =3D precv_frame->u.hdr.attrib.priority; =20 @@ -669,7 +695,8 @@ static void process_wmmps_data(struct adapter *padapter= , union recv_frame *precv } } =20 -static void count_rx_stats(struct adapter *padapter, union recv_frame *prf= rame, struct sta_info *sta) +static void count_rx_stats(struct adapter *padapter, union recv_frame *prf= rame, + struct sta_info *sta) { int sz; struct sta_info *psta =3D NULL; @@ -1149,7 +1176,8 @@ static union recv_frame *recvframe_defrag(struct adap= ter *adapter, } =20 /* check if need to defrag, if needed queue the frame to defrag_q */ -static union recv_frame *recvframe_chk_defrag(struct adapter *padapter, un= ion recv_frame *precv_frame) +static union recv_frame *recvframe_chk_defrag(struct adapter *padapter, + union recv_frame *precv_frame) { u8 ismfrag; u8 fragnum; @@ -1257,7 +1285,8 @@ static signed int validate_recv_mgnt_frame(struct ada= pter *padapter, union recv_ =20 { /* for rx pkt statistics */ - struct sta_info *psta =3D rtw_get_stainfo(&padapter->stapriv, GetAddr2Pt= r(precv_frame->u.hdr.rx_data)); + u8 *addr2 =3D GetAddr2Ptr(precv_frame->u.hdr.rx_data); + struct sta_info *psta =3D rtw_get_stainfo(&padapter->stapriv, addr2); =20 if (psta) { psta->sta_stats.rx_mgnt_pkts++; @@ -1622,7 +1651,8 @@ static signed int wlanhdr_to_ethhdr(union recv_frame = *precvframe) return _SUCCESS; } =20 -static struct sk_buff *rtw_alloc_msdu_pkt(union recv_frame *prframe, u16 n= Subframe_Length, u8 *pdata) +static struct sk_buff *rtw_alloc_msdu_pkt(union recv_frame *prframe, + u16 nSubframe_Length, u8 *pdata) { u16 eth_type; struct sk_buff *sub_skb; @@ -1662,7 +1692,8 @@ static struct sk_buff *rtw_alloc_msdu_pkt(union recv_= frame *prframe, u16 nSubfra return sub_skb; } =20 -static void rtw_recv_indicate_pkt(struct adapter *padapter, struct sk_buff= *pkt, struct rx_pkt_attrib *pattrib) +static void rtw_recv_indicate_pkt(struct adapter *padapter, struct sk_buff= *pkt, + struct rx_pkt_attrib *pattrib) { struct mlme_priv *pmlmepriv =3D &padapter->mlmepriv; =20 @@ -1816,7 +1847,8 @@ static int check_indicate_seq(struct recv_reorder_ctr= l *preorder_ctrl, u16 seq_n return true; } =20 -static int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ct= rl, union recv_frame *prframe) +static int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ct= rl, + union recv_frame *prframe) { struct rx_pkt_attrib *pattrib =3D &prframe->u.hdr.attrib; struct __queue *ppending_recvframe_queue =3D &preorder_ctrl->pending_recv= frame_queue; @@ -1861,7 +1893,8 @@ static int enqueue_reorder_recvframe(struct recv_reor= der_ctrl *preorder_ctrl, un =20 } =20 -static void recv_indicatepkts_pkt_loss_cnt(struct debug_priv *pdbgpriv, u6= 4 prev_seq, u64 current_seq) +static void recv_indicatepkts_pkt_loss_cnt(struct debug_priv *pdbgpriv, + u64 prev_seq, u64 current_seq) { if (current_seq < prev_seq) pdbgpriv->dbg_rx_ampdu_loss_count +=3D (4096 + current_seq - prev_seq); @@ -1907,7 +1940,9 @@ static int rtw_recv_indicatepkt(struct adapter *padap= ter, union recv_frame *prec return _FAIL; } =20 -static int recv_indicatepkts_in_order(struct adapter *padapter, struct rec= v_reorder_ctrl *preorder_ctrl, int bforced) +static int recv_indicatepkts_in_order(struct adapter *padapter, + struct recv_reorder_ctrl *preorder_ctrl, + int bforced) { struct list_head *phead, *plist; union recv_frame *prframe; @@ -2118,7 +2153,8 @@ static int process_recv_indicatepkts(struct adapter *= padapter, union recv_frame if (phtpriv->ht_option =3D=3D true) { /* B/G/N Mode */ /* prframe->u.hdr.preorder_ctrl =3D &precvpriv->recvreorder_ctrl[pattrib= ->priority]; */ =20 - if (recv_indicatepkt_reorder(padapter, prframe) !=3D _SUCCESS) { /* inc= luding perform A-MPDU Rx Ordering Buffer Control */ + /* including perform A-MPDU Rx Ordering Buffer Control */ + if (recv_indicatepkt_reorder(padapter, prframe) !=3D _SUCCESS) { =20 if ((padapter->bDriverStopped =3D=3D false) && (padapter->bSurpriseRemoved =3D=3D false)) { @@ -2277,12 +2313,15 @@ static void rtw_signal_stat_timer_hdl(struct timer_= list *t) u8 avg_signal_qual =3D 0; u32 num_signal_strength =3D 0; u32 __maybe_unused num_signal_qual =3D 0; - u8 _alpha =3D 5; /* this value is based on converging_constant =3D 5000 = and sampling_interval =3D 1000 */ + /* based on converging_constant =3D 5000 and sampling_interval =3D 1000 */ + u8 _alpha =3D 5; =20 if (adapter->recvpriv.is_signal_dbg) { /* update the user specific value, signal_strength_dbg, to signal_streng= th, rssi */ - adapter->recvpriv.signal_strength =3D adapter->recvpriv.signal_strength_= dbg; - adapter->recvpriv.rssi =3D (s8)translate_percentage_to_dbm((u8)adapter->= recvpriv.signal_strength_dbg); + u8 strength_dbg =3D adapter->recvpriv.signal_strength_dbg; + + adapter->recvpriv.signal_strength =3D strength_dbg; + adapter->recvpriv.rssi =3D (s8)translate_percentage_to_dbm(strength_dbg); } else { =20 if (recvpriv->signal_strength_data.update_req =3D=3D 0) {/* update_req = is clear, means we got rx */ @@ -2300,9 +2339,11 @@ static void rtw_signal_stat_timer_hdl(struct timer_l= ist *t) } =20 if (num_signal_strength =3D=3D 0) { - if (rtw_get_on_cur_ch_time(adapter) =3D=3D 0 || - jiffies_to_msecs(jiffies - rtw_get_on_cur_ch_time(adapter)) < 2 * a= dapter->mlmeextpriv.mlmext_info.bcn_interval - ) { + unsigned long on_ch_time =3D rtw_get_on_cur_ch_time(adapter); + u32 bcn_intvl =3D adapter->mlmeextpriv.mlmext_info.bcn_interval; + + if (on_ch_time =3D=3D 0 || + jiffies_to_msecs(jiffies - on_ch_time) < 2 * bcn_intvl) { goto set_timer; } } diff --git a/drivers/staging/rtl8723bs/core/rtw_security.c b/drivers/stagin= g/rtl8723bs/core/rtw_security.c index 2f941ffbd465..11231f0d8fd0 100644 --- a/drivers/staging/rtl8723bs/core/rtw_security.c +++ b/drivers/staging/rtl8723bs/core/rtw_security.c @@ -60,9 +60,12 @@ void rtw_wep_encrypt(struct adapter *padapter, u8 *pxmit= frame) keylength =3D psecuritypriv->dot11DefKeylen[psecuritypriv->dot11PrivacyK= eyIndex]; =20 for (curfragnum =3D 0; curfragnum < pattrib->nr_frags; curfragnum++) { + u8 keyidx =3D psecuritypriv->dot11PrivacyKeyIndex; + u8 *defkey =3D psecuritypriv->dot11DefKey[keyidx].skey; + iv =3D pframe + pattrib->hdrlen; memcpy(&wepkey[0], iv, 3); - memcpy(&wepkey[3], &psecuritypriv->dot11DefKey[psecuritypriv->dot11Priv= acyKeyIndex].skey[0], keylength); + memcpy(&wepkey[3], defkey, keylength); payload =3D pframe + pattrib->iv_len + pattrib->hdrlen; =20 if ((curfragnum + 1) =3D=3D pattrib->nr_frags) { /* the last fragment */ @@ -1063,7 +1066,8 @@ static signed int aes_decipher(u8 *key, uint hdrlen, if (hdrlen !=3D WLAN_HDR_A3_QOS_LEN) hdrlen +=3D 2; =20 - } else if ((frtype =3D=3D WIFI_DATA) && /* only for data packet . add for= CONFIG_IEEE80211W, none 11w also can use */ + /* only for data packet . add for CONFIG_IEEE80211W, none 11w also can us= e */ + } else if ((frtype =3D=3D WIFI_DATA) && ((frsubtype =3D=3D 0x08) || (frsubtype =3D=3D 0x09) || (frsubtype =3D=3D 0x0a) || @@ -1487,8 +1491,9 @@ void rtw_sec_restore_wep_key(struct adapter *adapter) { struct security_priv *securitypriv =3D &(adapter->securitypriv); signed int keyid; + u32 alg =3D securitypriv->dot11PrivacyAlgrthm; =20 - if ((_WEP40_ =3D=3D securitypriv->dot11PrivacyAlgrthm) || (_WEP104_ =3D= =3D securitypriv->dot11PrivacyAlgrthm)) { + if ((alg =3D=3D _WEP40_) || (alg =3D=3D _WEP104_)) { for (keyid =3D 0; keyid < 4; keyid++) { if (securitypriv->key_mask & BIT(keyid)) { if (keyid =3D=3D securitypriv->dot11PrivacyKeyIndex) diff --git a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c b/drivers/stagi= ng/rtl8723bs/core/rtw_wlan_util.c index 3f71e62d0198..6b1377dc5fec 100644 --- a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c +++ b/drivers/staging/rtl8723bs/core/rtw_wlan_util.c @@ -335,7 +335,8 @@ void r8723bs_select_channel(struct adapter *padapter, u= nsigned char channel) mutex_unlock(&(adapter_to_dvobj(padapter)->setch_mutex)); } =20 -void set_channel_bwmode(struct adapter *padapter, unsigned char channel, u= nsigned char channel_offset, unsigned short bwmode) +void set_channel_bwmode(struct adapter *padapter, unsigned char channel, + unsigned char channel_offset, unsigned short bwmode) { u8 center_ch, chnl_offset80 =3D HAL_PRIME_CHNL_OFFSET_DONT_CARE; =20 @@ -351,7 +352,9 @@ void set_channel_bwmode(struct adapter *padapter, unsig= ned char channel, unsigne rtw_set_oper_bw(padapter, bwmode); rtw_set_oper_choffset(padapter, channel_offset); =20 - rtw_hal_set_chnl_bw(padapter, center_ch, bwmode, channel_offset, chnl_off= set80); /* set center channel */ + /* set center channel */ + rtw_hal_set_chnl_bw(padapter, center_ch, bwmode, + channel_offset, chnl_offset80); =20 mutex_unlock(&(adapter_to_dvobj(padapter)->setch_mutex)); } @@ -381,10 +384,14 @@ int is_client_associated_to_ap(struct adapter *padapt= er) pmlmeext =3D &padapter->mlmeextpriv; pmlmeinfo =3D &(pmlmeext->mlmext_info); =20 - if ((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) && ((pmlmeinfo->state & 0x= 03) =3D=3D WIFI_FW_STATION_STATE)) - return true; - else - return _FAIL; + { + bool assoc_ok =3D pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS; + bool is_station =3D (pmlmeinfo->state & 0x03) =3D=3D WIFI_FW_STATION_STA= TE; + + if (assoc_ok && is_station) + return true; + } + return _FAIL; } =20 int is_client_associated_to_ibss(struct adapter *padapter) @@ -392,10 +399,14 @@ int is_client_associated_to_ibss(struct adapter *pada= pter) struct mlme_ext_priv *pmlmeext =3D &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo =3D &(pmlmeext->mlmext_info); =20 - if ((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) && ((pmlmeinfo->state & 0x= 03) =3D=3D WIFI_FW_ADHOC_STATE)) - return true; - else - return _FAIL; + { + bool assoc_ok =3D pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS; + bool is_adhoc =3D (pmlmeinfo->state & 0x03) =3D=3D WIFI_FW_ADHOC_STATE; + + if (assoc_ok && is_adhoc) + return true; + } + return _FAIL; } =20 int is_IBSS_empty(struct adapter *padapter) @@ -467,7 +478,7 @@ void _write_cam(struct adapter *padapter, u8 entry, u16= ctrl, u8 *mac, u8 *key) void _clear_cam_entry(struct adapter *padapter, u8 entry) { unsigned char null_sta[] =3D {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - unsigned char null_key[] =3D {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0= x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + unsigned char null_key[16] =3D {0}; =20 _write_cam(padapter, entry, 0, null_sta, null_key); } @@ -571,62 +582,74 @@ s16 rtw_camid_alloc(struct adapter *adapter, struct s= ta_info *sta, u8 kid) =20 mlmeinfo =3D &adapter->mlmeextpriv.mlmext_info; =20 - if ((((mlmeinfo->state & 0x03) =3D=3D WIFI_FW_AP_STATE) || ((mlmeinfo->st= ate & 0x03) =3D=3D WIFI_FW_ADHOC_STATE)) - && !sta) { - /* AP/Ad-hoc mode group key: static alloction to default key by key ID */ - if (kid > 3) { - netdev_dbg(adapter->pnetdev, - FUNC_ADPT_FMT " group key with invalid key id:%u\n", - FUNC_ADPT_ARG(adapter), kid); - rtw_warn_on(1); - goto bitmap_handle; - } - - cam_id =3D kid; - } else { - int i; - u8 *addr =3D sta ? sta->hwaddr : NULL; + { + u8 state =3D mlmeinfo->state & 0x03; + bool is_ap_or_adhoc =3D (state =3D=3D WIFI_FW_AP_STATE) || + (state =3D=3D WIFI_FW_ADHOC_STATE); =20 - if (!sta) { - if (!(mlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) { - /* bypass STA mode group key setting before connected(ex:WEP) because = bssid is not ready */ + if (is_ap_or_adhoc && !sta) { + /* AP/Ad-hoc mode group key: static alloction to default key by key ID = */ + if (kid > 3) { + netdev_dbg(adapter->pnetdev, + FUNC_ADPT_FMT " group key with invalid key id:%u\n", + FUNC_ADPT_ARG(adapter), kid); + rtw_warn_on(1); goto bitmap_handle; } =20 - addr =3D get_bssid(&adapter->mlmepriv); - } + cam_id =3D kid; + } else { + int i; + u8 *addr =3D sta ? sta->hwaddr : NULL; + + if (!sta) { + if (!(mlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) { + /* + * bypass STA mode group key setting before + * connected(ex:WEP) because bssid is not ready + */ + goto bitmap_handle; + } + + addr =3D get_bssid(&adapter->mlmepriv); + } =20 - i =3D _rtw_camid_search(adapter, addr, kid); - if (i >=3D 0) { - /* Fix issue that pairwise and group key have same key id. Pairwise key= first, group key can overwirte group only(ex: rekey) */ - if (sta || _rtw_camid_is_gk(adapter, i)) - cam_id =3D i; - else - netdev_dbg(adapter->pnetdev, - FUNC_ADPT_FMT " group key id:%u the same key id as pairwise key\n", - FUNC_ADPT_ARG(adapter), kid); - goto bitmap_handle; - } + i =3D _rtw_camid_search(adapter, addr, kid); + if (i >=3D 0) { + /* + * Fix issue that pairwise and group key have same + * key id. Pairwise key first, group key can + * overwirte group only(ex: rekey) + */ + if (sta || _rtw_camid_is_gk(adapter, i)) + cam_id =3D i; + else + netdev_dbg(adapter->pnetdev, + FUNC_ADPT_FMT " grp key:%u same as pairwise\n", + FUNC_ADPT_ARG(adapter), kid); + goto bitmap_handle; + } =20 - for (i =3D 4; i < TOTAL_CAM_ENTRY; i++) - if (!(cam_ctl->bitmap & BIT(i))) - break; + for (i =3D 4; i < TOTAL_CAM_ENTRY; i++) + if (!(cam_ctl->bitmap & BIT(i))) + break; + + if (i =3D=3D TOTAL_CAM_ENTRY) { + if (sta) + netdev_dbg(adapter->pnetdev, + FUNC_ADPT_FMT " pairwise %pM id:%u no room\n", + FUNC_ADPT_ARG(adapter), + sta->hwaddr, kid); + else + netdev_dbg(adapter->pnetdev, + FUNC_ADPT_FMT " group key id:%u no room\n", + FUNC_ADPT_ARG(adapter), kid); + rtw_warn_on(1); + goto bitmap_handle; + } =20 - if (i =3D=3D TOTAL_CAM_ENTRY) { - if (sta) - netdev_dbg(adapter->pnetdev, - FUNC_ADPT_FMT " pairwise key with %pM id:%u no room\n", - FUNC_ADPT_ARG(adapter), - sta->hwaddr, kid); - else - netdev_dbg(adapter->pnetdev, - FUNC_ADPT_FMT " group key id:%u no room\n", - FUNC_ADPT_ARG(adapter), kid); - rtw_warn_on(1); - goto bitmap_handle; + cam_id =3D i; } - - cam_id =3D i; } =20 bitmap_handle: @@ -1136,9 +1159,14 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *= pframe, u32 packet_len) if (!bssid) return true; =20 - if ((pmlmepriv->timeBcnInfoChkStart !=3D 0) && (jiffies_to_msecs(jiffies = - pmlmepriv->timeBcnInfoChkStart) > DISCONNECT_BY_CHK_BCN_FAIL_OBSERV_PERIO= D_IN_MS)) { - pmlmepriv->timeBcnInfoChkStart =3D 0; - pmlmepriv->NumOfBcnInfoChkFail =3D 0; + if (pmlmepriv->timeBcnInfoChkStart !=3D 0) { + unsigned long elapsed; + + elapsed =3D jiffies_to_msecs(jiffies - pmlmepriv->timeBcnInfoChkStart); + if (elapsed > DISCONNECT_BY_CHK_BCN_FAIL_OBSERV_PERIOD_IN_MS) { + pmlmepriv->timeBcnInfoChkStart =3D 0; + pmlmepriv->NumOfBcnInfoChkFail =3D 0; + } } =20 subtype =3D GetFrameSubType(pframe) >> 4; @@ -1154,7 +1182,12 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *= pframe, u32 packet_len) =20 /* check bw and channel offset */ /* parsing HT_CAP_IE */ - p =3D rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_CAPABILITY, = &len, bssid->ie_length - _FIXED_IE_LENGTH_); + { + u8 *ies =3D bssid->ies + _FIXED_IE_LENGTH_; + uint ie_len =3D bssid->ie_length - _FIXED_IE_LENGTH_; + + p =3D rtw_get_ie(ies, WLAN_EID_HT_CAPABILITY, &len, ie_len); + } if (p && len > 0) { pht_cap =3D (struct ieee80211_ht_cap *)(p + 2); ht_cap_info =3D le16_to_cpu(pht_cap->cap_info); @@ -1162,7 +1195,12 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *= pframe, u32 packet_len) ht_cap_info =3D 0; } /* parsing HT_INFO_IE */ - p =3D rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_OPERATION, &= len, bssid->ie_length - _FIXED_IE_LENGTH_); + { + u8 *ies =3D bssid->ies + _FIXED_IE_LENGTH_; + uint ie_len =3D bssid->ie_length - _FIXED_IE_LENGTH_; + + p =3D rtw_get_ie(ies, WLAN_EID_HT_OPERATION, &len, ie_len); + } if (p && len > 0) { pht_info =3D (struct HT_info_element *)(p + 2); ht_info_infos_0 =3D pht_info->infos[0]; @@ -1181,7 +1219,12 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *= pframe, u32 packet_len) } =20 /* Checking for channel */ - p =3D rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_DS_PARAMS, &len= , bssid->ie_length - _FIXED_IE_LENGTH_); + { + u8 *ies =3D bssid->ies + _FIXED_IE_LENGTH_; + uint ie_len =3D bssid->ie_length - _FIXED_IE_LENGTH_; + + p =3D rtw_get_ie(ies, WLAN_EID_DS_PARAMS, &len, ie_len); + } if (p) { bcn_channel =3D *(p + 2); } else {/* In 5G, some ap do not have DSSET IE checking HT info for chann= el */ @@ -1198,7 +1241,12 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *= pframe, u32 packet_len) =20 /* checking SSID */ ssid_len =3D 0; - p =3D rtw_get_ie(bssid->ies + _FIXED_IE_LENGTH_, WLAN_EID_SSID, &len, bss= id->ie_length - _FIXED_IE_LENGTH_); + { + u8 *ies =3D bssid->ies + _FIXED_IE_LENGTH_; + uint ie_len =3D bssid->ie_length - _FIXED_IE_LENGTH_; + + p =3D rtw_get_ie(ies, WLAN_EID_SSID, &len, ie_len); + } if (p) { ssid_len =3D *(p + 1); if (ssid_len > NDIS_802_11_LENGTH_SSID) @@ -1269,11 +1317,16 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 = *pframe, u32 packet_len) =20 pmlmepriv->NumOfBcnInfoChkFail++; =20 - if ((pmlmepriv->timeBcnInfoChkStart !=3D 0) && (jiffies_to_msecs(jiffies = - pmlmepriv->timeBcnInfoChkStart) <=3D DISCONNECT_BY_CHK_BCN_FAIL_OBSERV_PE= RIOD_IN_MS) - && (pmlmepriv->NumOfBcnInfoChkFail >=3D DISCONNECT_BY_CHK_BCN_FAIL_THRES= HOLD)) { - pmlmepriv->timeBcnInfoChkStart =3D 0; - pmlmepriv->NumOfBcnInfoChkFail =3D 0; - return _FAIL; + if (pmlmepriv->timeBcnInfoChkStart !=3D 0) { + unsigned long elapsed; + + elapsed =3D jiffies_to_msecs(jiffies - pmlmepriv->timeBcnInfoChkStart); + if (elapsed <=3D DISCONNECT_BY_CHK_BCN_FAIL_OBSERV_PERIOD_IN_MS && + pmlmepriv->NumOfBcnInfoChkFail >=3D DISCONNECT_BY_CHK_BCN_FAIL_THRES= HOLD) { + pmlmepriv->timeBcnInfoChkStart =3D 0; + pmlmepriv->NumOfBcnInfoChkFail =3D 0; + return _FAIL; + } } =20 return _SUCCESS; @@ -1528,7 +1581,11 @@ void update_capinfo(struct adapter *Adapter, u16 upd= ateCap) if (pmlmeext->cur_wireless_mode & (WIRELESS_11_24N)) { pmlmeinfo->slotTime =3D SHORT_SLOT_TIME; } else if (pmlmeext->cur_wireless_mode & (WIRELESS_11G)) { - if ((updateCap & cShortSlotTime) /* && (!(pMgntInfo->pHTInfo->RT2RT_HT_= Mode & RT_HT_CAP_USE_LONG_PREAMBLE)) */) + /* + * cShortSlotTime check: + * (!(pMgntInfo->pHTInfo->RT2RT_HT_Mode & RT_HT_CAP_USE_LONG_PREAMBLE)) + */ + if (updateCap & cShortSlotTime) /* Short Slot Time */ pmlmeinfo->slotTime =3D SHORT_SLOT_TIME; else @@ -1609,9 +1666,17 @@ int update_sta_support_rate(struct adapter *padapter= , u8 *pvar_ie, uint var_ie_l memcpy(pmlmeinfo->FW_sta_info[cam_idx].SupportedRates, pIE->data, ie_len); supportRateNum =3D ie_len; =20 - pIE =3D (struct ndis_80211_var_ie *)rtw_get_ie(pvar_ie, WLAN_EID_EXT_SUPP= _RATES, &ie_len, var_ie_len); - if (pIE && (ie_len <=3D sizeof(pmlmeinfo->FW_sta_info[cam_idx].SupportedR= ates) - supportRateNum)) - memcpy((pmlmeinfo->FW_sta_info[cam_idx].SupportedRates + supportRateNum)= , pIE->data, ie_len); + { + u8 *rates =3D pmlmeinfo->FW_sta_info[cam_idx].SupportedRates; + size_t max_ext =3D sizeof(pmlmeinfo->FW_sta_info[cam_idx].SupportedRates= ) - + supportRateNum; + + pIE =3D (struct ndis_80211_var_ie *)rtw_get_ie(pvar_ie, + WLAN_EID_EXT_SUPP_RATES, + &ie_len, var_ie_len); + if (pIE && ie_len <=3D max_ext) + memcpy(rates + supportRateNum, pIE->data, ie_len); + } =20 return _SUCCESS; } diff --git a/drivers/staging/rtl8723bs/core/rtw_xmit.c b/drivers/staging/rt= l8723bs/core/rtw_xmit.c index 21690857fd62..14d761c2fb3e 100644 --- a/drivers/staging/rtl8723bs/core/rtw_xmit.c +++ b/drivers/staging/rtl8723bs/core/rtw_xmit.c @@ -431,7 +431,9 @@ static void update_attrib_vcs_info(struct adapter *pada= pter, struct xmit_frame * pattrib->vcs_mode =3D padapter->driver_vcs_type; } =20 -static void update_attrib_phy_info(struct adapter *padapter, struct pkt_at= trib *pattrib, struct sta_info *psta) +static void update_attrib_phy_info(struct adapter *padapter, + struct pkt_attrib *pattrib, + struct sta_info *psta) { struct mlme_ext_priv *mlmeext =3D &padapter->mlmeextpriv; =20 @@ -467,7 +469,9 @@ static void update_attrib_phy_info(struct adapter *pada= pter, struct pkt_attrib * pattrib->retry_ctrl =3D false; } =20 -static s32 update_attrib_sec_info(struct adapter *padapter, struct pkt_att= rib *pattrib, struct sta_info *psta) +static s32 update_attrib_sec_info(struct adapter *padapter, + struct pkt_attrib *pattrib, + struct sta_info *psta) { signed int res =3D _SUCCESS; struct mlme_priv *pmlmepriv =3D &padapter->mlmepriv; @@ -506,8 +510,14 @@ static s32 update_attrib_sec_info(struct adapter *pada= pter, struct pkt_attrib *p } =20 /* For WPS 1.0 WEP, driver should not encrypt EAPOL Packet for WPS hands= hake. */ - if (((pattrib->encrypt =3D=3D _WEP40_) || (pattrib->encrypt =3D=3D _WEP1= 04_)) && (pattrib->ether_type =3D=3D 0x888e)) - pattrib->encrypt =3D _NO_PRIVACY_; + { + bool is_wep =3D pattrib->encrypt =3D=3D _WEP40_ || + pattrib->encrypt =3D=3D _WEP104_; + bool is_eapol =3D pattrib->ether_type =3D=3D 0x888e; + + if (is_wep && is_eapol) + pattrib->encrypt =3D _NO_PRIVACY_; + } } =20 switch (pattrib->encrypt) { @@ -771,15 +781,18 @@ static s32 xmitframe_addmic(struct adapter *padapter,= struct xmit_frame *pxmitfr if (pattrib->encrypt =3D=3D _TKIP_) { /* encode mic code */ { - u8 null_key[16] =3D {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, = 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; + static const u8 null_key[16] =3D {0}; =20 pframe =3D pxmitframe->buf_addr + hw_hdr_offset; =20 if (bmcst) { - if (!memcmp(psecuritypriv->dot118021XGrptxmickey[psecuritypriv->dot118= 021XGrpKeyid].skey, null_key, 16)) + u8 grpkeyid =3D psecuritypriv->dot118021XGrpKeyid; + u8 *grp_mic =3D psecuritypriv->dot118021XGrptxmickey[grpkeyid].skey; + + if (!memcmp(grp_mic, null_key, 16)) return _FAIL; /* start to calculate the mic code */ - rtw_secmicsetkey(&micdata, psecuritypriv->dot118021XGrptxmickey[psecur= itypriv->dot118021XGrpKeyid].skey); + rtw_secmicsetkey(&micdata, grp_mic); } else { if (!memcmp(&pattrib->dot11tkiptxmickey.skey[0], null_key, 16)) return _FAIL; @@ -809,15 +822,21 @@ static s32 xmitframe_addmic(struct adapter *padapter,= struct xmit_frame *pxmitfr payload =3D pframe; =20 for (curfragnum =3D 0; curfragnum < pattrib->nr_frags; curfragnum++) { + u32 icv =3D pattrib->bswenc ? pattrib->icv_len : 0; + payload =3D (u8 *)round_up((SIZE_PTR)(payload), 4); payload =3D payload+pattrib->hdrlen+pattrib->iv_len; =20 if ((curfragnum+1) =3D=3D pattrib->nr_frags) { - length =3D pattrib->last_txcmdsz-pattrib->hdrlen-pattrib->iv_len-((pa= ttrib->bswenc) ? pattrib->icv_len : 0); + length =3D pattrib->last_txcmdsz - + pattrib->hdrlen - + pattrib->iv_len - icv; rtw_secmicappend(&micdata, payload, length); payload =3D payload+length; } else { - length =3D pxmitpriv->frag_len-pattrib->hdrlen-pattrib->iv_len-((patt= rib->bswenc) ? pattrib->icv_len : 0); + length =3D pxmitpriv->frag_len - + pattrib->hdrlen - + pattrib->iv_len - icv; rtw_secmicappend(&micdata, payload, length); payload =3D payload+length+pattrib->icv_len; } @@ -1020,7 +1039,8 @@ u32 rtw_calculate_wlan_pkt_size_by_attribue(struct pk= t_attrib *pattrib) * 5. move frag chunk from pframe to pxmitframe->mem * 6. apply sw-encrypt, if necessary. */ -s32 rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, = struct xmit_frame *pxmitframe) +s32 rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, + struct xmit_frame *pxmitframe) { struct pkt_file pktfile; =20 @@ -1106,10 +1126,12 @@ s32 rtw_xmitframe_coalesce(struct adapter *padapter= , struct sk_buff *pkt, struct frg_inx++; =20 if (bmcst || (rtw_endofpktfile(&pktfile) =3D=3D true)) { - pattrib->nr_frags =3D frg_inx; + u32 llc =3D (pattrib->nr_frags =3D=3D 1) ? llc_sz : 0; + u32 icv =3D pattrib->bswenc ? pattrib->icv_len : 0; =20 - pattrib->last_txcmdsz =3D pattrib->hdrlen + pattrib->iv_len + ((pattrib= ->nr_frags =3D=3D 1) ? llc_sz:0) + - ((pattrib->bswenc) ? pattrib->icv_len : 0) + mem_sz; + pattrib->nr_frags =3D frg_inx; + pattrib->last_txcmdsz =3D pattrib->hdrlen + + pattrib->iv_len + llc + icv + mem_sz; =20 ClearMFrag(mem_start); =20 @@ -1139,7 +1161,8 @@ s32 rtw_xmitframe_coalesce(struct adapter *padapter, = struct sk_buff *pkt, struct } =20 /* broadcast or multicast management pkt use BIP, unicast management pkt u= se CCMP encryption */ -s32 rtw_mgmt_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *= pkt, struct xmit_frame *pxmitframe) +s32 rtw_mgmt_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *= pkt, + struct xmit_frame *pxmitframe) { u8 *pframe, *mem_start =3D NULL, *tmp_buf =3D NULL; u8 subtype; @@ -1754,7 +1777,9 @@ s32 rtw_xmitframe_enqueue(struct adapter *padapter, s= truct xmit_frame *pxmitfram return _SUCCESS; } =20 -struct tx_servq *rtw_get_sta_pending(struct adapter *padapter, struct sta_= info *psta, signed int up, u8 *ac) +struct tx_servq *rtw_get_sta_pending(struct adapter *padapter, + struct sta_info *psta, + signed int up, u8 *ac) { struct tx_servq *ptxservq =3D NULL; =20 @@ -2008,7 +2033,8 @@ inline bool xmitframe_hiq_filter(struct xmit_frame *x= mitframe) return allow; } =20 -signed int xmitframe_enqueue_for_sleeping_sta(struct adapter *padapter, st= ruct xmit_frame *pxmitframe) +signed int xmitframe_enqueue_for_sleeping_sta(struct adapter *padapter, + struct xmit_frame *pxmitframe) { signed int ret =3D false; struct sta_info *psta =3D NULL; @@ -2123,7 +2149,9 @@ signed int xmitframe_enqueue_for_sleeping_sta(struct = adapter *padapter, struct x return ret; } =20 -static void dequeue_xmitframes_to_sleeping_queue(struct adapter *padapter,= struct sta_info *psta, struct __queue *pframequeue) +static void dequeue_xmitframes_to_sleeping_queue(struct adapter *padapter, + struct sta_info *psta, + struct __queue *pframequeue) { signed int ret; struct list_head *plist, *phead, *tmp; diff --git a/drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.c b/drivers/stag= ing/rtl8723bs/hal/HalBtc8723b1Ant.c index b3d7f50fac4c..f56e799da702 100644 --- a/drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.c +++ b/drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.c @@ -810,7 +810,8 @@ static void halbtc8723b1ant_SetAntPath( u8 H2C_Parameter[2] =3D {0}, u1Tmp =3D 0; =20 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_EXT_SWITCH, &bPgExtSwitch); - pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer); /* [31:= 16]=3Dfw ver, [15:0]=3Dfw sub ver */ + /* [31:16]=3Dfw ver, [15:0]=3Dfw sub ver */ + pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer); =20 if ((fwVer > 0 && fwVer < 0xc0000) || bPgExtSwitch) bUseExtSwitch =3D true; @@ -829,7 +830,8 @@ static void halbtc8723b1ant_SetAntPath( /* set wlan_act control by PTA */ pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0x4); =20 - pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1); /* BT se= lect s0/s1 is controlled by WiFi */ + /* BT select s0/s1 is controlled by WiFi */ + pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1); =20 pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x39, 0x8, 0x1); pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x974, 0xff); @@ -847,10 +849,13 @@ static void halbtc8723b1ant_SetAntPath( pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0x4); =20 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_IS_IN_MP_MODE, &bIsInMpM= ode); - if (!bIsInMpMode) - pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x0); /* BT s= elect s0/s1 is controlled by BT */ - else - pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1); /* BT s= elect s0/s1 is controlled by WiFi */ + if (!bIsInMpMode) { + /* BT select s0/s1 is controlled by BT */ + pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x0); + } else { + /* BT select s0/s1 is controlled by WiFi */ + pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1); + } =20 /* 0x4c[24:23]=3D 00, Set Antenna control by BT_RFE_CTRL BT Vendor 0xac= =3D 0xf002 */ u4Tmp =3D pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x4c); @@ -1059,8 +1064,10 @@ static void halbtc8723b1ant_PsTdma( =20 =20 if (bTurnOn) { - if (pBtLinkInfo->bSlaveRole) - psTdmaByte4Val =3D psTdmaByte4Val | 0x1; /* 0x778 =3D 0x1 at wifi slot= (no blocking BT Low-Pri pkts) */ + if (pBtLinkInfo->bSlaveRole) { + /* 0x778 =3D 0x1 at wifi slot (no blocking BT Low-Pri pkts) */ + psTdmaByte4Val =3D psTdmaByte4Val | 0x1; + } =20 =20 switch (type) { @@ -1868,7 +1875,8 @@ static void halbtc8723b1ant_ActionWifiConnected(struc= t btc_coexist *pBtCoexist) pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0 ); else { /* busy */ - if (pCoexSta->nScanAPNum >=3D BT_8723B_1ANT_WIFI_NOISY_THRESH) /* no= force LPS, no PS-TDMA, use pure TDMA */ + /* no force LPS, no PS-TDMA, use pure TDMA */ + if (pCoexSta->nScanAPNum >=3D BT_8723B_1ANT_WIFI_NOISY_THRESH) halbtc8723b1ant_PowerSaveState( pBtCoexist, BTC_PS_WIFI_NATIVE, 0x0, 0x0 ); @@ -2246,7 +2254,8 @@ void EXhalbtc8723b1ant_ScanNotify(struct btc_coexist = *pBtCoexist, u8 type) if (type =3D=3D BTC_SCAN_START) { pCoexSta->bWiFiIsHighPriTask =3D true; =20 - halbtc8723b1ant_PsTdma(pBtCoexist, FORCE_EXEC, false, 8); /* Force ante= nna setup for no scan result issue */ + /* Force antenna setup for no scan result issue */ + halbtc8723b1ant_PsTdma(pBtCoexist, FORCE_EXEC, false, 8); pBtCoexist->fBtcRead4Byte(pBtCoexist, 0x948); pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x765); pBtCoexist->fBtcRead1Byte(pBtCoexist, 0x67); @@ -2432,7 +2441,8 @@ void EXhalbtc8723b1ant_SpecialPacketNotify(struct btc= _coexist *pBtCoexist, u8 ty if (type =3D=3D BTC_PACKET_ARP) { pCoexDm->nArpCnt++; =20 - if (pCoexDm->nArpCnt >=3D 10) /* if APR PKT > 10 after connect, do not= go to ActionWifiConnectedSpecialPacket(pBtCoexist) */ + /* if ARP PKT > 10 after connect, skip special packet action */ + if (pCoexDm->nArpCnt >=3D 10) pCoexSta->bWiFiIsHighPriTask =3D false; else pCoexSta->bWiFiIsHighPriTask =3D true; @@ -2578,7 +2588,8 @@ void EXhalbtc8723b1ant_BtInfoNotify( =20 halbtc8723b1ant_UpdateBtLinkInfo(pBtCoexist); =20 - btInfo =3D btInfo & 0x1f; /* mask profile bit for connect-ilde identific= ation (for CSR case: A2DP idle --> 0x41) */ + /* mask profile bit for connect-idle identification (CSR case: A2DP idle = =3D 0x41) */ + btInfo =3D btInfo & 0x1f; =20 if (!(btInfo & BT_INFO_8723B_1ANT_B_CONNECTION)) { pCoexDm->btStatus =3D BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE; diff --git a/drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.c b/drivers/stag= ing/rtl8723bs/hal/HalBtc8723b2Ant.c index d32dbf94858f..42fc4de0cc64 100644 --- a/drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.c +++ b/drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.c @@ -830,7 +830,8 @@ static void halbtc8723b2ant_SetAntPath( u8 H2C_Parameter[2] =3D {0}; =20 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_EXT_SWITCH, &bPgExtSwitch); - pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer); /* [31:= 16]=3Dfw ver, [15:0]=3Dfw sub ver */ + /* [31:16]=3Dfw ver, [15:0]=3Dfw sub ver */ + pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer); =20 if ((fwVer > 0 && fwVer < 0xc0000) || bPgExtSwitch) bUseExtSwitch =3D true; @@ -901,13 +902,16 @@ static void halbtc8723b2ant_SetAntPath( pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x4c, u4Tmp); } =20 - pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x64, 0x1, 0x0); /* fixed = external switch S1->Main, S0->Aux */ + /* fixed external switch S1->Main, S0->Aux */ + pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x64, 0x1, 0x0); switch (antPosType) { case BTC_ANT_WIFI_AT_MAIN: - pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0); /* fixed internal = switch S1->WiFi, S0->BT */ + /* fixed internal switch S1->WiFi, S0->BT */ + pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x0); break; case BTC_ANT_WIFI_AT_AUX: - pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x280); /* fixed interna= l switch S0->WiFi, S1->BT */ + /* fixed internal switch S0->WiFi, S1->BT */ + pBtCoexist->fBtcWrite4Byte(pBtCoexist, 0x948, 0x280); break; } } @@ -2279,7 +2283,8 @@ static void halbtc8723b2ant_WifiOffHwCfg(struct btc_c= oexist *pBtCoexist) /* set wlan_act to low */ pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0x4); =20 - pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x780); /* W= iFi goto standby while GNT_BT 0-->1 */ + /* WiFi goto standby while GNT_BT 0-->1 */ + pBtCoexist->fBtcSetRfReg(pBtCoexist, BTC_RF_A, 0x1, 0xfffff, 0x780); pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_U4_WIFI_FW_VER, &fwVer); if (fwVer >=3D 0x180000) { /* Use H2C to set GNT_BT to HIGH */ @@ -2289,10 +2294,13 @@ static void halbtc8723b2ant_WifiOffHwCfg(struct btc= _coexist *pBtCoexist) pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x765, 0x18); =20 pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_BL_WIFI_IS_IN_MP_MODE, &bIsInMpMo= de); - if (!bIsInMpMode) - pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x0); /* BT se= lect s0/s1 is controlled by BT */ - else - pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1); /* BT se= lect s0/s1 is controlled by WiFi */ + if (!bIsInMpMode) { + /* BT select s0/s1 is controlled by BT */ + pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x0); + } else { + /* BT select s0/s1 is controlled by WiFi */ + pBtCoexist->fBtcWrite1ByteBitMask(pBtCoexist, 0x67, 0x20, 0x1); + } } =20 static void halbtc8723b2ant_InitHwConfig(struct btc_coexist *pBtCoexist, b= ool bBackUp) @@ -2595,7 +2603,8 @@ void EXhalbtc8723b2ant_BtInfoNotify( void EXhalbtc8723b2ant_HaltNotify(struct btc_coexist *pBtCoexist) { halbtc8723b2ant_WifiOffHwCfg(pBtCoexist); - pBtCoexist->fBtcSetBtReg(pBtCoexist, BTC_BT_REG_RF, 0x3c, 0x15); /* BT go= to standby while GNT_BT 1-->0 */ + /* BT goto standby while GNT_BT 1-->0 */ + pBtCoexist->fBtcSetBtReg(pBtCoexist, BTC_BT_REG_RF, 0x3c, 0x15); halbtc8723b2ant_IgnoreWlanAct(pBtCoexist, FORCE_EXEC, true); =20 EXhalbtc8723b2ant_MediaStatusNotify(pBtCoexist, BTC_MEDIA_DISCONNECT); diff --git a/drivers/staging/rtl8723bs/hal/HalPhyRf.c b/drivers/staging/rtl= 8723bs/hal/HalPhyRf.c index 7bef05a9a063..2b4b5468f87b 100644 --- a/drivers/staging/rtl8723bs/hal/HalPhyRf.c +++ b/drivers/staging/rtl8723bs/hal/HalPhyRf.c @@ -65,7 +65,8 @@ void ODM_TXPowerTrackingCallback_ThermalMeter(struct adap= ter *Adapter) u8 ThermalValue_AVG_count =3D 0; u32 ThermalValue_AVG =3D 0; =20 - u8 OFDM_min_index =3D 0; /* OFDM BB Swing should be less than +3.0dB, w= hich is required by Arthur */ + /* OFDM BB Swing should be less than +3.0dB, which is required by Arthur = */ + u8 OFDM_min_index =3D 0; u8 Indexforchannel =3D 0; /* GetRightChnlPlaceforIQK(pHalData->CurrentCh= annel) */ =20 struct txpwrtrack_cfg c; @@ -93,7 +94,9 @@ void ODM_TXPowerTrackingCallback_ThermalMeter(struct adap= ter *Adapter) pDM_Odm->RFCalibrateInfo.TXPowerTrackingCallbackCnt++; pDM_Odm->RFCalibrateInfo.bTXPowerTrackingInit =3D true; =20 - ThermalValue =3D (u8)PHY_QueryRFReg(pDM_Odm->Adapter, RF_PATH_A, c.Therma= lRegAddr, 0xfc00); /* 0x42: RF Reg[15:10] 88E */ + /* 0x42: RF Reg[15:10] 88E */ + ThermalValue =3D (u8)PHY_QueryRFReg(pDM_Odm->Adapter, RF_PATH_A, + c.ThermalRegAddr, 0xfc00); if ( !pDM_Odm->RFCalibrateInfo.TxPowerTrackControl || pHalData->EEPROMThermalMeter =3D=3D 0 || @@ -104,11 +107,15 @@ void ODM_TXPowerTrackingCallback_ThermalMeter(struct = adapter *Adapter) /* 4 3. Initialize ThermalValues of RFCalibrateInfo */ =20 /* 4 4. Calculate average thermal meter */ - - pDM_Odm->RFCalibrateInfo.ThermalValue_AVG[pDM_Odm->RFCalibrateInfo.Therma= lValue_AVG_index] =3D ThermalValue; - pDM_Odm->RFCalibrateInfo.ThermalValue_AVG_index++; - if (pDM_Odm->RFCalibrateInfo.ThermalValue_AVG_index =3D=3D c.AverageTherm= alNum) /* Average times =3D c.AverageThermalNum */ - pDM_Odm->RFCalibrateInfo.ThermalValue_AVG_index =3D 0; + { + struct odm_rf_cal_t *cal =3D &pDM_Odm->RFCalibrateInfo; + + cal->ThermalValue_AVG[cal->ThermalValue_AVG_index] =3D ThermalValue; + cal->ThermalValue_AVG_index++; + /* Average times =3D c.AverageThermalNum */ + if (cal->ThermalValue_AVG_index =3D=3D c.AverageThermalNum) + cal->ThermalValue_AVG_index =3D 0; + } =20 for (i =3D 0; i < c.AverageThermalNum; i++) { if (pDM_Odm->RFCalibrateInfo.ThermalValue_AVG[i]) { @@ -200,10 +207,16 @@ void ODM_TXPowerTrackingCallback_ThermalMeter(struct = adapter *Adapter) if ( pDM_Odm->RFCalibrateInfo.DeltaPowerIndex[p] =3D=3D pDM_Odm->RFCalibrateInfo.DeltaPowerIndexLast[p] - ) /* If Thermal value changes but lookup table value still the same */ + ) { + /* If Thermal value changes but lookup table value still the same */ pDM_Odm->RFCalibrateInfo.PowerIndexOffset[p] =3D 0; - else - pDM_Odm->RFCalibrateInfo.PowerIndexOffset[p] =3D pDM_Odm->RFCalibrateI= nfo.DeltaPowerIndex[p] - pDM_Odm->RFCalibrateInfo.DeltaPowerIndexLast[p]; = /* Power Index Diff between 2 times Power Tracking */ + } else { + /* Power Index Diff between 2 times Power Tracking */ + s8 delta_idx =3D pDM_Odm->RFCalibrateInfo.DeltaPowerIndex[p]; + s8 last_idx =3D pDM_Odm->RFCalibrateInfo.DeltaPowerIndexLast[p]; + + pDM_Odm->RFCalibrateInfo.PowerIndexOffset[p] =3D delta_idx - last_idx; + } =20 pDM_Odm->RFCalibrateInfo.OFDM_index[p] =3D pDM_Odm->BbSwingIdxOfdmBase[p] + @@ -245,7 +258,8 @@ void ODM_TXPowerTrackingCallback_ThermalMeter(struct ad= apter *Adapter) ) { /* 4 7.2 Configure the Swing Table to adjust Tx Power. */ =20 - pDM_Odm->RFCalibrateInfo.bTxPowerChanged =3D true; /* Always true after= Tx Power is adjusted by power tracking. */ + /* Always true after Tx Power is adjusted by power tracking. */ + pDM_Odm->RFCalibrateInfo.bTxPowerChanged =3D true; /* */ /* 2012/04/23 MH According to Luke's suggestion, we can not write BB di= gital */ /* to increase TX power. Otherwise, EVM will be bad. */ diff --git a/drivers/staging/rtl8723bs/hal/HalPhyRf_8723B.c b/drivers/stagi= ng/rtl8723bs/hal/HalPhyRf_8723B.c index 34692cca33f5..567a23627db9 100644 --- a/drivers/staging/rtl8723bs/hal/HalPhyRf_8723B.c +++ b/drivers/staging/rtl8723bs/hal/HalPhyRf_8723B.c @@ -101,13 +101,15 @@ static void setIqkMatrix_8723B( } else { switch (RFPath) { case RF_PATH_A: - PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XATxIQImbalance, bMaskDWord, OFDM= SwingTable_New[OFDM_index]); + PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XATxIQImbalance, + bMaskDWord, OFDMSwingTable_New[OFDM_index]); PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XCTxAFE, bMaskH4Bits, 0x00); PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, BIT24, 0x00); break; =20 case RF_PATH_B: - PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XBTxIQImbalance, bMaskDWord, OFDM= SwingTable_New[OFDM_index]); + PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XBTxIQImbalance, + bMaskDWord, OFDMSwingTable_New[OFDM_index]); PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XDTxAFE, bMaskH4Bits, 0x00); PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, BIT28, 0x00); break; @@ -957,20 +959,25 @@ static void _PHY_PathAFillIQKMatrix8723B( TX0_C =3D (Y * Oldval_0) >> 8; PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XCTxAFE, 0xF0000000, ((TX0_C&0x3C0= )>>6)); pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC94][KEY] =3D rOFDM0_XCTxAF= E; - pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC94][VAL] =3D PHY_QueryBBRe= g(pDM_Odm->Adapter, rOFDM0_XCTxAFE, bMaskDWord); + pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC94][VAL] =3D + PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XCTxAFE, bMaskDWord); =20 PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XATxIQImbalance, 0x003F0000, (TX0_= C&0x3F)); pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC80][KEY] =3D rOFDM0_XATxIQ= Imbalance; - pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC80][VAL] =3D PHY_QueryBBRe= g(pDM_Odm->Adapter, rOFDM0_XATxIQImbalance, bMaskDWord); + pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC80][VAL] =3D + PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XATxIQImbalance, bMaskDWord); =20 PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, BIT(29), ((Y*Oldval= _0>>7) & 0x1)); pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC4C][KEY] =3D rOFDM0_ECCATh= reshold; - pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC4C][VAL] =3D PHY_QueryBBRe= g(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskDWord); + pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC4C][VAL] =3D + PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskDWord); =20 if (bTxOnly) { /* <20130226, Kordan> Saving RxIQC, otherwise not initialized. */ pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][KEY] =3D rOFDM0_RxIQE= xtAnta; - pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][VAL] =3D 0xfffffff & = PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, bMaskDWord); + pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][VAL] =3D + 0xfffffff & PHY_QueryBBReg(pDM_Odm->Adapter, + rOFDM0_RxIQExtAnta, bMaskDWord); pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][KEY] =3D rOFDM0_XARxI= QImbalance; /* pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][VAL] =3D PHY_Query= BBReg(pDM_Odm->Adapter, rOFDM0_XARxIQImbalance, bMaskDWord); */ pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][VAL] =3D 0x40000100; @@ -984,12 +991,14 @@ static void _PHY_PathAFillIQKMatrix8723B( reg =3D result[final_candidate][3] & 0x3F; PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XARxIQImbalance, 0xFC00, reg); pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][KEY] =3D rOFDM0_XARxIQ= Imbalance; - pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][VAL] =3D PHY_QueryBBRe= g(pDM_Odm->Adapter, rOFDM0_XARxIQImbalance, bMaskDWord); + pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][VAL] =3D + PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XARxIQImbalance, bMaskDWord); =20 reg =3D (result[final_candidate][3] >> 6) & 0xF; PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, 0xF0000000, reg); pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][KEY] =3D rOFDM0_RxIQEx= tAnta; - pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][VAL] =3D PHY_QueryBBRe= g(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, bMaskDWord); + pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA0][VAL] =3D + PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, bMaskDWord); =20 } } @@ -1035,22 +1044,27 @@ static void _PHY_PathBFillIQKMatrix8723B( /* pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC9C][KEY] =3D rOFDM0_XDT= xAFE; */ /* pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC9C][VAL] =3D PHY_QueryB= BReg(pDM_Odm->Adapter, rOFDM0_XDTxAFE, bMaskDWord); */ pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC94][KEY] =3D rOFDM0_XCTxAF= E; - pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC94][VAL] =3D PHY_QueryBBRe= g(pDM_Odm->Adapter, rOFDM0_XDTxAFE, bMaskDWord); + pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC94][VAL] =3D + PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XDTxAFE, bMaskDWord); =20 PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XBTxIQImbalance, 0x003F0000, (TX1_= C&0x3F)); pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC80][KEY] =3D rOFDM0_XATxIQ= Imbalance; - pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC80][VAL] =3D PHY_QueryBBRe= g(pDM_Odm->Adapter, rOFDM0_XBTxIQImbalance, bMaskDWord); + pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC80][VAL] =3D + PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XBTxIQImbalance, bMaskDWord); =20 PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, BIT(25), ((Y*Oldval= _1>>7) & 0x1)); pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC4C][KEY] =3D rOFDM0_ECCATh= reshold; - pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC4C][VAL] =3D PHY_QueryBBRe= g(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskDWord); + pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC4C][VAL] =3D + PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_ECCAThreshold, bMaskDWord); =20 if (bTxOnly) { pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][KEY] =3D rOFDM0_XARxI= QImbalance; /* pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][VAL] =3D PHY_Query= BBReg(pDM_Odm->Adapter, rOFDM0_XARxIQImbalance, bMaskDWord); */ pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][VAL] =3D 0x40000100; pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][KEY] =3D rOFDM0_RxIQE= xtAnta; - pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][VAL] =3D 0x0fffffff &= PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, bMaskDWord); + pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][VAL] =3D + 0x0fffffff & PHY_QueryBBReg(pDM_Odm->Adapter, + rOFDM0_RxIQExtAnta, bMaskDWord); return; } =20 @@ -1060,12 +1074,15 @@ static void _PHY_PathBFillIQKMatrix8723B( reg =3D result[final_candidate][7] & 0x3F; PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XBRxIQImbalance, 0xFC00, reg); pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][KEY] =3D rOFDM0_XARxIQ= Imbalance; - pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][VAL] =3D PHY_QueryBBRe= g(pDM_Odm->Adapter, rOFDM0_XBRxIQImbalance, bMaskDWord); + pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC14][VAL] =3D + PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XBRxIQImbalance, bMaskDWord); =20 reg =3D (result[final_candidate][7] >> 6) & 0xF; /* PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_AGCRSSITable, 0x0000F000, reg);= */ pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][KEY] =3D rOFDM0_RxIQEx= tAnta; - pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][VAL] =3D (reg << 28)|(= PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, bMaskDWord)&0x0fffffff= ); + pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA0][VAL] =3D (reg << 28) | + (PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_RxIQExtAnta, bMaskDWord) & + 0x0fffffff); } } =20 @@ -1086,21 +1103,29 @@ void ODM_SetIQCbyRFpath(struct dm_odm_t *pDM_Odm, u= 32 RFpath) (pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC14][VAL] !=3D 0x0) ) { if (RFpath) { /* S1: RFpath =3D 0, S0:RFpath =3D 1 */ + u32 (*tx)[2] =3D pRFCalibrateInfo->TxIQC_8723B[PATH_S0]; + u32 (*rx)[2] =3D pRFCalibrateInfo->RxIQC_8723B[PATH_S0]; + struct adapter *a =3D pDM_Odm->Adapter; + /* S0 TX IQC */ - PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->TxIQC_8723B[PATH_S0][I= DX_0xC94][KEY], bMaskDWord, pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC9= 4][VAL]); - PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->TxIQC_8723B[PATH_S0][I= DX_0xC80][KEY], bMaskDWord, pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC8= 0][VAL]); - PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->TxIQC_8723B[PATH_S0][I= DX_0xC4C][KEY], bMaskDWord, pRFCalibrateInfo->TxIQC_8723B[PATH_S0][IDX_0xC4= C][VAL]); + PHY_SetBBReg(a, tx[IDX_0xC94][KEY], bMaskDWord, tx[IDX_0xC94][VAL]); + PHY_SetBBReg(a, tx[IDX_0xC80][KEY], bMaskDWord, tx[IDX_0xC80][VAL]); + PHY_SetBBReg(a, tx[IDX_0xC4C][KEY], bMaskDWord, tx[IDX_0xC4C][VAL]); /* S0 RX IQC */ - PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->RxIQC_8723B[PATH_S0][I= DX_0xC14][KEY], bMaskDWord, pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xC1= 4][VAL]); - PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->RxIQC_8723B[PATH_S0][I= DX_0xCA0][KEY], bMaskDWord, pRFCalibrateInfo->RxIQC_8723B[PATH_S0][IDX_0xCA= 0][VAL]); + PHY_SetBBReg(a, rx[IDX_0xC14][KEY], bMaskDWord, rx[IDX_0xC14][VAL]); + PHY_SetBBReg(a, rx[IDX_0xCA0][KEY], bMaskDWord, rx[IDX_0xCA0][VAL]); } else { + u32 (*tx)[2] =3D pRFCalibrateInfo->TxIQC_8723B[PATH_S1]; + u32 (*rx)[2] =3D pRFCalibrateInfo->RxIQC_8723B[PATH_S1]; + struct adapter *a =3D pDM_Odm->Adapter; + /* S1 TX IQC */ - PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->TxIQC_8723B[PATH_S1][I= DX_0xC94][KEY], bMaskDWord, pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC9= 4][VAL]); - PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->TxIQC_8723B[PATH_S1][I= DX_0xC80][KEY], bMaskDWord, pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC8= 0][VAL]); - PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->TxIQC_8723B[PATH_S1][I= DX_0xC4C][KEY], bMaskDWord, pRFCalibrateInfo->TxIQC_8723B[PATH_S1][IDX_0xC4= C][VAL]); + PHY_SetBBReg(a, tx[IDX_0xC94][KEY], bMaskDWord, tx[IDX_0xC94][VAL]); + PHY_SetBBReg(a, tx[IDX_0xC80][KEY], bMaskDWord, tx[IDX_0xC80][VAL]); + PHY_SetBBReg(a, tx[IDX_0xC4C][KEY], bMaskDWord, tx[IDX_0xC4C][VAL]); /* S1 RX IQC */ - PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->RxIQC_8723B[PATH_S1][I= DX_0xC14][KEY], bMaskDWord, pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xC1= 4][VAL]); - PHY_SetBBReg(pDM_Odm->Adapter, pRFCalibrateInfo->RxIQC_8723B[PATH_S1][I= DX_0xCA0][KEY], bMaskDWord, pRFCalibrateInfo->RxIQC_8723B[PATH_S1][IDX_0xCA= 0][VAL]); + PHY_SetBBReg(a, rx[IDX_0xC14][KEY], bMaskDWord, rx[IDX_0xC14][VAL]); + PHY_SetBBReg(a, rx[IDX_0xCA0][KEY], bMaskDWord, rx[IDX_0xCA0][VAL]); } } } @@ -1360,11 +1385,15 @@ static void phy_IQCalibrate_8723B( /* u32 bbvalue; */ =20 if (t =3D=3D 0) { + struct odm_rf_cal_t *cal =3D &pDM_Odm->RFCalibrateInfo; =20 /* Save ADDA parameters, turn Path A ADDA on */ - _PHY_SaveADDARegisters8723B(padapter, ADDA_REG, pDM_Odm->RFCalibrateInfo= .ADDA_backup, IQK_ADDA_REG_NUM); - _PHY_SaveMACRegisters8723B(padapter, IQK_MAC_REG, pDM_Odm->RFCalibrateIn= fo.IQK_MAC_backup); - _PHY_SaveADDARegisters8723B(padapter, IQK_BB_REG_92C, pDM_Odm->RFCalibra= teInfo.IQK_BB_backup, IQK_BB_REG_NUM); + _PHY_SaveADDARegisters8723B(padapter, ADDA_REG, + cal->ADDA_backup, IQK_ADDA_REG_NUM); + _PHY_SaveMACRegisters8723B(padapter, IQK_MAC_REG, + cal->IQK_MAC_backup); + _PHY_SaveADDARegisters8723B(padapter, IQK_BB_REG_92C, + cal->IQK_BB_backup, IQK_BB_REG_NUM); } =20 _PHY_PathADDAOn8723B(padapter, ADDA_REG, is2T); @@ -1407,12 +1436,20 @@ static void phy_IQCalibrate_8723B( PathAOK =3D phy_PathA_IQK_8723B(padapter, is2T, RF_Path); /* if (PathAOK =3D=3D 0x03) { */ if (PathAOK =3D=3D 0x01) { + u32 val; + /* Path A Tx IQK Success */ PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000); - pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_A] =3D PHY_QueryRFReg(pDM_Odm->A= dapter, RF_PATH_A, 0x8, bRFRegOffsetMask); - - result[t][0] =3D (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_Before_IQ= K_A, bMaskDWord)&0x3FF0000)>>16; - result[t][1] =3D (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_After_IQK= _A, bMaskDWord)&0x3FF0000)>>16; + pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_A] =3D + PHY_QueryRFReg(pDM_Odm->Adapter, RF_PATH_A, 0x8, + bRFRegOffsetMask); + + val =3D PHY_QueryBBReg(pDM_Odm->Adapter, + rTx_Power_Before_IQK_A, bMaskDWord); + result[t][0] =3D (val & 0x3FF0000) >> 16; + val =3D PHY_QueryBBReg(pDM_Odm->Adapter, + rTx_Power_After_IQK_A, bMaskDWord); + result[t][1] =3D (val & 0x3FF0000) >> 16; break; } } @@ -1421,10 +1458,15 @@ static void phy_IQCalibrate_8723B( for (i =3D 0 ; i < retryCount ; i++) { PathAOK =3D phy_PathA_RxIQK8723B(padapter, is2T, RF_Path); if (PathAOK =3D=3D 0x03) { + u32 val; /* result[t][0] =3D (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_Before= _IQK_A, bMaskDWord)&0x3FF0000)>>16; */ /* result[t][1] =3D (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_After_= IQK_A, bMaskDWord)&0x3FF0000)>>16; */ - result[t][2] =3D (PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_Before_IQ= K_A_2, bMaskDWord)&0x3FF0000)>>16; - result[t][3] =3D (PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_After_IQK= _A_2, bMaskDWord)&0x3FF0000)>>16; + val =3D PHY_QueryBBReg(pDM_Odm->Adapter, + rRx_Power_Before_IQK_A_2, bMaskDWord); + result[t][2] =3D (val & 0x3FF0000) >> 16; + val =3D PHY_QueryBBReg(pDM_Odm->Adapter, + rRx_Power_After_IQK_A_2, bMaskDWord); + result[t][3] =3D (val & 0x3FF0000) >> 16; break; } } @@ -1439,12 +1481,20 @@ static void phy_IQCalibrate_8723B( for (i =3D 0 ; i < retryCount ; i++) { PathBOK =3D phy_PathB_IQK_8723B(padapter); if (PathBOK =3D=3D 0x01) { + u32 val; + /* Path B Tx IQK Success */ PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0x000000); - pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_B] =3D PHY_QueryRFReg(pDM_Odm->= Adapter, RF_PATH_B, 0x8, bRFRegOffsetMask); - - result[t][4] =3D (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_Before_IQ= K_A, bMaskDWord)&0x3FF0000)>>16; - result[t][5] =3D (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_After_IQK= _A, bMaskDWord)&0x3FF0000)>>16; + pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_B] =3D + PHY_QueryRFReg(pDM_Odm->Adapter, RF_PATH_B, + 0x8, bRFRegOffsetMask); + + val =3D PHY_QueryBBReg(pDM_Odm->Adapter, + rTx_Power_Before_IQK_A, bMaskDWord); + result[t][4] =3D (val & 0x3FF0000) >> 16; + val =3D PHY_QueryBBReg(pDM_Odm->Adapter, + rTx_Power_After_IQK_A, bMaskDWord); + result[t][5] =3D (val & 0x3FF0000) >> 16; break; } } @@ -1453,10 +1503,15 @@ static void phy_IQCalibrate_8723B( for (i =3D 0 ; i < retryCount ; i++) { PathBOK =3D phy_PathB_RxIQK8723B(padapter, is2T); if (PathBOK =3D=3D 0x03) { + u32 val; /* result[t][0] =3D (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_Before= _IQK_A, bMaskDWord)&0x3FF0000)>>16; */ /* result[t][1] =3D (PHY_QueryBBReg(pDM_Odm->Adapter, rTx_Power_After_= IQK_A, bMaskDWord)&0x3FF0000)>>16; */ - result[t][6] =3D (PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_Before_IQ= K_A_2, bMaskDWord)&0x3FF0000)>>16; - result[t][7] =3D (PHY_QueryBBReg(pDM_Odm->Adapter, rRx_Power_After_IQK= _A_2, bMaskDWord)&0x3FF0000)>>16; + val =3D PHY_QueryBBReg(pDM_Odm->Adapter, + rRx_Power_Before_IQK_A_2, bMaskDWord); + result[t][6] =3D (val & 0x3FF0000) >> 16; + val =3D PHY_QueryBBReg(pDM_Odm->Adapter, + rRx_Power_After_IQK_A_2, bMaskDWord); + result[t][7] =3D (val & 0x3FF0000) >> 16; break; } } @@ -1468,13 +1523,18 @@ static void phy_IQCalibrate_8723B( PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_IQK, bMaskH3Bytes, 0); =20 if (t !=3D 0) { + struct odm_rf_cal_t *cal =3D &pDM_Odm->RFCalibrateInfo; + /* Reload ADDA power saving parameters */ - _PHY_ReloadADDARegisters8723B(padapter, ADDA_REG, pDM_Odm->RFCalibrateIn= fo.ADDA_backup, IQK_ADDA_REG_NUM); + _PHY_ReloadADDARegisters8723B(padapter, ADDA_REG, + cal->ADDA_backup, IQK_ADDA_REG_NUM); =20 /* Reload MAC parameters */ - _PHY_ReloadMACRegisters8723B(padapter, IQK_MAC_REG, pDM_Odm->RFCalibrate= Info.IQK_MAC_backup); + _PHY_ReloadMACRegisters8723B(padapter, IQK_MAC_REG, + cal->IQK_MAC_backup); =20 - _PHY_ReloadADDARegisters8723B(padapter, IQK_BB_REG_92C, pDM_Odm->RFCalib= rateInfo.IQK_BB_backup, IQK_BB_REG_NUM); + _PHY_ReloadADDARegisters8723B(padapter, IQK_BB_REG_92C, + cal->IQK_BB_backup, IQK_BB_REG_NUM); =20 /* Reload RF path */ /* PHY_SetBBReg(pDM_Odm->Adapter, 0x948, bMaskDWord, Path_SEL_BB); */ @@ -1613,8 +1673,10 @@ void PHY_IQCalibrate_8723B( u32 offset, data; u8 path, bResult =3D SUCCESS; struct odm_rf_cal_t *pRFCalibrateInfo =3D &pDM_Odm->RFCalibrateInfo; + struct adapter *a =3D pDM_Odm->Adapter; =20 - path =3D (PHY_QueryBBReg(pDM_Odm->Adapter, rS0S1_PathSwitch, bMaskByte0)= =3D=3D 0x00) ? RF_PATH_A : RF_PATH_B; + path =3D (PHY_QueryBBReg(a, rS0S1_PathSwitch, bMaskByte0) =3D=3D 0x00) ? + RF_PATH_A : RF_PATH_B; =20 /* Restore TX IQK */ for (i =3D 0; i < 3; ++i) { @@ -1624,7 +1686,7 @@ void PHY_IQCalibrate_8723B( bResult =3D FAIL; break; } - PHY_SetBBReg(pDM_Odm->Adapter, offset, bMaskDWord, data); + PHY_SetBBReg(a, offset, bMaskDWord, data); } =20 /* Restore RX IQK */ @@ -1635,14 +1697,16 @@ void PHY_IQCalibrate_8723B( bResult =3D FAIL; break; } - PHY_SetBBReg(pDM_Odm->Adapter, offset, bMaskDWord, data); + PHY_SetBBReg(a, offset, bMaskDWord, data); } =20 if (pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_A] =3D=3D 0) { bResult =3D FAIL; } else { - PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_A, RF_TXM_IDAC, bRFRegOffsetMask= , pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_A]); - PHY_SetRFReg(pDM_Odm->Adapter, RF_PATH_B, RF_TXM_IDAC, bRFRegOffsetMask= , pDM_Odm->RFCalibrateInfo.TxLOK[RF_PATH_B]); + PHY_SetRFReg(a, RF_PATH_A, RF_TXM_IDAC, bRFRegOffsetMask, + pRFCalibrateInfo->TxLOK[RF_PATH_A]); + PHY_SetRFReg(a, RF_PATH_B, RF_TXM_IDAC, bRFRegOffsetMask, + pRFCalibrateInfo->TxLOK[RF_PATH_B]); } =20 if (bResult =3D=3D SUCCESS) @@ -1650,7 +1714,9 @@ void PHY_IQCalibrate_8723B( } =20 if (bReCovery) { - _PHY_ReloadADDARegisters8723B(padapter, IQK_BB_REG_92C, pDM_Odm->RFCalib= rateInfo.IQK_BB_backup_recover, 9); + _PHY_ReloadADDARegisters8723B(padapter, IQK_BB_REG_92C, + pDM_Odm->RFCalibrateInfo.IQK_BB_backup_recover, + 9); return; } =20 @@ -1752,7 +1818,9 @@ void PHY_IQCalibrate_8723B( pDM_Odm->RFCalibrateInfo.iqk_matrix_regs_setting_value[0][i] =3D result= [final_candidate][i]; } =20 - _PHY_SaveADDARegisters8723B(padapter, IQK_BB_REG_92C, pDM_Odm->RFCalibrat= eInfo.IQK_BB_backup_recover, 9); + _PHY_SaveADDARegisters8723B(padapter, IQK_BB_REG_92C, + pDM_Odm->RFCalibrateInfo.IQK_BB_backup_recover, + 9); =20 /* restore GNT_BT */ PHY_SetBBReg(pDM_Odm->Adapter, 0x764, bMaskDWord, GNT_BT_default); diff --git a/drivers/staging/rtl8723bs/hal/hal_com.c b/drivers/staging/rtl8= 723bs/hal/hal_com.c index 70b5b289f9cb..1b0e38a1e993 100644 --- a/drivers/staging/rtl8723bs/hal/hal_com.c +++ b/drivers/staging/rtl8723bs/hal/hal_com.c @@ -792,10 +792,14 @@ void rtw_hal_check_rxfifo_full(struct adapter *adapte= r) /* todo: other chips */ =20 if (save_cnt) { + u16 last, curr; + /* rtw_write8(adapter, REG_RXERR_RPT+3, rtw_read8(adapter, REG_RXERR_RPT= +3)|0xa0); */ - pdbgpriv->dbg_rx_fifo_last_overflow =3D pdbgpriv->dbg_rx_fifo_curr_overf= low; - pdbgpriv->dbg_rx_fifo_curr_overflow =3D rtw_read16(adapter, REG_RXERR_RP= T); - pdbgpriv->dbg_rx_fifo_diff_overflow =3D pdbgpriv->dbg_rx_fifo_curr_overf= low-pdbgpriv->dbg_rx_fifo_last_overflow; + last =3D pdbgpriv->dbg_rx_fifo_curr_overflow; + curr =3D rtw_read16(adapter, REG_RXERR_RPT); + pdbgpriv->dbg_rx_fifo_last_overflow =3D last; + pdbgpriv->dbg_rx_fifo_curr_overflow =3D curr; + pdbgpriv->dbg_rx_fifo_diff_overflow =3D curr - last; } } =20 diff --git a/drivers/staging/rtl8723bs/hal/hal_com_phycfg.c b/drivers/stagi= ng/rtl8723bs/hal/hal_com_phycfg.c index cd76e26e868f..9c5c649e493b 100644 --- a/drivers/staging/rtl8723bs/hal/hal_com_phycfg.c +++ b/drivers/staging/rtl8723bs/hal/hal_com_phycfg.c @@ -318,7 +318,8 @@ static void PHY_StoreTxPowerByRateNew(struct adapter *p= adapter, u32 RfPath, u8 i =3D 0, rateIndex[4] =3D {0}, rateNum =3D 0; s8 PwrByRateVal[4] =3D {0}; =20 - PHY_GetRateValuesOfTxPowerByRate(padapter, RegAddr, BitMask, Data, rateIn= dex, PwrByRateVal, &rateNum); + PHY_GetRateValuesOfTxPowerByRate(padapter, RegAddr, BitMask, Data, + rateIndex, PwrByRateVal, &rateNum); =20 if (RfPath >=3D RF_PATH_MAX) return; @@ -436,7 +437,10 @@ void PHY_SetTxPowerIndexByRateSection( ARRAY_SIZE(ofdmRates)); =20 } else if (RateSection =3D=3D HT_MCS0_MCS7) { - u8 htRates1T[] =3D {MGN_MCS0, MGN_MCS1, MGN_MCS2, MGN_MCS3, MGN_MCS4, M= GN_MCS5, MGN_MCS6, MGN_MCS7}; + u8 htRates1T[] =3D { + MGN_MCS0, MGN_MCS1, MGN_MCS2, MGN_MCS3, + MGN_MCS4, MGN_MCS5, MGN_MCS6, MGN_MCS7 + }; PHY_SetTxPowerIndexByRateArray(padapter, RFPath, pHalData->CurrentChannelBW, Channel, htRates1T, @@ -844,11 +848,15 @@ void PHY_SetTxPowerLimit( =20 if (channelIndex =3D=3D -1) return; - - prevPowerLimit =3D pHalData->TxPwrLimit_2_4G[regulation][bandwidth][rateS= ection][channelIndex][RF_PATH_A]; - - if (powerLimit < prevPowerLimit) - pHalData->TxPwrLimit_2_4G[regulation][bandwidth][rateSection][channelInd= ex][RF_PATH_A] =3D powerLimit; + { + s8 *pLimit =3D &pHalData->TxPwrLimit_2_4G[regulation][bandwidth] + [rateSection][channelIndex] + [RF_PATH_A]; + prevPowerLimit =3D *pLimit; + + if (powerLimit < prevPowerLimit) + *pLimit =3D powerLimit; + } } =20 void Hal_ChannelPlanToRegulation(struct adapter *Adapter, u16 ChannelPlan) diff --git a/drivers/staging/rtl8723bs/hal/hal_intf.c b/drivers/staging/rtl= 8723bs/hal/hal_intf.c index 462553d296ff..adccc5566e10 100644 --- a/drivers/staging/rtl8723bs/hal/hal_intf.c +++ b/drivers/staging/rtl8723bs/hal/hal_intf.c @@ -120,7 +120,9 @@ u8 rtw_hal_get_def_var(struct adapter *padapter, enum h= al_def_variable eVariable return GetHalDefVar8723BSDIO(padapter, eVariable, pValue); } =20 -void rtw_hal_set_odm_var(struct adapter *padapter, enum hal_odm_variable e= Variable, void *pValue1, bool bSet) +void rtw_hal_set_odm_var(struct adapter *padapter, + enum hal_odm_variable eVariable, + void *pValue1, bool bSet) { SetHalODMVar(padapter, eVariable, pValue1, bSet); } diff --git a/drivers/staging/rtl8723bs/hal/hal_sdio.c b/drivers/staging/rtl= 8723bs/hal/hal_sdio.c index 665c85eccbdf..fb4196af681f 100644 --- a/drivers/staging/rtl8723bs/hal/hal_sdio.c +++ b/drivers/staging/rtl8723bs/hal/hal_sdio.c @@ -23,8 +23,10 @@ u8 rtw_hal_sdio_query_tx_freepage( ) { struct hal_com_data *pHalData =3D GET_HAL_DATA(padapter); + u8 page_free =3D pHalData->SdioTxFIFOFreePage[PageIdx]; + u8 pub_free =3D pHalData->SdioTxFIFOFreePage[PUBLIC_QUEUE_IDX]; =20 - if ((pHalData->SdioTxFIFOFreePage[PageIdx]+pHalData->SdioTxFIFOFreePage[P= UBLIC_QUEUE_IDX]) >=3D (RequiredPageNum)) + if ((page_free + pub_free) >=3D RequiredPageNum) return true; else return false; diff --git a/drivers/staging/rtl8723bs/hal/odm.c b/drivers/staging/rtl8723b= s/hal/odm.c index a22354f728c1..978fb7a2630c 100644 --- a/drivers/staging/rtl8723bs/hal/odm.c +++ b/drivers/staging/rtl8723bs/hal/odm.c @@ -131,8 +131,13 @@ u8 CCKSwingTable_Ch14_New[CCK_TABLE_SIZE][8] =3D { =20 static void odm_CommonInfoSelfInit(struct dm_odm_t *pDM_Odm) { - pDM_Odm->bCckHighPower =3D (bool) PHY_QueryBBReg(pDM_Odm->Adapter, ODM_RE= G(CCK_RPT_FORMAT, pDM_Odm), ODM_BIT(CCK_RPT_FORMAT, pDM_Odm)); - pDM_Odm->RFPathRxEnable =3D (u8) PHY_QueryBBReg(pDM_Odm->Adapter, ODM_REG= (BB_RX_PATH, pDM_Odm), ODM_BIT(BB_RX_PATH, pDM_Odm)); + u32 cck_reg =3D ODM_REG(CCK_RPT_FORMAT, pDM_Odm); + u32 cck_bit =3D ODM_BIT(CCK_RPT_FORMAT, pDM_Odm); + u32 rx_reg =3D ODM_REG(BB_RX_PATH, pDM_Odm); + u32 rx_bit =3D ODM_BIT(BB_RX_PATH, pDM_Odm); + + pDM_Odm->bCckHighPower =3D (bool)PHY_QueryBBReg(pDM_Odm->Adapter, cck_reg= , cck_bit); + pDM_Odm->RFPathRxEnable =3D (u8)PHY_QueryBBReg(pDM_Odm->Adapter, rx_reg, = rx_bit); =20 pDM_Odm->TxRate =3D 0xFF; } @@ -267,12 +272,15 @@ static void odm_RefreshRateAdaptiveMaskCE(struct dm_o= dm_t *pDM_Odm) struct sta_info *pstat =3D pDM_Odm->pODM_StaInfo[i]; =20 if (IS_STA_VALID(pstat)) { - if (is_multicast_ether_addr(pstat->hwaddr)) /* if (psta->mac_id =3D=3D= 1) */ + u32 rssi =3D pstat->rssi_stat.UndecoratedSmoothedPWDB; + bool changed; + + if (is_multicast_ether_addr(pstat->hwaddr)) continue; =20 - if (true =3D=3D ODM_RAStateCheck(pDM_Odm, pstat->rssi_stat.UndecoratedS= moothedPWDB, false, &pstat->rssi_level)) { + changed =3D ODM_RAStateCheck(pDM_Odm, rssi, false, &pstat->rssi_level); + if (changed) rtw_hal_update_ra_mask(pstat, pstat->rssi_level); - } =20 } } diff --git a/drivers/staging/rtl8723bs/hal/odm_DIG.c b/drivers/staging/rtl8= 723bs/hal/odm_DIG.c index f10427abd849..58bb45feea22 100644 --- a/drivers/staging/rtl8723bs/hal/odm_DIG.c +++ b/drivers/staging/rtl8723bs/hal/odm_DIG.c @@ -10,17 +10,23 @@ void odm_NHMCounterStatisticsInit(void *pDM_VOID) { struct dm_odm_t *pDM_Odm =3D (struct dm_odm_t *)pDM_VOID; + struct adapter *adapter =3D pDM_Odm->Adapter; =20 /* PHY parameters initialize for n series */ - rtw_write16(pDM_Odm->Adapter, ODM_REG_NHM_TIMER_11N+2, 0x2710); /* 0x894[= 31:16]=3D 0x2710 Time duration for NHM unit: 4us, 0x2710 =3D40ms */ - /* rtw_write16(pDM_Odm->Adapter, ODM_REG_NHM_TIMER_11N+2, 0x4e20); 0x894[= 31:16]=3D 0x4e20 Time duration for NHM unit: 4us, 0x4e20 =3D80ms */ - rtw_write16(pDM_Odm->Adapter, ODM_REG_NHM_TH9_TH10_11N+2, 0xffff); /* 0x8= 90[31:16]=3D 0xffff th_9, th_10 */ - /* rtw_write32(pDM_Odm->Adapter, ODM_REG_NHM_TH3_TO_TH0_11N, 0xffffff5c);= 0x898 =3D 0xffffff5c th_3, th_2, th_1, th_0 */ - rtw_write32(pDM_Odm->Adapter, ODM_REG_NHM_TH3_TO_TH0_11N, 0xffffff52); /*= 0x898 =3D 0xffffff52 th_3, th_2, th_1, th_0 */ - rtw_write32(pDM_Odm->Adapter, ODM_REG_NHM_TH7_TO_TH4_11N, 0xffffffff); /*= 0x89c =3D 0xffffffff th_7, th_6, th_5, th_4 */ - PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG_FPGA0_IQK_11N, bMaskByte0, 0xff); = /* 0xe28[7:0]=3D 0xff th_8 */ - PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG_NHM_TH9_TH10_11N, BIT10|BIT9|BIT8,= 0x7); /* 0x890[9:8]=3D3 enable CCX */ - PHY_SetBBReg(pDM_Odm->Adapter, ODM_REG_OFDM_FA_RSTC_11N, BIT7, 0x1); /* = 0xc0c[7]=3D 1 max power among all RX ants */ + /* 0x894[31:16]=3D0x2710, Time duration for NHM unit: 4us, 0x2710=3D40ms = */ + rtw_write16(adapter, ODM_REG_NHM_TIMER_11N + 2, 0x2710); + /* 0x890[31:16]=3D0xffff, th_9, th_10 */ + rtw_write16(adapter, ODM_REG_NHM_TH9_TH10_11N + 2, 0xffff); + /* 0x898=3D0xffffff52, th_3, th_2, th_1, th_0 */ + rtw_write32(adapter, ODM_REG_NHM_TH3_TO_TH0_11N, 0xffffff52); + /* 0x89c=3D0xffffffff, th_7, th_6, th_5, th_4 */ + rtw_write32(adapter, ODM_REG_NHM_TH7_TO_TH4_11N, 0xffffffff); + /* 0xe28[7:0]=3D0xff, th_8 */ + PHY_SetBBReg(adapter, ODM_REG_FPGA0_IQK_11N, bMaskByte0, 0xff); + /* 0x890[9:8]=3D3, enable CCX */ + PHY_SetBBReg(adapter, ODM_REG_NHM_TH9_TH10_11N, BIT10 | BIT9 | BIT8, 0x7); + /* 0xc0c[7]=3D1, max power among all RX ants */ + PHY_SetBBReg(adapter, ODM_REG_OFDM_FA_RSTC_11N, BIT7, 0x1); } =20 void odm_NHMCounterStatistics(void *pDM_VOID) @@ -80,8 +86,8 @@ void odm_NHMBB(void *pDM_VOID) pDM_Odm->NHMLastRxOkcnt =3D *(pDM_Odm->pNumRxBytesUnicast); =20 - - if ((pDM_Odm->NHMCurTxOkcnt) + 1 > (u64)(pDM_Odm->NHMCurRxOkcnt<<2) + 1) = { /* Tx > 4*Rx possible for adaptivity test */ + /* Tx > 4*Rx possible for adaptivity test */ + if ((pDM_Odm->NHMCurTxOkcnt) + 1 > (u64)(pDM_Odm->NHMCurRxOkcnt << 2) + 1= ) { if (pDM_Odm->NHM_cnt_0 >=3D 190 || pDM_Odm->adaptivity_flag =3D=3D true)= { /* Enable EDCCA since it is possible running Adaptivity testing */ /* test_status =3D 1; */ @@ -343,7 +349,9 @@ void odm_DIGInit(void *pDM_VOID) =20 pDM_DigTable->bStopDIG =3D false; pDM_DigTable->bPSDInProgress =3D false; - pDM_DigTable->CurIGValue =3D (u8) PHY_QueryBBReg(pDM_Odm->Adapter, ODM_RE= G(IGI_A, pDM_Odm), ODM_BIT(IGI, pDM_Odm)); + pDM_DigTable->CurIGValue =3D (u8)PHY_QueryBBReg(pDM_Odm->Adapter, + ODM_REG(IGI_A, pDM_Odm), + ODM_BIT(IGI, pDM_Odm)); pDM_DigTable->RssiLowThresh =3D DM_DIG_THRESH_LOW; pDM_DigTable->RssiHighThresh =3D DM_DIG_THRESH_HIGH; pDM_DigTable->FALowThresh =3D DMfalseALARM_THRESH_LOW; @@ -565,10 +573,12 @@ void odm_DIG(void *pDM_VOID) else if (pDM_Odm->bBtConnectProcess) ODM_Write_DIG(pDM_Odm, 0x28); else - ODM_Write_DIG(pDM_Odm, pDM_DigTable->BT30_CurIGI);/* ODM_Write_DIG(pDM= _Odm, pDM_DigTable->CurIGValue); */ + /* ODM_Write_DIG(pDM_Odm, pDM_DigTable->CurIGValue); */ + ODM_Write_DIG(pDM_Odm, pDM_DigTable->BT30_CurIGI); } } else { /* BT is not using */ - ODM_Write_DIG(pDM_Odm, CurrentIGI);/* ODM_Write_DIG(pDM_Odm, pDM_DigTabl= e->CurIGValue); */ + /* ODM_Write_DIG(pDM_Odm, pDM_DigTable->CurIGValue); */ + ODM_Write_DIG(pDM_Odm, CurrentIGI); pDM_DigTable->bMediaConnect_0 =3D pDM_Odm->bLinked; pDM_DigTable->DIG_Dynamic_MIN_0 =3D DIG_Dynamic_MIN; } diff --git a/drivers/staging/rtl8723bs/hal/odm_HWConfig.c b/drivers/staging= /rtl8723bs/hal/odm_HWConfig.c index 5bb27b872052..86f41b8f9fe2 100644 --- a/drivers/staging/rtl8723bs/hal/odm_HWConfig.c +++ b/drivers/staging/rtl8723bs/hal/odm_HWConfig.c @@ -372,13 +372,22 @@ static void odm_Process_RSSIForDM( OFDM_pkt +=3D (u8)(pEntry->rssi_stat.PacketMap>>i)&BIT0; =20 if (pEntry->rssi_stat.ValidBit =3D=3D 64) { + u32 ofdm_weight, cck_weight; + Weighting =3D ((OFDM_pkt<<4) > 64)?64:(OFDM_pkt<<4); - UndecoratedSmoothedPWDB =3D (Weighting*UndecoratedSmoothedOFDM+(64-Wei= ghting)*UndecoratedSmoothedCCK)>>6; + ofdm_weight =3D Weighting * UndecoratedSmoothedOFDM; + cck_weight =3D (64 - Weighting) * UndecoratedSmoothedCCK; + UndecoratedSmoothedPWDB =3D (ofdm_weight + cck_weight) >> 6; } else { - if (pEntry->rssi_stat.ValidBit !=3D 0) - UndecoratedSmoothedPWDB =3D (OFDM_pkt*UndecoratedSmoothedOFDM+(pEntry= ->rssi_stat.ValidBit-OFDM_pkt)*UndecoratedSmoothedCCK)/pEntry->rssi_stat.Va= lidBit; - else + if (pEntry->rssi_stat.ValidBit !=3D 0) { + u8 valid =3D pEntry->rssi_stat.ValidBit; + u32 ofdm_sum =3D OFDM_pkt * UndecoratedSmoothedOFDM; + u32 cck_sum =3D (valid - OFDM_pkt) * UndecoratedSmoothedCCK; + + UndecoratedSmoothedPWDB =3D (ofdm_sum + cck_sum) / valid; + } else { UndecoratedSmoothedPWDB =3D 0; + } } =20 pEntry->rssi_stat.UndecoratedSmoothedCCK =3D UndecoratedSmoothedCCK; diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c b/drivers/staging= /rtl8723bs/hal/rtl8723b_cmd.c index af6cdda8238d..92951ba4561e 100644 --- a/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c +++ b/drivers/staging/rtl8723bs/hal/rtl8723b_cmd.c @@ -154,14 +154,28 @@ static void ConstructBeacon(struct adapter *padapter,= u8 *pframe, u32 *pLength) /* below for ad-hoc mode */ =20 /* SSID */ - pframe =3D rtw_set_ie(pframe, WLAN_EID_SSID, cur_network->ssid.ssid_lengt= h, cur_network->ssid.ssid, &pktlen); + { + uint ssid_len =3D cur_network->ssid.ssid_length; + + pframe =3D rtw_set_ie(pframe, WLAN_EID_SSID, ssid_len, + cur_network->ssid.ssid, &pktlen); + } =20 /* supported rates... */ rate_len =3D rtw_get_rateset_len(cur_network->supported_rates); - pframe =3D rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, ((rate_len > 8) ? 8 : = rate_len), cur_network->supported_rates, &pktlen); + { + uint len =3D (rate_len > 8) ? 8 : rate_len; + + pframe =3D rtw_set_ie(pframe, WLAN_EID_SUPP_RATES, len, + cur_network->supported_rates, &pktlen); + } =20 /* DS parameter set */ - pframe =3D rtw_set_ie(pframe, WLAN_EID_DS_PARAMS, 1, (unsigned char *)&(c= ur_network->configuration.ds_config), &pktlen); + { + unsigned char *ds =3D (unsigned char *)&cur_network->configuration.ds_co= nfig; + + pframe =3D rtw_set_ie(pframe, WLAN_EID_DS_PARAMS, 1, ds, &pktlen); + } =20 if ((pmlmeinfo->state&0x03) =3D=3D WIFI_FW_ADHOC_STATE) { u32 ATIMWindow; @@ -176,8 +190,12 @@ static void ConstructBeacon(struct adapter *padapter, = u8 *pframe, u32 *pLength) =20 =20 /* EXTERNDED SUPPORTED RATE */ - if (rate_len > 8) - pframe =3D rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, (rate_len - 8), (= cur_network->supported_rates + 8), &pktlen); + if (rate_len > 8) { + u8 *ext_rates =3D cur_network->supported_rates + 8; + + pframe =3D rtw_set_ie(pframe, WLAN_EID_EXT_SUPP_RATES, + rate_len - 8, ext_rates, &pktlen); + } =20 =20 /* todo:HT for adhoc */ @@ -309,10 +327,12 @@ void rtl8723b_set_FwMediaStatusRpt_cmd(struct adapter= *padapter, u8 mstatus, u8 SET_8723B_H2CCMD_MSRRPT_PARM_MACID(u1H2CMediaStatusRptParm, macid); SET_8723B_H2CCMD_MSRRPT_PARM_MACID_END(u1H2CMediaStatusRptParm, macid_end= ); =20 - FillH2CCmd8723B(padapter, H2C_8723B_MEDIA_STATUS_RPT, H2C_MEDIA_STATUS_RP= T_LEN, u1H2CMediaStatusRptParm); + FillH2CCmd8723B(padapter, H2C_8723B_MEDIA_STATUS_RPT, + H2C_MEDIA_STATUS_RPT_LEN, u1H2CMediaStatusRptParm); } =20 -void rtl8723b_set_FwMacIdConfig_cmd(struct adapter *padapter, u8 mac_id, u= 8 raid, u8 bw, u8 sgi, u32 mask) +void rtl8723b_set_FwMacIdConfig_cmd(struct adapter *padapter, u8 mac_id, + u8 raid, u8 bw, u8 sgi, u32 mask) { u8 u1H2CMacIdConfigParm[H2C_MACID_CFG_LEN] =3D {0}; =20 @@ -386,7 +406,8 @@ void rtl8723b_set_FwPwrMode_cmd(struct adapter *padapte= r, u8 psmode) SET_8723B_H2CCMD_PWRMODE_PARM_SMART_PS(u1H2CPwrModeParm, pwrpriv->smart_p= s); SET_8723B_H2CCMD_PWRMODE_PARM_RLBM(u1H2CPwrModeParm, rlbm); SET_8723B_H2CCMD_PWRMODE_PARM_BCN_PASS_TIME(u1H2CPwrModeParm, awake_intvl= ); - SET_8723B_H2CCMD_PWRMODE_PARM_ALL_QUEUE_UAPSD(u1H2CPwrModeParm, padapter-= >registrypriv.uapsd_enable); + SET_8723B_H2CCMD_PWRMODE_PARM_ALL_QUEUE_UAPSD(u1H2CPwrModeParm, + padapter->registrypriv.uapsd_enable); SET_8723B_H2CCMD_PWRMODE_PARM_PWR_STATE(u1H2CPwrModeParm, PowerState); SET_8723B_H2CCMD_PWRMODE_PARM_BYTE5(u1H2CPwrModeParm, byte5); if (psmode !=3D PS_MODE_ACTIVE) { @@ -402,7 +423,9 @@ void rtl8723b_set_FwPwrMode_cmd(struct adapter *padapte= r, u8 psmode) pmlmeext->DrvBcnTimeOut =3D 0xff; =20 for (i =3D 0; i < 9; i++) { - pmlmeext->bcn_delay_ratio[i] =3D (pmlmeext->bcn_delay_cnt[i]*100)/pmlm= eext->bcn_cnt; + u32 cnt =3D pmlmeext->bcn_delay_cnt[i]; + + pmlmeext->bcn_delay_ratio[i] =3D (cnt * 100) / pmlmeext->bcn_cnt; =20 ratio_20_delay +=3D pmlmeext->bcn_delay_ratio[i]; ratio_80_delay +=3D pmlmeext->bcn_delay_ratio[i]; @@ -429,7 +452,9 @@ void rtl8723b_set_FwPwrMode_cmd(struct adapter *padapte= r, u8 psmode) pmlmeext->DrvBcnTimeOut =3D7; =20 if ((pmlmeext->DrvBcnEarly!=3D 0Xff) && (pmlmeext->DrvBcnTimeOut!=3D 0xf= f)) - u1H2CPwrModeParm[H2C_PWRMODE_LEN-1] =3D BIT(0) | ((pmlmeext->DrvBcnEarl= y<<1)&0x0E) |((pmlmeext->DrvBcnTimeOut<<4)&0xf0) ; + u1H2CPwrModeParm[H2C_PWRMODE_LEN-1] =3D + BIT(0) | ((pmlmeext->DrvBcnEarly<<1)&0x0E) | + ((pmlmeext->DrvBcnTimeOut<<4)&0xf0); */ =20 } @@ -528,7 +553,12 @@ static void rtl8723b_set_FwRsvdPagePkt( /* 3 (2) ps-poll */ RsvdPageLoc.LocPsPoll =3D TotalPageNum; ConstructPSPoll(padapter, &ReservedPagePacket[BufIndex], &PSPollLength); - rtl8723b_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex-TxDescLe= n], PSPollLength, true, false, false); + { + u8 *desc =3D &ReservedPagePacket[BufIndex - TxDescLen]; + + rtl8723b_fill_fake_txdesc(padapter, desc, PSPollLength, + true, false, false); + } =20 CurtPktPageNum =3D (u8)PageNum_128(TxDescLen + PSPollLength); =20 @@ -545,7 +575,12 @@ static void rtl8723b_set_FwRsvdPagePkt( get_my_bssid(&pmlmeinfo->network), false, 0, 0, false ); - rtl8723b_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex-TxDescLe= n], NullDataLength, false, false, false); + { + u8 *desc =3D &ReservedPagePacket[BufIndex - TxDescLen]; + + rtl8723b_fill_fake_txdesc(padapter, desc, NullDataLength, + false, false, false); + } =20 CurtPktPageNum =3D (u8)PageNum_128(TxDescLen + NullDataLength); =20 @@ -562,7 +597,12 @@ static void rtl8723b_set_FwRsvdPagePkt( get_my_bssid(&pmlmeinfo->network), true, 0, 0, false ); - rtl8723b_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex-TxDescLe= n], QosNullLength, false, false, false); + { + u8 *desc =3D &ReservedPagePacket[BufIndex - TxDescLen]; + + rtl8723b_fill_fake_txdesc(padapter, desc, QosNullLength, + false, false, false); + } =20 CurtPktPageNum =3D (u8)PageNum_128(TxDescLen + QosNullLength); =20 @@ -579,7 +619,12 @@ static void rtl8723b_set_FwRsvdPagePkt( get_my_bssid(&pmlmeinfo->network), true, 0, 0, false ); - rtl8723b_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex-TxDescLe= n], BTQosNullLength, false, true, false); + { + u8 *desc =3D &ReservedPagePacket[BufIndex - TxDescLen]; + + rtl8723b_fill_fake_txdesc(padapter, desc, BTQosNullLength, + false, true, false); + } =20 CurtPktPageNum =3D (u8)PageNum_128(TxDescLen + BTQosNullLength); =20 @@ -656,6 +701,8 @@ void rtl8723b_download_rsvd_page(struct adapter *padapt= er, u8 mstatus) DLBcnCount =3D 0; poll =3D 0; do { + bool stop; + /* download rsvd page. */ rtl8723b_set_FwRsvdPagePkt(padapter, 0); DLBcnCount++; @@ -663,11 +710,16 @@ void rtl8723b_download_rsvd_page(struct adapter *pada= pter, u8 mstatus) yield(); /* mdelay(10); */ /* check rsvd page download OK. */ - rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, (u8 *)(&bcn_valid)); + rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, + (u8 *)(&bcn_valid)); poll++; - } while (!bcn_valid && (poll%10) !=3D 0 && !padapter->bSurpriseRemoved = && !padapter->bDriverStopped); + stop =3D padapter->bSurpriseRemoved || + padapter->bDriverStopped; + } while (!bcn_valid && (poll % 10) !=3D 0 && !stop); =20 - } while (!bcn_valid && DLBcnCount <=3D 100 && !padapter->bSurpriseRemove= d && !padapter->bDriverStopped); + if (stop) + break; + } while (!bcn_valid && DLBcnCount <=3D 100); =20 if (padapter->bSurpriseRemoved || padapter->bDriverStopped) { } else { @@ -850,7 +902,12 @@ static void SetFwRsvdPagePkt_BTCoex(struct adapter *pa= dapter) NULL, true, 0, 0, false ); - rtl8723b_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex-TxDescLe= n], BTQosNullLength, false, true, false); + { + u8 *desc =3D &ReservedPagePacket[BufIndex - TxDescLen]; + + rtl8723b_fill_fake_txdesc(padapter, desc, BTQosNullLength, + false, true, false); + } =20 CurtPktPageNum =3D (u8)PageNum_128(TxDescLen + BTQosNullLength); =20 @@ -922,6 +979,8 @@ void rtl8723b_download_BTCoex_AP_mode_rsvd_page(struct = adapter *padapter) DLBcnCount =3D 0; poll =3D 0; do { + bool stop; + SetFwRsvdPagePkt_BTCoex(padapter); DLBcnCount++; do { @@ -930,8 +989,12 @@ void rtl8723b_download_BTCoex_AP_mode_rsvd_page(struct= adapter *padapter) /* check rsvd page download OK. */ rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, &bcn_valid); poll++; - } while (!bcn_valid && (poll%10) !=3D 0 && !padapter->bSurpriseRemoved &= & !padapter->bDriverStopped); - } while (!bcn_valid && (DLBcnCount <=3D 100) && !padapter->bSurpriseRemov= ed && !padapter->bDriverStopped); + stop =3D padapter->bSurpriseRemoved || padapter->bDriverStopped; + } while (!bcn_valid && (poll % 10) !=3D 0 && !stop); + + if (stop) + break; + } while (!bcn_valid && (DLBcnCount <=3D 100)); =20 if (bcn_valid) { struct pwrctrl_priv *pwrctl =3D adapter_to_pwrctl(padapter); diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c b/drivers/st= aging/rtl8723bs/hal/rtl8723b_hal_init.c index ae5e4980ed06..017096857d67 100644 --- a/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c +++ b/drivers/staging/rtl8723bs/hal/rtl8723b_hal_init.c @@ -58,7 +58,10 @@ static int _BlockWrite(struct adapter *padapter, void *b= uffer, u32 buffSize) remainSize_p1 =3D buffSize % blockSize_p1; =20 for (i =3D 0; i < blockCount_p1; i++) { - ret =3D rtw_write32(padapter, (FW_8723B_START_ADDRESS + i * blockSize_p1= ), *((u32 *)(bufferPtr + i * blockSize_p1))); + u32 addr =3D FW_8723B_START_ADDRESS + i * blockSize_p1; + u32 data =3D *((u32 *)(bufferPtr + i * blockSize_p1)); + + ret =3D rtw_write32(padapter, addr, data); if (ret =3D=3D _FAIL) { netdev_dbg(padapter->pnetdev, "write failed at %s %d, block:%d\n", __func__, __LINE__, i); @@ -261,27 +264,34 @@ void rtl8723b_FirmwareSelfReset(struct adapter *padap= ter) struct hal_com_data *pHalData =3D GET_HAL_DATA(padapter); u8 val; u8 Delay =3D 100; + bool old_fw; =20 - if ( - !(IS_FW_81xxC(padapter) && ((pHalData->FirmwareVersion < 0x21) || (pHalD= ata->FirmwareVersion =3D=3D 0x21 && pHalData->FirmwareSubVersion < 0x01))) - ) { /* after 88C Fw v33.1 */ - /* 0x1cf =3D 0x20. Inform 8051 to reset. 2009.12.25. tynli_test */ - rtw_write8(padapter, REG_HMETFR+3, 0x20); + /* Check for old firmware version */ + old_fw =3D IS_FW_81xxC(padapter) && + ((pHalData->FirmwareVersion < 0x21) || + (pHalData->FirmwareVersion =3D=3D 0x21 && + pHalData->FirmwareSubVersion < 0x01)); + + if (old_fw) + return; =20 + /* after 88C Fw v33.1 */ + /* 0x1cf =3D 0x20. Inform 8051 to reset. 2009.12.25. tynli_test */ + rtw_write8(padapter, REG_HMETFR + 3, 0x20); + + val =3D rtw_read8(padapter, REG_SYS_FUNC_EN + 1); + while (val & BIT2) { + Delay--; + if (Delay =3D=3D 0) + break; + udelay(50); val =3D rtw_read8(padapter, REG_SYS_FUNC_EN + 1); - while (val & BIT2) { - Delay--; - if (Delay =3D=3D 0) - break; - udelay(50); - val =3D rtw_read8(padapter, REG_SYS_FUNC_EN + 1); - } + } =20 - if (Delay =3D=3D 0) { - /* force firmware reset */ - val =3D rtw_read8(padapter, REG_SYS_FUNC_EN + 1); - rtw_write8(padapter, REG_SYS_FUNC_EN + 1, val & (~BIT2)); - } + if (Delay =3D=3D 0) { + /* force firmware reset */ + val =3D rtw_read8(padapter, REG_SYS_FUNC_EN + 1); + rtw_write8(padapter, REG_SYS_FUNC_EN + 1, val & (~BIT2)); } } =20 @@ -1000,9 +1010,13 @@ void rtl8723b_SetBeaconRelatedRegisters(struct adapt= er *padapter) rtw_write32(padapter, REG_TCR, value32); =20 /* NOTE: Fix test chip's bug (about contention windows's randomness) */ - if (check_fwstate(&padapter->mlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER= _STATE|WIFI_AP_STATE) =3D=3D true) { - rtw_write8(padapter, REG_RXTSF_OFFSET_CCK, 0x50); - rtw_write8(padapter, REG_RXTSF_OFFSET_OFDM, 0x50); + { + u16 state_mask =3D WIFI_ADHOC_STATE | WIFI_ADHOC_MASTER_STATE | WIFI_AP_= STATE; + + if (check_fwstate(&padapter->mlmepriv, state_mask)) { + rtw_write8(padapter, REG_RXTSF_OFFSET_CCK, 0x50); + rtw_write8(padapter, REG_RXTSF_OFFSET_OFDM, 0x50); + } } =20 _BeaconFunctionEnable(padapter, true, true); @@ -1655,7 +1669,9 @@ static u8 fill_txdesc_sectype(struct pkt_attrib *patt= rib) return sectype; } =20 -static void fill_txdesc_vcs_8723b(struct adapter *padapter, struct pkt_att= rib *pattrib, struct txdesc_8723b *ptxdesc) +static void fill_txdesc_vcs_8723b(struct adapter *padapter, + struct pkt_attrib *pattrib, + struct txdesc_8723b *ptxdesc) { if (pattrib->vcs_mode) { switch (pattrib->vcs_mode) { @@ -1686,7 +1702,9 @@ static void fill_txdesc_vcs_8723b(struct adapter *pad= apter, struct pkt_attrib *p } } =20 -static void fill_txdesc_phy_8723b(struct adapter *padapter, struct pkt_att= rib *pattrib, struct txdesc_8723b *ptxdesc) +static void fill_txdesc_phy_8723b(struct adapter *padapter, + struct pkt_attrib *pattrib, + struct txdesc_8723b *ptxdesc) { if (pattrib->ht_en) { ptxdesc->data_bw =3D BWMapping_8723B(padapter, pattrib); diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_phycfg.c b/drivers/stag= ing/rtl8723bs/hal/rtl8723b_phycfg.c index d8709d40cb33..90c49a32549e 100644 --- a/drivers/staging/rtl8723bs/hal/rtl8723b_phycfg.c +++ b/drivers/staging/rtl8723bs/hal/rtl8723b_phycfg.c @@ -109,18 +109,26 @@ static u32 phy_RFSerialRead_8723B( NewOffset =3D Offset; =20 if (eRFPath =3D=3D RF_PATH_A) { - tmplong2 =3D PHY_QueryBBReg(Adapter, rFPGA0_XA_HSSIParameter2|MaskforPhy= Set, bMaskDWord); + u32 regA =3D rFPGA0_XA_HSSIParameter2 | MaskforPhySet; + + tmplong2 =3D PHY_QueryBBReg(Adapter, regA, bMaskDWord); tmplong2 =3D (tmplong2 & (~bLSSIReadAddress)) | (NewOffset<<23) | bLSSIR= eadEdge; /* T65 RF */ - PHY_SetBBReg(Adapter, rFPGA0_XA_HSSIParameter2|MaskforPhySet, bMaskDWord= , tmplong2&(~bLSSIReadEdge)); + PHY_SetBBReg(Adapter, regA, bMaskDWord, tmplong2 & (~bLSSIReadEdge)); } else { - tmplong2 =3D PHY_QueryBBReg(Adapter, rFPGA0_XB_HSSIParameter2|MaskforPhy= Set, bMaskDWord); + u32 regB =3D rFPGA0_XB_HSSIParameter2 | MaskforPhySet; + + tmplong2 =3D PHY_QueryBBReg(Adapter, regB, bMaskDWord); tmplong2 =3D (tmplong2 & (~bLSSIReadAddress)) | (NewOffset<<23) | bLSSIR= eadEdge; /* T65 RF */ - PHY_SetBBReg(Adapter, rFPGA0_XB_HSSIParameter2|MaskforPhySet, bMaskDWord= , tmplong2&(~bLSSIReadEdge)); + PHY_SetBBReg(Adapter, regB, bMaskDWord, tmplong2 & (~bLSSIReadEdge)); } =20 - tmplong2 =3D PHY_QueryBBReg(Adapter, rFPGA0_XA_HSSIParameter2|MaskforPhyS= et, bMaskDWord); - PHY_SetBBReg(Adapter, rFPGA0_XA_HSSIParameter2|MaskforPhySet, bMaskDWord,= tmplong2 & (~bLSSIReadEdge)); - PHY_SetBBReg(Adapter, rFPGA0_XA_HSSIParameter2|MaskforPhySet, bMaskDWord,= tmplong2 | bLSSIReadEdge); + { + u32 reg =3D rFPGA0_XA_HSSIParameter2 | MaskforPhySet; + + tmplong2 =3D PHY_QueryBBReg(Adapter, reg, bMaskDWord); + PHY_SetBBReg(Adapter, reg, bMaskDWord, tmplong2 & (~bLSSIReadEdge)); + PHY_SetBBReg(Adapter, reg, bMaskDWord, tmplong2 | bLSSIReadEdge); + } =20 udelay(10); =20 @@ -307,22 +315,29 @@ static void phy_InitBBRFRegisterDefinition(struct ada= pter *Adapter) struct hal_com_data *pHalData =3D GET_HAL_DATA(Adapter); =20 /* RF Interface Sowrtware Control */ - pHalData->PHYRegDef[RF_PATH_A].rfintfs =3D rFPGA0_XAB_RFInterfaceSW; /* = 16 LSBs if read 32-bit from 0x870 */ - pHalData->PHYRegDef[RF_PATH_B].rfintfs =3D rFPGA0_XAB_RFInterfaceSW; /* = 16 MSBs if read 32-bit from 0x870 (16-bit for 0x872) */ + /* 16 LSBs if read 32-bit from 0x870 */ + pHalData->PHYRegDef[RF_PATH_A].rfintfs =3D rFPGA0_XAB_RFInterfaceSW; + /* 16 MSBs if read 32-bit from 0x870 (16-bit for 0x872) */ + pHalData->PHYRegDef[RF_PATH_B].rfintfs =3D rFPGA0_XAB_RFInterfaceSW; =20 /* RF Interface Output (and Enable) */ - pHalData->PHYRegDef[RF_PATH_A].rfintfo =3D rFPGA0_XA_RFInterfaceOE; /* 1= 6 LSBs if read 32-bit from 0x860 */ - pHalData->PHYRegDef[RF_PATH_B].rfintfo =3D rFPGA0_XB_RFInterfaceOE; /* 1= 6 LSBs if read 32-bit from 0x864 */ + /* 16 LSBs if read 32-bit from 0x860 */ + pHalData->PHYRegDef[RF_PATH_A].rfintfo =3D rFPGA0_XA_RFInterfaceOE; + /* 16 LSBs if read 32-bit from 0x864 */ + pHalData->PHYRegDef[RF_PATH_B].rfintfo =3D rFPGA0_XB_RFInterfaceOE; =20 /* RF Interface (Output and) Enable */ - pHalData->PHYRegDef[RF_PATH_A].rfintfe =3D rFPGA0_XA_RFInterfaceOE; /* 1= 6 MSBs if read 32-bit from 0x860 (16-bit for 0x862) */ - pHalData->PHYRegDef[RF_PATH_B].rfintfe =3D rFPGA0_XB_RFInterfaceOE; /* 1= 6 MSBs if read 32-bit from 0x864 (16-bit for 0x866) */ + /* 16 MSBs if read 32-bit from 0x860 (16-bit for 0x862) */ + pHalData->PHYRegDef[RF_PATH_A].rfintfe =3D rFPGA0_XA_RFInterfaceOE; + /* 16 MSBs if read 32-bit from 0x864 (16-bit for 0x866) */ + pHalData->PHYRegDef[RF_PATH_B].rfintfe =3D rFPGA0_XB_RFInterfaceOE; =20 pHalData->PHYRegDef[RF_PATH_A].rf3wireOffset =3D rFPGA0_XA_LSSIParameter;= /* LSSI Parameter */ pHalData->PHYRegDef[RF_PATH_B].rf3wireOffset =3D rFPGA0_XB_LSSIParameter; =20 - pHalData->PHYRegDef[RF_PATH_A].rfHSSIPara2 =3D rFPGA0_XA_HSSIParameter2; = /* wire control parameter2 */ - pHalData->PHYRegDef[RF_PATH_B].rfHSSIPara2 =3D rFPGA0_XB_HSSIParameter2; = /* wire control parameter2 */ + /* wire control parameter2 */ + pHalData->PHYRegDef[RF_PATH_A].rfHSSIPara2 =3D rFPGA0_XA_HSSIParameter2; + pHalData->PHYRegDef[RF_PATH_B].rfHSSIPara2 =3D rFPGA0_XB_HSSIParameter2; =20 /* Transceiver Readback LSSI/HSPI mode */ pHalData->PHYRegDef[RF_PATH_A].rfLSSIReadBack =3D rFPGA0_XA_LSSIReadBack; @@ -648,8 +663,12 @@ static void phy_PostSetBwMode8723B(struct adapter *Ada= pter) PHY_SetBBReg(Adapter, rCCK0_System, bCCKSideBand, (pHalData->nCur40MhzPr= imeSC>>1)); =20 PHY_SetBBReg(Adapter, rOFDM1_LSTF, 0xC00, pHalData->nCur40MhzPrimeSC); + { + u32 val; =20 - PHY_SetBBReg(Adapter, 0x818, (BIT26|BIT27), (pHalData->nCur40MhzPrimeSC = =3D=3D HAL_PRIME_CHNL_OFFSET_LOWER) ? 2 : 1); + val =3D (pHalData->nCur40MhzPrimeSC =3D=3D HAL_PRIME_CHNL_OFFSET_LOWER)= ? 2 : 1; + PHY_SetBBReg(Adapter, 0x818, (BIT26 | BIT27), val); + } break; default: break; @@ -774,5 +793,6 @@ void PHY_SetSwChnlBWMode8723B( u8 Offset80 ) { - PHY_HandleSwChnlAndSetBW8723B(Adapter, true, true, channel, Bandwidth, Of= fset40, Offset80, channel); + PHY_HandleSwChnlAndSetBW8723B(Adapter, true, true, channel, + Bandwidth, Offset40, Offset80, channel); } diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_rf6052.c b/drivers/stag= ing/rtl8723bs/hal/rtl8723b_rf6052.c index ffb35e1ace62..e0fb36b0b666 100644 --- a/drivers/staging/rtl8723bs/hal/rtl8723b_rf6052.c +++ b/drivers/staging/rtl8723bs/hal/rtl8723b_rf6052.c @@ -113,10 +113,12 @@ static int phy_RF6052_Config_ParaFile(struct adapter = *Adapter) udelay(1);/* PlatformStallExecution(1); */ =20 /* Set bit number of Address and Data for RF register */ - PHY_SetBBReg(Adapter, pPhyReg->rfHSSIPara2, b3WireAddressLength, 0x0); /= * Set 1 to 4 bits for 8255 */ + /* Set 1 to 4 bits for 8255 */ + PHY_SetBBReg(Adapter, pPhyReg->rfHSSIPara2, b3WireAddressLength, 0x0); udelay(1);/* PlatformStallExecution(1); */ =20 - PHY_SetBBReg(Adapter, pPhyReg->rfHSSIPara2, b3WireDataLength, 0x0); /* = Set 0 to 12 bits for 8255 */ + /* Set 0 to 12 bits for 8255 */ + PHY_SetBBReg(Adapter, pPhyReg->rfHSSIPara2, b3WireDataLength, 0x0); udelay(1);/* PlatformStallExecution(1); */ =20 /*----Initialize RF fom connfiguration file----*/ diff --git a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c b/drivers/stagi= ng/rtl8723bs/hal/rtl8723bs_recv.c index 399edfbf8ec6..5bbf958d792e 100644 --- a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c +++ b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c @@ -300,8 +300,10 @@ static void rtl8723bs_recv_tasklet(struct tasklet_stru= ct *t) =20 pkt_copy->dev =3D padapter->pnetdev; precvframe->u.hdr.pkt =3D pkt_copy; - skb_reserve(pkt_copy, 8 - ((SIZE_PTR)(pkt_copy->data) & 7));/* force p= kt_copy->data at 8-byte alignment address */ - skb_reserve(pkt_copy, shift_sz);/* force ip_hdr at 8-byte alignment ad= dress according to shift_sz. */ + /* force pkt_copy->data at 8-byte alignment address */ + skb_reserve(pkt_copy, 8 - ((SIZE_PTR)(pkt_copy->data) & 7)); + /* force ip_hdr at 8-byte alignment per shift_sz */ + skb_reserve(pkt_copy, shift_sz); memcpy(pkt_copy->data, (ptr + rx_report_sz + pattrib->shift_sz), skb_l= en); precvframe->u.hdr.rx_head =3D pkt_copy->head; precvframe->u.hdr.rx_data =3D precvframe->u.hdr.rx_tail =3D pkt_copy->= data; diff --git a/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c b/drivers/stagi= ng/rtl8723bs/hal/rtl8723bs_xmit.c index abb6fdfe7e1f..7ed4c710ae8d 100644 --- a/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c +++ b/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c @@ -446,7 +446,10 @@ s32 rtl8723bs_mgnt_xmit( pxmitbuf->priv_data =3D NULL; =20 if (GetFrameSubType(pframe) =3D=3D WIFI_BEACON) { /* dump beacon directly= */ - ret =3D rtw_write_port(padapter, pdvobjpriv->Queue2Pipe[pxmitbuf->ff_hwa= ddr], pxmitbuf->len, (u8 *)pxmitbuf); + u8 ff_addr =3D pxmitbuf->ff_hwaddr; + + ret =3D rtw_write_port(padapter, pdvobjpriv->Queue2Pipe[ff_addr], + pxmitbuf->len, (u8 *)pxmitbuf); if (ret !=3D _SUCCESS) rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_WRITE_PORT_ERR); =20 diff --git a/drivers/staging/rtl8723bs/hal/sdio_halinit.c b/drivers/staging= /rtl8723bs/hal/sdio_halinit.c index 668616efa68a..d1f1778a4ec6 100644 --- a/drivers/staging/rtl8723bs/hal/sdio_halinit.c +++ b/drivers/staging/rtl8723bs/hal/sdio_halinit.c @@ -28,7 +28,9 @@ static u8 CardEnable(struct adapter *padapter) /* unlock ISO/CLK/Power control register */ rtw_write8(padapter, REG_RSV_CTRL, 0x0); =20 - ret =3D HalPwrSeqCmdParsing(padapter, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, = PWR_INTF_SDIO_MSK, rtl8723B_card_enable_flow); + ret =3D HalPwrSeqCmdParsing(padapter, PWR_CUT_ALL_MSK, + PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, + rtl8723B_card_enable_flow); if (ret =3D=3D _SUCCESS) { u8 bMacPwrCtrlOn =3D true; rtw_hal_set_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn); @@ -111,7 +113,9 @@ u8 _InitPowerOn_8723BS(struct adapter *padapter) } =20 /* Tx Page FIFO threshold */ -static void _init_available_page_threshold(struct adapter *padapter, u8 nu= mHQ, u8 numNQ, u8 numLQ, u8 numPubQ) +static void _init_available_page_threshold(struct adapter *padapter, + u8 numHQ, u8 numNQ, + u8 numLQ, u8 numPubQ) { u16 HQ_threshold, NQ_threshold, LQ_threshold; =20 @@ -852,7 +856,8 @@ static void CardDisableRTL8723BSdio(struct adapter *pad= apter) u8 bMacPwrCtrlOn; =20 /* Run LPS WL RFOFF flow */ - HalPwrSeqCmdParsing(padapter, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_= SDIO_MSK, rtl8723B_enter_lps_flow); + HalPwrSeqCmdParsing(padapter, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, + PWR_INTF_SDIO_MSK, rtl8723B_enter_lps_flow); =20 /* =3D=3D=3D=3D Reset digital sequence =3D=3D=3D=3D=3D=3D */ =20 @@ -881,7 +886,8 @@ static void CardDisableRTL8723BSdio(struct adapter *pad= apter) =20 bMacPwrCtrlOn =3D false; /* Disable CMD53 R/W */ rtw_hal_set_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn); - HalPwrSeqCmdParsing(padapter, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_= SDIO_MSK, rtl8723B_card_disable_flow); + HalPwrSeqCmdParsing(padapter, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, + PWR_INTF_SDIO_MSK, rtl8723B_card_disable_flow); } =20 u32 rtl8723bs_hal_deinit(struct adapter *padapter) @@ -1116,7 +1122,8 @@ static s32 _ReadAdapterInfo8723BS(struct adapter *pad= apter) =20 if (!padapter->hw_init_completed) { rtw_write8(padapter, 0x67, 0x00); /* for BT, Switch Ant control to BT */ - CardDisableRTL8723BSdio(padapter);/* for the power consumption issue, w= ifi ko module is loaded during booting, but wifi GUI is off */ + /* Power consumption issue: wifi module loaded at boot but GUI off */ + CardDisableRTL8723BSdio(padapter); } =20 return _SUCCESS; diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/st= aging/rtl8723bs/os_dep/ioctl_cfg80211.c index 5488940ffe2e..fe5015b8d649 100644 --- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c +++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c @@ -125,8 +125,10 @@ static struct ieee80211_supported_band *rtw_spt_band_a= lloc( if (!spt_band) goto exit; =20 - spt_band->channels =3D (struct ieee80211_channel *)(((u8 *)spt_band) + si= zeof(struct ieee80211_supported_band)); - spt_band->bitrates =3D (struct ieee80211_rate *)(((u8 *)spt_band->channel= s) + sizeof(struct ieee80211_channel) * n_channels); + spt_band->channels =3D (struct ieee80211_channel *)(((u8 *)spt_band) + + sizeof(struct ieee80211_supported_band)); + spt_band->bitrates =3D (struct ieee80211_rate *)(((u8 *)spt_band->channel= s) + + sizeof(struct ieee80211_channel) * n_channels); spt_band->band =3D band; spt_band->n_channels =3D n_channels; spt_band->n_bitrates =3D n_bitrates; @@ -205,7 +207,8 @@ int rtw_ieee80211_channel_to_frequency(int chan) } =20 #define MAX_BSSINFO_LEN 1000 -struct cfg80211_bss *rtw_cfg80211_inform_bss(struct adapter *padapter, str= uct wlan_network *pnetwork) +struct cfg80211_bss *rtw_cfg80211_inform_bss(struct adapter *padapter, + struct wlan_network *pnetwork) { struct ieee80211_channel *notify_channel; struct cfg80211_bss *bss =3D NULL; @@ -246,7 +249,10 @@ struct cfg80211_bss *rtw_cfg80211_inform_bss(struct ad= apter *padapter, struct wl u32 wpsielen =3D 0; u8 *wpsie =3D NULL; =20 - wpsie =3D rtw_get_wps_ie(pnetwork->network.ies + _FIXED_IE_LENGTH_, pnet= work->network.ie_length - _FIXED_IE_LENGTH_, NULL, &wpsielen); + u8 *ies =3D pnetwork->network.ies + _FIXED_IE_LENGTH_; + uint ie_len =3D pnetwork->network.ie_length - _FIXED_IE_LENGTH_; + + wpsie =3D rtw_get_wps_ie(ies, ie_len, NULL, &wpsielen); =20 if (wpsie && wpsielen > 0) psr =3D rtw_get_wps_attr_content(wpsie, wpsielen, WPS_ATTR_SELECTED_REG= ISTRAR, (u8 *)(&sr), NULL); @@ -275,9 +281,13 @@ struct cfg80211_bss *rtw_cfg80211_inform_bss(struct ad= apter *padapter, struct wl /* We've set wiphy's signal_type as CFG80211_SIGNAL_TYPE_MBM: signal stre= ngth in mBm (100*dBm) */ if (check_fwstate(pmlmepriv, _FW_LINKED) =3D=3D true && is_same_network(&pmlmepriv->cur_network.network, &pnetwork->network, = 0)) { - notify_signal =3D 100 * translate_percentage_to_dbm(padapter->recvpriv.s= ignal_strength);/* dbm */ + u8 sig =3D padapter->recvpriv.signal_strength; + + notify_signal =3D 100 * translate_percentage_to_dbm(sig); } else { - notify_signal =3D 100 * translate_percentage_to_dbm(pnetwork->network.ph= y_info.signal_strength);/* dbm */ + u8 sig =3D pnetwork->network.phy_info.signal_strength; + + notify_signal =3D 100 * translate_percentage_to_dbm(sig); } =20 buf =3D kzalloc(MAX_BSSINFO_LEN, GFP_ATOMIC); @@ -377,9 +387,10 @@ void rtw_cfg80211_ibss_indicate_connect(struct adapter= *padapter) rtw_warn_on(1); return; } - if (!memcmp(&(scanned->network.ssid), &(pnetwork->ssid), sizeof(struct = ndis_802_11_ssid)) - && !memcmp(scanned->network.mac_address, pnetwork->mac_address, ETH_AL= EN) - ) + if (!memcmp(&scanned->network.ssid, &pnetwork->ssid, + sizeof(struct ndis_802_11_ssid)) && + !memcmp(scanned->network.mac_address, + pnetwork->mac_address, ETH_ALEN)) rtw_cfg80211_inform_bss(padapter, scanned); else rtw_warn_on(1); @@ -490,18 +501,24 @@ void rtw_cfg80211_indicate_disconnect(struct adapter = *padapter) } } =20 -static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct i= eee_param *param, u32 param_len) +static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, + struct ieee_param *param, + u32 param_len) { int ret =3D 0; u32 wep_key_idx, wep_key_len; + u32 key_len; struct sta_info *psta =3D NULL, *pbcmc_sta =3D NULL; struct adapter *padapter =3D rtw_netdev_priv(dev); struct mlme_priv *pmlmepriv =3D &padapter->mlmepriv; struct security_priv *psecuritypriv =3D &(padapter->securitypriv); struct sta_priv *pstapriv =3D &padapter->stapriv; - char *grpkey =3D padapter->securitypriv.dot118021XGrpKey[param->u.crypt.i= dx].skey; - char *txkey =3D padapter->securitypriv.dot118021XGrptxmickey[param->u.cry= pt.idx].skey; - char *rxkey =3D padapter->securitypriv.dot118021XGrprxmickey[param->u.cry= pt.idx].skey; + char *grpkey =3D psecuritypriv->dot118021XGrpKey[param->u.crypt.idx].skey; + char *txkey =3D psecuritypriv->dot118021XGrptxmickey[param->u.crypt.idx].= skey; + char *rxkey =3D psecuritypriv->dot118021XGrprxmickey[param->u.crypt.idx].= skey; + + /* Clamp key_len to max 16 */ + key_len =3D min_t(u32, param->u.crypt.key_len, 16); =20 param->u.crypt.err =3D 0; param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] =3D '\0'; @@ -601,12 +618,15 @@ static int rtw_cfg80211_ap_set_encryption(struct net_= device *dev, struct ieee_pa =20 psecuritypriv->dot11PrivacyAlgrthm =3D psecuritypriv->dot118021XGrpPriv= acy;/* */ =20 - rtw_ap_set_group_key(padapter, param->u.crypt.key, psecuritypriv->dot11= 8021XGrpPrivacy, param->u.crypt.idx); + rtw_ap_set_group_key(padapter, param->u.crypt.key, + psecuritypriv->dot118021XGrpPrivacy, + param->u.crypt.idx); =20 pbcmc_sta =3D rtw_get_bcmc_stainfo(padapter); if (pbcmc_sta) { pbcmc_sta->ieee8021x_blocked =3D false; - pbcmc_sta->dot118021XPrivacy =3D psecuritypriv->dot118021XGrpPrivacy;/= * rx will use bmc_sta's dot118021XPrivacy */ + /* rx will use bmc_sta's dot118021XPrivacy */ + pbcmc_sta->dot118021XPrivacy =3D psecuritypriv->dot118021XGrpPrivacy; } } =20 @@ -616,7 +636,8 @@ static int rtw_cfg80211_ap_set_encryption(struct net_de= vice *dev, struct ieee_pa if (psecuritypriv->dot11AuthAlgrthm =3D=3D dot11AuthAlgrthm_8021X && psta= ) { /* psk/802_1x */ if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) { if (param->u.crypt.set_tx =3D=3D 1) { /* pairwise key */ - memcpy(psta->dot118021x_UncstKey.skey, param->u.crypt.key, (param->u.c= rypt.key_len > 16 ? 16 : param->u.crypt.key_len)); + memcpy(psta->dot118021x_UncstKey.skey, + param->u.crypt.key, key_len); =20 if (strcmp(param->u.crypt.alg, "WEP") =3D=3D 0) { psta->dot118021XPrivacy =3D _WEP40_; @@ -645,7 +666,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_de= vice *dev, struct ieee_pa =20 } else { /* group key??? */ if (strcmp(param->u.crypt.alg, "WEP") =3D=3D 0) { - memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 = : param->u.crypt.key_len)); + memcpy(grpkey, param->u.crypt.key, key_len); =20 psecuritypriv->dot118021XGrpPrivacy =3D _WEP40_; if (param->u.crypt.key_len =3D=3D 13) @@ -653,7 +674,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_de= vice *dev, struct ieee_pa } else if (strcmp(param->u.crypt.alg, "TKIP") =3D=3D 0) { psecuritypriv->dot118021XGrpPrivacy =3D _TKIP_; =20 - memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 = : param->u.crypt.key_len)); + memcpy(grpkey, param->u.crypt.key, key_len); =20 /* set mic key */ memcpy(txkey, &(param->u.crypt.key[16]), 8); @@ -664,7 +685,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_de= vice *dev, struct ieee_pa } else if (strcmp(param->u.crypt.alg, "CCMP") =3D=3D 0) { psecuritypriv->dot118021XGrpPrivacy =3D _AES_; =20 - memcpy(grpkey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 = : param->u.crypt.key_len)); + memcpy(grpkey, param->u.crypt.key, key_len); } else { psecuritypriv->dot118021XGrpPrivacy =3D _NO_PRIVACY_; } @@ -675,12 +696,16 @@ static int rtw_cfg80211_ap_set_encryption(struct net_= device *dev, struct ieee_pa =20 psecuritypriv->dot11PrivacyAlgrthm =3D psecuritypriv->dot118021XGrpPri= vacy;/* */ =20 - rtw_ap_set_group_key(padapter, param->u.crypt.key, psecuritypriv->dot1= 18021XGrpPrivacy, param->u.crypt.idx); + rtw_ap_set_group_key(padapter, param->u.crypt.key, + psecuritypriv->dot118021XGrpPrivacy, + param->u.crypt.idx); =20 pbcmc_sta =3D rtw_get_bcmc_stainfo(padapter); if (pbcmc_sta) { pbcmc_sta->ieee8021x_blocked =3D false; - pbcmc_sta->dot118021XPrivacy =3D psecuritypriv->dot118021XGrpPrivacy;= /* rx will use bmc_sta's dot118021XPrivacy */ + /* rx will use bmc_sta's dot118021XPrivacy */ + pbcmc_sta->dot118021XPrivacy =3D + psecuritypriv->dot118021XGrpPrivacy; } } } @@ -691,15 +716,20 @@ static int rtw_cfg80211_ap_set_encryption(struct net_= device *dev, struct ieee_pa return ret; } =20 -static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee= _param *param, u32 param_len) +static int rtw_cfg80211_set_encryption(struct net_device *dev, + struct ieee_param *param, u32 param_len) { int ret =3D 0; u8 max_idx; u32 wep_key_idx, wep_key_len; + u32 key_len; struct adapter *padapter =3D rtw_netdev_priv(dev); struct mlme_priv *pmlmepriv =3D &padapter->mlmepriv; struct security_priv *psecuritypriv =3D &padapter->securitypriv; =20 + /* Clamp key_len to max 16 */ + key_len =3D min_t(u32, param->u.crypt.key_len, 16); + param->u.crypt.err =3D 0; param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] =3D '\0'; =20 @@ -779,7 +809,8 @@ static int rtw_cfg80211_set_encryption(struct net_devic= e *dev, struct ieee_param =20 if (param->u.crypt.set_tx =3D=3D 1) { /* pairwise key */ =20 - memcpy(psta->dot118021x_UncstKey.skey, param->u.crypt.key, (param->u.= crypt.key_len > 16 ? 16 : param->u.crypt.key_len)); + memcpy(psta->dot118021x_UncstKey.skey, + param->u.crypt.key, key_len); =20 if (strcmp(param->u.crypt.alg, "TKIP") =3D=3D 0) { /* set mic key */ memcpy(psta->dot11tkiptxmickey.skey, &(param->u.crypt.key[16]), 8); @@ -792,17 +823,27 @@ static int rtw_cfg80211_set_encryption(struct net_dev= ice *dev, struct ieee_param rtw_setstakey_cmd(padapter, psta, true, true); } else { /* group key */ if (strcmp(param->u.crypt.alg, "TKIP") =3D=3D 0 || strcmp(param->u.cr= ypt.alg, "CCMP") =3D=3D 0) { - memcpy(padapter->securitypriv.dot118021XGrpKey[param->u.crypt.idx].s= key, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt= .key_len)); - memcpy(padapter->securitypriv.dot118021XGrptxmickey[param->u.crypt.i= dx].skey, &(param->u.crypt.key[16]), 8); - memcpy(padapter->securitypriv.dot118021XGrprxmickey[param->u.crypt.i= dx].skey, &(param->u.crypt.key[24]), 8); + u8 grp_idx =3D param->u.crypt.idx; + struct security_priv *sec =3D psecuritypriv; + + memcpy(sec->dot118021XGrpKey[grp_idx].skey, + param->u.crypt.key, key_len); + memcpy(sec->dot118021XGrptxmickey[grp_idx].skey, + ¶m->u.crypt.key[16], 8); + memcpy(sec->dot118021XGrprxmickey[grp_idx].skey, + ¶m->u.crypt.key[24], 8); padapter->securitypriv.binstallGrpkey =3D true; =20 - padapter->securitypriv.dot118021XGrpKeyid =3D param->u.crypt.idx; - rtw_set_key(padapter, &padapter->securitypriv, param->u.crypt.idx, 1= , true); + padapter->securitypriv.dot118021XGrpKeyid =3D grp_idx; + rtw_set_key(padapter, &padapter->securitypriv, + grp_idx, 1, true); } else if (strcmp(param->u.crypt.alg, "BIP") =3D=3D 0) { /* save the IGTK key, length 16 bytes */ - memcpy(padapter->securitypriv.dot11wBIPKey[param->u.crypt.idx].skey,= param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key= _len)); - padapter->securitypriv.dot11wBIPKeyid =3D param->u.crypt.idx; + u8 idx =3D param->u.crypt.idx; + + memcpy(psecuritypriv->dot11wBIPKey[idx].skey, + param->u.crypt.key, key_len); + padapter->securitypriv.dot11wBIPKeyid =3D idx; padapter->securitypriv.binstallBIPkey =3D true; } } @@ -939,8 +980,10 @@ static int cfg80211_rtw_set_default_key(struct wiphy *= wiphy, { struct adapter *padapter =3D rtw_netdev_priv(ndev); struct security_priv *psecuritypriv =3D &padapter->securitypriv; + u32 alg =3D psecuritypriv->dot11PrivacyAlgrthm; + bool is_wep =3D (alg =3D=3D _WEP40_) || (alg =3D=3D _WEP104_); =20 - if ((key_index < WEP_KEYS) && ((psecuritypriv->dot11PrivacyAlgrthm =3D=3D= _WEP40_) || (psecuritypriv->dot11PrivacyAlgrthm =3D=3D _WEP104_))) { /* se= t wep default key */ + if ((key_index < WEP_KEYS) && is_wep) { /* set wep default key */ psecuritypriv->ndisencryptstatus =3D Ndis802_11Encryption1Enabled; =20 psecuritypriv->dot11PrivacyKeyIndex =3D key_index; @@ -952,7 +995,8 @@ static int cfg80211_rtw_set_default_key(struct wiphy *w= iphy, psecuritypriv->dot118021XGrpPrivacy =3D _WEP104_; } =20 - psecuritypriv->bWepDefaultKeyIdxSet =3D 1; /* set the flag to represent = that wep default key has been set */ + /* set the flag to represent that wep default key has been set */ + psecuritypriv->bWepDefaultKeyIdxSet =3D 1; } =20 return 0; @@ -1136,7 +1180,8 @@ void rtw_cfg80211_surveydone_event_callback(struct ad= apter *padapter) pnetwork =3D list_entry(plist, struct wlan_network, list); =20 /* report network only if the current channel set contains the channel t= o which this network belongs */ - if (rtw_ch_set_search_ch(padapter->mlmeextpriv.channel_set, pnetwork->ne= twork.configuration.ds_config) >=3D 0 + if (rtw_ch_set_search_ch(padapter->mlmeextpriv.channel_set, + pnetwork->network.configuration.ds_config) >=3D 0 && true =3D=3D rtw_validate_ssid(&(pnetwork->network.ssid))) { /* ev =3Dtranslate_scan(padapter, a, pnetwork, ev, stop); */ rtw_cfg80211_inform_bss(padapter, pnetwork); @@ -1276,7 +1321,8 @@ static int cfg80211_rtw_scan(struct wiphy *wiphy for (j =3D request->n_channels - 1; j >=3D 0; j--) for (i =3D 0; i < survey_times; i++) memcpy(&ch[j * survey_times + i], &ch[j], sizeof(struct rtw_ieee80211_= channel)); - _status =3D rtw_sitesurvey_cmd(padapter, ssid, RTW_SSID_SCAN_AMOUNT, ch,= survey_times * request->n_channels); + _status =3D rtw_sitesurvey_cmd(padapter, ssid, RTW_SSID_SCAN_AMOUNT, + ch, survey_times * request->n_channels); } else { _status =3D rtw_sitesurvey_cmd(padapter, ssid, RTW_SSID_SCAN_AMOUNT, NUL= L, 0); } @@ -1860,10 +1906,14 @@ static int cfg80211_rtw_set_pmksa(struct wiphy *wip= hy, } =20 if (!blInserted) { - memcpy(psecuritypriv->PMKIDList[psecuritypriv->PMKIDIndex].Bssid, (u8 *)= pmksa->bssid, ETH_ALEN); - memcpy(psecuritypriv->PMKIDList[psecuritypriv->PMKIDIndex].PMKID, (u8 *)= pmksa->pmkid, WLAN_PMKID_LEN); + u8 idx =3D psecuritypriv->PMKIDIndex; + + memcpy(psecuritypriv->PMKIDList[idx].Bssid, + (u8 *)pmksa->bssid, ETH_ALEN); + memcpy(psecuritypriv->PMKIDList[idx].PMKID, + (u8 *)pmksa->pmkid, WLAN_PMKID_LEN); =20 - psecuritypriv->PMKIDList[psecuritypriv->PMKIDIndex].bUsed =3D true; + psecuritypriv->PMKIDList[idx].bUsed =3D true; psecuritypriv->PMKIDIndex++; if (psecuritypriv->PMKIDIndex =3D=3D 16) psecuritypriv->PMKIDIndex =3D 0; @@ -1932,7 +1982,9 @@ void rtw_cfg80211_indicate_sta_assoc(struct adapter *= padapter, u8 *pmgmt_frame, } } =20 -void rtw_cfg80211_indicate_sta_disassoc(struct adapter *padapter, unsigned= char *da, unsigned short reason) +void rtw_cfg80211_indicate_sta_disassoc(struct adapter *padapter, + unsigned char *da, + unsigned short reason) { struct net_device *ndev =3D padapter->pnetdev; =20 @@ -2111,7 +2163,8 @@ static const struct net_device_ops rtw_cfg80211_monit= or_if_ops =3D { .ndo_start_xmit =3D rtw_cfg80211_monitor_if_xmit_entry, }; =20 -static int rtw_cfg80211_add_monitor_if(struct adapter *padapter, char *nam= e, struct net_device **ndev) +static int rtw_cfg80211_add_monitor_if(struct adapter *padapter, char *nam= e, + struct net_device **ndev) { int ret =3D 0; struct net_device *mon_ndev =3D NULL; @@ -2244,7 +2297,8 @@ static int cfg80211_rtw_del_virtual_intf(struct wiphy= *wiphy, return ret; } =20 -static int rtw_add_beacon(struct adapter *adapter, const u8 *head, size_t = head_len, const u8 *tail, size_t tail_len) +static int rtw_add_beacon(struct adapter *adapter, const u8 *head, + size_t head_len, const u8 *tail, size_t tail_len) { int ret =3D 0; u8 *pbuf =3D NULL; diff --git a/drivers/staging/rtl8723bs/os_dep/os_intfs.c b/drivers/staging/= rtl8723bs/os_dep/os_intfs.c index 6ca6dc548805..36f02bf26a00 100644 --- a/drivers/staging/rtl8723bs/os_dep/os_intfs.c +++ b/drivers/staging/rtl8723bs/os_dep/os_intfs.c @@ -70,9 +70,11 @@ int rtw_ht_enable =3D 1; * 0x01 means enable 2.4G 40MHz */ static int rtw_bw_mode =3D 0x01; -static int rtw_ampdu_enable =3D 1;/* for enable tx_ampdu ,0: disable, 0x1:= enable (but wifi_spec should be 0), 0x2: force enable (don't care wifi_spec= ) */ +/* for enable tx_ampdu: 0=3Ddisable, 0x1=3Denable (wifi_spec=3D0), 0x2=3Df= orce enable */ +static int rtw_ampdu_enable =3D 1; static int rtw_rx_stbc =3D 1;/* 0: disable, 1:enable 2.4g */ -static int rtw_ampdu_amsdu;/* 0: disabled, 1:enabled, 2:auto . There is a= n IOT issu with DLINK DIR-629 when the flag turn on */ +/* 0: disabled, 1:enabled, 2:auto. IOT issue with DLINK DIR-629 when on */ +static int rtw_ampdu_amsdu; /* Short GI support Bit Map */ /* BIT0 - 20MHz, 0: non-support, 1: support */ /* BIT1 - 40MHz, 0: non-support, 1: support */ @@ -97,7 +99,8 @@ module_param(rtw_ant_num, int, 0644); MODULE_PARM_DESC(rtw_ant_num, "Antenna number setting"); =20 static int rtw_antdiv_cfg =3D 1; /* 0:OFF , 1:ON, 2:decide by Efuse confi= g */ -static int rtw_antdiv_type; /* 0:decide by efuse 1: for 88EE, 1Tx and 1Rx= CG are diversity.(2 Ant with SPDT), 2: for 88EE, 1Tx and 2Rx are diversity= .(2 Ant, Tx and RxCG are both on aux port, RxCS is on main port), 3: for 88= EE, 1Tx and 1RxCG are fixed.(1Ant, Tx and RxCG are both on aux port) */ +/* 0:efuse, 1:1Tx/1RxCG diversity(2Ant+SPDT), 2:1Tx/2Rx diversity, 3:fixed= */ +static int rtw_antdiv_type; =20 static int rtw_hw_wps_pbc; =20 @@ -1157,9 +1160,11 @@ static int rtw_resume_process_normal(struct adapter = *padapter) } rtw_hal_disable_interrupt(padapter); /* if (sdio_alloc_irq(adapter_to_dvobj(padapter)) !=3D _SUCCESS) */ - if ((padapter->intf_alloc_irq) && (padapter->intf_alloc_irq(adapter_to_dv= obj(padapter)) !=3D _SUCCESS)) { - ret =3D -1; - goto exit; + if (padapter->intf_alloc_irq) { + if (padapter->intf_alloc_irq(adapter_to_dvobj(padapter)) !=3D _SUCCESS) { + ret =3D -1; + goto exit; + } } =20 rtw_reset_drv_sw(padapter); diff --git a/drivers/staging/rtl8723bs/os_dep/sdio_intf.c b/drivers/staging= /rtl8723bs/os_dep/sdio_intf.c index 1d0239eef114..ec6f3e884322 100644 --- a/drivers/staging/rtl8723bs/os_dep/sdio_intf.c +++ b/drivers/staging/rtl8723bs/os_dep/sdio_intf.c @@ -237,7 +237,8 @@ static void sd_intf_stop(struct adapter *padapter) } =20 =20 -static struct adapter *rtw_sdio_if1_init(struct dvobj_priv *dvobj, const s= truct sdio_device_id *pdid) +static struct adapter *rtw_sdio_if1_init(struct dvobj_priv *dvobj, + const struct sdio_device_id *pdid) { int status =3D _FAIL; struct net_device *pnetdev; diff --git a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c b/drivers/stagin= g/rtl8723bs/os_dep/xmit_linux.c index 944b9c724b32..69e0407e780b 100644 --- a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c +++ b/drivers/staging/rtl8723bs/os_dep/xmit_linux.c @@ -43,7 +43,9 @@ signed int rtw_endofpktfile(struct pkt_file *pfile) return false; } =20 -int rtw_os_xmit_resource_alloc(struct adapter *padapter, struct xmit_buf *= pxmitbuf, u32 alloc_sz, u8 flag) +int rtw_os_xmit_resource_alloc(struct adapter *padapter, + struct xmit_buf *pxmitbuf, + u32 alloc_sz, u8 flag) { if (alloc_sz > 0) { pxmitbuf->pallocated_buf =3D rtw_zmalloc(alloc_sz); @@ -56,7 +58,9 @@ int rtw_os_xmit_resource_alloc(struct adapter *padapter, = struct xmit_buf *pxmitb return _SUCCESS; } =20 -void rtw_os_xmit_resource_free(struct adapter *padapter, struct xmit_buf *= pxmitbuf, u32 free_sz, u8 flag) +void rtw_os_xmit_resource_free(struct adapter *padapter, + struct xmit_buf *pxmitbuf, + u32 free_sz, u8 flag) { if (free_sz > 0) kfree(pxmitbuf->pallocated_buf); --=20 2.52.0