mirror of
https://github.com/RinCat/RTL88x2BU-Linux-Driver.git
synced 2026-01-19 10:26:35 +00:00
Update to 5.6.1
This commit is contained in:
@@ -177,6 +177,7 @@ u8 rtl8822bu_fw_ips_deinit(_adapter *padapter)
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RTW_LED
|
||||
static void init_hwled(PADAPTER adapter, u8 enable)
|
||||
{
|
||||
u8 mode = 0;
|
||||
@@ -187,11 +188,18 @@ static void init_hwled(PADAPTER adapter, u8 enable)
|
||||
|
||||
rtw_halmac_led_cfg(adapter_to_dvobj(adapter), enable, mode);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void hal_init_misc(PADAPTER adapter)
|
||||
{
|
||||
#ifdef CONFIG_RTW_LED
|
||||
struct led_priv *ledpriv = adapter_to_led(adapter);
|
||||
|
||||
init_hwled(adapter, 1);
|
||||
#ifdef CONFIG_RTW_SW_LED
|
||||
if (ledpriv->bRegUseLed == _TRUE)
|
||||
rtw_halmac_led_cfg(adapter_to_dvobj(adapter), _TRUE, 3);
|
||||
#endif
|
||||
#endif /* CONFIG_RTW_LED */
|
||||
|
||||
}
|
||||
@@ -219,7 +227,13 @@ exit:
|
||||
static void hal_deinit_misc(PADAPTER adapter)
|
||||
{
|
||||
#ifdef CONFIG_RTW_LED
|
||||
struct led_priv *ledpriv = adapter_to_led(adapter);
|
||||
|
||||
init_hwled(adapter, 0);
|
||||
#ifdef CONFIG_RTW_SW_LED
|
||||
if (ledpriv->bRegUseLed == _TRUE)
|
||||
rtw_halmac_led_cfg(adapter_to_dvobj(adapter), _FALSE, 3);
|
||||
#endif
|
||||
#endif /* CONFIG_RTW_LED */
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2015 - 2017 Realtek Corporation.
|
||||
* Copyright(c) 2015 - 2018 Realtek Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
@@ -283,11 +283,16 @@ static u8 usb_write_data_rsvd_page(void *d, u8 *pBuf, u32 size)
|
||||
struct dvobj_priv *pobj = (struct dvobj_priv *)d;
|
||||
PADAPTER padapter = dvobj_get_primary_adapter(pobj);
|
||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
|
||||
u8 ret;
|
||||
|
||||
if (pHalData->not_xmitframe_fw_dl)
|
||||
return usb_write_data_not_xmitframe(d , pBuf , size, HALMAC_TXDESC_QSEL_BEACON);
|
||||
ret = usb_write_data_not_xmitframe(d , pBuf , size, HALMAC_TXDESC_QSEL_BEACON);
|
||||
else
|
||||
return usb_write_data_rsvd_page_normal(d , pBuf , size);
|
||||
ret = usb_write_data_rsvd_page_normal(d , pBuf , size);
|
||||
|
||||
if (ret == _TRUE)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u8 usb_write_data_h2c(void *d, u8 *pBuf, u32 size)
|
||||
@@ -295,11 +300,16 @@ static u8 usb_write_data_h2c(void *d, u8 *pBuf, u32 size)
|
||||
struct dvobj_priv *pobj = (struct dvobj_priv *)d;
|
||||
PADAPTER padapter = dvobj_get_primary_adapter(pobj);
|
||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
|
||||
u8 ret;
|
||||
|
||||
if (pHalData->not_xmitframe_fw_dl)
|
||||
return usb_write_data_not_xmitframe(d , pBuf , size, HALMAC_TXDESC_QSEL_H2C_CMD);
|
||||
ret = usb_write_data_not_xmitframe(d , pBuf , size, HALMAC_TXDESC_QSEL_H2C_CMD);
|
||||
else
|
||||
return usb_write_data_h2c_normal(d , pBuf , size);
|
||||
ret = usb_write_data_h2c_normal(d , pBuf , size);
|
||||
|
||||
if (ret == _TRUE)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int rtl8822bu_halmac_init_adapter(PADAPTER padapter)
|
||||
|
||||
@@ -119,8 +119,6 @@ void rtl8822bu_initswleds(PADAPTER padapter)
|
||||
InitLed(padapter, &(ledpriv->SwLed0), LED_PIN_LED0);
|
||||
InitLed(padapter, &(ledpriv->SwLed1), LED_PIN_LED1);
|
||||
InitLed(padapter, &(ledpriv->SwLed2), LED_PIN_LED2);
|
||||
|
||||
rtw_halmac_led_cfg(adapter_to_dvobj(padapter), enable, mode);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -136,7 +134,5 @@ void rtl8822bu_deinitswleds(PADAPTER padapter)
|
||||
DeInitLed(&(ledpriv->SwLed0));
|
||||
DeInitLed(&(ledpriv->SwLed1));
|
||||
DeInitLed(&(ledpriv->SwLed2));
|
||||
|
||||
rtw_halmac_led_cfg(adapter_to_dvobj(padapter), enable, mode);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -115,19 +115,6 @@ static u8 sethwreg(PADAPTER padapter, u8 variable, u8 *val)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case HW_VAR_SET_REQ_FW_PS:
|
||||
{
|
||||
/*
|
||||
* 1. driver write 0x8f[4]=1
|
||||
* request fw ps state (only can write bit4)
|
||||
*/
|
||||
u8 req_fw_ps = 0;
|
||||
|
||||
req_fw_ps = rtw_read8(padapter, 0x8f);
|
||||
req_fw_ps |= 0x10;
|
||||
rtw_write8(padapter, 0x8f, req_fw_ps);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ret = rtl8822b_sethwreg(padapter, variable, val);
|
||||
break;
|
||||
@@ -154,10 +141,6 @@ static void gethwreg(PADAPTER padapter, u8 variable, u8 *val)
|
||||
#endif /* CONFIG_LPS_LCLK */
|
||||
break;
|
||||
|
||||
case HW_VAR_FW_PS_STATE:
|
||||
/* driver read dword 0x88 to get fw ps state */
|
||||
*((u16 *)val) = rtw_read16(padapter, 0x88);
|
||||
break;
|
||||
default:
|
||||
rtl8822b_gethwreg(padapter, variable, val);
|
||||
break;
|
||||
|
||||
@@ -47,6 +47,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz, u8 bag
|
||||
sint bmcst = IS_MCAST(pattrib->ra);
|
||||
u16 SWDefineContent = 0x0;
|
||||
u8 DriverFixedRate = 0x0;
|
||||
u8 hw_port = rtw_hal_get_port(padapter);
|
||||
|
||||
#ifndef CONFIG_USE_USB_BUFFER_ALLOC_TX
|
||||
if (padapter->registrypriv.mp_mode == 0) {
|
||||
@@ -101,16 +102,25 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz, u8 bag
|
||||
/*offset 12 */
|
||||
if (!pattrib->qos_en) {
|
||||
/* HW sequence, to fix to use 0 queue. todo: 4AC packets to use auto queue select */
|
||||
SET_TX_DESC_EN_HWSEQ_8822B(ptxdesc, 1); /* Hw set sequence number */
|
||||
SET_TX_DESC_EN_HWEXSEQ_8822B(ptxdesc, 0);
|
||||
SET_TX_DESC_DISQSELSEQ_8822B(ptxdesc, 1);
|
||||
SET_TX_DESC_HW_SSN_SEL_8822B(ptxdesc, 0);
|
||||
SET_TX_DESC_EN_HWSEQ_8822B(ptxdesc, 1);/* Hw set sequence number */
|
||||
SET_TX_DESC_HW_SSN_SEL_8822B(ptxdesc, pattrib->hw_ssn_sel);
|
||||
SET_TX_DESC_EN_HWEXSEQ_8822B(ptxdesc, 0);
|
||||
} else
|
||||
SET_TX_DESC_SW_SEQ_8822B(ptxdesc, pattrib->seqnum);
|
||||
|
||||
if ((pxmitframe->frame_tag & 0x0f) == DATA_FRAMETAG) {
|
||||
/* RTW_INFO("pxmitframe->frame_tag == DATA_FRAMETAG\n"); */
|
||||
rtl8822b_fill_txdesc_sectype(pattrib, ptxdesc);
|
||||
#ifdef CONFIG_TX_CSUM_OFFLOAD
|
||||
if (pattrib->hw_csum == 1) {
|
||||
int offset = 48 + pxmitframe->pkt_offset*8 + 8;
|
||||
|
||||
SET_TX_DESC_OFFSET_8822B(ptxdesc, offset);
|
||||
SET_TX_DESC_CHK_EN_8822B(ptxdesc, 1);
|
||||
SET_TX_DESC_WHEADER_LEN_8822B(ptxdesc, (pattrib->hdrlen + pattrib->iv_len)>>1);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* offset 20 */
|
||||
#ifdef CONFIG_USB_TX_AGGREGATION
|
||||
@@ -209,8 +219,17 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz, u8 bag
|
||||
/* HW will ignore this setting if the transmission rate is legacy OFDM */
|
||||
if (pmlmeinfo->preamble_mode == PREAMBLE_SHORT)
|
||||
SET_TX_DESC_DATA_SHORT_8822B(ptxdesc, 1);
|
||||
|
||||
SET_TX_DESC_DATARATE_8822B(ptxdesc, MRateToHwRate(pmlmeext->tx_rate));
|
||||
#ifdef CONFIG_IP_R_MONITOR
|
||||
if((pattrib->ether_type == ETH_P_ARP) &&
|
||||
(IsSupportedTxOFDM(padapter->registrypriv.wireless_mode))) {
|
||||
SET_TX_DESC_DATARATE_8822B(ptxdesc, MRateToHwRate(IEEE80211_OFDM_RATE_6MB));
|
||||
#ifdef DBG_IP_R_MONITOR
|
||||
RTW_INFO(FUNC_ADPT_FMT ": SP Packet(0x%04X) rate=0x%x SeqNum = %d\n",
|
||||
FUNC_ADPT_ARG(padapter), pattrib->ether_type, MRateToHwRate(pmlmeext->tx_rate), pattrib->seqnum);
|
||||
#endif/*DBG_IP_R_MONITOR*/
|
||||
} else
|
||||
#endif/*CONFIG_IP_R_MONITOR*/
|
||||
SET_TX_DESC_DATARATE_8822B(ptxdesc, MRateToHwRate(pmlmeext->tx_rate));
|
||||
}
|
||||
|
||||
#ifdef CONFIG_TDLS
|
||||
@@ -226,6 +245,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz, u8 bag
|
||||
#endif
|
||||
} else if ((pxmitframe->frame_tag & 0x0f) == MGNT_FRAMETAG) {
|
||||
/* RTW_INFO("pxmitframe->frame_tag == MGNT_FRAMETAG\n"); */
|
||||
SET_TX_DESC_MBSSID_8822B(ptxdesc, pattrib->mbssid & 0xF);
|
||||
|
||||
SET_TX_DESC_USE_RATE_8822B(ptxdesc, 1);
|
||||
DriverFixedRate = 0x01;
|
||||
@@ -275,8 +295,8 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz, u8 bag
|
||||
|
||||
SET_TX_DESC_SW_DEFINE_8822B(ptxdesc, SWDefineContent);
|
||||
|
||||
SET_TX_DESC_PORT_ID_8822B(ptxdesc, get_hw_port(padapter));
|
||||
SET_TX_DESC_MULTIPLE_PORT_8822B(ptxdesc, get_hw_port(padapter));
|
||||
SET_TX_DESC_PORT_ID_8822B(ptxdesc, hw_port);
|
||||
SET_TX_DESC_MULTIPLE_PORT_8822B(ptxdesc, hw_port);
|
||||
|
||||
rtl8822b_cal_txdesc_chksum(padapter, ptxdesc);
|
||||
rtl8822b_dbg_dump_tx_desc(padapter, pxmitframe->frame_tag, ptxdesc);
|
||||
@@ -299,6 +319,7 @@ s32 rtl8822bu_xmit_buf_handler(PADAPTER padapter)
|
||||
PHAL_DATA_TYPE phal;
|
||||
struct xmit_priv *pxmitpriv;
|
||||
struct xmit_buf *pxmitbuf;
|
||||
struct xmit_frame *pxmitframe;
|
||||
s32 ret;
|
||||
|
||||
|
||||
@@ -332,8 +353,10 @@ s32 rtl8822bu_xmit_buf_handler(PADAPTER padapter)
|
||||
if (pxmitbuf == NULL)
|
||||
break;
|
||||
|
||||
pxmitframe = (struct xmit_frame *) pxmitbuf->priv_data;
|
||||
/* only XMITBUF_DATA & XMITBUF_MGNT */
|
||||
rtw_write_port_and_wait(padapter, pxmitbuf->ff_hwaddr, pxmitbuf->len, (unsigned char *)pxmitbuf, 500);
|
||||
rtw_free_xmitframe(pxmitpriv, pxmitframe);
|
||||
} while (1);
|
||||
|
||||
#ifdef CONFIG_LPS_LCLK
|
||||
@@ -427,6 +450,9 @@ static s32 rtw_dump_xframe(PADAPTER padapter, struct xmit_frame *pxmitframe)
|
||||
|
||||
}
|
||||
|
||||
#ifdef CONFIG_XMIT_THREAD_MODE
|
||||
if ((pattrib->qsel == QSLT_BEACON) || (pattrib->qsel == QSLT_CMD))
|
||||
#endif
|
||||
rtw_free_xmitframe(pxmitpriv, pxmitframe);
|
||||
|
||||
if (ret != _SUCCESS)
|
||||
@@ -715,7 +741,7 @@ agg_end:
|
||||
pxmitbuf->len = pbuf_tail;
|
||||
pxmitbuf->ff_hwaddr = ff_hwaddr;
|
||||
|
||||
if (pxmitbuf->buf_tag == XMITBUF_CMD)
|
||||
if (pfirstframe->attrib.qsel == QSLT_BEACON)
|
||||
/* download rsvd page or fw */
|
||||
rtw_write_port(padapter, ff_hwaddr, pbuf_tail, (u8 *)pxmitbuf);
|
||||
else
|
||||
@@ -732,6 +758,9 @@ agg_end:
|
||||
|
||||
rtw_count_tx_stats(padapter, pfirstframe, pbuf_tail);
|
||||
|
||||
#ifdef CONFIG_XMIT_THREAD_MODE
|
||||
if (pfirstframe->attrib.qsel == QSLT_BEACON)
|
||||
#endif
|
||||
rtw_free_xmitframe(pxmitpriv, pfirstframe);
|
||||
|
||||
return _TRUE;
|
||||
@@ -839,7 +868,7 @@ s32 rtl8822bu_init_xmit_priv(PADAPTER padapter)
|
||||
#ifdef CONFIG_TX_EARLY_MODE
|
||||
pHalData->bEarlyModeEnable = padapter->registrypriv.early_mode;
|
||||
#endif
|
||||
|
||||
rtl8822b_init_xmit_priv(padapter);
|
||||
return _SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user