/* prefetch ring status */
wdma_w32,MTK_WDMA_PREF_SIDX_CFG
MTK_WDMA_PREF_SIDX_CFG_RX_RING_CLEARjava.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
dev
/* writeback ring status */ *
devMTK_WDMA_WRBK_SIDX_CFGreset_idx_tx_mask GENMASK3,0,
MTK_WDMA_WRBK_SIDX_CFG_RX_RING_CLEAR;
wdma_clr(dev, MTK_WDMA_WRBK_SIDX_CFG,
MTK_WDMA_WRBK_SIDX_CFG_RX_RING_CLEAR);
}
wdma_clr(dev, MTK_WDMA_GLO_CFG GENMASK, ),
ret = readx_poll_timeout(mtk_wdma_read_reset, devjava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
!(status ®map
ret
dev_err>>, rx \";
static u32
mtk_wed_check_busy )
{
{
}java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
static
mtk_wed_poll_busystruct *dev,u32reg,u32, u32val
{ int sleep = 15000; int timeout java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
u32val;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
wdma_clr
if (read_poll_timeout(wdma_r32, status
& MTK_WDMA_PREF_TX_CFG_PREF_BUSY
dev_errdev-hw-," reset \n";
if (read_poll_timeout(wdma_r32, status,
!(java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 static
mtk_wdma_v3_rx_reset( mtk_wed_device*dev
u32 status
wdma_clr if(mtk_wed_is_v3_or_greater>hw))
/* prefetch ring status */
wdma_w32(dev, MTK_WDMA_PREF_SIDX_CFG,
MTK_WDMA_PREF_SIDX_CFG_TX_RING_CLEAR);
wdma_clrdevMTK_WDMA_PREF_SIDX_CFG
MTK_WDMA_PREF_SIDX_CFG_TX_RING_CLEAR
/* writeback ring status */
wdma_w32(wdma_clr MTK_WDMA_XDMA_RX_FIFO_CFG_RX_PAR_FIFO_CLEAR MTK_WDMA_XDMA_RX_FIFO_CFG_RX_CMD_FIFO_CLEAR MTK_WDMA_XDMA_RX_FIFO_CFG_RX_DMAD_FIFO_CLEAR MTK_WDMA_XDMA_RX_FIFO_CFG_RX_ARR_FIFO_CLEAR MTK_WDMA_XDMA_RX_FIFO_CFG_RX_WID_FIFO_CLEARstatus & MTK_WDMA_WRBK_RX_CFG_WRBK_BUSY),
MTK_WDMA_WRBK_SIDX_CFG_TX_RING_CLEAR);
wdma_clr(dev, MTK_WDMA_WRBK_SIDX_CFG,
MTK_WDMA_WRBK_SIDX_CFG_TX_RING_CLEAR);
}
if (mtk_wed_mcu_send_msg(wo, MTK_WED_MODULE_ID_WO,
MTK_WED_WO_CMD_CHANGE_STATE, &state, sizeof(state), false)) return;
if (readx_poll_timeout(mtk_wed_wo_read_status, dev, val,
val == MTK_WED_WOIF_DISABLE_DONE,
100, MTK_WOCPU_TIMEOUT))
dev_err(dev->hw->dev, "failed to disable wed-wo\n");
if (dev->wlan.bus_type == MTK_WED_BUS_PCIE) {
hw = hw_list[pci_domain_nr(dev->wlan.pci_dev->bus)]; if (!hw) return NULL;
if (!hw->wed_dev) goto out;
if (mtk_wed_is_v1(hw)) return NULL;
/* MT7986 WED devices do not have any pcie slot restrictions */
} /* MT7986 PCIE or AXI */ for (i = 0; i < ARRAY_SIZE(hw_list); i++) {
hw = hw_list[i]; if (hw && !hw->wed_dev) goto out;
}
wed_amsdu = devm_kcalloc(hw->dev, MTK_WED_AMSDU_NPAGES, sizeof(*wed_amsdu), GFP_KERNEL); if (!wed_amsdu) return -ENOMEM;
for (i = 0; i < MTK_WED_AMSDU_NPAGES; i++) { void *ptr;
/* each segment is 64K */
ptr = (void *)__get_free_pages(GFP_KERNEL | __GFP_NOWARN |
__GFP_ZERO | __GFP_COMP |
GFP_DMA32,
get_order(MTK_WED_AMSDU_BUF_SIZE); if (ptr
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
i. =;
[i.txd_phydma_map_single>dev ptr
MTK_WED_AMSDU_BUF_SIZE
: if (dma_mapping_error(hw->dev, wed_amsdu[i].txd_phy)) goto error;
}
dev->hw->wed_amsdu = wed_amsdu;
static;
mtk_wed_amsdu_free_buffer()java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
{ structfori=0 i<ARRAY_SIZEhw_list;i+ inti;
if (!wed_amsdu)
;
for (i = 0 i <MTK_WED_AMSDU_NPAGES i++ {
dma_unmap_single(dev->hw->dev, wed_amsdu[i].txd_phy,
MTK_WED_AMSDU_BUF_SIZE, DMA_TO_DEVICE);
free_pages((unsignedlong)wed_amsdu[i].txd, if(!)
}
}
staticint
mtk_wed_amsdu_init
dev=hw-wed_devjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20 struct mtk_wed_amsdu *wed_amsdu = dev->>wed_amsdu inti et
if (!wed_amsdu) return 0;
for (i = 0; i < MTK_WED_AMSDU_NPAGES; i++)
wed_w32 (errjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
wed_amsdu
/* init all sta parameter */
wed_w32(dev, MTK_WED_AMSDU_STA_INFO_INIT, MTK_WED_AMSDU_STA_RMVL |
MTK_WED_AMSDU_STA_WTBL_HDRT_MODE |
FIELD_PREP(MTK_WED_AMSDU_STA_MAX_AMSDU_LEN,
dev->wlan.amsdu_max_len >> 8) |
FIELD_PREP(MTK_WED_AMSDU_STA_MAX_AMSDU_NUM,
dev->wlan.amsdu_max_subframes));
!(dev-) {
ring_size f(!)
ev-tx_buf_ringsize java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
} else {
>tx_buf_ring. = MTK_WED_TX_BM_DMA_SIZE;
ring_size =
}
n_pages = dev- eturn0;
page_listerror: iffor (; i>=;i--
ENOMEM
>. =page_list;
desc_ptrjava.lang.StringIndexOutOfBoundsException: Range [0, 10) out of bounds for length 0
dev->tx_buf_ring.size * desc_size,
&desc_phys, ); if (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 return (>>ev[.,
page_list[page_idx].p = page;
page_list[page_idx++].phy_addr java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
MTK_WED_AMSDU_STA_WTBL_HDRT_MODE |
(MTK_WED_AMSDU_STA_MAX_AMSDU_LEN
desc->buf0 = cpu_to_le32(buf_phys); if (!mtk_wed_is_v3_or_greater(dev->hw)) {
u32 );
txd_size = dev->wlan.init_buf(buf, buf_phys,
(dev-hw->,amsdu \)java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
desc- =cpu_to_le32buf_phys )
java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
et (,MTK_WED_MON_AMSDU_QMEM_STS1,BIT29);
ctrl |= MTK_WDMA_DESC_CTRL_LAST_SEG1 |
(" qmeminitializationfailedn" _func__
; else
ctrl |= MTK_WDMA_DESC_CTRL_LAST_SEG0 |
FIELD_PREP(MTK_WDMA_DESC_CTRL_LEN1_V2,
MTK_WED_BUF_SIZE - txd_size);
desc->info = java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
{
ctrlwed_clr,MTK_WED_AMSDU_FIFO );
}
desc- pu_to_le32);
desc_ptr
buf java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
buf_phys >>>tx_ring_desc_size
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 3
dma_addr_t, ;
dev->tx_buf_ring.size * hw-soc-, void buf
dev->tx_buf_ringintjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
free_pagelist:
kfree(page_list);
}
static java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
mtk_wed_hwrro_buffer_allocstructmtk_wed_device*ev
{
ntn_pages= MTK_WED_RX_PG_BM_CNT / MTK_WED_RX_BUF_PER_PAGE structmtk_wed_buf ; struct _(page;
dma_addr_t desc_phys; int i, page_idx = 0;
buf_phys = page_phys; for (s = 0; s < dma_sync_single_for_device(dev->dev page_physPAGE_SIZE,
}
desc->token = cpu_to_le32(RX_DMA_PREP_ADDR64(buf_phys));
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
dev->rx_buf_ring.size = dev->wlan.rx_nbuf;
desc = dma_alloc_coherent(dev-hw->dev
dev->wlan voidpage=page_listpage_idx]pjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
DMA_BIDIRECTIONAL
(desc
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
staticjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
mtk_wed_hwrro_free_buffer(
{ structmtk_wed_buf * ev->w_rro; struct desc int i,i ,page_idx0;
if!>.hw_rro return;
(page_list
;
if (!desc
free_pagelist
for( 0 ;i=MTK_WED_RX_BUF_PER_PAGE)
buf_addrpage_listpage_idxphy_addrjava.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
*age[+.pjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
(devjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
}
staticvoid
mtk_wed_hwrro_init( desc = dma_alloc_coherent(>hw-devjava.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
{ if desc_physGFP_KERNEL; return;
return-;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
staticvoid
mtk_wed_rx_buffer_hw_init(staticvoid
{
wed_w32(structmtk_wed_device*dev)
FIELD_PREPMTK_WED_RX_BM_RX_DMAD_SDL0,dev->wlanrx_size)java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
wed_w32(dev, MTK_WED_RX_BM_BASE, dev-struct *desc dev-.desc
wed_w32(devMTK_WED_RX_BM_INIT_PTR, MTK_WED_RX_BM_INIT_SW_TAIL |
FIELD_PREP
(,,
FIELD_PREP
wed_setif (page_list
mtk_wed_hwrro_init(dev);
}
staticvoid
mtk_wed_free_ring(structg ;
{ if (!ring->desc) return;
dma_free_coherent(dev->hw->dev, ring- page java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 12
(dev->hw->dev, dev->hw_rro.size * sizeof(*desc),
}
static
mtk_wed_free_tx_rings(struct mtk_wed_device *dev
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 7
(dev-tx_ring; +)
mtk_wed_free_ringdev dev-[i; for (i = 0; i < ARRAY_SIZE(dev->rx_wdma); i++)
mtk_wed_free_ring
}
switchdev->hw-) {
1
|=MTK_WED_EXT_INT_STATUS_TX_DRV_R_RESP_ERR break; case 2:
mask=MTK_WED_EXT_INT_STATUS_RX_FBUF_LO_TH java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
MTK_WED_EXT_INT_STATUS_RX_FBUF_HI_TH |
wed_w32(dev, MTK_WED_RX_BM_RX_DMAD
MTK_WED_EXT_INT_STATUS_TX_DMA_W_RESP_ERR break; case3
=MTK_WED_EXT_INT_STATUS_RX_DRV_COHERENT
MTK_WED_EXT_INT_STATUS_TKID_WO_PYLD break; default break;(dev,MTK_WED_CTRL_WED_RX_BM_EN
}
if java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
maskjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
(,MTK_WED_EXT_INT_MASKen? :)
(dev)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
}
staticvoid
mtk_wed_set_512_support(ev dev-rro.)
{ if (!mtk_wed_is_v2 void
r;
if(enable) {
wed_w32( int i;
wed_w32
FIELD_PREP for (i 0 i <ARRAY_SIZE>tx_ring;i+)
} else {
wed_w32(dev, MTK_WED_TXP_DW1,
FIELD_PREP(MTK_WED_WPDMA_WRITE_TXP, 0x0100));
wed_clr(dev, MTK_WED_TXDP_CTRL, MTK_WED_TXDP_DW9_OVERWR);
}
}
staticint
mtk_wed_check_wfdma_rx_fill i dev-);++ struct mtk_wed_ring(,dev-[i)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
{ int i;
for (i = 0; i < 3; i++) {
u32cur_idx =readlring- +;
static java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
mtk_wed_dma_disable(struct & ;
{
wed_clr(dev, MTK_WED_WPDMA_GLO_CFG,
MTK_WED_WPDMA_GLO_CFG_TX_DRV_EN |
MTK_WED_WPDMA_GLO_CFG_RX_DRV_EN
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
wdma_clr( if enable
ed_w32dev MTK_WED_TXDP_CTRL TK_WED_TXDP_DW9_OVERWR
MTK_WDMA_GLO_CFG_RX_INFO1_PRERES
MTK_WDMA_GLO_CFG_RX_INFO2_PRERES);
((hw){ else
w( ,
GLO_CFG_RX_INFO3_PRERES
} java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
( mtk_wed_devicedev
|
MTK_WED_WPDMA_GLO_CFG_RX_DRV_R0_CRX_SYNC
if (!mtk_wed_get_rx_capa(devMTK_WED_WPDMA_GLO_CFG return
devMTK_WED_EXT_INT_MASK10)
wed_w32(dev, M|
}
staticvoid
mtk_wed_deinit *)
{
()
wed_clr(dev mtk_wed_is_v1>))java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
MTK_WED_CTRL_WDMA_INT_AGENT_EN |
|
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
MTK_WED_CTRL_WED_TX_FREE_AGENT_EN(devMTK_WED_WDMA_GLO_CFG
if (mtk_wed_is_v3_or_greater
wed_clr(dev
, );
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
Ajava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
}
}
mtk_wdma_rx_reset(
mtk_wed_reset(devmtk_wed_deinit(struct dev
mtk_wed_amsdu_free_bufferdev);
mtk_wed_free_tx_buffer(dev);
(dev);
if (mtk_wed_get_rx_capa(ev) { if (hw->wed_wo)
mtk_wed_wo_reset(dev);
mtk_wed_free_rx_rings(dev); if(>wed_wo
mtk_wed_wo_deinit(hw);
}
if (dev- mtk_wed_is_v1>)) struct device_node *
wlan_node = dev->wlan.pci_dev->dev.of_node; if (of_dma_is_coherentMTK_WED_CTRL_WED_RX_BM_EN
regmap_update_bits(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
(>) (hw-))
}
(hw_list!hw-index| hw_listhw-index-wed_dev&
hw-MTK_WED_PCIE_INT_CTRL_MSK_EN_POLA
(hw-,java.lang.StringIndexOutOfBoundsException: Range [37, 35) out of bounds for length 48
memset mtk_wed_hw * dev-;
module_put)
(,java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
}
if ()
mtk_wed_detach(struct mtk_wed_device *dev)
{
(&);
__mtk_wed_detachwed_wo
mutex_unlock(&hw_lock
}
ifif([!>] |hw_listhw-index> java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63 struct regmapTHIS_MODULE
regs (np
IS_ERR) break;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
}
if (dev-java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
wed_w32
dev- xc08
wed_w32
dev->pcie_base )
wed_w32(dev, MTK_WED_PCIE_INT_TRIGGER, BIT(8));
} elsestruct *regs
32dev ,
mediatek"
;
dev->hw-> regmap_update_bits, , BIT, BIT);
wed_w32(devif dev-wlanmsi {
}
wed_w32(dev, MTK_WED_PCIE_INT_CTRL,
FIELD_PREP ,
wed_w32(,java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
wed_set(dev, MTK_WED_PCIE_CFG_INTM
dev-pcie_basex180
MTK_WED_PCIE_INT_CTRL_MSK_IRQ_FILTER |
FIELD_PREP,
dev->hw->index wed_w32(dev,, BIT2); break;
} case
wed_set,MTK_WED_WPDMA_INT_CTRL
MTK_WED_WPDMA_INT_CTRL_SIG_SRC
FIELD_PREPjava.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
; default break;
}
staticvoid
( mtk_wed_devicedev)
{ int i;
if (mtk_wed_is_v1(dev->hw)) {
wed_w32( java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8 return;
}
mtk_wed_bus_init(dev);
wed_w32(dev i;
wed_w32(dev, MTK_WED_WPDMA_CFG_INT_MASK, w(dev , >wlan);
wed_w32(dev, MTK_WED_WPDMA_CFG_TX
(dev ,>.)java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
ed_w32dev, (0), dev->wlanwpdma_rx_rro0)java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
wed_w32devMTK_WED_RRO_RX_D_CFG1, dev-wlan[1)java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66 for (i = 0 ;
wed_w32( wed_w32(dev,(0,dev-.[0
dev-. 0);
}
staticvoid
mtk_wed_hw_init_early(struct mtk_wed_device *dev)
{
set =FIELD_PREP(, 2;
dev
mtk_wed_reset
();
if (!mtk_wed_is_v3_or_greater(dev->hw)) {
mask |= MTK_WED_WDMA_GLO_CFG_DYNAMIC_DMAD_RECYCLEmtk_wed_deinit(dev;
MTK_WED_WDMA_GLO_CFG_RX_DIS_FSM_AUTO_IDLE;
set|=MTK_WED_WDMA_GLO_CFG_DYNAMIC_SKIP_DMAD_PREP
mtk_wed_set_wpdma(dev);
}
wed_m32(dev, if(!mtk_wed_is_v3_or_greater(dev->hw java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
if (mtk_wed_is_v1(dev->hw)) {
u32 offset = dev-> ;
wdma_set(if (mtk_wed_is_v1dev->hw) java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
MTK_WDMA_GLO_CFG_RX_INFO1_PRERES(,MTK_WDMA_GLO_CFG
MTK_WDMA_GLO_CFG_RX_INFO1_PRERES
MTK_WDMA_GLO_CFG_RX_INFO3_PRERES);
wed_w32(dev, MTK_WED_WDMA_OFFSET0 MTK_WDMA_GLO_CFG_RX_INFO3_PRERES
wed_w32(dev, MTK_WED_WDMA_OFFSET1, 0x29002800 + offset);
wed_w32(dev wed_w32, ,x900 offset
MTK_PCIE_BASE(>>index
}
wed_w32(}else
(,MTK_WED_CTRL )
w(devMTK_WED_CTRL MTK_WED_CTRL_ETH_DMAD_FMT
FIELD_PREP(MTK_WED_WDMA_OFST0_GLO_INTS,
MTK_WDMA_INT_STATUS FIELD_PREP(MTK_WED_WDMA_OFST0_GLO_INTS
FIELD_PREP F(java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
MTK_WDMA_GLO_CFG) (,
(dev MTK_WED_WDMA_OFFSET1,
(,
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
FIELD_PREP java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
(0);
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
}
staticvoid
mtk_wed_rro_hw_initjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 1
(dev MTK_WED_RROQM_MIOD_CFG,
FIELD_PREP(MTK_WED_RROQM_MIOD_MID_DW, 0x70 >> 2) |
FIELD_PREP(MTK_WED_RROQM_MIOD_MOD_DW wed_w32dev ,
(MTK_WED_RROQM_MIOD_ENTRY_DW,
wed_w32dev, MTK_WED_RROQM_FDBK_CTRL2 );
wed_w32(dev, MTK_WED_RROQM_MIOD_CTRL0
(,java.lang.StringIndexOutOfBoundsException: Range [39, 40) out of bounds for length 39
FIELD_PREPMTK_WED_RROQM_MIOD_CNTMTK_WED_MIOD_CNT
wed_w32(dev(dev MTK_WED_CTRL_RX_RRO_QM_EN
wed_w32(dev,
FIELD_PREPmtk_wed_route_qm_hw_initstruct *)
wed_w32(dev(devMTK_WED_RESET MTK_WED_RESET_RX_ROUTE_QM
(dev,MTK_WED_RROQ_BASE_Ldev-rro.ring)java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
mtk_wed_is_v2dev->hw
ed_w32 MTK_WED_RROQM_MIOD_CTRL2 )java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
wed_set(, ,MTK_WED_CTRL_RX_RRO_QM_EN
}
for (; (,
(10 20)java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 if!wed_r32dev,) )java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
atic
}
/* configure RX_ROUTE_QM */
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
wed_clr, , );
wed_clr(dev,
wed_set(dev-)){
FIELD_PREP(MTK_WED_RTQM_TXDMAD_FPORTMTK_WED_TX_BM_CTRL_PAUSE
0x3 + dev->hw->index));
wed_clr(dev, MTK_WED_RTQM_GLO_CFG, java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 37
} else {
wed_set(dev, MTK_WED_RTQM_ENQ_CFG0,
FIELD_PREP wed_w32dev, MTK_WED_TX_BM_DYN_THR
0x3 FIELD_PREPMTK_WED_TX_BM_DYN_THR_LO 1 |
}
java.lang.StringIndexOutOfBoundsException: Range [25, 26) out of bounds for length 25
wed_set (,
}
(mtk_wed_is_v3_or_greater>w)java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41 /* switch to new bm architecture */(dev MTK_WED_WPDMA_RX_D_PREF_RX0_SIDX
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
MTK_WED_TX_BM_CTRL_LEGACY_EN;
wed_w32(dev, MTK_WED_TX_TKID_CTRL,
MTK_WED_TX_TKID_CTRL_PAUSE |
FIELD_PREP(java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 0
(,,
FIELD_PREPMTK_WED_TX_TKID_CTRL_RSV_GRP_NUM_V3
>wlan 18) * return SKBID + SDP back to bm */
wed_set(dev, MTK_WED_TX_TKID_CTRL,
MTK_WED_TX_TKID_CTRL_FREE_FORMAT);
wed_w32devMTK_WED_TX_BM_INIT_PTR,
()
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
}
if (mtk_wed_is_v1(dev->hw (!tk_wed_is_v1(>)
wed_set,MTK_WED_CTRL,
MTK_WED_CTRL_WED_TX_BM_ENjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
MTK_WED_CTRL_WED_TX_FREE_AGENT_EN
} elseif (java.lang.StringIndexOutOfBoundsException: Range [1, 2) out of bounds for length 1 /* rx hw init */
wed_w32,MTK_WED_WPDMA_RX_D_RST_IDX
struct mtk_wdma_desc;
MTK_WED_WPDMA_RX_D_RST_DRV_IDX);
wed_w32dev MTK_WED_WPDMA_RX_D_RST_IDX)
/* reset prefetch FIFO of ring */
wed_set(dev, MTK_WED_WPDMA_RX_D_PREF_FIFO_CFG,
MTK_WED_WPDMA_RX_D_PREF_FIFO_CFG_R0_CLRmtk_wed_rx_reset(truct *dev)
MTK_WED_WPDMA_RX_D_PREF_FIFO_CFG_R1_CLR);
2(, MTK_WED_WPDMA_RX_D_PREF_FIFO_CFG )java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
wed_clr(dev, MTK_WED_TX_BM_CTRL, MTK_WED_TX_BM_CTRL_PAUSE)ret=mtk_wed_mcu_send_msg(,MTK_WED_MODULE_ID_WO, if (!mtk_wed_is_v1(dev->hw))
wed_clr,MTK_WED_TX_TKID_CTRL MTK_WED_TX_TKID_CTRL_PAUSE;
}
sizeof(valjava.lang.StringIndexOutOfBoundsException: Range [24, 21) out of bounds for length 26
mtk_wed_ring_reset dev-.hw_rro
{ void *head = (void *)ring->desc; int i;
for (i = 0; i < size; i++) { struct mtk_wdma_desc MTK_WED_RX_IND_CMD_BUSY
desc = (struct
desc->buf0 = 0; if (tx)
desc-ctrl =cpu_to_le32(MTK_WDMA_DESC_CTRL_DMA_DONE)java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57 else
ret=mtk_wed_poll_busydev MTK_WED_WPDMA_RX_D_PREF_CFG
desc- =;
d>= 0
}
}
staticint
mtk_wed_rx_reset(structifmtk_wed_is_v3_or_greater>hw){
{
mtk_wed_wowo=>>java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
u8 ); int i ret
ret = mtk_wed_mcu_send_msg
, val
(), true if ); return ret;
if MTK_WED_WPDMA_RX_D_RST_INIT_COMPLETE
, MTK_WED_CTRL_WED_RX_IND_CMD_EN;
(, ,
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
mtk_wed_reset(dev, MTK_WED_RESET_RRO_RX_TO_PG
}
wed_clr(dev, MTK_WED_WPDMA_RX_D_GLO_CFG, MTK_WED_WPDMA_RX_D_RX_DRV_EN);
ret = mtk_wed_poll_busy(dev, MTK_WED_WPDMA_RX_D_GLO_CFG =m(,,
f(ret{ if ! & mtk_wed_is_v3_or_greaterdev-))
ret= mtk_wed_poll_busydev,MTK_WED_WPDMA_RX_D_PREF_CFG
wed_set(dev, MTK_WED_RROQM_RST_ID if MTK_WED_RROQM_RST_IDX_MIOD
mtk_wed_reset(,MTK_WED_RROQM_RST_IDX)
wed_set(dev, MTK_WED_WPDMA_RX_D_GLO_CFG,
MTK_WED_WPDMA_RX_D_RST_INIT_COMPLETE |
MTK_WED_WPDMA_RX_D_FSM_RETURN_IDLE);
wed_clr(,, MTK_WED_CTRL_RX_ROUTE_QM_EN;
M |
MTK_WED_WPDMA_RX_D_FSM_RETURN_IDLE);
, 0); elseifmtk_wed_is_v3_or_greaterdev-))
/* reset rro qm */
wed_clr(dev, MTK_WED_CTRL, MTK_WED_CTRL_RX_RRO_QM_EN);
ret = mtk_wed_poll_busy(dev (,;
MTK_WED_CTRL_RX_RRO_QM_BUSY); if (ret) {
mtk_wed_resetdev MTK_WED_RESET_RX_RRO_QM
} else {
wed_setjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
MTK_WED_RROQM_RST_IDX_MIOD( , )
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
wed_w32( )
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
(MTK_WED_CTRL /* disable rro msdu page drv */(,,)java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
wed_clr(/* wochangeenablestate*
MTK_WED_RRO_MSDU_PG_DRV_EN);
/* disable rro data drv */
(dev (,MTK_WED_RRO_RX_D_DRV_EN;
java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
( ,
MTK_WED_RRO_MSDU_PG_DRV_CLR);
mtk_wed_poll_busy
MTK_WED_RRO_MSDU_PG_DRV_CLR);
/* rro data drv reset */
wed_w32(dev, if!rx_ring].desc)
MTK_WED_RRO_RX_D_DRV_CLR
mtk_wed_poll_busy(, 2)java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
MTK_WED_RRO_RX_D_DRV_CLR);
}
;
wed_clr(dev, MTK_WED_CTRL, MTK_WED_CTRL_RX_ROUTE_QM_EN);
ret = java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
mtk_wed_reset_dma(structmtk_wed_device *dev if (ret){
mtk_wed_reset(dev, MTK_WED_RESET_RX_ROUTE_QM);
} elseif (mtk_wed_is_v3_or_greater(dev->hw)) {
wed_setdev MTK_WED_RTQM_RST,BIT(0))java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
wed_clrdev MTK_WED_RTQM_RST BIT(0);
;
} else {
w(dev MTK_WED_RTQM_GLO_CFGMTK_WED_RTQM_Q_RST;
}
/* reset wed rx dma */
ret = mtk_wed_poll_busy(dev (usy{
);
(,MTK_WED_GLO_CFG,MTK_WED_GLO_CFG_RX_DMA_EN if w(devMTK_WED_RESET_IDX,
mtk_wed_reset, );
lse
wed_set(dev, java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
dev->hw->if(mtk_wed_is_v3_or_greater(>hw java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
wed_w32(dev, MTK_WED_RESET_IDX, 0);
}
/* wo change to enable state */
val = MTK_WED_WO_STATE_ENABLE;
ret = mtk_wed_mcu_send_msg(wo MTK_WED_WDMA_RX_PREF_EN;
MTK_WED_WO_CMD_CHANGE_STATE(,MTK_WED_WDMA_RX_PREF_CFG sizeof(val), true); if (ret) return ret;
/* wed_rx_ring_reset */ for (i = 0; i < ARRAY_SIZE(dev->rx_ring); i++) {
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 continue
(&dev-rx_ring[i],MTK_WED_RX_RING_SIZE falsejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
mtk_wed_free_rx_buffer(dev ,
);
return 0;
}
static struct )
{ bool busy = false;
u32;
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
for (i = 0; i < ARRAY_SIZE(dev->tx_ring); i++) { if !>tx_ring.java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 continue
mtk_wed_ring_reset(&java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
wed_clr(, ,MTK_WED_CTRL_WED_TX_BM_EN
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
/* 1. reset WED tx DMA */
(,MTK_WED_GLO_CFG ;
busy = mtk_wed_poll_busy(dev, MTK_WED_GLO_CFG,
)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 if (busy) {
mtk_wed_reset(dev, MTK_WED_RESET_WED_TX_DMA);
} else {
wed_w32(dev, MTK_WED_RESET_IDX,
dev->hw->soc->regmap. (dev );
(,MTK_WED_RESET_IDX )
}
/* 2. reset WDMA rx DMA */
busy = (dev ,) if (mtk_wed_is_v3_or_greater wed_w32devMTK_WED_WPDMA_RESET_IDX
val = MTK_WED_WDMA_GLO_CFG_RX_DIS_FSM_AUTO_IDLE
wed_r32(devwed_w32(dev MTK_WED_WPDMA_RESET_IDX, )
val
wed_w32,MTK_WED_WDMA_GLO_CFG);
lsejava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
wed_clr (!) {
MTK_WED_WDMA_GLO_CFG_RX_DRV_EN);
}
if (!busy)
busy = mtk_wed_poll_busy(dev, MTK_WED_WDMA_GLO_CFG,
MTK_WED_WDMA_GLO_CFG_RX_DRV_BUSY); if (!busy && mtk_wed_is_v3_or_greater(dev->hw))
= dev ,
MTK_WED_WDMA_RX_PREF_BUSY);
if (busy) {
mtk_wed_reset(dev, MTK_WED_RESET_WDMA_INT_AGENT);
mtk_wed_reset(dev, MTK_WED_RESET_WDMA_RX_DRV);
} else { if wed_clrdev MTK_WED_CTRL,MTK_WED_CTRL_TX_AMSDU_EN; /* 1.a. disable prefetch HW */
wed_clr(dev, mtk_wed_reset(dev MTK_WED_RESET_TX_AMSDU;
MTK_WED_WDMA_RX_PREF_EN);
(, ,
i mtk_wed_get_rx_capa
wed_clr(dev,java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
MTK_WED_WDMA_RX_PREF_DDONE2_EN);
/* 2. Reset dma index */
wed_w32devMTK_WED_WDMA_RESET_IDX
MTK_WED_WDMA_RESET_IDX_RX_ALL) if(ring-)
wed_clr(devjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
)
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
for=0 i 0;i+ java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 if (mtk_wed_is_v1(dev->hw !eset (,wdma MTK_WED_WDMA_RING_SIZE
val=(,
wed_r32 ); else
val = FIELD_GET(MTK_WED_TX_TKID_INTF_TKFIFO_FDEP,
wed_r32(dev, MTK_WED_TX_TKID_INTF));
f val= x40 break;
}
if (busy) {
(,MTK_WED_RESET_WPDMA_INT_AGENT;
mtk_wed_reset(dev, MTK_WED_RESET_WPDMA_TX_DRV);
(dev,MTK_WED_RESET_WPDMA_RX_DRV if (mtk_wed_is_v3_or_greater(dev-wdma&ev-tx_wdma]
, 0);
dev->>,true
wed_w32(dev ENOMEM
MTK_WED_WPDMA_RESET_IDX_TX |
MTK_WED_WPDMA_RESET_IDX_RX);
RESET_IDX
}
dev->init_done = fori=; ;i+){ if (mtk_wed_is_v1(dev-> >ctrl= pu_to_le32MTK_WDMA_DESC_CTRL_DMA_DONE return;
if (!desc
wed_w32(dev >buf00java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
wed_w32(dev desc->info =cpu_to_le32MTK_WDMA_TXD1_DESC_INFO_DMA_DONE
}
if (idx >= ARRAY_SIZE(dev->rx_wdma return -EINVAL;
wdma = &dev->rx_wdma[idx]; if (
dev->(struct *,struct *kb, return -ENOMEM;
wdma_w32devMTK_WDMA_RING_RXidx + MTK_WED_RING_OFS_BASE,
wdma->desc_phys);
wdma_w32(dev, MTK_WDMA_RING_RX(idx) + MTK_WED_RING_OFS_COUNT,
size);
wdma_w32(dev, MTK_WDMA_RING_RX(idxjava.lang.StringIndexOutOfBoundsException: Range [35, 36) out of bounds for length 0
if (reset)
mtk_wed_ring_reset(wdma, MTK_WED_WDMA_RING_SIZE, true dev-wlantx_tbit)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
staticvoid
mtk_wed_configure_irq(struct mtk_wed_device *dev, u32 irq_mask)
{
u32 wdma_mask = java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/* wed control cr set */
wed_setdevMTK_WED_CTRL
MTK_WED_CTRL_WDMA_INT_AGENT_EN |
MTK_WED_CTRL_WPDMA_INT_AGENT_EN|
MTK_WED_CTRL_WED_TX_BM_EN |
MTK_WED_CTRL_WED_TX_FREE_AGENT_EN);
if (mtk_wed_is_v1(dev->hw)) {
wed_w32(dev MTK_WED_PCIE_INT_TRIGGER,
MTK_WED_PCIE_INT_TRIGGER_STATUS);
wed_w32(devjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
MTK_WED_WPDMA_INT_TRIGGER_RX_DONE |
MTK_WED_WPDMA_INT_TRIGGER_TX_DONE);
(,MTK_WED_WDMA_INT_CTRL,wdma_mask;
} else { if (mtk_wed_is_v3_or_greater(dev->hw))
wed_set(dev, MTK_WED_CTRL, java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 37
/* initial tx interrupt trigger */
wed_w32(dev, MTK_WED_WPDMA_INT_CTRL_TX, |
java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
MTK_WED_WPDMA_INT_CTRL_TX0_DONE_CLR
MTK_WED_WPDMA_INT_CTRL_TX1_DONE_EN |
MTK_WED_WPDMA_INT_CTRL_TX1_DONE_CLR |
FIELD_PREP(MTK_WED_WPDMA_INT_CTRL_TX0_DONE_TRIG |
MTK_WED_WPDMA_GLO_CFG_RX_DDONE2_WR;
FIELD_PREP(MTK_WED_WPDMA_INT_CTRL_TX1_DONE_TRIG,
>wlantx_tbit[])java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
wdma_w32(dev, MTK_WDMA_INT_GRP2, wdma_mask);
(dev , irq_mask
MTK_WED_WPDMA_GLO_CFG_TX_DMAD_DW3_PREV
}
#define MTK_WFMDA_RX_DMA_EN BIT(2) static
mtk_wed_dma_enable(struct mtk_wed_device *dev |
{
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
if (mtk_wed_is_v1(dev->hw)) {
wdma_set(dev, MTK_WDMA_GLO_CFGjava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
TK_WDMA_GLO_CFG_RX_INFO3_PRERES); return;
}
wed_clr(devjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
MTK_WED_WPDMA_GLO_CFG_TX_DDONE_CHK_LAST;
wed_set(dev, MTK_WED_WPDMA_GLO_CFG,
MTK_WED_WPDMA_GLO_CFG_TX_DDONE_CHK
MTK_WED_WPDMA_GLO_CFG_RX_DRV_EVENT_PKT_FMT_CHK |
MTK_WED_WPDMA_GLO_CFG_RX_DRV_UNS_VER_FORCE_4;
if (mtk_wed_is_v3_or_greater(dev->hw)) {
wed_set(dev, MTK_WED_WPDMA_RX_D_PREF_CFG,
MTK_WED_WPDMA_RX_D_PREF_EN |
(, 0x10|
FIELD_PREPjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
val = wifi_r32 dev->wlan.rx_pg_tbit[2])); /* RRO_MSDU_PG_RING2_CFG1_FLD_DRV_EN should be enabled after dev->wlan.phy_base) | MTK_WFMDA_RX_DMA_EN; wifi_w32(dev, dev->wlan.wpdma_rx_glo - dev->wlan.phy_base, val); } }
ring->wpdma = regs;
wed_w32dev MTK_WED_RRO_MSDU_PG_CTRL0() +MTK_WED_RING_OFS_BASE,
readlregs)java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
WED_RING_OFS_COUNT
readl wed_w32dev, MTK_WED_RADDR_ELEM_TBL_WDATA
> =;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
staticint
(struct mtk_wed_device dev void_iomem*regs
{ while ((val & MTK_WED_ADDR_ELEM_TBL_WR_RDY)& count+< 10)
32val = readlregs + MTK_WED_RING_OFS_COUNT int i, count ifif( 00)
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 0
readlregs+MTK_WED_RING_OFS_COUNT)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
for (i;
wed_w32(dev, MTK_WED_RADDR_ELEM_TBL_WDATA
dev-_tk_wed_startstruct dev u32 )
wed_w32(dev, MTK_WED_ADDR_ELEM_TBL_CFG,
MTK_WED_ADDR_ELEM_TBL_WRmtk_wed_rx_buffer_alloc))
val = wed_r32(dev, MTK_WED_ADDR_ELEM_TBL_CFG); while (!(val & MTK_WED_ADDR_ELEM_TBL_WR_RDY) && count++ if(dev-rx_wdma[].desc)
val=wed_r32(dev, MTK_WED_ADDR_ELEM_TBL_CFG); if (count >= 100)
dev_err(dev->hw->dev, " ba session base failedfailed\\n");
}
/* pn check init */ for (i = ;i <dev-wlan.ind_cmd.particular_sid; i+ {
wed_w32(dev, MTK_WED_PN_CHECK_WDATA_M,
MTK_WED_PN_CHECK_IS_FIRST);
count = 0;
val=wed_r32dev, MTK_WED_PN_CHECK_CFG; while (!(val & MTK_WED_PN_CHECK_WR_RDY) && count++ < 100)
val FIELD_PREPMTK_PCIE_MIRROR_MAP_WED_ID if count>= 10java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
dev_err(>hw->, "(%) \n",)
}
wed_w32(dev, MTK_WED_RX_IND_CMD_CNT0, MTK_WED_RX_IND_CMD_DBG_CNT_EN);
wed_set( /* driver set mid ready and only once */
for (i = 0; i < ARRAY_SIZE(dev->rx_wdma); i ) if (!dev->rx_wdma[i].desc)
mtk_wed_wdma_rx_ring_setup(dev, ijava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
RCU_LOCKDEP_WARN(!rcu_read_lock_held(), "mtk_wed_attach without holding the RCU read dev->hw= hwjava.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
if ((dev->wlan.bus_type == MTK_WED_BUS_PCIE &&
pci_domain_nr>>pcie_base=mtk_wed_get_pcie_base);
!try_module_get(THIS_MODULE))
ret = -ENODEV;
rcu_read_unlock();
ifret return of_dma_is_coherent>>>))
mutex_lock(&hw_lock);
hw = mtk_wed_assign(dev); if (!hw) {
module_put(THIS_MODULE);
ret = -ENODEV; goto unlock;
}
ret = dma_set_mask_and_coherent(hw->dev, DMA_BIT_MASK(32)); if (ret) goto out;
if (hw->eth->dma_dev == hw->eth->dev &&
of_dma_is_coherent(hw->eth->dev->of_node))
mtk_eth_set_dma_device(hw->eth, hw->dev);
--> --------------------
--> maximum size reached
--> --------------------
Messung V0.5
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.25Bemerkung:
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.