mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-05-02 18:17:50 -04:00
Merge tag 'staging-6.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
Pull staging driver updates from Greg KH:
"Here is the large set of staging driver changes for 6.1-rc1.
Nothing really interesting in here at all except we deleted a driver
(fwserial) as no one had been using it for a long time. Other than
that, just the normal cleanups and minor fixes:
- rtl8723bs driver cleanups
- loads of r8188eu driver cleanups, making the driver smaller and
fixing up some firmware dependency issues.
- vt6655 driver cleanups.
- lots of other small staging driver cleanups.
All of these have been in linux-next for a while with no reported
issues"
* tag 'staging-6.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (266 commits)
staging: rtl8192e: Rename variable Bandwidth to avoid CamelCase
staging: r8188eu: remove PHY_RFConfig8188E()
staging: r8188eu: remove PHY_RF6052_Config8188E()
staging: r8188eu: convert ODM_ReadAndConfig_AGC_TAB_1T_8188E() to int
staging: r8188eu: convert ODM_ReadAndConfig_PHY_REG_1T_8188E() to int
staging: r8188eu: convert ODM_ReadAndConfig_RadioA_1T_8188E() to int
staging: r8188eu: convert ODM_ReadAndConfig_MAC_REG_8188E() to int
staging: rtl8192e: cmdpkt: Use skb_put_data() instead of skb_put/memcpy pair
staging: r8188eu: Use skb_put_data() instead of skb_put/memcpy pair
staging: r8188eu: remove hal/odm_RegConfig8188E.c
staging: r8188eu: make odm_ConfigRF_RadioA_8188E() static
staging: r8188eu: make odm_ConfigMAC_8188E() static
staging: r8188eu: don't check for stop/removal in the blink worker
staging: r8188eu: don't check bSurpriseRemoved in SwLedOff
staging: rtl8192e: Remove unused variables ForcedAMSDUMaxSize, ...
staging: rtl8192e: Rename CurrentMPDU..., ForcedAMPDU... and ForcedMPDU...
staging: rtl8192e: Rename SelfMimoPs, CurrentOpMode and bForcedShortGI
staging: rtl8192e: Rename PeerMimoPs, IOTAction and IOTRaFunc
staging: rtl8192e: Rename RxRe...WinSize, RxReorder... and RxReorderDr...
staging: rtl8192e: Rename szRT2RTAggBuffer, bRegRxRe... and bCurRxReo...
...
This commit is contained in:
@@ -10,7 +10,6 @@ r8723bs-y = \
|
||||
core/rtw_ieee80211.o \
|
||||
core/rtw_mlme.o \
|
||||
core/rtw_mlme_ext.o \
|
||||
core/rtw_odm.o \
|
||||
core/rtw_pwrctrl.o \
|
||||
core/rtw_recv.o \
|
||||
core/rtw_rf.o \
|
||||
@@ -33,7 +32,6 @@ r8723bs-y = \
|
||||
hal/odm_DynamicTxPower.o \
|
||||
hal/odm_EdcaTurboCheck.o \
|
||||
hal/odm_HWConfig.o \
|
||||
hal/odm_NoiseMonitor.o \
|
||||
hal/odm_RegConfig8723B.o \
|
||||
hal/rtl8723b_cmd.o \
|
||||
hal/rtl8723b_dm.o \
|
||||
|
||||
@@ -161,8 +161,6 @@ static struct cmd_hdl wlancmds[] = {
|
||||
|
||||
int rtw_init_cmd_priv(struct cmd_priv *pcmdpriv)
|
||||
{
|
||||
int res = 0;
|
||||
|
||||
init_completion(&pcmdpriv->cmd_queue_comp);
|
||||
init_completion(&pcmdpriv->terminate_cmdthread_comp);
|
||||
|
||||
@@ -175,18 +173,16 @@ int rtw_init_cmd_priv(struct cmd_priv *pcmdpriv)
|
||||
|
||||
pcmdpriv->cmd_allocated_buf = rtw_zmalloc(MAX_CMDSZ + CMDBUFF_ALIGN_SZ);
|
||||
|
||||
if (!pcmdpriv->cmd_allocated_buf) {
|
||||
res = -ENOMEM;
|
||||
goto exit;
|
||||
}
|
||||
if (!pcmdpriv->cmd_allocated_buf)
|
||||
return -ENOMEM;
|
||||
|
||||
pcmdpriv->cmd_buf = pcmdpriv->cmd_allocated_buf + CMDBUFF_ALIGN_SZ - ((SIZE_PTR)(pcmdpriv->cmd_allocated_buf) & (CMDBUFF_ALIGN_SZ-1));
|
||||
|
||||
pcmdpriv->rsp_allocated_buf = rtw_zmalloc(MAX_RSPSZ + 4);
|
||||
|
||||
if (!pcmdpriv->rsp_allocated_buf) {
|
||||
res = -ENOMEM;
|
||||
goto exit;
|
||||
kfree(pcmdpriv->cmd_allocated_buf);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
pcmdpriv->rsp_buf = pcmdpriv->rsp_allocated_buf + 4 - ((SIZE_PTR)(pcmdpriv->rsp_allocated_buf) & 3);
|
||||
@@ -196,8 +192,8 @@ int rtw_init_cmd_priv(struct cmd_priv *pcmdpriv)
|
||||
pcmdpriv->rsp_cnt = 0;
|
||||
|
||||
mutex_init(&pcmdpriv->sctx_mutex);
|
||||
exit:
|
||||
return res;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void c2h_wk_callback(struct work_struct *work);
|
||||
@@ -593,35 +589,6 @@ u8 rtw_sitesurvey_cmd(struct adapter *padapter, struct ndis_802_11_ssid *ssid,
|
||||
return res;
|
||||
}
|
||||
|
||||
u8 rtw_setdatarate_cmd(struct adapter *padapter, u8 *rateset)
|
||||
{
|
||||
struct cmd_obj *ph2c;
|
||||
struct setdatarate_parm *pbsetdataratepara;
|
||||
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
|
||||
u8 res = _SUCCESS;
|
||||
|
||||
ph2c = rtw_zmalloc(sizeof(struct cmd_obj));
|
||||
if (!ph2c) {
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
pbsetdataratepara = rtw_zmalloc(sizeof(struct setdatarate_parm));
|
||||
if (!pbsetdataratepara) {
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
init_h2fwcmd_w_parm_no_rsp(ph2c, pbsetdataratepara, GEN_CMD_CODE(_SetDataRate));
|
||||
pbsetdataratepara->mac_id = 5;
|
||||
memcpy(pbsetdataratepara->datarates, rateset, NumRates);
|
||||
|
||||
res = rtw_enqueue_cmd(pcmdpriv, ph2c);
|
||||
exit:
|
||||
return res;
|
||||
}
|
||||
|
||||
void rtw_getbbrfreg_cmdrsp_callback(struct adapter *padapter, struct cmd_obj *pcmd)
|
||||
{
|
||||
/* rtw_free_cmd_obj(pcmd); */
|
||||
@@ -1140,61 +1107,6 @@ exit:
|
||||
return res;
|
||||
}
|
||||
|
||||
u8 rtw_set_chplan_cmd(struct adapter *padapter, u8 chplan, u8 enqueue, u8 swconfig)
|
||||
{
|
||||
struct cmd_obj *pcmdobj;
|
||||
struct SetChannelPlan_param *setChannelPlan_param;
|
||||
struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
|
||||
|
||||
u8 res = _SUCCESS;
|
||||
|
||||
/* check if allow software config */
|
||||
if (swconfig && rtw_hal_is_disable_sw_channel_plan(padapter)) {
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* check input parameter */
|
||||
if (!rtw_is_channel_plan_valid(chplan)) {
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* prepare cmd parameter */
|
||||
setChannelPlan_param = rtw_zmalloc(sizeof(struct SetChannelPlan_param));
|
||||
if (!setChannelPlan_param) {
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
setChannelPlan_param->channel_plan = chplan;
|
||||
|
||||
if (enqueue) {
|
||||
/* need enqueue, prepare cmd_obj and enqueue */
|
||||
pcmdobj = rtw_zmalloc(sizeof(struct cmd_obj));
|
||||
if (!pcmdobj) {
|
||||
kfree(setChannelPlan_param);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
init_h2fwcmd_w_parm_no_rsp(pcmdobj, setChannelPlan_param, GEN_CMD_CODE(_SetChannelPlan));
|
||||
res = rtw_enqueue_cmd(pcmdpriv, pcmdobj);
|
||||
} else {
|
||||
/* no need to enqueue, do the cmd hdl directly and free cmd parameter */
|
||||
if (set_chplan_hdl(padapter, (unsigned char *)setChannelPlan_param) != H2C_SUCCESS)
|
||||
res = _FAIL;
|
||||
|
||||
kfree(setChannelPlan_param);
|
||||
}
|
||||
|
||||
/* do something based on res... */
|
||||
if (res == _SUCCESS)
|
||||
padapter->mlmepriv.ChannelPlan = chplan;
|
||||
|
||||
exit:
|
||||
return res;
|
||||
}
|
||||
|
||||
static void collect_traffic_statistics(struct adapter *padapter)
|
||||
{
|
||||
struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
|
||||
|
||||
@@ -634,23 +634,6 @@ void rtw_get_sec_ie(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len, u8 *wpa_ie
|
||||
}
|
||||
}
|
||||
|
||||
u8 rtw_is_wps_ie(u8 *ie_ptr, uint *wps_ielen)
|
||||
{
|
||||
u8 match = false;
|
||||
u8 eid, wps_oui[4] = {0x0, 0x50, 0xf2, 0x04};
|
||||
|
||||
if (!ie_ptr)
|
||||
return match;
|
||||
|
||||
eid = ie_ptr[0];
|
||||
|
||||
if ((eid == WLAN_EID_VENDOR_SPECIFIC) && (!memcmp(&ie_ptr[2], wps_oui, 4))) {
|
||||
*wps_ielen = ie_ptr[1]+2;
|
||||
match = true;
|
||||
}
|
||||
return match;
|
||||
}
|
||||
|
||||
/**
|
||||
* rtw_get_wps_ie - Search WPS IE from a series of IEs
|
||||
* @in_ie: Address of IEs to search
|
||||
|
||||
@@ -2521,7 +2521,7 @@ void rtw_issue_addbareq_cmd(struct adapter *padapter, struct xmit_frame *pxmitfr
|
||||
{
|
||||
u8 issued;
|
||||
int priority;
|
||||
struct sta_info *psta = NULL;
|
||||
struct sta_info *psta;
|
||||
struct ht_priv *phtpriv;
|
||||
struct pkt_attrib *pattrib = &pxmitframe->attrib;
|
||||
s32 bmcst = IS_MCAST(pattrib->ra);
|
||||
|
||||
@@ -5945,27 +5945,6 @@ int rtw_chk_start_clnt_join(struct adapter *padapter, u8 *ch, u8 *bw, u8 *offset
|
||||
return connect_allow ? _SUCCESS : _FAIL;
|
||||
}
|
||||
|
||||
/* Find union about ch, bw, ch_offset of all linked/linking interfaces */
|
||||
int rtw_get_ch_setting_union(struct adapter *adapter, u8 *ch, u8 *bw, u8 *offset)
|
||||
{
|
||||
struct dvobj_priv *dvobj = adapter_to_dvobj(adapter);
|
||||
struct adapter *iface;
|
||||
|
||||
if (ch)
|
||||
*ch = 0;
|
||||
if (bw)
|
||||
*bw = CHANNEL_WIDTH_20;
|
||||
if (offset)
|
||||
*offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
|
||||
|
||||
iface = dvobj->padapters;
|
||||
|
||||
if (!check_fwstate(&iface->mlmepriv, _FW_LINKED|_FW_UNDER_LINKING))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
u8 set_ch_hdl(struct adapter *padapter, u8 *pbuf)
|
||||
{
|
||||
struct set_ch_parm *set_ch_parm;
|
||||
|
||||
@@ -1,195 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2013 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#include <drv_types.h>
|
||||
#include <rtw_debug.h>
|
||||
#include <rtw_odm.h>
|
||||
#include <hal_data.h>
|
||||
|
||||
static const char * const odm_comp_str[] = {
|
||||
/* BIT0 */"ODM_COMP_DIG",
|
||||
/* BIT1 */"ODM_COMP_RA_MASK",
|
||||
/* BIT2 */"ODM_COMP_DYNAMIC_TXPWR",
|
||||
/* BIT3 */"ODM_COMP_FA_CNT",
|
||||
/* BIT4 */"ODM_COMP_RSSI_MONITOR",
|
||||
/* BIT5 */"ODM_COMP_CCK_PD",
|
||||
/* BIT6 */"ODM_COMP_ANT_DIV",
|
||||
/* BIT7 */"ODM_COMP_PWR_SAVE",
|
||||
/* BIT8 */"ODM_COMP_PWR_TRAIN",
|
||||
/* BIT9 */"ODM_COMP_RATE_ADAPTIVE",
|
||||
/* BIT10 */"ODM_COMP_PATH_DIV",
|
||||
/* BIT11 */"ODM_COMP_PSD",
|
||||
/* BIT12 */"ODM_COMP_DYNAMIC_PRICCA",
|
||||
/* BIT13 */"ODM_COMP_RXHP",
|
||||
/* BIT14 */"ODM_COMP_MP",
|
||||
/* BIT15 */"ODM_COMP_DYNAMIC_ATC",
|
||||
/* BIT16 */"ODM_COMP_EDCA_TURBO",
|
||||
/* BIT17 */"ODM_COMP_EARLY_MODE",
|
||||
/* BIT18 */NULL,
|
||||
/* BIT19 */NULL,
|
||||
/* BIT20 */NULL,
|
||||
/* BIT21 */NULL,
|
||||
/* BIT22 */NULL,
|
||||
/* BIT23 */NULL,
|
||||
/* BIT24 */"ODM_COMP_TX_PWR_TRACK",
|
||||
/* BIT25 */"ODM_COMP_RX_GAIN_TRACK",
|
||||
/* BIT26 */"ODM_COMP_CALIBRATION",
|
||||
/* BIT27 */NULL,
|
||||
/* BIT28 */NULL,
|
||||
/* BIT29 */NULL,
|
||||
/* BIT30 */"ODM_COMP_COMMON",
|
||||
/* BIT31 */"ODM_COMP_INIT",
|
||||
};
|
||||
|
||||
#define RTW_ODM_COMP_MAX 32
|
||||
|
||||
static const char * const odm_ability_str[] = {
|
||||
/* BIT0 */"ODM_BB_DIG",
|
||||
/* BIT1 */"ODM_BB_RA_MASK",
|
||||
/* BIT2 */"ODM_BB_DYNAMIC_TXPWR",
|
||||
/* BIT3 */"ODM_BB_FA_CNT",
|
||||
/* BIT4 */"ODM_BB_RSSI_MONITOR",
|
||||
/* BIT5 */"ODM_BB_CCK_PD",
|
||||
/* BIT6 */"ODM_BB_ANT_DIV",
|
||||
/* BIT7 */"ODM_BB_PWR_SAVE",
|
||||
/* BIT8 */"ODM_BB_PWR_TRAIN",
|
||||
/* BIT9 */"ODM_BB_RATE_ADAPTIVE",
|
||||
/* BIT10 */"ODM_BB_PATH_DIV",
|
||||
/* BIT11 */"ODM_BB_PSD",
|
||||
/* BIT12 */"ODM_BB_RXHP",
|
||||
/* BIT13 */"ODM_BB_ADAPTIVITY",
|
||||
/* BIT14 */"ODM_BB_DYNAMIC_ATC",
|
||||
/* BIT15 */NULL,
|
||||
/* BIT16 */"ODM_MAC_EDCA_TURBO",
|
||||
/* BIT17 */"ODM_MAC_EARLY_MODE",
|
||||
/* BIT18 */NULL,
|
||||
/* BIT19 */NULL,
|
||||
/* BIT20 */NULL,
|
||||
/* BIT21 */NULL,
|
||||
/* BIT22 */NULL,
|
||||
/* BIT23 */NULL,
|
||||
/* BIT24 */"ODM_RF_TX_PWR_TRACK",
|
||||
/* BIT25 */"ODM_RF_RX_GAIN_TRACK",
|
||||
/* BIT26 */"ODM_RF_CALIBRATION",
|
||||
};
|
||||
|
||||
#define RTW_ODM_ABILITY_MAX 27
|
||||
|
||||
static const char * const odm_dbg_level_str[] = {
|
||||
NULL,
|
||||
"ODM_DBG_OFF",
|
||||
"ODM_DBG_SERIOUS",
|
||||
"ODM_DBG_WARNING",
|
||||
"ODM_DBG_LOUD",
|
||||
"ODM_DBG_TRACE",
|
||||
};
|
||||
|
||||
#define RTW_ODM_DBG_LEVEL_NUM 6
|
||||
|
||||
void rtw_odm_dbg_comp_msg(struct adapter *adapter)
|
||||
{
|
||||
u64 dbg_comp;
|
||||
int i;
|
||||
|
||||
rtw_hal_get_def_var(adapter, HW_DEF_ODM_DBG_FLAG, &dbg_comp);
|
||||
netdev_dbg(adapter->pnetdev, "odm.DebugComponents = 0x%016llx\n",
|
||||
dbg_comp);
|
||||
for (i = 0; i < RTW_ODM_COMP_MAX; i++) {
|
||||
if (odm_comp_str[i])
|
||||
netdev_dbg(adapter->pnetdev, "%cBIT%-2d %s\n",
|
||||
(BIT0 << i) & dbg_comp ? '+' : ' ', i,
|
||||
odm_comp_str[i]);
|
||||
}
|
||||
}
|
||||
|
||||
inline void rtw_odm_dbg_comp_set(struct adapter *adapter, u64 comps)
|
||||
{
|
||||
rtw_hal_set_def_var(adapter, HW_DEF_ODM_DBG_FLAG, &comps);
|
||||
}
|
||||
|
||||
void rtw_odm_dbg_level_msg(void *sel, struct adapter *adapter)
|
||||
{
|
||||
u32 dbg_level;
|
||||
int i;
|
||||
|
||||
rtw_hal_get_def_var(adapter, HW_DEF_ODM_DBG_LEVEL, &dbg_level);
|
||||
netdev_dbg(adapter->pnetdev, "odm.DebugLevel = %u\n", dbg_level);
|
||||
for (i = 0; i < RTW_ODM_DBG_LEVEL_NUM; i++) {
|
||||
if (odm_dbg_level_str[i])
|
||||
netdev_dbg(adapter->pnetdev, "%u %s\n", i,
|
||||
odm_dbg_level_str[i]);
|
||||
}
|
||||
}
|
||||
|
||||
inline void rtw_odm_dbg_level_set(struct adapter *adapter, u32 level)
|
||||
{
|
||||
rtw_hal_set_def_var(adapter, HW_DEF_ODM_DBG_LEVEL, &level);
|
||||
}
|
||||
|
||||
void rtw_odm_ability_msg(void *sel, struct adapter *adapter)
|
||||
{
|
||||
u32 ability = 0;
|
||||
int i;
|
||||
|
||||
rtw_hal_get_hwreg(adapter, HW_VAR_DM_FLAG, (u8 *)&ability);
|
||||
netdev_dbg(adapter->pnetdev, "odm.SupportAbility = 0x%08x\n", ability);
|
||||
for (i = 0; i < RTW_ODM_ABILITY_MAX; i++) {
|
||||
if (odm_ability_str[i])
|
||||
netdev_dbg(adapter->pnetdev, "%cBIT%-2d %s\n",
|
||||
(BIT0 << i) & ability ? '+' : ' ', i,
|
||||
odm_ability_str[i]);
|
||||
}
|
||||
}
|
||||
|
||||
inline void rtw_odm_ability_set(struct adapter *adapter, u32 ability)
|
||||
{
|
||||
rtw_hal_set_hwreg(adapter, HW_VAR_DM_FLAG, (u8 *)&ability);
|
||||
}
|
||||
|
||||
void rtw_odm_adaptivity_parm_msg(void *sel, struct adapter *adapter)
|
||||
{
|
||||
struct hal_com_data *pHalData = GET_HAL_DATA(adapter);
|
||||
struct dm_odm_t *odm = &pHalData->odmpriv;
|
||||
|
||||
netdev_dbg(adapter->pnetdev, "%10s %16s %8s %10s %11s %14s\n",
|
||||
"TH_L2H_ini", "TH_EDCCA_HL_diff", "IGI_Base", "ForceEDCCA",
|
||||
"AdapEn_RSSI", "IGI_LowerBound");
|
||||
netdev_dbg(adapter->pnetdev,
|
||||
"0x%-8x %-16d 0x%-6x %-10d %-11u %-14u\n",
|
||||
(u8)odm->TH_L2H_ini,
|
||||
odm->TH_EDCCA_HL_diff,
|
||||
odm->IGI_Base,
|
||||
odm->ForceEDCCA,
|
||||
odm->AdapEn_RSSI,
|
||||
odm->IGI_LowerBound);
|
||||
}
|
||||
|
||||
void rtw_odm_adaptivity_parm_set(struct adapter *adapter, s8 TH_L2H_ini,
|
||||
s8 TH_EDCCA_HL_diff, s8 IGI_Base,
|
||||
bool ForceEDCCA, u8 AdapEn_RSSI,
|
||||
u8 IGI_LowerBound)
|
||||
{
|
||||
struct hal_com_data *pHalData = GET_HAL_DATA(adapter);
|
||||
struct dm_odm_t *odm = &pHalData->odmpriv;
|
||||
|
||||
odm->TH_L2H_ini = TH_L2H_ini;
|
||||
odm->TH_EDCCA_HL_diff = TH_EDCCA_HL_diff;
|
||||
odm->IGI_Base = IGI_Base;
|
||||
odm->ForceEDCCA = ForceEDCCA;
|
||||
odm->AdapEn_RSSI = AdapEn_RSSI;
|
||||
odm->IGI_LowerBound = IGI_LowerBound;
|
||||
}
|
||||
|
||||
void rtw_odm_get_perpkt_rssi(void *sel, struct adapter *adapter)
|
||||
{
|
||||
struct hal_com_data *hal_data = GET_HAL_DATA(adapter);
|
||||
struct dm_odm_t *odm = &hal_data->odmpriv;
|
||||
|
||||
netdev_dbg(adapter->pnetdev,
|
||||
"RxRate = %s, RSSI_A = %d(%%), RSSI_B = %d(%%)\n",
|
||||
HDATA_RATE(odm->RxRate), odm->RSSI_A, odm->RSSI_B);
|
||||
}
|
||||
@@ -203,22 +203,12 @@ signed int rtw_enqueue_recvframe(union recv_frame *precvframe, struct __queue *q
|
||||
}
|
||||
|
||||
/*
|
||||
signed int rtw_enqueue_recvframe(union recv_frame *precvframe, struct __queue *queue)
|
||||
{
|
||||
return rtw_free_recvframe(precvframe, queue);
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
caller : defrag ; recvframe_chk_defrag in recv_thread (passive)
|
||||
pframequeue: defrag_queue : will be accessed in recv_thread (passive)
|
||||
|
||||
using spinlock to protect
|
||||
|
||||
*/
|
||||
* caller : defrag ; recvframe_chk_defrag in recv_thread (passive)
|
||||
* pframequeue: defrag_queue : will be accessed in recv_thread (passive)
|
||||
*
|
||||
* using spinlock to protect
|
||||
*
|
||||
*/
|
||||
|
||||
void rtw_free_recvframe_queue(struct __queue *pframequeue, struct __queue *pfree_recv_queue)
|
||||
{
|
||||
@@ -245,6 +235,7 @@ u32 rtw_free_uc_swdec_pending_queue(struct adapter *adapter)
|
||||
{
|
||||
u32 cnt = 0;
|
||||
union recv_frame *pending_frame;
|
||||
|
||||
while ((pending_frame = rtw_alloc_recvframe(&adapter->recvpriv.uc_swdec_pending_queue))) {
|
||||
rtw_free_recvframe(pending_frame, &adapter->recvpriv.free_recv_queue);
|
||||
cnt++;
|
||||
@@ -397,6 +388,7 @@ static union recv_frame *decryptor(struct adapter *padapter, union recv_frame *p
|
||||
|
||||
if (prxattrib->encrypt > 0) {
|
||||
u8 *iv = precv_frame->u.hdr.rx_data+prxattrib->hdrlen;
|
||||
|
||||
prxattrib->key_index = (((iv[3])>>6)&0x3);
|
||||
|
||||
if (prxattrib->key_index > WEP_KEYS) {
|
||||
@@ -882,6 +874,7 @@ static signed int sta2ap_data_frame(struct adapter *adapter, union recv_frame *p
|
||||
}
|
||||
} else {
|
||||
u8 *myhwaddr = myid(&adapter->eeprompriv);
|
||||
|
||||
if (memcmp(pattrib->ra, myhwaddr, ETH_ALEN)) {
|
||||
ret = RTW_RX_HANDLED;
|
||||
goto exit;
|
||||
@@ -1125,6 +1118,7 @@ static union recv_frame *recvframe_chk_defrag(struct adapter *padapter, union re
|
||||
psta = rtw_get_stainfo(pstapriv, psta_addr);
|
||||
if (!psta) {
|
||||
u8 type = GetFrameType(pfhdr->rx_data);
|
||||
|
||||
if (type != WIFI_DATA_TYPE) {
|
||||
psta = rtw_get_bcmc_stainfo(padapter);
|
||||
pdefrag_q = &psta->sta_recvpriv.defrag_q;
|
||||
@@ -1207,6 +1201,7 @@ static signed int validate_recv_mgnt_frame(struct adapter *padapter, union recv_
|
||||
{
|
||||
/* for rx pkt statistics */
|
||||
struct sta_info *psta = rtw_get_stainfo(&padapter->stapriv, GetAddr2Ptr(precv_frame->u.hdr.rx_data));
|
||||
|
||||
if (psta) {
|
||||
psta->sta_stats.rx_mgnt_pkts++;
|
||||
if (GetFrameSubType(precv_frame->u.hdr.rx_data) == WIFI_BEACON)
|
||||
@@ -1374,9 +1369,8 @@ static signed int validate_80211w_mgmt(struct adapter *adapter, union recv_frame
|
||||
/* actual management data frame body */
|
||||
data_len = pattrib->pkt_len - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len;
|
||||
mgmt_DATA = rtw_zmalloc(data_len);
|
||||
if (!mgmt_DATA) {
|
||||
if (!mgmt_DATA)
|
||||
goto validate_80211w_fail;
|
||||
}
|
||||
precv_frame = decryptor(adapter, precv_frame);
|
||||
/* save actual management data frame body */
|
||||
memcpy(mgmt_DATA, ptr+pattrib->hdrlen+pattrib->iv_len, data_len);
|
||||
@@ -1385,9 +1379,8 @@ static signed int validate_80211w_mgmt(struct adapter *adapter, union recv_frame
|
||||
/* remove the iv and icv length */
|
||||
pattrib->pkt_len = pattrib->pkt_len - pattrib->iv_len - pattrib->icv_len;
|
||||
kfree(mgmt_DATA);
|
||||
if (!precv_frame) {
|
||||
if (!precv_frame)
|
||||
goto validate_80211w_fail;
|
||||
}
|
||||
} else if (IS_MCAST(GetAddr1Ptr(ptr)) &&
|
||||
(subtype == WIFI_DEAUTH || subtype == WIFI_DISASSOC)) {
|
||||
signed int BIP_ret = _SUCCESS;
|
||||
@@ -1480,6 +1473,7 @@ static signed int validate_recv_frame(struct adapter *adapter, union recv_frame
|
||||
retval = validate_recv_data_frame(adapter, precv_frame);
|
||||
if (retval == _FAIL) {
|
||||
struct recv_priv *precvpriv = &adapter->recvpriv;
|
||||
|
||||
precvpriv->rx_drop++;
|
||||
} else if (retval == _SUCCESS) {
|
||||
#ifdef DBG_RX_DUMP_EAP
|
||||
@@ -1651,14 +1645,12 @@ static int check_indicate_seq(struct recv_reorder_ctrl *preorder_ctrl, u16 seq_n
|
||||
u16 wend = (preorder_ctrl->indicate_seq + wsize - 1) & 0xFFF;/* 4096; */
|
||||
|
||||
/* Rx Reorder initialize condition. */
|
||||
if (preorder_ctrl->indicate_seq == 0xFFFF) {
|
||||
if (preorder_ctrl->indicate_seq == 0xFFFF)
|
||||
preorder_ctrl->indicate_seq = seq_num;
|
||||
}
|
||||
|
||||
/* Drop out the packet which SeqNum is smaller than WinStart */
|
||||
if (SN_LESS(seq_num, preorder_ctrl->indicate_seq)) {
|
||||
if (SN_LESS(seq_num, preorder_ctrl->indicate_seq))
|
||||
return false;
|
||||
}
|
||||
|
||||
/* */
|
||||
/* Sliding window manipulation. Conditions includes: */
|
||||
@@ -2084,10 +2076,8 @@ s32 rtw_recv_entry(union recv_frame *precvframe)
|
||||
precvpriv = &padapter->recvpriv;
|
||||
|
||||
ret = recv_func(padapter, precvframe);
|
||||
if (ret == _FAIL) {
|
||||
if (ret == _FAIL)
|
||||
goto _recv_entry_drop;
|
||||
}
|
||||
|
||||
|
||||
precvpriv->rx_pkts++;
|
||||
|
||||
|
||||
@@ -1283,11 +1283,6 @@ s32 hal_btcoex_IsBTCoexCtrlAMPDUSize(struct adapter *padapter)
|
||||
return (s32)GLBtCoexist.btInfo.bBtCtrlAggBufSize;
|
||||
}
|
||||
|
||||
void hal_btcoex_SetManualControl(struct adapter *padapter, u8 bmanual)
|
||||
{
|
||||
GLBtCoexist.bManualControl = bmanual;
|
||||
}
|
||||
|
||||
bool hal_btcoex_IsBtControlLps(struct adapter *padapter)
|
||||
{
|
||||
if (!hal_btcoex_IsBtExist(padapter))
|
||||
|
||||
@@ -859,25 +859,6 @@ bool eqNByte(u8 *str1, u8 *str2, u32 num)
|
||||
return true;
|
||||
}
|
||||
|
||||
/* */
|
||||
/* Description: */
|
||||
/* Return true if chTmp is represent for hex digit and */
|
||||
/* false otherwise. */
|
||||
/* */
|
||||
/* */
|
||||
bool IsHexDigit(char chTmp)
|
||||
{
|
||||
if (
|
||||
(chTmp >= '0' && chTmp <= '9') ||
|
||||
(chTmp >= 'a' && chTmp <= 'f') ||
|
||||
(chTmp >= 'A' && chTmp <= 'F')
|
||||
)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/* */
|
||||
/* Description: */
|
||||
/* Translate a character to hex digit. */
|
||||
@@ -894,106 +875,6 @@ u32 MapCharToHexDigit(char chTmp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Description: */
|
||||
/* Parse hex number from the string pucStr. */
|
||||
bool GetHexValueFromString(char *szStr, u32 *pu4bVal, u32 *pu4bMove)
|
||||
{
|
||||
char *szScan = szStr;
|
||||
|
||||
/* Check input parameter. */
|
||||
if (!szStr || !pu4bVal || !pu4bMove)
|
||||
return false;
|
||||
|
||||
/* Initialize output. */
|
||||
*pu4bMove = 0;
|
||||
*pu4bVal = 0;
|
||||
|
||||
/* Skip leading space. */
|
||||
while (*szScan != '\0' && (*szScan == ' ' || *szScan == '\t')) {
|
||||
szScan++;
|
||||
(*pu4bMove)++;
|
||||
}
|
||||
|
||||
/* Skip leading '0x' or '0X'. */
|
||||
if (*szScan == '0' && (*(szScan+1) == 'x' || *(szScan+1) == 'X')) {
|
||||
szScan += 2;
|
||||
(*pu4bMove) += 2;
|
||||
}
|
||||
|
||||
/* Check if szScan is now pointer to a character for hex digit, */
|
||||
/* if not, it means this is not a valid hex number. */
|
||||
if (!IsHexDigit(*szScan))
|
||||
return false;
|
||||
|
||||
/* Parse each digit. */
|
||||
do {
|
||||
(*pu4bVal) <<= 4;
|
||||
*pu4bVal += MapCharToHexDigit(*szScan);
|
||||
|
||||
szScan++;
|
||||
(*pu4bMove)++;
|
||||
} while (IsHexDigit(*szScan));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GetFractionValueFromString(
|
||||
char *szStr, u8 *pInteger, u8 *pFraction, u32 *pu4bMove
|
||||
)
|
||||
{
|
||||
char *szScan = szStr;
|
||||
|
||||
/* Initialize output. */
|
||||
*pu4bMove = 0;
|
||||
*pInteger = 0;
|
||||
*pFraction = 0;
|
||||
|
||||
/* Skip leading space. */
|
||||
while (*szScan != '\0' && (*szScan == ' ' || *szScan == '\t')) {
|
||||
++szScan;
|
||||
++(*pu4bMove);
|
||||
}
|
||||
|
||||
/* Parse each digit. */
|
||||
do {
|
||||
(*pInteger) *= 10;
|
||||
*pInteger += (*szScan - '0');
|
||||
|
||||
++szScan;
|
||||
++(*pu4bMove);
|
||||
|
||||
if (*szScan == '.') {
|
||||
++szScan;
|
||||
++(*pu4bMove);
|
||||
|
||||
if (*szScan < '0' || *szScan > '9')
|
||||
return false;
|
||||
else {
|
||||
*pFraction = *szScan - '0';
|
||||
++szScan;
|
||||
++(*pu4bMove);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} while (*szScan >= '0' && *szScan <= '9');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* */
|
||||
/* Description: */
|
||||
/* Return true if szStr is comment out with leading "//". */
|
||||
/* */
|
||||
bool IsCommentString(char *szStr)
|
||||
{
|
||||
if (*szStr == '/' && *(szStr+1) == '/')
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
bool GetU1ByteIntegerFromStringInDecimal(char *Str, u8 *pInt)
|
||||
{
|
||||
u16 i = 0;
|
||||
|
||||
@@ -400,11 +400,6 @@ c2h_id_filter rtw_hal_c2h_id_filter_ccx(struct adapter *adapter)
|
||||
return adapter->HalFunc.c2h_id_filter_ccx;
|
||||
}
|
||||
|
||||
s32 rtw_hal_is_disable_sw_channel_plan(struct adapter *padapter)
|
||||
{
|
||||
return GET_HAL_DATA(padapter)->bDisableSWChannelPlan;
|
||||
}
|
||||
|
||||
s32 rtw_hal_macid_sleep(struct adapter *padapter, u32 macid)
|
||||
{
|
||||
u8 support;
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
#include "odm_DynamicBBPowerSaving.h"
|
||||
#include "odm_DynamicTxPower.h"
|
||||
#include "odm_CfoTracking.h"
|
||||
#include "odm_NoiseMonitor.h"
|
||||
|
||||
#define TP_MODE 0
|
||||
#define RSSI_MODE 1
|
||||
@@ -863,7 +862,6 @@ struct dm_odm_t { /* DM_Out_Source_Dynamic_Mechanism_Structure */
|
||||
u8 Adaptivity_IGI_upper;
|
||||
u8 NHM_cnt_0;
|
||||
|
||||
struct odm_noise_monitor noise_level;/* ODM_MAX_CHANNEL_NUM]; */
|
||||
/* */
|
||||
/* 2 Define STA info. */
|
||||
/* _ODM_STA_INFO */
|
||||
|
||||
@@ -309,63 +309,6 @@ void ODM_Write_DIG(void *pDM_VOID, u8 CurrentIGI)
|
||||
|
||||
}
|
||||
|
||||
void odm_PauseDIG(
|
||||
void *pDM_VOID,
|
||||
enum ODM_Pause_DIG_TYPE PauseType,
|
||||
u8 IGIValue
|
||||
)
|
||||
{
|
||||
struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
|
||||
struct dig_t *pDM_DigTable = &pDM_Odm->DM_DigTable;
|
||||
static bool bPaused;
|
||||
|
||||
if (
|
||||
(pDM_Odm->SupportAbility & ODM_BB_ADAPTIVITY) &&
|
||||
pDM_Odm->TxHangFlg == true
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (
|
||||
!bPaused && (!(pDM_Odm->SupportAbility & ODM_BB_DIG) ||
|
||||
!(pDM_Odm->SupportAbility & ODM_BB_FA_CNT))
|
||||
){
|
||||
return;
|
||||
}
|
||||
|
||||
switch (PauseType) {
|
||||
/* 1 Pause DIG */
|
||||
case ODM_PAUSE_DIG:
|
||||
/* 2 Disable DIG */
|
||||
ODM_CmnInfoUpdate(pDM_Odm, ODM_CMNINFO_ABILITY, pDM_Odm->SupportAbility & (~ODM_BB_DIG));
|
||||
|
||||
/* 2 Backup IGI value */
|
||||
if (!bPaused) {
|
||||
pDM_DigTable->IGIBackup = pDM_DigTable->CurIGValue;
|
||||
bPaused = true;
|
||||
}
|
||||
|
||||
/* 2 Write new IGI value */
|
||||
ODM_Write_DIG(pDM_Odm, IGIValue);
|
||||
break;
|
||||
|
||||
/* 1 Resume DIG */
|
||||
case ODM_RESUME_DIG:
|
||||
if (bPaused) {
|
||||
/* 2 Write backup IGI value */
|
||||
ODM_Write_DIG(pDM_Odm, pDM_DigTable->IGIBackup);
|
||||
bPaused = false;
|
||||
|
||||
/* 2 Enable DIG */
|
||||
ODM_CmnInfoUpdate(pDM_Odm, ODM_CMNINFO_ABILITY, pDM_Odm->SupportAbility | ODM_BB_DIG);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool odm_DigAbort(void *pDM_VOID)
|
||||
{
|
||||
struct dm_odm_t *pDM_Odm = (struct dm_odm_t *)pDM_VOID;
|
||||
|
||||
@@ -141,8 +141,6 @@ void odm_Adaptivity(void *pDM_VOID, u8 IGI);
|
||||
|
||||
void ODM_Write_DIG(void *pDM_VOID, u8 CurrentIGI);
|
||||
|
||||
void odm_PauseDIG(void *pDM_VOID, enum ODM_Pause_DIG_TYPE PauseType, u8 IGIValue);
|
||||
|
||||
void odm_DIGInit(void *pDM_VOID);
|
||||
|
||||
void odm_DIG(void *pDM_VOID);
|
||||
|
||||
@@ -1,130 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#include "odm_precomp.h"
|
||||
|
||||
/* This function is for inband noise test utility only */
|
||||
/* To obtain the inband noise level(dbm), do the following. */
|
||||
/* 1. disable DIG and Power Saving */
|
||||
/* 2. Set initial gain = 0x1a */
|
||||
/* 3. Stop updating idle time pwer report (for driver read) */
|
||||
/* - 0x80c[25] */
|
||||
|
||||
#define Valid_Min -35
|
||||
#define Valid_Max 10
|
||||
#define ValidCnt 5
|
||||
|
||||
static s16 odm_InbandNoise_Monitor_NSeries(
|
||||
struct dm_odm_t *pDM_Odm,
|
||||
u8 bPauseDIG,
|
||||
u8 IGIValue,
|
||||
u32 max_time
|
||||
)
|
||||
{
|
||||
u32 tmp4b;
|
||||
u8 max_rf_path = 0, rf_path;
|
||||
u8 reg_c50, reg_c58, valid_done = 0;
|
||||
struct noise_level noise_data;
|
||||
u32 start = 0;
|
||||
|
||||
pDM_Odm->noise_level.noise_all = 0;
|
||||
|
||||
max_rf_path = 1;
|
||||
|
||||
memset(&noise_data, 0, sizeof(struct noise_level));
|
||||
|
||||
/* */
|
||||
/* Step 1. Disable DIG && Set initial gain. */
|
||||
/* */
|
||||
|
||||
if (bPauseDIG)
|
||||
odm_PauseDIG(pDM_Odm, ODM_PAUSE_DIG, IGIValue);
|
||||
/* */
|
||||
/* Step 2. Disable all power save for read registers */
|
||||
/* */
|
||||
/* dcmd_DebugControlPowerSave(padapter, PSDisable); */
|
||||
|
||||
/* */
|
||||
/* Step 3. Get noise power level */
|
||||
/* */
|
||||
start = jiffies;
|
||||
while (1) {
|
||||
|
||||
/* Stop updating idle time pwer report (for driver read) */
|
||||
PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_TxGainStage, BIT25, 1);
|
||||
|
||||
/* Read Noise Floor Report */
|
||||
tmp4b = PHY_QueryBBReg(pDM_Odm->Adapter, 0x8f8, bMaskDWord);
|
||||
|
||||
/* PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XAAGCCore1, bMaskByte0, TestInitialGain); */
|
||||
/* if (max_rf_path == 2) */
|
||||
/* PHY_SetBBReg(pDM_Odm->Adapter, rOFDM0_XBAGCCore1, bMaskByte0, TestInitialGain); */
|
||||
|
||||
/* update idle time pwer report per 5us */
|
||||
PHY_SetBBReg(pDM_Odm->Adapter, rFPGA0_TxGainStage, BIT25, 0);
|
||||
|
||||
noise_data.value[RF_PATH_A] = (u8)(tmp4b&0xff);
|
||||
noise_data.value[RF_PATH_B] = (u8)((tmp4b&0xff00)>>8);
|
||||
|
||||
for (rf_path = RF_PATH_A; rf_path < max_rf_path; rf_path++) {
|
||||
noise_data.sval[rf_path] = (s8)noise_data.value[rf_path];
|
||||
noise_data.sval[rf_path] /= 2;
|
||||
}
|
||||
/* mdelay(10); */
|
||||
/* msleep(10); */
|
||||
|
||||
for (rf_path = RF_PATH_A; rf_path < max_rf_path; rf_path++) {
|
||||
if ((noise_data.valid_cnt[rf_path] < ValidCnt) && (noise_data.sval[rf_path] < Valid_Max && noise_data.sval[rf_path] >= Valid_Min)) {
|
||||
noise_data.valid_cnt[rf_path]++;
|
||||
noise_data.sum[rf_path] += noise_data.sval[rf_path];
|
||||
if (noise_data.valid_cnt[rf_path] == ValidCnt) {
|
||||
valid_done++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* printk("####### valid_done:%d #############\n", valid_done); */
|
||||
if ((valid_done == max_rf_path) || (jiffies_to_msecs(jiffies - start) > max_time)) {
|
||||
for (rf_path = RF_PATH_A; rf_path < max_rf_path; rf_path++) {
|
||||
/* printk("%s PATH_%d - sum = %d, valid_cnt = %d\n", __func__, rf_path, noise_data.sum[rf_path], noise_data.valid_cnt[rf_path]); */
|
||||
if (noise_data.valid_cnt[rf_path])
|
||||
noise_data.sum[rf_path] /= noise_data.valid_cnt[rf_path];
|
||||
else
|
||||
noise_data.sum[rf_path] = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
reg_c50 = (s32)PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XAAGCCore1, bMaskByte0);
|
||||
reg_c50 &= ~BIT7;
|
||||
pDM_Odm->noise_level.noise[RF_PATH_A] = -110 + reg_c50 + noise_data.sum[RF_PATH_A];
|
||||
pDM_Odm->noise_level.noise_all += pDM_Odm->noise_level.noise[RF_PATH_A];
|
||||
|
||||
if (max_rf_path == 2) {
|
||||
reg_c58 = (s32)PHY_QueryBBReg(pDM_Odm->Adapter, rOFDM0_XBAGCCore1, bMaskByte0);
|
||||
reg_c58 &= ~BIT7;
|
||||
pDM_Odm->noise_level.noise[RF_PATH_B] = -110 + reg_c58 + noise_data.sum[RF_PATH_B];
|
||||
pDM_Odm->noise_level.noise_all += pDM_Odm->noise_level.noise[RF_PATH_B];
|
||||
}
|
||||
pDM_Odm->noise_level.noise_all /= max_rf_path;
|
||||
|
||||
/* */
|
||||
/* Step 4. Recover the Dig */
|
||||
/* */
|
||||
if (bPauseDIG)
|
||||
odm_PauseDIG(pDM_Odm, ODM_RESUME_DIG, IGIValue);
|
||||
|
||||
return pDM_Odm->noise_level.noise_all;
|
||||
|
||||
}
|
||||
|
||||
s16 ODM_InbandNoise_Monitor(void *pDM_VOID, u8 bPauseDIG, u8 IGIValue, u32 max_time)
|
||||
{
|
||||
return odm_InbandNoise_Monitor_NSeries(pDM_VOID, bPauseDIG, IGIValue, max_time);
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
*****************************************************************************/
|
||||
#ifndef __ODMNOISEMONITOR_H__
|
||||
#define __ODMNOISEMONITOR_H__
|
||||
|
||||
#define ODM_MAX_CHANNEL_NUM 38/* 14+24 */
|
||||
struct noise_level {
|
||||
/* u8 value_a, value_b; */
|
||||
u8 value[MAX_RF_PATH];
|
||||
/* s8 sval_a, sval_b; */
|
||||
s8 sval[MAX_RF_PATH];
|
||||
|
||||
/* s32 noise_a = 0, noise_b = 0, sum_a = 0, sum_b = 0; */
|
||||
/* s32 noise[ODM_RF_PATH_MAX]; */
|
||||
s32 sum[MAX_RF_PATH];
|
||||
/* u8 valid_cnt_a = 0, valid_cnt_b = 0, */
|
||||
u8 valid[MAX_RF_PATH];
|
||||
u8 valid_cnt[MAX_RF_PATH];
|
||||
|
||||
};
|
||||
|
||||
|
||||
struct odm_noise_monitor {
|
||||
s8 noise[MAX_RF_PATH];
|
||||
s16 noise_all;
|
||||
};
|
||||
|
||||
s16 ODM_InbandNoise_Monitor(
|
||||
void *pDM_VOID,
|
||||
u8 bPauseDIG,
|
||||
u8 IGIValue,
|
||||
u32 max_time
|
||||
);
|
||||
|
||||
#endif
|
||||
@@ -33,7 +33,6 @@
|
||||
#include "odm_DynamicBBPowerSaving.h"
|
||||
#include "odm_DynamicTxPower.h"
|
||||
#include "odm_CfoTracking.h"
|
||||
#include "odm_NoiseMonitor.h"
|
||||
#include "HalPhyRf.h"
|
||||
#include "HalPhyRf_8723B.h"/* for IQK, LCK, Power-tracking */
|
||||
#include "rtl8723b_hal.h"
|
||||
|
||||
@@ -50,7 +50,6 @@
|
||||
#include <rtw_mlme_ext.h>
|
||||
#include <rtw_ap.h>
|
||||
#include <rtw_version.h>
|
||||
#include <rtw_odm.h>
|
||||
|
||||
#include "ioctl_cfg80211.h"
|
||||
|
||||
@@ -493,8 +492,6 @@ static inline u8 *myid(struct eeprom_priv *peepriv)
|
||||
|
||||
#include <rtw_btcoex.h>
|
||||
|
||||
int rtw_change_ifname(struct adapter *padapter, const char *ifname);
|
||||
|
||||
extern char *rtw_initmac;
|
||||
extern int rtw_mc2u_disable;
|
||||
extern int rtw_ht_enable;
|
||||
|
||||
@@ -45,7 +45,6 @@ void hal_btcoex_HaltNotify(struct adapter *padapter);
|
||||
void hal_btcoex_Handler(struct adapter *padapter);
|
||||
|
||||
s32 hal_btcoex_IsBTCoexCtrlAMPDUSize(struct adapter *padapter);
|
||||
void hal_btcoex_SetManualControl(struct adapter *padapter, u8 bmanual);
|
||||
bool hal_btcoex_IsBtControlLps(struct adapter *padapter);
|
||||
bool hal_btcoex_IsLpsOn(struct adapter *padapter);
|
||||
u8 hal_btcoex_RpwmVal(struct adapter *);
|
||||
|
||||
@@ -147,17 +147,8 @@ u8 GetHalDefVar(struct adapter *adapter, enum hal_def_variable variable,
|
||||
|
||||
bool eqNByte(u8 *str1, u8 *str2, u32 num);
|
||||
|
||||
bool IsHexDigit(char chTmp);
|
||||
|
||||
u32 MapCharToHexDigit(char chTmp);
|
||||
|
||||
bool GetHexValueFromString(char *szStr, u32 *pu4bVal, u32 *pu4bMove);
|
||||
|
||||
bool GetFractionValueFromString(char *szStr, u8 *pInteger, u8 *pFraction,
|
||||
u32 *pu4bMove);
|
||||
|
||||
bool IsCommentString(char *szStr);
|
||||
|
||||
bool ParseQualifiedString(char *In, u32 *Start, char *Out, char LeftQualifier,
|
||||
char RightQualifier);
|
||||
|
||||
|
||||
@@ -353,8 +353,6 @@ bool rtw_hal_c2h_valid(struct adapter *adapter, u8 *buf);
|
||||
s32 rtw_hal_c2h_handler(struct adapter *adapter, u8 *c2h_evt);
|
||||
c2h_id_filter rtw_hal_c2h_id_filter_ccx(struct adapter *adapter);
|
||||
|
||||
s32 rtw_hal_is_disable_sw_channel_plan(struct adapter *padapter);
|
||||
|
||||
s32 rtw_hal_macid_sleep(struct adapter *padapter, u32 macid);
|
||||
s32 rtw_hal_macid_wakeup(struct adapter *padapter, u32 macid);
|
||||
|
||||
|
||||
@@ -746,7 +746,6 @@ int rtw_parse_wpa2_ie(u8 *wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwi
|
||||
|
||||
void rtw_get_sec_ie(u8 *in_ie, uint in_len, u8 *rsn_ie, u16 *rsn_len, u8 *wpa_ie, u16 *wpa_len);
|
||||
|
||||
u8 rtw_is_wps_ie(u8 *ie_ptr, uint *wps_ielen);
|
||||
u8 *rtw_get_wps_ie(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen);
|
||||
u8 *rtw_get_wps_attr(u8 *wps_ie, uint wps_ielen, u16 target_attr_id, u8 *buf_attr, u32 *len_attr);
|
||||
u8 *rtw_get_wps_attr_content(u8 *wps_ie, uint wps_ielen, u16 target_attr_id, u8 *buf_content, uint *len_content);
|
||||
|
||||
@@ -591,7 +591,6 @@ extern u8 rtw_clearstakey_cmd(struct adapter *padapter, struct sta_info *sta, u8
|
||||
extern u8 rtw_joinbss_cmd(struct adapter *padapter, struct wlan_network *pnetwork);
|
||||
u8 rtw_disassoc_cmd(struct adapter *padapter, u32 deauth_timeout_ms, bool enqueue);
|
||||
extern u8 rtw_setopmode_cmd(struct adapter *padapter, enum ndis_802_11_network_infrastructure networktype, bool enqueue);
|
||||
extern u8 rtw_setdatarate_cmd(struct adapter *padapter, u8 *rateset);
|
||||
extern u8 rtw_setrfintfs_cmd(struct adapter *padapter, u8 mode);
|
||||
|
||||
extern u8 rtw_gettssi_cmd(struct adapter *padapter, u8 offset, u8 *pval);
|
||||
@@ -613,8 +612,6 @@ extern u8 rtw_ps_cmd(struct adapter *padapter);
|
||||
|
||||
u8 rtw_chk_hi_queue_cmd(struct adapter *padapter);
|
||||
|
||||
extern u8 rtw_set_chplan_cmd(struct adapter *padapter, u8 chplan, u8 enqueue, u8 swconfig);
|
||||
|
||||
extern u8 rtw_c2h_packet_wk_cmd(struct adapter *padapter, u8 *pbuf, u16 length);
|
||||
extern u8 rtw_c2h_wk_cmd(struct adapter *padapter, u8 *c2h_evt);
|
||||
|
||||
|
||||
@@ -662,7 +662,6 @@ extern void adaptive_early_32k(struct mlme_ext_priv *pmlmeext, u8 *pframe, uint
|
||||
extern u8 traffic_status_watchdog(struct adapter *padapter, u8 from_timer);
|
||||
|
||||
int rtw_chk_start_clnt_join(struct adapter *padapter, u8 *ch, u8 *bw, u8 *offset);
|
||||
int rtw_get_ch_setting_union(struct adapter *adapter, u8 *ch, u8 *bw, u8 *offset);
|
||||
|
||||
struct cmd_hdl {
|
||||
uint parmsize;
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2013 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef __RTW_ODM_H__
|
||||
#define __RTW_ODM_H__
|
||||
|
||||
#include <drv_types.h>
|
||||
|
||||
/*
|
||||
* This file provides utilities/wrappers for rtw driver to use ODM
|
||||
*/
|
||||
|
||||
void rtw_odm_dbg_comp_msg(struct adapter *adapter);
|
||||
void rtw_odm_dbg_comp_set(struct adapter *adapter, u64 comps);
|
||||
void rtw_odm_dbg_level_msg(void *sel, struct adapter *adapter);
|
||||
void rtw_odm_dbg_level_set(struct adapter *adapter, u32 level);
|
||||
|
||||
void rtw_odm_ability_msg(void *sel, struct adapter *adapter);
|
||||
void rtw_odm_ability_set(struct adapter *adapter, u32 ability);
|
||||
|
||||
void rtw_odm_adaptivity_parm_msg(void *sel, struct adapter *adapter);
|
||||
void rtw_odm_adaptivity_parm_set(struct adapter *adapter, s8 TH_L2H_ini, s8 TH_EDCCA_HL_diff,
|
||||
s8 IGI_Base, bool ForceEDCCA, u8 AdapEn_RSSI, u8 IGI_LowerBound);
|
||||
void rtw_odm_get_perpkt_rssi(void *sel, struct adapter *adapter);
|
||||
#endif /* __RTW_ODM_H__ */
|
||||
@@ -25,8 +25,8 @@ struct sta_xmit_priv;
|
||||
struct xmit_frame;
|
||||
struct xmit_buf;
|
||||
|
||||
extern int _rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev);
|
||||
extern int rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev);
|
||||
extern void _rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev);
|
||||
extern netdev_tx_t rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev);
|
||||
|
||||
void rtw_os_xmit_schedule(struct adapter *padapter);
|
||||
|
||||
|
||||
@@ -198,7 +198,7 @@ static int rtw_ieee80211_channel_to_frequency(int chan, int band)
|
||||
if (band == NL80211_BAND_2GHZ) {
|
||||
if (chan == 14)
|
||||
return 2484;
|
||||
else if (chan < 14)
|
||||
else if (chan < 14)
|
||||
return 2407 + chan * 5;
|
||||
}
|
||||
|
||||
@@ -810,7 +810,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee_param
|
||||
memcpy(padapter->securitypriv.dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len > 16 ? 16 : param->u.crypt.key_len));
|
||||
memcpy(padapter->securitypriv.dot118021XGrptxmickey[param->u.crypt.idx].skey, &(param->u.crypt.key[16]), 8);
|
||||
memcpy(padapter->securitypriv.dot118021XGrprxmickey[param->u.crypt.idx].skey, &(param->u.crypt.key[24]), 8);
|
||||
padapter->securitypriv.binstallGrpkey = true;
|
||||
padapter->securitypriv.binstallGrpkey = true;
|
||||
|
||||
padapter->securitypriv.dot118021XGrpKeyid = param->u.crypt.idx;
|
||||
rtw_set_key(padapter, &padapter->securitypriv, param->u.crypt.idx, 1, true);
|
||||
@@ -920,9 +920,9 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
|
||||
ret = rtw_cfg80211_ap_set_encryption(ndev, param, param_len);
|
||||
} else if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == true
|
||||
|| check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == true) {
|
||||
ret = rtw_cfg80211_set_encryption(ndev, param, param_len);
|
||||
}
|
||||
|| check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == true) {
|
||||
ret = rtw_cfg80211_set_encryption(ndev, param, param_len);
|
||||
}
|
||||
|
||||
addkey_end:
|
||||
kfree(param);
|
||||
@@ -1066,7 +1066,7 @@ static int cfg80211_rtw_change_iface(struct wiphy *wiphy,
|
||||
}
|
||||
}
|
||||
|
||||
if (_FAIL == rtw_pwr_wakeup(padapter)) {
|
||||
if (rtw_pwr_wakeup(padapter) == _FAIL) {
|
||||
ret = -EPERM;
|
||||
goto exit;
|
||||
}
|
||||
@@ -1240,7 +1240,7 @@ static int cfg80211_rtw_scan(struct wiphy *wiphy
|
||||
}
|
||||
|
||||
rtw_ps_deny(padapter, PS_DENY_SCAN);
|
||||
if (_FAIL == rtw_pwr_wakeup(padapter)) {
|
||||
if (rtw_pwr_wakeup(padapter) == _FAIL) {
|
||||
need_indicate_scan_done = true;
|
||||
goto check_need_indicate_scan_done;
|
||||
}
|
||||
@@ -1500,49 +1500,49 @@ static int rtw_cfg80211_set_wpa_ie(struct adapter *padapter, u8 *pie, size_t iel
|
||||
pairwise_cipher = WPA_CIPHER_NONE;
|
||||
|
||||
switch (group_cipher) {
|
||||
case WPA_CIPHER_NONE:
|
||||
padapter->securitypriv.dot118021XGrpPrivacy = _NO_PRIVACY_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11EncryptionDisabled;
|
||||
break;
|
||||
case WPA_CIPHER_WEP40:
|
||||
padapter->securitypriv.dot118021XGrpPrivacy = _WEP40_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled;
|
||||
break;
|
||||
case WPA_CIPHER_TKIP:
|
||||
padapter->securitypriv.dot118021XGrpPrivacy = _TKIP_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption2Enabled;
|
||||
break;
|
||||
case WPA_CIPHER_CCMP:
|
||||
padapter->securitypriv.dot118021XGrpPrivacy = _AES_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption3Enabled;
|
||||
break;
|
||||
case WPA_CIPHER_WEP104:
|
||||
padapter->securitypriv.dot118021XGrpPrivacy = _WEP104_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled;
|
||||
break;
|
||||
case WPA_CIPHER_NONE:
|
||||
padapter->securitypriv.dot118021XGrpPrivacy = _NO_PRIVACY_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11EncryptionDisabled;
|
||||
break;
|
||||
case WPA_CIPHER_WEP40:
|
||||
padapter->securitypriv.dot118021XGrpPrivacy = _WEP40_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled;
|
||||
break;
|
||||
case WPA_CIPHER_TKIP:
|
||||
padapter->securitypriv.dot118021XGrpPrivacy = _TKIP_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption2Enabled;
|
||||
break;
|
||||
case WPA_CIPHER_CCMP:
|
||||
padapter->securitypriv.dot118021XGrpPrivacy = _AES_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption3Enabled;
|
||||
break;
|
||||
case WPA_CIPHER_WEP104:
|
||||
padapter->securitypriv.dot118021XGrpPrivacy = _WEP104_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (pairwise_cipher) {
|
||||
case WPA_CIPHER_NONE:
|
||||
padapter->securitypriv.dot11PrivacyAlgrthm = _NO_PRIVACY_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11EncryptionDisabled;
|
||||
break;
|
||||
case WPA_CIPHER_WEP40:
|
||||
padapter->securitypriv.dot11PrivacyAlgrthm = _WEP40_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled;
|
||||
break;
|
||||
case WPA_CIPHER_TKIP:
|
||||
padapter->securitypriv.dot11PrivacyAlgrthm = _TKIP_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption2Enabled;
|
||||
break;
|
||||
case WPA_CIPHER_CCMP:
|
||||
padapter->securitypriv.dot11PrivacyAlgrthm = _AES_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption3Enabled;
|
||||
break;
|
||||
case WPA_CIPHER_WEP104:
|
||||
padapter->securitypriv.dot11PrivacyAlgrthm = _WEP104_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled;
|
||||
break;
|
||||
case WPA_CIPHER_NONE:
|
||||
padapter->securitypriv.dot11PrivacyAlgrthm = _NO_PRIVACY_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11EncryptionDisabled;
|
||||
break;
|
||||
case WPA_CIPHER_WEP40:
|
||||
padapter->securitypriv.dot11PrivacyAlgrthm = _WEP40_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled;
|
||||
break;
|
||||
case WPA_CIPHER_TKIP:
|
||||
padapter->securitypriv.dot11PrivacyAlgrthm = _TKIP_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption2Enabled;
|
||||
break;
|
||||
case WPA_CIPHER_CCMP:
|
||||
padapter->securitypriv.dot11PrivacyAlgrthm = _AES_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption3Enabled;
|
||||
break;
|
||||
case WPA_CIPHER_WEP104:
|
||||
padapter->securitypriv.dot11PrivacyAlgrthm = _WEP104_;
|
||||
padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled;
|
||||
break;
|
||||
}
|
||||
|
||||
{/* handle wps_ie */
|
||||
@@ -1583,7 +1583,7 @@ static int cfg80211_rtw_join_ibss(struct wiphy *wiphy, struct net_device *ndev,
|
||||
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
||||
int ret = 0;
|
||||
|
||||
if (_FAIL == rtw_pwr_wakeup(padapter)) {
|
||||
if (rtw_pwr_wakeup(padapter) == _FAIL) {
|
||||
ret = -EPERM;
|
||||
goto exit;
|
||||
}
|
||||
@@ -1674,7 +1674,7 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
|
||||
}
|
||||
|
||||
rtw_ps_deny(padapter, PS_DENY_JOIN);
|
||||
if (_FAIL == rtw_pwr_wakeup(padapter)) {
|
||||
if (rtw_pwr_wakeup(padapter) == _FAIL) {
|
||||
ret = -EPERM;
|
||||
goto exit;
|
||||
}
|
||||
@@ -1849,6 +1849,7 @@ static int cfg80211_rtw_get_txpower(struct wiphy *wiphy,
|
||||
inline bool rtw_cfg80211_pwr_mgmt(struct adapter *adapter)
|
||||
{
|
||||
struct rtw_wdev_priv *rtw_wdev_priv = adapter_wdev_data(adapter);
|
||||
|
||||
return rtw_wdev_priv->power_mgmt;
|
||||
}
|
||||
|
||||
@@ -1954,6 +1955,7 @@ void rtw_cfg80211_indicate_sta_assoc(struct adapter *padapter, u8 *pmgmt_frame,
|
||||
{
|
||||
struct station_info sinfo = {};
|
||||
u8 ie_offset;
|
||||
|
||||
if (GetFrameSubType(pmgmt_frame) == WIFI_ASSOCREQ)
|
||||
ie_offset = _ASOCREQ_IE_OFFSET_;
|
||||
else /* WIFI_REASSOCREQ */
|
||||
@@ -2085,7 +2087,8 @@ static netdev_tx_t rtw_cfg80211_monitor_if_xmit_entry(struct sk_buff *skb, struc
|
||||
memcpy(pdata + sizeof(dst_mac_addr), src_mac_addr, sizeof(src_mac_addr));
|
||||
|
||||
/* Use the real net device to transmit the packet */
|
||||
return _rtw_xmit_entry(skb, padapter->pnetdev);
|
||||
_rtw_xmit_entry(skb, padapter->pnetdev);
|
||||
return NETDEV_TX_OK;
|
||||
|
||||
} else if ((frame_control & (IEEE80211_FCTL_FTYPE|IEEE80211_FCTL_STYPE)) ==
|
||||
(IEEE80211_FTYPE_MGMT|IEEE80211_STYPE_ACTION)) {
|
||||
@@ -2348,7 +2351,7 @@ static int cfg80211_rtw_start_ap(struct wiphy *wiphy, struct net_device *ndev,
|
||||
}
|
||||
|
||||
static int cfg80211_rtw_change_beacon(struct wiphy *wiphy, struct net_device *ndev,
|
||||
struct cfg80211_beacon_data *info)
|
||||
struct cfg80211_beacon_data *info)
|
||||
{
|
||||
struct adapter *adapter = rtw_netdev_priv(ndev);
|
||||
|
||||
@@ -2467,7 +2470,7 @@ static int cfg80211_rtw_dump_station(struct wiphy *wiphy, struct net_device *nde
|
||||
spin_lock_bh(&pstapriv->asoc_list_lock);
|
||||
psta = rtw_sta_info_get_by_idx(idx, pstapriv);
|
||||
spin_unlock_bh(&pstapriv->asoc_list_lock);
|
||||
if (NULL == psta) {
|
||||
if (psta == NULL) {
|
||||
ret = -ENOENT;
|
||||
goto exit;
|
||||
}
|
||||
@@ -2602,7 +2605,7 @@ static int cfg80211_rtw_mgmt_tx(struct wiphy *wiphy,
|
||||
goto exit;
|
||||
|
||||
rtw_ps_deny(padapter, PS_DENY_MGNT_TX);
|
||||
if (_FAIL == rtw_pwr_wakeup(padapter)) {
|
||||
if (rtw_pwr_wakeup(padapter) == _FAIL) {
|
||||
ret = -EFAULT;
|
||||
goto cancel_ps_deny;
|
||||
}
|
||||
|
||||
@@ -664,51 +664,36 @@ void rtw_reset_drv_sw(struct adapter *padapter)
|
||||
|
||||
u8 rtw_init_drv_sw(struct adapter *padapter)
|
||||
{
|
||||
u8 ret8 = _SUCCESS;
|
||||
|
||||
rtw_init_default_value(padapter);
|
||||
|
||||
rtw_init_hal_com_default_value(padapter);
|
||||
|
||||
if (rtw_init_cmd_priv(&padapter->cmdpriv)) {
|
||||
ret8 = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
if (rtw_init_cmd_priv(&padapter->cmdpriv))
|
||||
return _FAIL;
|
||||
|
||||
padapter->cmdpriv.padapter = padapter;
|
||||
|
||||
if (rtw_init_evt_priv(&padapter->evtpriv)) {
|
||||
ret8 = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
if (rtw_init_evt_priv(&padapter->evtpriv))
|
||||
goto free_cmd_priv;
|
||||
|
||||
|
||||
if (rtw_init_mlme_priv(padapter) == _FAIL) {
|
||||
ret8 = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
if (rtw_init_mlme_priv(padapter) == _FAIL)
|
||||
goto free_evt_priv;
|
||||
|
||||
init_mlme_ext_priv(padapter);
|
||||
|
||||
if (_rtw_init_xmit_priv(&padapter->xmitpriv, padapter) == _FAIL) {
|
||||
ret8 = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
if (_rtw_init_xmit_priv(&padapter->xmitpriv, padapter) == _FAIL)
|
||||
goto free_mlme_ext;
|
||||
|
||||
if (_rtw_init_recv_priv(&padapter->recvpriv, padapter) == _FAIL) {
|
||||
ret8 = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
if (_rtw_init_recv_priv(&padapter->recvpriv, padapter) == _FAIL)
|
||||
goto free_xmit_priv;
|
||||
/* add for CONFIG_IEEE80211W, none 11w also can use */
|
||||
spin_lock_init(&padapter->security_key_mutex);
|
||||
|
||||
/* We don't need to memset padapter->XXX to zero, because adapter is allocated by vzalloc(). */
|
||||
/* memset((unsigned char *)&padapter->securitypriv, 0, sizeof (struct security_priv)); */
|
||||
|
||||
if (_rtw_init_sta_priv(&padapter->stapriv) == _FAIL) {
|
||||
ret8 = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
if (_rtw_init_sta_priv(&padapter->stapriv) == _FAIL)
|
||||
goto free_recv_priv;
|
||||
|
||||
padapter->stapriv.padapter = padapter;
|
||||
padapter->setband = GHZ24_50;
|
||||
@@ -719,9 +704,26 @@ u8 rtw_init_drv_sw(struct adapter *padapter)
|
||||
|
||||
rtw_hal_dm_init(padapter);
|
||||
|
||||
exit:
|
||||
return _SUCCESS;
|
||||
|
||||
return ret8;
|
||||
free_recv_priv:
|
||||
_rtw_free_recv_priv(&padapter->recvpriv);
|
||||
|
||||
free_xmit_priv:
|
||||
_rtw_free_xmit_priv(&padapter->xmitpriv);
|
||||
|
||||
free_mlme_ext:
|
||||
free_mlme_ext_priv(&padapter->mlmeextpriv);
|
||||
|
||||
rtw_free_mlme_priv(&padapter->mlmepriv);
|
||||
|
||||
free_evt_priv:
|
||||
rtw_free_evt_priv(&padapter->evtpriv);
|
||||
|
||||
free_cmd_priv:
|
||||
rtw_free_cmd_priv(&padapter->cmdpriv);
|
||||
|
||||
return _FAIL;
|
||||
}
|
||||
|
||||
void rtw_cancel_all_timer(struct adapter *padapter)
|
||||
|
||||
@@ -108,56 +108,6 @@ RETURN:
|
||||
return;
|
||||
}
|
||||
|
||||
int rtw_change_ifname(struct adapter *padapter, const char *ifname)
|
||||
{
|
||||
struct net_device *pnetdev;
|
||||
struct net_device *cur_pnetdev;
|
||||
struct rereg_nd_name_data *rereg_priv;
|
||||
int ret;
|
||||
|
||||
if (!padapter)
|
||||
goto error;
|
||||
|
||||
cur_pnetdev = padapter->pnetdev;
|
||||
rereg_priv = &padapter->rereg_nd_name_priv;
|
||||
|
||||
/* free the old_pnetdev */
|
||||
if (rereg_priv->old_pnetdev) {
|
||||
free_netdev(rereg_priv->old_pnetdev);
|
||||
rereg_priv->old_pnetdev = NULL;
|
||||
}
|
||||
|
||||
if (!rtnl_is_locked())
|
||||
unregister_netdev(cur_pnetdev);
|
||||
else
|
||||
unregister_netdevice(cur_pnetdev);
|
||||
|
||||
rereg_priv->old_pnetdev = cur_pnetdev;
|
||||
|
||||
pnetdev = rtw_init_netdev(padapter);
|
||||
if (!pnetdev)
|
||||
goto error;
|
||||
|
||||
SET_NETDEV_DEV(pnetdev, dvobj_to_dev(adapter_to_dvobj(padapter)));
|
||||
|
||||
rtw_init_netdev_name(pnetdev, ifname);
|
||||
|
||||
eth_hw_addr_set(pnetdev, padapter->eeprompriv.mac_addr);
|
||||
|
||||
if (!rtnl_is_locked())
|
||||
ret = register_netdev(pnetdev);
|
||||
else
|
||||
ret = register_netdevice(pnetdev);
|
||||
|
||||
if (ret != 0)
|
||||
goto error;
|
||||
|
||||
return 0;
|
||||
|
||||
error:
|
||||
return -1;
|
||||
}
|
||||
|
||||
void rtw_buf_free(u8 **buf, u32 *buf_len)
|
||||
{
|
||||
if (!buf || !buf_len)
|
||||
|
||||
@@ -181,7 +181,7 @@ static int rtw_mlcst2unicst(struct adapter *padapter, struct sk_buff *skb)
|
||||
return true;
|
||||
}
|
||||
|
||||
int _rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev)
|
||||
void _rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev)
|
||||
{
|
||||
struct adapter *padapter = rtw_netdev_priv(pnetdev);
|
||||
struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
|
||||
@@ -202,7 +202,7 @@ int _rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev)
|
||||
if (pxmitpriv->free_xmitframe_cnt > (NR_XMITFRAME / 4)) {
|
||||
res = rtw_mlcst2unicst(padapter, pkt);
|
||||
if (res)
|
||||
goto exit;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -210,22 +210,17 @@ int _rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev)
|
||||
if (res < 0)
|
||||
goto drop_packet;
|
||||
|
||||
goto exit;
|
||||
return;
|
||||
|
||||
drop_packet:
|
||||
pxmitpriv->tx_drop++;
|
||||
dev_kfree_skb_any(pkt);
|
||||
|
||||
exit:
|
||||
return 0;
|
||||
}
|
||||
|
||||
int rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev)
|
||||
netdev_tx_t rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (pkt)
|
||||
ret = _rtw_xmit_entry(pkt, pnetdev);
|
||||
_rtw_xmit_entry(pkt, pnetdev);
|
||||
|
||||
return ret;
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user