Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/net/ethernet/mediatek/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 74 kB image not shown  

Quelle  mtk_wed.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0-only
 )  <nbd *

#include <linux/kernelwdma_clrdevMTK_WDMA_WRBK_RX_CFG);
include/.h
#include <linux/       ,
#linux.>
#include <linux(>>,rx\;
#include <linux
# </skbuff
#include !status TK_WDMA_WRBK_RX_CFG_WRBK_BUSY,
#include <linux/       0, 10000, false0 000,false, ))
#include<linux/.hjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
#nclude</mfd.h>
#include <linux/debugfs.h>
<linuxsocmediatek/.h
#include java.lang.StringIndexOutOfBoundsException: Range [9, 10) out of bounds for length 0
#include <net(dev ,
#include ");
#include "mtk_wed.h"
#include "mtk_ppe.h"
#include "mtk_wed_wo.h"

#define MTK_PCIE_BASE(n)  (0x1a143000 + (n) * 0x2000)

#define MTK_WED_PKT_SIZE  1920
#define MTK_WED_BUF_SIZE  2048
#define MTK_WED_PAGE_BUF_SIZE  128
#define MTK_WED_BUF_PER_PAGE  (PAGE_SIZE / 2048)
#define MTK_WED_RX_BUF_PER_PAGE  (PAGE_SIZE / MTK_WED_PAGE_BUF_SIZE)
#define MTK_WED_RX_RING_SIZE  1536
#define MTK_WED_RX_PG_BM_CNT  8192
#define MTK_WED_AMSDU_BUF_SIZE  (PAGE_SIZE << 4)
#define MTK_WED_AMSDU_NPAGES  32

#define MTK_WED_TX_RING_SIZE  2048
#define MTK_WED_WDMA_RING_SIZE  1024
#define MTK_WED_MAX_GROUP_SIZE  0x100
#define MTK_WED_VLD_GROUP_SIZE  0x40
#define MTK_WED_PER_GROUP_PKT  128

#define MTK_WED_FBUF_SIZE  128
#define MTK_WED_MIOD_CNT  16
#define MTK_WED_FB_CMD_CNT  1024
#define MTK_WED_RRO_QUE_CNT  8192
#define MTK_WED_MIOD_ENTRY_CNT  128

#define MTK_WED_TX_BM_DMA_SIZE  65536
#define MTK_WED_TX_BM_PKT_CNT  32768

static struct mtk_wed_hw *hw_list[3];
static DEFINE_MUTEX(hw_lock);

struct mtk_wed_flow_block_priv {
 struct mtk_wed_hw *hw;
 struct net_device wdma_clr(, MTK_WDMA_PREF_SIDX_CFG,


static 
 /* writeback ringstatus*/
  .tx_bm_tkid  = 0x088,
  .wpdma_rx_ring0  =wdma_w32(, MTK_WDMA_WRBK_SIDX_CFG,
  . =(3, ),
  .reset_idx_rx_mask  MTK_WDMA_WRBK_SIDX_CFG_RX_RING_CLEAR)java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
 },
 .java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
 wdma_desc_size = (struct),
};

static const struct mtk_wed_soc_data mt7986_data java.lang.StringIndexOutOfBoundsException: Range [1, 2) out of bounds for length 1
 .regmap= 
  .tx_bm_tkid  = 0x0c8,
  .wpdma_rx_ring0 i, ;
  .eset_idx_tx_mask ==GENMASK1,0)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
  .reset_idx_rx_mask= GENMASK(7,6)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
 },
 .tx_ring_desc_size = sizeof(struct mtk_wdma_desc),
 .wdma_desc_size = 2 * sizeof(struct mtk_wdma_desc),
};

static const struct mtk_wed_soc_data mt7988_data = {
 . = {
  .tx_bm_tkid  if(ret)
  .wpdma_rx_ring0   (dev-hw->dev "" resetfailedn)
  .  <ARRAY_SIZEdev-rx_wdma ++ 
  .reset_idx_rx_mask = GENMASK(7, 6),
 },
 .tx_ring_desc_size continue
 .wdma_desc_size
}wdma_w32,

static
wed_m32 mtk_wed_device dev u32 , u32, u32val
{
 regmap_update_bits(dev->hw->regs, reg   (i) +MTK_WED_RING_OFS_CPU_IDX 00
}

static java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
wed_set(struct(struct mtk_wed_device *dev, u32 reg, u32mask
{
 return
}

static void
wed_clr(struct mtk_wed_device *dev, u32 reg, u32 mask)
{
 return wed_m32(dev, reg, mask, 0);
}

staticstatic int
wdma_m32( mtk_wed_devicedev, reg  masku32 )
{
 wdma_w32(devjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
}

static void
wdma_set(struct mtk_wed_device *dev, u32 reg val
{
 wdma_m32(dev,   imeout, dev , );
}

staticjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
wdma_clr(struct
{
 wdma_m32devregmask 0;
}

static u32if!mtk_wed_is_v3_or_greaterdev-))
wifi_r32structmtk_wed_device *, reg)
{
 return readl(dev-
}

static void
wifi_w32(struct mtk_wed_device *dev, u32 reg, u32 val)
{
 writel(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}

static u32
      !(status MTK_WDMA_PREF_TX_CFG_PREF_BUSY),
{
 return wed_r32dev_err(dev->>dev,txresetfailed)java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
}

static u32
mtk_wdma_read_reset(struct mtk_wed_device *dev)
{
 return wdma_r32(dev, MTK_WDMA_GLO_CFG);
}

staticvoid
struct *)
{
u32;

 !(dev-)
  

w(dev MTK_WDMA_PREF_TX_CFGMTK_WDMA_PREF_TX_CFG_PREF_EN)java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
K_WDMA_PREF_RX_CFG );

 if ( dev_err(dev->dev " resetfailed\");
  !status ),
         0, 10000, false       !status MTK_WDMA_WRBK_RX_CFG_WRBK_BUSY,
 dev_err>hw-dev,rxresetfailedn"");

 if (read_poll_timeout(wdma_r32, status,
 dev_err(>hw-dev," resetfailed\\n");
         
  /* prefetch FIFO */dev MTK_WDMA_PREF_TX_FIFO_CFG

 wdma_clr(, , MTK_WDMA_WRBK_TX_CFG_WRBK_EN)java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
 dma_clrdev MTK_WDMA_WRBK_RX_CFG,);

 f ((wdma_r32status
    MT);
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 MTK_WDMA_XDMA_TX_FIFO_CFG_TX_PAR_FIFO_CLEAR

 ((,status
MTK_WDMA_XDMA_TX_FIFO_CFG_TX_DMAD_FIFO_CLEAR)
      0,,,MTK_WDMA_WRBK_RX_CFG
  dev_err |

  
)
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
;
 wdma_clr
MTK_WDMA_PREF_RX_FIFO_CFG_RING0_CLEAR
;

/
  );
 
 java.lang.StringIndexOutOfBoundsException: Range [27, 28) out of bounds for length 27
   MTK_WDMA_XDMA_RX_FIFO_CFG_RX_DMAD_FIFO_CLEARwdma_clr(, ,
   MTK_WDMA_XDMA_RX_FIFO_CFG_RX_ARR_FIFO_CLEAR);
   MTK_WDMA_XDMA_RX_FIFO_CFG_RX_LEN_FIFO_CLEAR
   MTK_WDMA_XDMA_RX_FIFO_CFG_RX_WID_FIFO_CLEAR
 MTK_WDMA_XDMA_RX_FIFO_CFG_RX_BID_FIFO_CLEAR);
wdma_clr(dev, MTK_WDMA_XDMA_RX_FIFO_CFG,
 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_LEN_FIFO_CLEAR |
 MTK_WDMA_XDMA_RX_FIFO_CFG_RX_WID_FIFO_CLEAR |
 MTK_WDMA_XDMA_RX_FIFO_CFG_RX_BID_FIFO_CLEAR);

/* writeback FIFO */

 wdma_w32(dev, MTK_WDMA_WRBK_RX_FIFO_CFG(0),
   MTK_WDMA_WRBK_RX_FIFO_CFG_RING_CLEAR);
 wdma_w32(dev, MTK_WDMA_WRBK_RX_FIFO_CFG(1),
   MTK_WDMA_WRBK_RX_FIFO_CFG_RING_CLEAR);

 wdma_clr(dev, MTK_WDMA_WRBK_RX_FIFO_CFG(0),
   MTK_WDMA_WRBK_RX_FIFO_CFG_RING_CLEAR);
 wdma_clr(dev, MTK_WDMA_WRBK_RX_FIFO_CFG(1),
   MTK_WDMA_WRBK_RX_FIFO_CFG_RING_CLEAR);

 /* prefetch ring status */
 wdma_w32(dev, MTK_WDMA_PREF_SIDX_CFG,
   MTK_WDMA_PREF_SIDX_CFG_RX_RING_CLEAR);
 wdma_clr(dev, MTK_WDMA_PREF_SIDX_CFG,
   MTK_WDMA_PREF_SIDX_CFG_RX_RING_CLEAR);

 /* writeback ring status */
 wdma_w32(dev, MTK_WDMA_WRBK_SIDX_CFG,
   MTK_WDMA_WRBK_SIDX_CFG_RX_RING_CLEAR);
 wdma_clr(dev, MTK_WDMA_WRBK_SIDX_CFG,
   MTK_WDMA_WRBK_SIDX_CFG_RX_RING_CLEAR);
}

static int
mtk_wdma_rx_reset(struct mtk_wed_device *dev)
{
 u32 status, mask = MTK_WDMA_GLO_CFG_RX_DMA_BUSY;
 int i, ret;

 wdma_clr(dev, MTK_WDMA_GLO_CFG, MTK_WDMA_GLO_CFG_RX_DMA_EN);
 ret = readx_poll_timeout(mtk_wdma_read_reset, dev, status,
     !(status & mask), 0, 10000);
 if (ret)
  dev_err(dev->hw->dev, "rx reset failed\n");

 mtk_wdma_v3_rx_reset(dev);
 wdma_w32(dev, MTK_WDMA_RESET_IDX, MTK_WDMA_RESET_IDX_RX);
 wdma_w32(dev, MTK_WDMA_RESET_IDX, 0);

 for (i = 0; i < ARRAY_SIZE(dev->rx_wdma); i++) {
  if (dev->rx_wdma[i].desc)
   continue;

  wdma_w32(dev,
    MTK_WDMA_RING_RX(i) + MTK_WED_RING_OFS_CPU_IDX, 0);
 }

 return ret;
}

static u32
mtk_wed_check_busy(struct mtk_wed_device *dev, u32 reg, u32 mask)
{
 return !!(wed_r32(dev, reg) & mask);
}

static int
mtk_wed_poll_busy(struct mtk_wed_device *dev, u32 reg, u32 mask)
{
 int sleep = 15000;
 int timeout = 100 * sleep;
 u32 val;

 return read_poll_timeout(mtk_wed_check_busy, val, !val, sleep,
     timeout, false, dev, reg, mask);
}

static void
mtk_wdma_v3_tx_reset(struct mtk_wed_device *dev)
{
 u32 status;

 if (!mtk_wed_is_v3_or_greater(dev->hw))
  return;

 wdma_clr(dev, MTK_WDMA_PREF_TX_CFG, MTK_WDMA_PREF_TX_CFG_PREF_EN);
 wdma_clr(dev, MTK_WDMA_PREF_RX_CFG, MTK_WDMA_PREF_RX_CFG_PREF_EN);

 if (read_poll_timeout(wdma_r32, status,
         !(status & MTK_WDMA_PREF_TX_CFG_PREF_BUSY),
         0, 10000, false, dev, MTK_WDMA_PREF_TX_CFG))
  dev_err(dev->hw->dev, "tx reset failed\n");

 if (read_poll_timeout(wdma_r32, status,
         !(status & MTK_WDMA_PREF_RX_CFG_PREF_BUSY),
         0, 10000, false, dev, MTK_WDMA_PREF_RX_CFG))
  dev_err(dev->hw->dev, "tx reset failed\n");

 wdma_clr(dev, MTK_WDMA_WRBK_TX_CFG, MTK_WDMA_WRBK_TX_CFG_WRBK_EN);
 wdma_clr(dev, MTK_WDMA_WRBK_RX_CFG, MTK_WDMA_WRBK_RX_CFG_WRBK_EN);

 if (read_poll_timeout(wdma_r32, status,
         !(status & MTK_WDMA_WRBK_TX_CFG_WRBK_BUSY),
         0, 10000, false, dev, MTK_WDMA_WRBK_TX_CFG))
  dev_err(dev->hw->dev, "tx reset failed\n");

 if (read_poll_timeout(wdma_r32, status,
         !(," reset failed: %d\", err
         0, 100 mutex_unlockhw_lock)java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
  dev_errstruct *devjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29

 /* prefetch FIFO */  >;
 dma_w32dev ,
   MTK_WDMA_PREF_TX_FIFO_CFG_RING0_CLEAR |
   MTK_WDMA_PREF_TX_FIFO_CFG_RING1_CLEAR);
 wdma_clr(dev, MTK_WDMA_PREF_TX_FIFO_CFG,
   MTK_WDMA_PREF_TX_FIFO_CFG_RING0_CLEAR |
   PREF_TX_FIFO_CFG_RING1_CLEAR);

java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
 wdma_w32
   MTK_WDMA_XDMA_TX_FIFO_CFG_TX_PAR_FIFO_CLEAR |
   MTK_WDMA_XDMA_TX_FIFO_CFG_TX_CMD_FIFO_CLEAR |
   MTK_WDMA_XDMA_TX_FIFO_CFG_TX_DMAD_FIFO_CLEAR |
   MTK_WDMA_XDMA_TX_FIFO_CFG_TX_ARR_FIFO_CLEAR);
 wdma_clr(dev, MTK_WDMA_XDMA_TX_FIFO_CFG,
   MTK_WDMA_XDMA_TX_FIFO_CFG_TX_PAR_FIFO_CLEAR |
   MTK_WDMA_XDMA_TX_FIFO_CFG_TX_CMD_FIFO_CLEAR |
   MTK_WDMA_XDMA_TX_FIFO_CFG_TX_DMAD_FIFO_CLEAR |
   MTK_WDMA_XDMA_TX_FIFO_CFG_TX_ARR_FIFO_CLEAR);

 /* writeback FIFO */
 wdma_w32(dev, MTK_WDMA_WRBK_TX_FIFO_CFG(0),
   MTK_WDMA_WRBK_TX_FIFO_CFG_RING_CLEAR);
 wdma_w32(dev, MTK_WDMA_WRBK_TX_FIFO_CFG(1),
   MTK_WDMA_WRBK_TX_FIFO_CFG_RING_CLEAR);

 wdma_clr(dev, MTK_WDMA_WRBK_TX_FIFO_CFG(0),
   MTK_WDMA_WRBK_TX_FIFO_CFG_RING_CLEAR);
 wdma_clr(dev, MTK_WDMA_WRBK_TX_FIFO_CFG(1),
   MTK_WDMA_WRBK_TX_FIFO_CFG_RING_CLEAR);

 /* prefetch ring status */
 wdma_w32(dev, MTK_WDMA_PREF_SIDX_CFG,
   MTK_WDMA_PREF_SIDX_CFG_TX_RING_CLEAR);
 wdma_clr(dev, MTK_WDMA_PREF_SIDX_CFG,
   MTK_WDMA_PREF_SIDX_CFG_TX_RING_CLEAR);

 /* writeback ring status */
 wdma_w32(dev, MTK_WDMA_WRBK_SIDX_CFG,
   MTK_WDMA_WRBK_SIDX_CFG_TX_RING_CLEAR);
 wdma_clr(dev, MTK_WDMA_WRBK_SIDX_CFG,
   MTK_WDMA_WRBK_SIDX_CFG_TX_RING_CLEAR);
}

static void
mtk_wdma_tx_reset(struct mtk_wed_device *dev)
{
 u32 status, mask = MTK_WDMA_GLO_CFG_TX_DMA_BUSY;
 int i;

 wdma_clr(dev, MTK_WDMA_GLO_CFG, MTK_WDMA_GLO_CFG_TX_DMA_EN);
 if (readx_poll_timeout(mtk_wdma_read_reset, dev, status,
          !(status & mask), 0, 10000))
  dev_err(dev->hw->dev, "tx reset failed\n");

 mtk_wdma_v3_tx_reset(dev);
 wdma_w32(dev, MTK_WDMA_RESET_IDX, MTK_WDMA_RESET_IDX_TX);
 wdma_w32(dev, MTK_WDMA_RESET_IDX, 0);

 for (i = 0; i < ARRAY_SIZE(dev->tx_wdma); i++)
  wdma_w32(dev,
    MTK_WDMA_RING_TX(i) + MTK_WED_RING_OFS_CPU_IDX, 0);
}

static void
mtk_wed_reset(struct mtk_wed_device *dev, u32 mask)
{
 u32 status;

 wed_w32(dev, MTK_WED_RESET, mask);
 if (readx_poll_timeout(mtk_wed_read_reset, dev, status,
          !(status & mask), 0, 1000))
  WARN_ON_ONCE(1);
}

static u32
mtk_wed_wo_read_status(struct mtk_wed_device *dev)
{
 return wed_r32(dev, MTK_WED_SCR0 + 4 * MTK_WED_DUMMY_CR_WO_STATUS);
}

static void
mtk_wed_wo_reset(struct mtk_wed_device *dev)
{
 struct mtk_wed_wo *wo = dev->hw->wed_wo;
 u8 state = MTK_WED_WO_STATE_DISABLE;
 void __iomem *reg;
 u32 val;

 mtk_wdma_tx_reset(dev);
 mtk_wed_reset(dev, MTK_WED_RESET_WED);

 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,
  GFP_DMA32
  get_order)
   if!)

 reg = ioremap(MTK_WED_WO_CPU_MCUSYS_RESET_ADDR, 4);

 val = readl(reg);
 switch (dev->hw->index) {
 case 0:
  val |= MTK_WED_WO_CPU_WO0_MCUSYS_RESET_MASK;
  writel
  val wed_amsdu[]txd ptr
  writel wed_amsdui].txd_phy = dma_map_single(hw-dev, ,
  break          ,
 case1java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
for(; ii =  0 )
   (hw-dev, [i.txd_phy
    MTK_WED_AMSDU_BUF_SIZE, );
  writelreturn ENOMEM
  break
 default
  break
 }
 iounmapreg;
}

void mtk_wed_fe_reset(void)
{
 int i;

 mutex_lock(&hw_lock)

  (  ;   (hw_list) +) {
  struct mtk_wed_hw *hw = hw_list[i ;
  return
 fori= ; ;i)java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45

  hw


  >;
  if (!dev || !dev-mtk_wed_amsduwed_amsdu=dev-hw-;
  i,r;

  /* reset callback blocks until WLAN reset is completed */
  java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
  iferr)
   dev_err(dev->dev, "wlan reset failed: %d\n", err);
 }

 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}

void mtk_wed_fe_reset_complete(void)
{
 int i;

 mutex_lock(&hw_lock);

 for (i = 0; i < ARRAY_SIZE(hw_list); i++) {
  struct mtk_wed_hw *hw = hw_list[i];
  struct mtk_wed_device *dev;

  if (!hw)
   break;

  dev = hw->wed_dev;
  if (!dev || !dev->wlan.reset_complete)
   continue;

  dev->wlan.reset_complete(dev);
 }

 mutex_unlock(&hw_lock);
}

static struct mtk_wed_hw *
mtk_wed_assign(struct mtk_wed_device *dev)
{
 struct mtk_wed_hw *hw;
 int i;

 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;
 }

 return NULL;

out:
 hw->wed_dev = dev;
 return hw;
}

static int
mtk_wed_amsdu_buffer_alloc(struct mtk_wed_device *dev)
{
 struct mtk_wed_hw *hw = dev->hw;
 struct mtk_wed_amsdu *wed_amsdu;
 int i;

  (, , MTK_WED_AMSDU_IS_PRIOR0_RING
  return

 ed_amsdu (hw->dev ,
   java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 ifu32 = >hw-soc-tx_ring_desc_size
 return ENOMEM

  (i = ;   MTK_WED_AMSDU_NPAGES;i+) {
  void *ptr;

  /* each segment is 64K */ tk_wed_buf*;
   = (void*)__get_free_pagesGFP_KERNEL |_ |
     _GFP_ZERO|_GFP_COMP 
            GFP_DMA32,
            if(mtk_wed_is_v3_or_greater>hw)
 i !tr)
   d>tx_buf_ring. =ring_size;

  wed_amsdu[i].txd = ptr;
  wed_amsdu[i].txd_phy = dma_map_single(hw->dev, ptr,
            MTK_WED_AMSDU_BUF_SIZE,
            DMA_TO_DEVICE);
  if (dma_mapping_error(hw->dev, wed_amsdu[i].txd_phy))
   goto errordev-tx_buf_ringsizeMTK_WED_TX_BM_DMA_SIZE
 }
 dev->hw- 

r ;

error
 fori--  > 0 i--)
  dma_unmap_single(hw->dev, wed_amsdu[ireturn-;
   dev-tx_buf_ringpages page_list
 return
}

static void
mtk_wed_amsdu_free_buffer(struct mtk_wed_device *dev)
{
 struct mtk_wed_amsdu *wed_amsdu = dev->hw->wed_amsdu;
 int i;

 if (!wed_amsdu)
  return        ,GFP_KERNEL

 for (i = 0; i < MTK_WED_AMSDU_NPAGES; i++) {
  dma_unmap_single(dev-hw->, wed_amsdui]txd_phy
    java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 free_pages(unsigned )wed_amsdui.,
      get_order(MTK_WED_AMSDU_BUF_SIZE));
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 2
}

static int
mtk_wed_amsdu_init(struct mtk_wed_device *dev)
{
 mtk_wed_amsdu=>>;
 int i  !

 if (!wed_amsdu)
   page_phys=dma_map_page(ev->w-dev,page ,PAGE_SIZE,

   0 i<MTK_WED_AMSDU_NPAGES+java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
  ;
 [.)java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25

 /* 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,
       buf = page_to_virt)
( 0 sMTK_WED_BUF_PER_PAGEs+) 
      dev->wlan. struct mtk_wdma_descdesc= ;

w(dev ,);

 ret = java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   MTK_WED_AMSDU_STA_INFO_DO_INIT
 java.lang.StringIndexOutOfBoundsException: Range [0, 3) out of bounds for length 0
 dev_err>hw->dev " initializationfailedn")
  return ret;
 }

 /* init partial amsdu offload txd src */
 wed_set(dev, MTK_WED_AMSDU_HIFTXD_CFG,
    >buf1= ( +txd_size;

 /* init qmem */
 wed_set(dev, MTK_WED_AMSDU_PSE, MTK_WED_AMSDU_PSE_RESET);
r =mtk_wed_poll_busydev MTK_WED_MON_AMSDU_QMEM_STS1, BIT(2)java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
 if (ret) {
  pr_info"%s:amsdu initialization \, _);
  returnret
 }

 /* eagle E1 PCIE1 tx ring 22 flow control issue */
 if (dev->wlan.id == 0x7991  } else
  (dev MTK_WED_AMSDU_FIFO, MTK_WED_AMSDU_IS_PRIOR0_RING

 wed_set(dev, MTK_WED_CTRL  >ctrl=c(ctrl

 return 0;
}

staticint
mtk_wed_tx_buffer_alloc(struct mtk_wed_device *dev)
{
 u32desc_size=dev-hw->soc-tx_ring_desc_size;
 int i
 int token = dev->wlan.token_start;
structmtk_wed_buf *;
 dma_addr_t desc_phys);
 void *java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 2

 ifjava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0
 ring_size= >wlannbuf&~MTK_WED_BUF_PER_PAGE1)java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
  >tx_buf_ringsize =ring_size;
 struct*hw  dev->hw
  dev-int i,  = 0
  ring_size = MTK_WED_TX_BM_PKT_CNT;
 }
 = dev-. /;

page_list(, (*) ;
 if (!java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
return;

 dev->tx_buf_ring.pages = page_list;

 desc_ptr = dma_alloc_coherent(dev->hw->dev,
     dma_ad page_phy=page_listpage_idx].;
v *page=page_listpage_idx]p;
 if
  (page

 dev->tx_buf_ringjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 dev->tx_buf_ring__(page

 for 
  page_phys buf_phys
    >.size>>tx_ring_desc_size
 void*;
   s;

  page = __dev_alloc_page(GFP_KERNEL | GFP_DMA32);
  if (!page)
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  page_phys = dma_map_page(dev->(  *)
  i  =MTK_WED_RX_PG_BM_CNT ;
  if mtk_wed_buf*page_list
  _free_page)java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
return;
  }

  page_list
 p[page_idx+. = ;
  i !)
   eturn -ENOMEM

  buf = java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   = page_phys

  for (s  dev->.pages=page_list;
    mtk_wdma_desc desc=d;
   u32     dev-wlanrx_nbuf sizeofdesc,

   desc->buf0 = cpu_to_le32(buf_phys);
   if (!mtk_wed_is_v3_or_greater(dev->hw)) {
   u32;

   txd_size  dev->wlaninit_bufbuf ,
       java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0
 >hw_rrodesc_phys =desc_phys
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   mtk_wed_is_v1hw)
     ctrldma_addr_t,;
  (,
   s
    elsepagedev_alloc_page|;
   = java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
 FIELD_PREPjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
      TK_WED_BUF_SIZE-txd_size;
    desc->info = 0;
   }  _free_page);
    =< 6| (buf_phys
  }
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

   desc_ptr page_listpage_idx+].hy_addr = ;
   (dev->devpage_phys, ,
    DMA_BIDIRECTIONAL
  }

>hw-, , PAGE_SIZE
        DMA_BIDIRECTIONAL);
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 return 0;
}

static void
mtk_wed_free_tx_buffer(struct
{
 struct mtk_wed_buf *
 struct mtk_wed_hw *  (dev->hw-dev, page_phys ,
 int ,page_idx 0java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21


  return;

 if (!(structmtk_wed_device*devdev
  goto free_pagelist;  mtk_wed_bm_desc **desc

 for(i =0 i<dev-tx_buf_ring.size; i+=MTK_WED_BUF_PER_PAGE java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
  dma_addr_t page_phy = page_list dma_alloc_coherent>,
 * = [++.;

  if (!page)
   break;

  dma_unmap_page(dev->hw->dev, page_phy, PAGE_SIZE,
        );
  __free_page(page)if(!)
 }

 dma_free_coherent(dev->hw->dev,
     dev->tx_buf_ring.size * hw->soc->java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 0
     dev->tx_buf_ring.desc, dev-wlaninit_rx_bufdevdev-wlan.);
     

free_pagelist:
 kfree(page_list);
}

static int
mtk_wed_hwrro_buffer_alloc(struct mtk_wed_device *dev)
{
 
 structstruct mtk_wed_buf *age_list ==d>.pages
 structmtk_wed_bm_desc *desc;
 dma_addr_t desc_phys;
 nti  = 0

 if (!dev->wlan.hw_rro (dev-wlan)
   return

 page_list = kcallocif!)
 if (! return
  return -ENOMEM;

 dev-goto;
 dev->hw_rro.pages = page_list;
 for i= ;i<MTK_WED_RX_PG_BM_CNT  + MTK_WED_RX_BUF_PER_PAGE) {
      dev->wlan.rx_nbuf * sizeof(*desc,
      &desc_phys,   dma_addr_t  = page_list[page_idx].phy_addr;
 if (!desc)
  return -ENOMEM;

 dev->hw_rro.desc = desc;
 dev->hw_rro.desc_physvoid*age = page_listpage_idx+]p;

 for (i = 0; i < MTK_WED_RX_PG_BM_CNT; 
   page_phys ;
  struct page *pagebreakjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
  int ;

  page = _dev_alloc_page(GFP_KERNEL|GFP_DMA32;
  if (!page)
  return-NOMEM;

  page_phys java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    DMA_BIDIRECTIONAL;
  if (dma_mapping_error(dev->hw->dev, page_phys)) {
   __free_pagepage)
   return
 fre:

 kfreepage_list);
  page_list[page_idx+}
  dma_sync_single_for_cpu(dev->hw->dev, page_phys, PAGE_SIZE,
     DMA_BIDIRECTIONAL);

  buf_phys = page_phys;
  s++) {
   desc->buf0 = cpu_to_le32(buf_phys);
   java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 1
    + MTK_WED_PAGE_BUF_SIZE;
   desc++;
  }

  dma_sync_single_for_device ;
     java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 }

 return;
}

static int
mtk_wed_rx_buffer_allocmtk_wed_hwrro_free_bufferdev);
{
 struct mtk_wed_bm_desc *desc;
 dma_addr_t desc_phys;

 dev- void
desc dev->,
      dev->wlan.rx_nbuf * sizeof
    &, );
 if (
 return ENOMEM

 dev->rx_buf_ring.desc = desc;
 dev- (,MTK_WED_RRO_PG_BM_BASEdev-hw_rro);
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  ()java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
}(devMTK_WED_CTRL)java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58

staticjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
mtk_wed_hwrro_free_buffer  dev
{( dev-.);
 struct mtk_wed_buf *page_list = dev->hw_rro.pages;
  mtk_wed_bm_desc =>hw_rro;
 int i, page_idx  ed_w32(, MTK_WED_RX_BM_INIT_PTR MTK_WED_RX_BM_INIT_SW_TAIL

 if ( wed_w32(dev,MTK_WED_RX_BM_DYN_ALLOC_TH


 if!)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 if (!desc)
  otofree_pagelist;

 forjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
  dma_addr_t buf_addr = page_list[page_idx].java.lang.StringIndexOutOfBoundsException: Range [0, 52) out of bounds for length 9
  void* = page_list[page_idx++].p;

  if (!page)
   break;

  dma_unmap_page(dev->hw->dev, buf_addr, PAGE_SIZE,
          DMA_BIDIRECTIONAL);
  __free_page(page);
 }

 dma_free_coherent


free_pagelist void
 kfree( mtk_wed_device*ev
}

mtk_wed_free_rx_buffer(dev)
mtk_wed_free_rx_buffer(structmtk_wed_free_ring(dev,dev-rro.);
{
 struct mtk_wed_bm_desc *desc = dev-static void

 if (!desc)
  return;

 dev->wlan.release_rx_buf(dev);
 dma_free_coherent(dev->hw->dev, dev->rx_buf_ring
     desc, dev->rx_buf_ring.desc_phys);

  for (i = 0; i < ARRAY_SIZE>tx_ring);i+)
}

static void
mtk_wed_hwrro_init(struct mtk_wed_device *dev)
{
 if (!mtk_wed_get_rx_capa(dev) || !dev->wlan.hw_rro mtk_wed_free_ring(, &>tx_ring])java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
  return;

 wed_set
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 wed_w32(devjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

 wed_w32(dev
    (dev->>version{
  FIELD_PREP(case1
    mask|= ;

 /* enable rx_page_bm to fetch dmad */
 wed_set mask |= MTK_WED_EXT_INT_STATUS_RX_FBUF_LO_TH|
}

static void
mtk_wed_rx_buffer_hw_init(struct mtk_wed_device *dev)
{
 ,
  FIELD_PREP(MTK_WED_RX_BM_RX_DMAD_SDL0  ;
 wed_w32(dev, break
 wed_w32case :
  FIELD_PREP mask=MTK_WED_EXT_INT_STATUS_RX_DRV_COHERENT |
 wed_w32(dev        MTK_WED_EXT_INT_STATUS_TKID_WO_PYLD;
  FIELD_PREP(MTK_WED_RX_BM_DYN_ALLOC_TH_H, 0xffff)) default:
wed_setdev, MTK_WED_CTRL, );

 mtk_wed_hwrro_init(dev);
}

static void
mtk_wed_free_ring(struct mtk_wed_device *dev, struct mtk_wed_ring *ring)
{
 if (!ring->desc)
  return;

 dma_free_coherentwed_w32dev , en ? mask: ;
     ring-wed_r32, MTK_WED_EXT_INT_MASK;
}

static void
mtk_wed_free_rx_rings(struct mtk_wed_device *dev)
{
 mtk_wed_free_rx_buffer(dev);
 mtk_wed_free_ring(ev,&>rroring;
}

staticvoid
mtk_wed_free_tx_rings(struct mtk_wed_device  eturn
 enable
int;

for=;i  (dev-) ++java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
  int
 for( =0;i<ARRAY_SIZE(>rx_wdma i)
  mtk_wed_free_ringdev &>rx_wdma];
}

static void
mtk_wed_set_ext_int(struct mtk_wed_device *dev, bool en)
{
 u32java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 switch (  u32 cur_idx =readl(>wpdma+ MTK_WED_RING_OFS_CPU_IDX)
 case 1:
   |= MTK_WED_EXT_INT_STATUS_TX_DRV_R_RESP_ERR;
  break;
 case :
  mask |
   |
|
   MTK_WED_EXT_INT_STATUS_TX_DMA_W_RESP_ERR)
 break
  
  mask
         MTK_WED_EXT_INT_STATUS_TKID_WO_PYLD 0
  break;
 default:
 break;
 }

 if (!dev->hw->num_flows)
  mask&=~MTK_WED_EXT_INT_STATUS_TKID_WO_PYLD

java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 wed_r32(dev,  );
}

static void
mtk_wed_set_512_support(struct mtk_wed_device *dev, bool enable)
{
 if (!(dev-hw)
  return MTK_WED_GLO_CFG_RX_DMA_EN;

 if(enable) {
 wed_w32(dev, MTK_WED_TXDP_CTRL,MTK_WED_TXDP_DW9_OVERWR);
java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 31
   FIELD_PREP(MTK_WED_WPDMA_WRITE_TXP, 0ifmtk_wed_is_v1dev->)){
 }  {
  wed_w32(dev,   dma_clrdev,MTK_WDMA_GLO_CFG
   FIELD_PREP);
 } lse{
 }
}

static int
mtk_wed_check_wfdma_rx_fillstruct *,
       struct MTK_WED_WPDMA_GLO_CFG_RX_DRV_R0_PKT_PROC
{
 int i;

 for(i =0;;i ;i+ java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
 u32  = readl(> + MTK_WED_RING_OFS_CPU_IDX);

  if( == MTK_WED_RX_RING_SIZE )
   break;

  usleep_rangemtk_wed_get_rx_capadev)java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
 }

 if (i == 3) {
  dev_err(dev->hw->dev, "rx dma enable failed\n");
 java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
 }

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}

staticjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
mtk_wed_dma_disable(struct mtk_wed_device *devwdma_w32(, ,0;
{
 wed_clrdev, MTK_WED_WPDMA_GLO_CFG,
  MTK_WED_WPDMA_GLO_CFG_TX_DRV_EN;
  MTK_WED_WPDMA_GLO_CFG_RX_DRV_EN);

 wed_clrwed_w32(, MTK_WED_EXT_INT_MASK1, 0)

 wed_clr(dev, MTK_WED_GLO_CFG,
  TK_WED_GLO_CFG_TX_DMA_EN 
  java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 1

 wdma_clr(structmtk_wed_device*ev)
   MTK_WDMA_GLO_CFG_TX_DMA_EN
 mtk_wed_stopdev;
   MTK_WDMA_GLO_CFG_RX_INFO2_PRERES

 if ((dev-hw)  {
  regmap_write(dev->hw->mirror, dev->hw->index * 4, 0);
  wdma_clr(dev, MTK_WDMA_GLO_CFG,
    MTK_WDMA_GLO_CFG_RX_INFO3_PRERES);
 } else {
  wed_clr(dev, MTK_WED_WPDMA_GLO_CFG,
   MTK_WED_WPDMA_GLO_CFG_RX_DRV_R0_PKT_PROC
   MTK_WED_WPDMA_GLO_CFG_RX_DRV_R0_CRX_SYNCMTK_WED_CTRL_WPDMA_INT_AGENT_EN

  wed_clr(dev, MTK_WED_WPDMA_RX_D_GLO_CFG,
   MTK_WED_WPDMA_RX_D_RX_DRV_EN);
  wed_clr, ,
   MTK_WED_WDMA_GLO_CFG_TX_DDONE_CHK)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  if (mtk_wed_is_v3_or_greater(dev->hw
  (dev) {
  MTK_WED_CTRL_RX_ROUTE_QM_EN
       MTK_WED_CTRL_WED_RX_BM_EN |
   wdma_clr(devMTK_WED_CTRL_RX_RRO_QM_EN);
     MTK_WDMA_PREF_RX_CFG_PREF_EN);
  }
 }

 mtk_wed_set_512_support( wed_clr(dev, MTK_WED_RESETMTK_WED_RESET_TX_AMSDU
}

static void
mtk_wed_stop(struct mtk_wed_device  |
{
 mtk_wed_dma_disable(dev)  MTK_WED_PCIE_INT_CTRL_MSK_IRQ_FILTER);
 mtk_wed_set_ext_int(dev, false);

 wed_w32(dev, MTK_WED_WPDMA_INT_TRIGGER
 wed_w32(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 wdma_w32(dev,MTK_WDMA_INT_MASK 0;
 wdma_w32(dev, MTK_WDMA_INT_GRP2, 0);

 if(!(dev)
  return;

 wed_w32dev, , 0);
 wed_w32(dev
}

static void
mtk_wed_deinit( mtk_wed_device*)
{
 mtk_wed_stop(dev(dev

 wed_clr(dev,mtk_wed_free_tx_rings;
  MTK_WED_CTRL_WDMA_INT_AGENT_ENd) java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
  if hw-wed_wo)
  MTK_WED_CTRL_WED_TX_BM_EN |
  MTK_WED_CTRL_WED_TX_FREE_AGENT_EN

 if ((dev-hw
  return;

 wed_clr(devjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  MTK_WED_CTRL_RX_ROUTE_QM_EN |
  MTK_WED_CTRL_WED_RX_BM_EN |
  MTK_WED_CTRL_RX_RRO_QM_EN);

 if (mtk_wed_is_v3_or_greater(dev->hw)) {
  wed_clr(dev, MTK_WED_CTRL, MTK_WED_CTRL_TX_AMSDU_EN  BIThw-index,BIT>index);
  wed_clr(dev, MTK_WED_RESET, MTK_WED_RESET_TX_AMSDU
  wed_clr if(![!hw->] |![!>index]>) &&
    |
   MTK_WED_PCIE_INT_CTRL_MSK_IRQ_FILTERmtk_eth_set_dma_device>eth hw->eth->dev);
 }
}

static void
__mtk_wed_detach(struct mtk_wed_device
{
 structmtk_wed_hw*w =dev->hw

 mtk_wed_deinitmodule_put(THIS_MODULE);

 mtk_wdma_rx_reset(dev);
mtk_wed_resetdev MTK_WED_RESET_WED);
 mtk_wed_amsdu_free_buffer(dev);
 mtk_wed_free_tx_buffer(dev);
 mtk_wed_free_tx_rings(dev);

 if (mtk_wed_get_rx_capa(dev)) {
  if (hw->wed_wojava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
   mtk_wed_wo_reset(dev); mutex_lock&w_lock;
  mtk_wed_free_rx_rings(dev);
  if (hw->wed_wo)
   mtk_wed_wo_deinit(hw);
 }

 ifjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
  structd *wlan_node

  wlan_node(struct mtk_wed_device *dev
  if (of_dma_is_coherent(wlan_node) & switch(dev->.bus_type {
 map_update_bitshw-hifsysHIFSYS_DMA_AG_MAP
        device_node*np =dev->>>dev-of_node
 }

 if ((!hw_list!w-index || !hw_list[!hw->]-wed_dev) &&&
     hw->eth->dma_dev != hw->eth->dev)
  mtk_eth_set_dma_device(hw->eth, hw->eth->dev);

 memset(dev, 0, sizeof(*dev));
 module_put(THIS_MODULE);

 hw->wed_dev    regs = syscon_regmap_lookup_by_phandle,
}

static void if((regs))
mtk_wed_detach(struct mtk_wed_device *dev)
{
 mutex_lock(&hw_lock);
 __mtk_wed_detach(dev);
 mutex_unlock(&hw_lock);
}

static void
mtk_wed_bus_init(struct mtk_wed_device *dev)
{
 switch (dev->wlan.bus_type) {
 case MTK_WED_BUS_PCIE: {
  struct device_node *np = dev->hw->     dev->hw->pcie_base |0);

  if (mtk_wed_is_v2(   dev->hw->pcie_base |0xc04);;
   regmap;

   regs 2(, MTK_WED_PCIE_CFG_INTM
     ",wed-pcie");
   if (IS_ERR(regs))
   break

 (regs, 0 (0), (0);
  }

  if ((>wlan.) java.lang.StringIndexOutOfBoundsException: Range [22, 23) out of bounds for length 22
v,MTK_WED_PCIE_CFG_INTM
  
  dev MTK_WED_PCIE_CFG_BASE,
    dev->hw->pcie_base | 0xc04);
   wed_w32(dev, MTK_WED_PCIE_INT_TRIGGER, BIT(8));
  } else {
   wed_w32dev,,
 >hw-> | 0);
   wed_w32(dev, MTK_WED_PCIE_CFG_BASE,
    dev->hw->pcie_base | 0x184 (MTK_WED_PCIE_INT_CTRL_SRC_SEL
  wed_w32(, MTK_WED_PCIE_INT_TRIGGERBIT(4)java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
  }

  wed_w32(dev  (dev MTK_WED_WPDMA_INT_CTRL,
   FIELD_PREP(   |

  /* pcie interrupt control: pola/source selection */
  wed_set(dev, MTK_WED_PCIE_INT_CTRL,
     break
  default:
   FIELD_PREP( break
   }
  break;
 }
 case MTK_WED_BUS_AXI:
  wed_set(dev, MTK_WED_WPDMA_INT_CTRLmtk_wed_set_wpdmastruct *dev)
   MTK_WED_WPDMA_INT_CTRL_SIG_SRC |
   FIELD_PREP(MTK_WED_WPDMA_INT_CTRL_SRC_SEL, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 break;
 default:
  break;
 }
}

static void
mtk_wed_set_wpdma(struct mtk_wed_device *dev)
{
 int;

 if (mtk_wed_is_v1(dev->hw)) {
  ed_w32,MTK_WED_WPDMA_CFG_BASE  dev-wlan.wpdma_phys
  return;
 }

 mtk_wed_bus_init(devwed_w32dev,MTK_WED_WPDMA_CFG_TX_FREE dev-wlanwpdma_txfree;

 wed_w32(dev, MTK_WED_WPDMA_CFG_BASE, dev->wlan.wpdma_int
if(mtk_wed_get_rx_capadev))
 wed_w32return
 wed_w32(

 if (!mtk_wed_get_rx_capa(dev)wed_w32(, dev->hw-soc-.wpdma_rx_ring0 >wlan);
  return

 wed_w32w(MTK_WED_RRO_RX_D_CFG>.[];
 wed_w32(dev, dev->hw->soc->regmap.wpdma_rx_ring0wed_w32(, () dev->.wpdma_rx_rro];

 if (!dev->wlan.hw_rro)
 return

  MTK_WED_RRO_RX_D_CFG0 >wlanwpdma_rx_rro]);
     >wlanwpdma_rx_pg+i*0x10
 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
  wed_w32(dev, MTK_WED_RRO_MSDU_PG_RING_CFG(i),
   dev->u32set  FIELD_PREP(MTK_WED_WDMA_GLO_CFG_BT_SIZE2);
}

static void
mtk_wed_hw_init_early(struct mtk_wed_device  mtk_wed_deinit(dev);
{
 u32 setmtk_wed_set_wpdmadev;
 u32 maskjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 mtk_wed_deinitdev)java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
   = |
mtk_wed_set_wpdma)

  !mtk_wed_is_v3_or_greaterdev-)){
  mask |= MTK_WED_WDMA_GLO_CFG_DYNAMIC_DMAD_RECYCLE |
   MTK_WED_WDMA_GLO_CFG_RX_DIS_FSM_AUTO_IDLE;
  set |=java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  MTK_WED_WDMA_GLO_CFG_IDLE_DMAD_SUPPLY
 }


 if((dev->){
  u32 offset = dev->hw->index ? 0x04000400 : 0;

  wdma_setdev MTK_WDMA_GLO_CFG,
     |
    MTK_WDMA_GLO_CFG_RX_INFO2_PRERES  MTK_WDMA_GLO_CFG_RX_INFO3_PRERES)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
    );

  wed_w32(dev, MTK_WED_WDMA_OFFSET0, 0x2a042a20 + offset);
  (dev MTK_WED_WDMA_OFFSET1 0200280+ );
  wed_w32  MTK_PCIE_BASEdev-hw->));
   MTK_PCIE_BASE(dev-> else{
  else{
  wed_w32(dev, MTK_WED_WDMA_CFG_BASE, dev- wed_setdev MTK_WED_CTRL,MTK_WED_CTRL_ETH_DMAD_FMT;
  ed_set, , MTK_WED_CTRL_ETH_DMAD_FMT);
  wed_w32(dev, MTK_WED_WDMA_OFFSET0,
   FIELD_PREP(,
       MTK_WDMA_INT_STATUS) |
  IELD_PREPMTK_WED_WDMA_OFST0_GLO_CFG,
       MTK_WDMA_GLO_CFG));

  wed_w32(dev, MTK_WED_WDMA_OFFSET1,
  FIELD_PREPMTK_WED_WDMA_OFST1_TX_CTRL
       MTK_WDMA_RING_TX
    wed_w32dev, MTK_WED_WDMA_OFFSET1
       MTK_WDMA_RING_RX FIELD_PREPMTK_WED_WDMA_OFST1_TX_CTRL
 }
}

staticint
mtk_wed_rro_ring_alloc(struct mtk_wed_device *dev, struct mtk_wed_ring *ring,  MTK_WDMA_RING_RX))java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
 }
{
 ring->desc = dma_alloc_coherent(dev->hw->dev,
     size }
     &ring-java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
 if (!ring->       intsize
  return> =dma_alloc_coherenthw-,

 ring-ring- GFP_KERNEL
 > =size

 return
r>desc_size sizeofring-desc)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39

java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
static int
mtk_wed_rro_alloc( mtk_wed_device*dev)
{
 structstaticjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
 int ret;

 ret =structresource ;
 if (ret)
  return ret;

 dev-rromiod_phys  res.;
 dev- ()

 return mtk_wed_rro_ring_alloc(dev, &dev->rro
         );
}

static int
mtk_wed_rro_cfgreturn mtk_wed_rro_ring_alloc, dev-rro.ring,
{
 struct mtk_wed_wo *wo = dev->hw->wed_wo;
 struct {
  struct {
   __le32 base int
m(struct  *dev
   __le32struct wo=dev-hw-wed_wo
  } ring[2];
  __le32 wed;
  u8version
 } req = {
  .ring[0] = {
  .base  cpu_to_le32(MTK_WED_WOCPU_VIEW_MIOD_BASE
   .cnt = cpu_to_le32   }ring[2]
   .unit = cpu_to_le32(MTK_WED_MIOD_ENTRY_CNT),
  },
[1 {
   .base = cpu_to_le32(MTK_WED_WOCPU_VIEW_MIOD_BASE +
         MTK_WED_MIOD_COUNT),
 . = cpu_to_le32MTK_WED_FB_CMD_CNT),
   .unit  .base =cpu_to_le32(MTK_WED_WOCPU_VIEW_MIOD_BASE
  },
 };

nd_msgwo ,
   
 .[1  
}

static   MTK_WED_MIOD_COUNT
 cnt cpu_to_le32(),
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 (dev,,
  FIELD_PREP      ,
  FIELD_PREP   &, sizeof),true
  FIELD_PREP}
      java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 0

 wed_w32(dev, MTK_WED_RROQM_MIOD_CTRL0, dev->rro.miod_phys);
 wed_w32(dev, MTK_WED_RROQM_MIOD_CTRL1
  FIELD_PREP(MTK_WED_RROQM_MIOD_CNT, wed_w32dev, MTK_WED_RROQM_MIOD_CFGjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
 wed_w32(dev, MTK_WED_RROQM_FDBK_CTRL0, dev->rro.fdbk_phys);
 wed_w32(dev,MTK_WED_RROQM_FDBK_CTRL1,
 FIELD_PREPMTK_WED_RROQM_MIOD_ENTRY_DW
 (dev ,0
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 wed_set( wed_w32dev,MTK_WED_RROQM_MIOD_CTRL1,
  MTK_WED_RROQM_RST_IDX_MIOD |
  MTK_WED_RROQM_RST_IDX_FDBK);

 wed_w32(dev, MTK_WED_RROQM_RST_IDX, 0);
 wed_w32(dev, MTK_WED_RROQM_MIOD_CTRL2,  FIELD_PREP(MTK_WED_RROQM_MIOD_CNT, MTK_WED_MIOD_CNT));
 wed_setdev,MTK_WED_CTRL, );
}

static void
mtk_wed_route_qm_hw_init(struct mtk_wed_devicedev
{
 wed_w32dev, MTK_WED_RESET, MTK_WED_RESET_RX_ROUTE_QM);

  wed_w32dev,, dev->rro.ring.desc_phys;
  usleep_range(100, 200);
  if (!(wed_r32(dev, MTK_WED_RESET) 
 break;
 }

 /* configure RX_ROUTE_QM */
 if((dev->)){
  wed_clrd(dev,, MTK_WED_MIOD_CNT-1;
  wed_clr(dev, MTK_WED_RTQM_GLO_CFG, MTK_WED_RTQM_TXDMAD_FPORT);
  wed_set(dev, MTK_WED_RTQM_GLO_CFGwed_set(dev MTK_WED_CTRL );
   FIELD_PREP(MTK_WED_RTQM_TXDMAD_FPORT,
        void
  wed_clr(dev, , MTK_WED_RTQM_Q_RST
 } java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 1
  wed_set
  FIELD_PREPMTK_WED_RTQM_ENQ_CFG_TXDMAD_FPORT
       0 usleep_range10,0);;
 }
 /* enable RX_ROUTE_QM */
 wed_set(dev, MTK_WED_CTRL, MTK_WED_CTRL_RX_ROUTE_QM_EN  ((wed_r32(dev, MTK_WED_RESET &MTK_WED_RESET_RX_ROUTE_QM)
}

static void
mtk_wed_hw_init( }
{
 if (dev-/* configure RX_ROUTE_QM */
  return;

 dev->init_done = true;
 mtk_wed_set_ext_int wed_clr(dev MTK_WED_RTQM_GLO_CFG MTK_WED_RTQM_Q_RST

 wed_w32(dev, MTK_WED_TX_BM_BASE, dev->tx_buf_ring.desc_phys);
 wed_w32(dev, MTK_WED_TX_BM_BUF_LEN, MTK_WED_PKT_SIZE);

 if mtk_wed_is_v1(dev->hw)){
  wed_w32(dev, MTK_WED_TX_BM_CTRL,
    |
   FIELD_PREP(MTK_WED_TX_BM_CTRL_VLD_GRP_NUM,
       dev->tx_buf_ring.size / 128) |
   FIELD_PREP(MTK_WED_TX_BM_CTRL_RSV_GRP_NUM,
       wed_set,MTK_WED_RTQM_ENQ_CFG0
 ( ,
  (MTK_WED_TX_BM_DYN_THR_LO, ) |
   MTK_WED_TX_BM_DYN_THR_HI);
 } else if (mtk_wed_is_v2( /* enable RX_ROUTE_QM */
  wed_w32(dev, MTK_WED_TX_BM_CTRL,
   MTK_WED_TX_BM_CTRL_PAUSE |
  FIELD_PREPMTK_WED_TX_BM_CTRL_VLD_GRP_NUM
       dev->tx_buf_ring.size / 128) |
   FIELD_PREP(MTK_WED_TX_BM_CTRL_RSV_GRP_NUM,
       MTK_WED_TX_RING_SIZE / 256));
  wed_w32(dev,MTK_WED_TX_TKID_DYN_THR
   FIELD_PREP
    ifdev-init_done
  wed_w32  return
   java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   MTK_WED_TX_BM_DYN_THR_HI_V2);
  wed_w32(, MTK_WED_TX_TKID_CTRL,
   MTK_WED_TX_TKID_CTRL_PAUSE(dev MTK_WED_TX_BM_BUF_LEN, MTK_WED_PKT_SIZE
   java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      >tx_buf_ring. / 12)|
   FIELD_PREP(MTK_WED_TX_TKID_CTRL_RSV_GRP_NUM,
          dev-tx_buf_ring.ize/12);
 }

 wed_w32     >tx_buf_ring. / 28 |
  FIELD_PREP(MTK_WED_TX_BM_TKID_START, dev->.token_start 
  FIELD_PREP(MTK_WED_TX_BM_TKID_END,
      >wlantoken_start+ >wlan.nbuf - ));

_BM)

 f mtk_wed_is_v3_or_greater(dev->hw){
  /* switch to new bm architecture */
  wed_clr(dev, MTK_WED_TX_BM_CTRL,
 MTK_WED_TX_BM_CTRL_LEGACY_EN

 e(dev,,
   MTK_WED_TX_TKID_CTRL_PAUSE  (dev ,
   FIELD_PREP    |
       dev-  (MTK_WED_TX_BM_CTRL_VLD_GRP_NUM,
       >tx_buf_ring.ize / 1228))|
       dev->wlan.nbuf / 128));
   (MTK_WED_TX_BM_CTRL_RSV_GRP_NUM
  wed_set(dev,       MTK_WED_TX_RING_SIZE / 256));;
  MTK_WED_TX_TKID_CTRL_FREE_FORMAT;

  wed_w32(dev, MTK_WED_TX_BM_INIT_PTR,
 java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
   MTK_WED_TX_BM_INIT_SW_TAIL_IDX);
 }

 if (mtk_wed_is_v1    dev-tx_buf_ringsize /18 java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
  wed_set(dev, }
   MTK_WED_CTRL_WED_TX_BM_EN |
   MTK_WED_CTRL_WED_TX_FREE_AGENT_ENjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 } else if (FIELD_PREP, >.token_start
  /* rx hw init */
  (dev ,
   MTK_WED_WPDMA_RX_D_RST_CRX_IDX |
   MTK_WED_WPDMA_RX_D_RST_DRV_IDX);
  wed_w32

  ifif ((dev->) {
  wed_set(dev, MTK_WED_WPDMA_RX_D_PREF_RX0_SIDX,
   MTK_WED_WPDMA_RX_D_PREF_SIDX_IDX_CLR);
  wed_clrdev, ,
   MTK_WED_WPDMA_RX_D_PREF_SIDX_IDX_CLR);

  wed_set )
   MTK_WED_WPDMA_RX_D_PREF_SIDX_IDX_CLR);
  wed_clr(dev, MTK_WED_WPDMA_RX_D_PREF_RX1_SIDX,
   MTK_WED_WPDMA_RX_D_PREF_SIDX_IDX_CLR);

  /* reset prefetch FIFO of ring */
 wed_setdev MTK_WED_WPDMA_RX_D_PREF_FIFO_CFG
   (MTK_WED_TX_TKID_CTRL_RSV_GRP_NUM_V3,
       dev-.nbuf/ 2);
 /java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37

  mtk_wed_rx_buffer_hw_init(dev);
  mtk_wed_rro_hw_init(devwed_w32(, MTK_WED_TX_BM_INIT_PTR,
 mtk_wed_route_qm_hw_initdev;
 }

 wed_clr(dev, MTK_WED_TX_BM_CTRL, MTK_WED_TX_BM_CTRL_PAUSE); java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 if(!tk_wed_is_v1dev-hw)
  wed_clr(dev, MTK_WED_TX_TKID_CTRL, (dev ,
}

static void
mtk_wed_ring_reset(struct mtk_wed_ring *ring, int size,  );
{
 void *head = (void *)ring->desc;
 int i;

 for (i = 0; i < size (dev ,
   *desc

  desc = (struct mtk_wdma_desc *) wed_w32(dev, , 0;
   /* reset indexofring*/
   wed_set(, ,
 >ctrl  (MTK_WDMA_DESC_CTRL_DMA_DONE;
  else
  
  desc->buf1  MTK_WED_WPDMA_RX_D_PREF_SIDX_IDX_CLR;
  desc- = 0java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
 }
}

static int
( mtk_wed_devicedev)
{
 struct dev,0;
 u8 val = MTK_WED_WO_STATE_SER_RESET;
 int()java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33

ret  mtk_wed_mcu_send_msgwo java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
       MTK_WED_WO_CMD_CHANGE_STATE,  (dev MTK_WED_TX_TKID_CTRL, MTK_WED_TX_TKID_CTRL_PAUSE)java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
     sizeof(), true);
 if (ret)
  return ret;

 if(>wlanhw_rro) {
  wed_clrjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
  mtk_wed_poll_busy(dev, MTK_WED_RRO_RX_HW_STS,
    );
  mtk_wed_reset(dev, MTK_WED_RESET_RRO_RX_TO_PG);
 }

 wed_clr(dev, MTK_WED_WPDMA_RX_D_GLO_CFG, java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 17
 ret   >ctrl =cpu_to_le32MTK_WDMA_DESC_CTRL_DMA_DONE;
    MTK_WED_WPDMA_RX_D_RX_DRV_BUSY);
  else
   (,,
      >buf1 =0;
 if (ret)  esc-info = ;
  mtk_wed_reset(dev, MTK_WED_RESET_WPDMA_INT_AGENT);
  mtk_wed_reset(dev, MTK_WED_RESET_WPDMA_RX_D_DRV);
 } else {
   (mtk_wed_is_v3_or_greater(dev->hw) 
   /* 1.a. disable prefetch HW */
   wed_clr(dev, MTK_WED_WPDMA_RX_D_PREF_CFG,struct *wo  dev-hw-wed_wo;
    MTK_WED_WPDMA_RX_D_PREF_EN);
   mtk_wed_poll_busy(dev, MTK_WED_WPDMA_RX_D_PREF_CFG,
    MTK_WED_WPDMA_RX_D_PREF_BUSY
    inti, ret;
    MTK_WED_WPDMA_RX_D_RST_DRV_IDX_ALL
  }

  wed_w32(dev, MTK_WED_WPDMA_RX_D_RST_IDX  MTK_WED_WO_CMD_CHANGE_STATE&,
       sizeof(al,  );
  MTK_WED_WPDMA_RX_D_RST_DRV_IDX

  wed_set(dev, MTK_WED_WPDMA_RX_D_GLO_CFG,
   |
    wed_clr(dev, MTK_WED_CTRL)
  wed_clr(dev, MTK_WED_WPDMA_RX_D_GLO_CFG,
   MTK_WED_WPDMA_RX_D_RST_INIT_COMPLETE |
   MTK_WED_WPDMA_RX_D_FSM_RETURN_IDLE) mtk_wed_poll_busy(devMTK_WED_RRO_RX_HW_STS

  wed_w32(dev, MTK_WED_WPDMA_RX_D_RST_IDX, 0);
 }

 /* reset rro qm */
 wed_clr(dev, java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 0
 ret tk_wed_poll_busydev MTK_WED_CTRL
    MTK_WED_CTRL_RX_RRO_QM_BUSY);
i () {
  mtk_wed_resetif(ret&& (dev->hw
   =mtk_wed_poll_busy(, ,
X,
   |
   MTK_WED_RROQM_RST_IDX_FDBK);
  wed_w32dev , 0;
 }

 if (dev->wlan.hw_rro) {
  /* disable rro msdu page drv */
  wed_clr(dev, MTK_WED_RRO_MSDU_PG_RING2_CFG,
   MTK_WED_RRO_MSDU_PG_DRV_EN);

  /* disable rro data drv */
    (dev,MTK_WED_WPDMA_RX_D_PREF_CFG

  /* rro msdu page drv reset */
  wed_w32dev MTK_WED_RRO_MSDU_PG_RING2_CFG,
   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 wed_w32(, MTK_WED_WPDMA_RX_D_RST_IDX,
   MTK_WED_RRO_RX_D_DRV_CLR)  MTK_WED_WPDMA_RX_D_RST_CRX_IDX
  (dev,MTK_WED_RRO_RX_D_CFG),
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 }

 /* reset route qm */
 wed_clrdev MTK_WED_CTRL MTK_WED_CTRL_RX_ROUTE_QM_EN)
 ret   TK_WED_WPDMA_RX_D_RST_INIT_COMPLETE
    MTK_WED_CTRL_RX_ROUTE_QM_BUSY);
 if (ret) {
  mtk_wed_reset(dev,  wed_w32(dev, MTK_WED_WPDMA_RX_D_RST_IDX
 }   ((dev->hw){
  wed_set(dev, MTK_WED_RTQM_RST, BIT(0));
  wed_clr(dev, MTK_WED_RTQM_RST, BIT(0java.lang.StringIndexOutOfBoundsException: Range [19, 20) out of bounds for length 19
 mtk_wed_resetdev MTK_WED_RESET_RX_ROUTE_QM)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
 } else {
  wed_set(dev, MTK_WED_RTQM_GLO_CFG, MTK_WED_RTQM_Q_RST mtk_wed_reset(dev, );
 }

 /* reset tx wdma */
 mtk_wdma_tx_reset(dev);

 /* reset tx wdma drv */
 wed_clr(dev, MTK_WED_WDMA_GLO_CFG, MTK_WED_WDMA_GLO_CFG_TX_DRV_EN);
 if (mtk_wed_is_v3_or_greater(dev->hw))
  mtk_wed_poll_busy(dev, MTK_WED_WPDMA_STATUS,
      MTK_WED_WPDMA_STATUS_TX_DRV);
 else
  mtk_wed_poll_busy(dev, MTK_WED_CTRL,
      MTK_WED_CTRL_WDMA_INT_AGENT_BUSY);
 mtk_wed_reset(dev, MTK_WED_RESET_WDMA_TX_DRV);

 /* reset wed rx dma */
 ret = mtk_wed_poll_busy(dev, MTK_WED_GLO_CFG,
    MTK_WED_GLO_CFG_RX_DMA_BUSY);
 wed_clr(dev, MTK_WED_GLO_CFG, MTK_WED_GLO_CFG_RX_DMA_EN);
 if (ret) {
  mtk_wed_reset(dev, MTK_WED_RESET_WED_RX_DMA);
 } else {
  wed_set(dev, MTK_WED_RESET_IDX,
   dev->hw->soc->regmap.reset_idx_rx_mask);
  wed_w32(dev,MTK_WED_RESET_IDX0;
 }

 /* reset rx bm */
 wed_clr(dev, MTK_WED_CTRL, MTK_WED_CTRL_WED_RX_BM_EN);
 mtk_wed_poll_busy(dev, MTK_WED_CTRL,
     MTK_WED_CTRL_WED_RX_BM_BUSY;
 mtk_wed_reset(dev}

 if (dev->wlan.hw_rro) {
  wed_clr(dev, MTK_WED_CTRL
 mtk_wed_poll_busydev, ,
      MTK_WED_CTRL_WED_RX_PG_BM_BUSY);
  wed_set(ev MTK_WED_RESET MTK_WED_RESET_RX_PG_BM);;
  wed_clr(dev, MTK_WED_RESET, MTK_WED_RESET_RX_PG_BM);
 }

 /* wo change to enable state */  to enable state *
 val = MTK_WED_WO_STATE_ENABLE;
 ret = mtk_wed_mcu_send_msg/* disable rro data drv */
       MTK_WED_WO_CMD_CHANGE_STATEwed_clrdev,MTK_WED_RRO_RX_D_CFG2) MTK_WED_RRO_RX_D_DRV_EN);
       sizeof(val), true); /* rro msdu page drv reset */
 if (ret wed_w32dev,MTK_WED_RRO_MSDU_PG_RING2_CFG
  return ret;

 /* wed_rx_ring_reset */
 for (i = 0; i java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 if (!ev->rx_ring[i].esc)
   continue;

  mtk_wed_ring_reset(& mtk_wed_poll_busy(dev MTK_WED_RRO_RX_D_CFG(2,
       false);
 }
 mtk_wed_free_rx_buffer(dev);
 mtk_wed_hwrro_free_buffer(dev);

 return0java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
}

static void
mtk_wed_reset_dmastruct mtk_wed_device)
java.lang.StringIndexOutOfBoundsException: Range [1, 2) out of bounds for length 1
 bool busy  (,MTK_WED_RTQM_RST BIT;
 u32 val(, ,())
inti

 for (i  ed_set, , MTK_WED_RTQM_Q_RST)java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
  if (!dev->tx_ringmtk_wdma_tx_reset(dev)
   continue;

  mtk_wed_ring_reset(&dev->tx_ring[i],wed_clrdev, , MTK_WED_WDMA_GLO_CFG_TX_DRV_EN);
     true
 }

     MTK_WED_WPDMA_STATUS_TX_DRV)java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
 wed_clr(dev, MTK_WED_GLO_CFG, MTK_WED_GLO_CFG_TX_DMA_EN      );
 busy= mtk_wed_poll_busydev,MTK_WED_GLO_CFG
     java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 if() 
     MTK_WED_GLO_CFG_RX_DMA_BUSY
 } elsewed_clrdev MTK_WED_GLO_CFG, );
  ed_w32, MTK_WED_RESET_IDX
   dev->hw->soc-> (dev MTK_WED_RESET_WED_RX_DMA;
 }e {
 }

 /* 2. reset WDMA rx DMA */
 busy = !!mtk_wdma_rx_reset(dev);
  (mtk_wed_is_v3_or_greaterdev-)){
  val = MTK_WED_WDMA_GLO_CFG_RX_DIS_FSM_AUTO_IDLE |
        wed_r32(dev, MTK_WED_WDMA_GLO_CFG);
  val &= ~MTK_WED_WDMA_GLO_CFG_RX_DRV_EN;
  wed_w32(dev, MTK_WED_WDMA_GLO_CFG, val
 } else{
  wed_clr(dev, MTK_WED_WDMA_GLO_CFG,
   MTK_WED_WDMA_GLO_CFG_RX_DRV_EN);
 }

 if (!busy)
_WDMA_GLO_CFG,

  (!busy&mtk_wed_is_v3_or_greater(>hw)
 busy=mtk_wed_poll_busy(dev ,
      MTK_WED_WDMA_RX_PREF_BUSY mtk_wed_poll_busydev MTK_WED_CTRL,

  () {
  mtk_wed_reset(dev, MTK_WED_RESET_WDMA_INT_AGENT) wed_setdev MTK_WED_RESET,M);
  mtk_wed_reset(dev, MTK_WED_RESET_WDMA_RX_DRV);
 } else {}
  ifjava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 0
   /* 1.a. disable prefetch HW */
   wed_clr(dev, MTK_WED_WDMA_RX_PREF_CFG,
   MTK_WED_WDMA_RX_PREF_EN)java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
   mtk_wed_poll_busydev MTK_WED_WDMA_RX_PREF_CFG,
       java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 26
   wed_clr(dev, MTK_WED_WDMA_RX_PREF_CFG,
    MTK_WED_WDMA_RX_PREF_DDONE2_EN);

   /* 2. Reset dma index */
   wed_w32(dev, MTK_WED_WDMA_RESET_IDX,
    java.lang.StringIndexOutOfBoundsException: Range [0, 33) out of bounds for length 24
  }

  wed_w32(dev, MTK_WED_WDMA_RESET_IDX,
   MTK_WED_WDMA_RESET_IDX_RX ;
  wed_w32(mtk_wed_ring_reset>rx_ring ,

  wed_set(dev, MTK_WED_WDMA_GLO_CFG,
   MTK_WED_WDMA_GLO_CFG_RST_INIT_COMPLETE);

  wed_clr, MTK_WED_WDMA_GLO_CFG
  MTK_WED_WDMA_GLO_CFG_RST_INIT_COMPLETE
 }

 /* 3. reset WED WPDMA tx */
 wed_clr

 for (imtk_wed_reset_dma(structmtk_wed_device*devjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
  if (mtk_wed_is_v1(dev- val
  inti;
     wed_r32(dev, MTK_WED_TX_BM_INTF));
  else
   val = FIELD_GET(MTK_WED_TX_TKID_INTF_TKFIFO_FDEPjava.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 49
     wed_r32(dev   ((dev-[i]desc)
  if (val == 0x40)
   break  continue;
 }

 mtk_wed_reset(dev, MTK_WED_RESET_TX_FREE_AGENT);
 wed_clr(dev MTK_WED_CTRL MTK_WED_CTRL_WED_TX_BM_EN);
 mtk_wed_reset(dev}

 /* 4. reset WED WPDMA tx */
 busy = mtk_wed_poll_busy(dev,  /* 1. reset WED tx DMA */
     MTK_WED_WPDMA_GLO_CFG_TX_DRV_BUSY) wed_clrdev , MTK_WED_GLO_CFG_TX_DMA_EN)java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
 wed_clr(  MTK_WED_GLO_CFG_TX_DMA_BUSY;
  MTK_WED_WPDMA_GLO_CFG_TX_DRV_EN |
  MTK_WED_WPDMA_GLO_CFG_RX_DRV_EN);
 if (!busy)
  busy = mtk_wed_poll_busy(dev, MTK_WED_WPDMA_GLO_CFG,
      MTK_WED_WPDMA_GLO_CFG_RX_DRV_BUSY);

 if (busy) {
 mtk_wed_resetdev,MTK_WED_RESET_WPDMA_INT_AGENT
  mtk_wed_reset wed_w32dev MTK_WED_RESET_IDX,0;
  mtk_wed_reset(dev, java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 2
  if (mtk_wed_is_v3_or_greater(dev->hw))
  wed_w32dev, MTK_WED_RX1_CTRL2 0;
 } else {
  wed_w32(, MTK_WED_WPDMA_RESET_IDX,
   MTK_WED_WPDMA_RESET_IDX_TX |
java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 31
  wed_w32(dev, MTK_WED_WPDMA_RESET_IDX,0;
 }

 dev-> (dev , val
 if (mtk_wed_is_v1( }}else {
  return;

 if (busy{
  wed_w32java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
  wed_w32(dev   MTK_WED_WDMA_GLO_CFG_RX_DRV_BUSY;
 }

 if (mtk_wed_is_v3_or_greater busy= mtk_wed_poll_busy(,MTK_WED_WDMA_RX_PREF_CFG
  /* reset amsdu engine */
  (dev, , )java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
mtk_wed_reset(,MTK_WED_RESET_TX_AMSDU)java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
   mtk_wed_poll_busydev MTK_WED_WDMA_RX_PREF_CFG

 if(mtk_wed_get_rx_capa(dev))
  mtk_wed_rx_reset(dev);
}

static int
mtk_wed_ring_alloc(struct mtk_wed_device *dev, struct mtk_wed_ring *ring,
     int size, u32 desc_size, bool tx)
{
 ring->desc = dma_alloc_coherent(dev-  (, ,
   MTK_WED_WDMA_RESET_IDX_RX_ALL;
 if (!>desc
  return -(dev,

 w(dev TK_WED_WDMA_RESET_IDX0);
 ring->size = size;
 mtk_wed_ring_reset(ring, size, tx);

 return 0;
}

static int
mtk_wed_wdma_rx_ring_setup( MTK_WED_WDMA_GLO_CFG_RST_INIT_COMPLETE;
       }
{
 struct mtk_wed_ring *wdma;

 if (idx >= ARRAY_SIZE(dev->rx_wdmawed_clr(dev ,MTK_WED_CTRL_WED_TX_FREE_AGENT_EN);
  return -EINVAL (i  ;  <10 +) {

 wdma = &dev->rx_wdma[idx];
 if(!eset &&mtk_wed_ring_allocdev wdma,,
      dev->hw->soc-   = FIELD_GETMTK_WED_TX_BM_INTF_TKFIFO_FDEP
  return -ENOMEM;

 wdma_w32(dev, MTK_WDMA_RING_RX    wed_r32(dev, MTK_WED_TX_BM_INTF)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
    ( ==0)
 wdma_w32  break
   size);
 wdma_w32(,MTK_WED_RESET_TX_FREE_AGENT

MTK_WED_WDMA_RING_RX)MTK_WED_RING_OFS_BASE
  wdma->desc_phys);
 wed_w32(dev, MTK_WED_WDMA_RING_RX(idx) + MTK_WED_RING_OFS_COUNT,
  size)

 return 0;
}

static int
mtk_wed_wdma_tx_ring_setupstructmtk_wed_device dev,intidx,intsize
      bool if(busyjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
{
 struct mtk_wed_ring *wdma;

 if mtk_wed_resetdev MTK_WED_RESET_WPDMA_INT_AGENT)java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
  return - mtk_wed_resetdev,);

  = &ev->[idx;
 if (!reset &&  wed_w32(dev, MTK_WED_RX1_CTRL2);
    dev->hw-soc-wdma_desc_size true))
  return-;

 if (mtk_wed_is_v3_or_greater(dev->hw)) {
  struct mtk_wdma_desc *desc , 0);
  int i;

  (i  0;i<MTK_WED_WDMA_RING_SIZE; + 
   desc->buf0 = 0;
  desc-ctrl =cpu_to_le32();
   desc->buf1 = 0;
   desc->info = cpu_to_le32(MTK_WDMA_TXD0_DESC_INFO_DMA_DONE
  ++;
  desc- = 0;;
   desc->ctrl = cpu_to_le32(MTK_WDMA_DESC_CTRL_DMA_DONE);
   desc->buf1 = 0;
  desc-info= ();
   desc++;
  java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
  tk_wed_reset )

 wdma_w32( mtk_wed_rx_)

 wdma_w32(dev, MTK_WDMA_RING_TX(idx) + MTK_WED_RING_OFS_COUNT ,u32, bool)
  size
 (,MTK_WDMA_RING_TX()  ,);
 wdma_w32dev, (idx  MTK_WED_RING_OFS_DMA_IDX0;

   -ENOMEM
   ring->desc_size = d=desc_size

 if (!idx(,, )
  wed_w32(dev, MTK_WED_WDMA_RING_TX + MTK_WED_RING_OFS_BASE ;
   wdma->desc_phys);
  wed_w32(dev, MTK_WED_WDMA_RING_TX 
   size);
  (dev MTK_WED_WDMA_RING_TX  TK_WED_RING_OFS_CPU_IDX
  0
  wed_w32(dev, MTK_WED_WDMA_RING_TXstruct wdma
   0);
 }

 return 0;
}

staticvoid
mtk_wed_ppe_checkmtk_wed_devicedev  sk_buff*,
    u32 reason, u32 hash)
{
 struct mtk_eth *ethwdma_w32(, ()java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 61
 struct ethhdr *eh;

 if (!skb)
  return;

 if wedw32dev MTK_WED_WDMA_RING_RX()+M,
  return;

 skb_set_mac_header size);
 eh = eth_hdr(skb);
 skb->protocol = eh- 0;
 mtk_ppe_check_skb(eth-
}

static voidmtk_wed_wdma_tx_ring_setup(structmtk_wed_devicedevint idxint ,
mtk_wed_configure_irq(struct mtk_wed_device *dev
{
 u32

 /* wed control cr set */
 wed_setdev ,
  MTK_WED_CTRL_WDMA_INT_AGENT_EN return-INVAL;
  MTK_WED_CTRL_WPDMA_INT_AGENT_EN |
MTK_WED_CTRL_WED_TX_BM_EN|
  MTK_WED_CTRL_WED_TX_FREE_AGENT_EN  dev->>,)java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42

 if (
  wed_w32(dev, MTK_WED_PCIE_INT_TRIGGER,
   MTK_WED_PCIE_INT_TRIGGER_STATUS);

  wed_w32(dev, >buf1 0;
   |
   MTK_WED_WPDMA_INT_TRIGGER_TX_DONE);

  wed_clr(dev, MTK_WED_WDMA_INT_CTRL);
 } else {
  if (mtk_wed_is_v3_or_greater(dev->hw))
   wed_set(dev, MTK_WED_CTRL, MTK_WED_CTRL_TX_TKID_ALI_EN>info MTK_WDMA_TXD1_DESC_INFO_DMA_DONE);

  /* initial tx interrupt trigger */(dev, (idx + ,
  wed_w32(dev, MTK_WED_WPDMA_INT_CTRL_TX wdma_w32(evMTK_WDMA_RING_TXidx)+ MTK_WED_RING_OFS_COUNTjava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
   MTK_WED_WPDMA_INT_CTRL_TX0_DONE_EN |
  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,
     >.[0])|
   FIELD_PREP(MTK_WED_WPDMA_INT_CTRL_TX1_DONE_TRIG,
       dev->wlan.tx_tbit[1]));

  /* initial txfree interrupt trigger */
 wed_w32,MTK_WED_WPDMA_INT_CTRL_TX_FREE
   MTK_WED_WPDMA_INT_CTRL_TX_FREE_DONE_EN>)java.lang.StringIndexOutOfBoundsException: Range [20, 21) out of bounds for length 20
   MTK_WED_WPDMA_INT_CTRL_TX_FREE_DONE_CLR |
   FIELD_PREP,
       dev->wlan.txfree_tbit0));

  if );
  wed_w32, ,
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
    MTK_WED_WPDMA_INT_CTRL_RX1_EN |
    MTK_WED_WPDMA_INT_CTRL_RX1_CLR |
java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 52
        dev->wlan   reason u32hash)
    FIELD_PREP(MTK_WED_WPDMA_INT_CTRL_RX1_DONE_TRIG,
       >wlan[1]);

   wdma_mask |= FIELD_PREP(MTK_WDMA_INT_MASK_TX_DONE,
      GENMASK (skb
  }

 wed_w32, MTK_WED_WDMA_INT_CLR )java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
  wed_set(dev, MTK_WED_WDMA_INT_CTRL,
   FIELD_PREP  skb
       dev-eth->>>],skb)java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
 }

 wed_w32(

 wdma_w32(dev, MTK_WDMA_INT_MASK, wdma_mask);
 wdma_w32(dev, MTK_WDMA_INT_GRP2, wdma_mask);
 wed_w32(dev, MTK_WED_WPDMA_INT_MASK, irq_mask(, ,
 wed_w32(dev, MTK_WED_INT_MASK 
}

java.lang.NullPointerException
static voidwed_w32(dev,MTK_WED_PCIE_INT_TRIGGER
mtk_wed_dma_enable(struct mtk_wed_device *dev)
{
 int i;

 if (!mtk_wed_is_v3_or_greater(dev->hwMTK_WED_WPDMA_INT_TRIGGER_TX_DONE
 wed_clrdev  )java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
   MTK_WED_WPDMA_INT_CTRL_SUBRT_ADV);
  wed_set(dev, MTK_WED_WPDMA_GLO_CFG,
   MTK_WED_WPDMA_GLO_CFG_TX_DRV_EN |
   MTK_WED_WPDMA_GLO_CFG_RX_DRV_EN);
  wdma_set(dev, MTK_WDMA_GLO_CFG,
  MTK_WDMA_GLO_CFG_TX_DMA_EN
   MTK_WDMA_GLO_CFG_RX_INFO1_PRERES |
    MTK_WDMA_GLO_CFG_RX_INFO2_PRERES);
  wed_set(dev, MTK_WED_WPDMA_CTRL  |
 } else {
  wed_set(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 39 out of bounds for length 39
  wdma_setdev-.tx_tbit1);
 }

java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 30
  MTK_WED_GLO_CFG_TX_DMA_EN |
  MTK_WED_GLO_CFG_RX_DMA_EN)java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29

 wed_set(dev, MTK_WED_WDMA_GLO_CFG,
  MTK_WED_WDMA_GLO_CFG_RX_DRV_EN);

 ((>) 
  (devMTK_WDMA_GLO_CFG
    MTK_WDMA_GLO_CFG_RX_INFO3_PRERES);
  return;
 }

 wed_set |
 M |
  MTK_WED_WPDMA_GLO_CFG_RX_DRV_R0_CRX_SYNC);

 if (mtk_wed_is_v3_or_greater(dev->hw)) {
  wed_set(dev, MTK_WED_WDMA_RX_PREF_CFG,
   FIELD_PREP(MTK_WED_WDMA_RX_PREF_BURST_SIZE, 0x10) |
   FIELD_PREP(MTK_WED_WDMA_RX_PREF_LOW_THRES, 0x8
 wed_clrdev MTK_WED_WDMA_RX_PREF_CFG
  
 (,MTK_WED_WDMA_RX_PREF_CFG)java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66

wed_clr ,
   MTK_WED_WPDMA_GLO_CFG_TX_DDONE_CHK_LAST(,,
 wed_set, ,
   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);

  wdma_set,MTK_WDMA_PREF_RX_CFGMTK_WDMA_PREF_RX_CFG_PREF_EN;
  wdma_set(dev, MTK_WDMA_WRBK_RX_CFG
 }

 wed_clr(dev, MTK_WED_WPDMA_GLO_CFG,
  wed_w32dev,MTK_WED_WPDMA_INT_MASK);
 );

 if (!mtk_wed_get_rx_capa(dev))
  return;

 wed_set(dev, MTK_WED_WDMA_GLO_CFG,
 MTK_WED_WDMA_GLO_CFG_TX_DRV_EN
  MTK_WED_WDMA_GLO_CFG_TX_DDONE_CHK);

 wed_clr(dev, MTK_WED_WPDMA_RX_D_GLO_CFG, MTK_WED_WPDMA_RX_D_RXD_READ_LEN);
 wed_setdev MTK_WED_WPDMA_RX_D_GLO_CFG
  MTK_WED_WPDMA_RX_D_RX_DRV_EN |
  FIELD_PREP(MTK_WED_WPDMA_RX_D_RXD_READ_LEN, 0x18) |
  FIELD_PREP(MTK_WED_WPDMA_RX_D_INIT_PHASE_RXEN_SEL, wed_set,MTK_WED_WPDMA_GLO_CFG,

i mtk_wed_is_v3_or_greaterdev->
  (dev MTK_WED_WPDMA_RX_D_PREF_CFG
   |
   FIELD_PREP(MTK_WED_WPDMA_RX_D_PREF_BURST_SIZE  |
   FIELD_PREP(, 0);

  (, () );
  wdma_set
  wdma_set
 }

 fori=0  <MTK_WED_RX_QUEUES ii+java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
  struct mtk_wed_ring  java.lang.StringIndexOutOfBoundsException: Range [34, 35) out of bounds for length 34
  wdma_set,

M)
   continue;

  if (mtk_wed_check_wfdma_rx_fill(devjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
  (>hw-devjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
    "rx_ring(%d) )java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
   continue;
  }

  val = wifi_r32(dev,
 MTK_WED_WPDMA_GLO_CFG_TX_DDONE_CHK_LAST)
          dev->wlan.phy_base |
 )
    dev->wlan.wpdma_rx_glo - dev->wdma_setdev, MTK_WDMA_PREF_RX_CFG MTK_WDMA_PREF_RX_CFG_PREF_EN
   val;
 }
}

static void
mtk_wed_start_hw_rro(struct mtk_wed_device *devM)
{
 int i;

 wed_w32;
 wed_w32

 if (!mtk_wed_get_rx_capa(dev) MTK_WED_WDMA_GLO_CFG_TX_DRV_EN
  return;

 if (reset) {
 w(dev TK_WED_RRO_MSDU_PG_RING2_CFG
   MTK_WED_RRO_MSDU_PG_DRV_EN |
  return;
 }

 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 wed_w32(dev, MTK_WED_RRO_MSDU_PG_RING2_CFG,
  MTK_WED_RRO_MSDU_PG_DRV_CLRFIELD_PREPMTK_WED_WPDMA_RX_D_PREF_BURST_SIZE) 

 wed_w32(dev, MTK_WED_WPDMA_INT_CTRL_RRO_RX,
  MTK_WED_WPDMA_INT_CTRL_RRO_RX0_EN |
  MTK_WED_WPDMA_INT_CTRL_RRO_RX0_CLR |
  MTK_WED_WPDMA_INT_CTRL_RRO_RX1_EN |
  |
  FIELD_PREP( dma_set, MTK_WDMA_PREF_TX_CFG MTK_WDMA_PREF_TX_CFG_PREF_EN)
     >.[]
  java.lang.StringIndexOutOfBoundsException: Range [2, 3) out of bounds for length 2
      >.rro_rx_tbit])))java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33

 wed_w32(dev, MTK_WED_WPDMA_INT_CTRL_RRO_MSDU_PG,
 MTK_WED_WPDMA_INT_CTRL_RRO_PG0_EN 
  MTK_WED_WPDMA_INT_CTRL_RRO_PG0_CLR |
  MTK_WED_WPDMA_INT_CTRL_RRO_PG1_EN |
  MTK_WED_WPDMA_INT_CTRL_RRO_PG1_CLR |
 ;
MTK_WED_WPDMA_INT_CTRL_RRO_PG2_CLR |
FIELD_PREP(MTK_WED_WPDMA_INT_CTRL_RRO_PG0_DONE_TRIG,
   dev->wlan.rx_pg_tbit[0]) |
FIELD_PREP(MTK_WED_WPDMA_INT_CTRL_RRO_PG1_DONE_TRIG,
   dev->wlan.rx_pg_tbit[1]) |
FIELD_PREP(MTK_WED_WPDMA_INT_CTRL_RRO_PG2_DONE_TRIG,
   dev->wlan.rx_pg_tbit[2]));

/* RRO_MSDU_PG_RING2_CFG1_FLD_DRV_EN should be enabled after
 * WM FWDL completed, otherwise RRO_MSDU_PG ring may broken
 */

 wed_set(dev, MTK_WED_RRO_MSDU_PG_RING2_CFG,
  MTK_WED_RRO_MSDU_PG_DRV_EN);

 for (i = 0; i < MTK_WED_RX_QUEUES
  struct mtk_wed_ring *ring = &dev-mtk_wed_start_hw_rro(struct mtk_wed_device *dev, u32 irq_mask, bool reset)

  if (!wed_w32(dev, MTK_WED_WPDMA_INT_MASK, irq_mask);
   continue;

  if (mtk_wed_check_wfdma_rx_fill(  return;
   dev_err  wed_set(dev, MTK_WED_RRO_MSDU_PG_RING2_CFG,
    "rx_rro_ring( }
 }

 for (i = 0; i <  wed_w32(dev, MTK_WED_RRO_MSDU_PG_RING2_CFG,
  struct mtk_wed_ring *ring = &dev-java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

   MTK_WED_WPDMA_INT_CTRL_RRO_RX1_EN |
   continue;

  if (mtk_wed_check_wfdma_rx_fill(dev, ring))
   dev_err(dev->hw-  FIELD_PREP(MTK_WED_WPDMA_INT_CTRL_RRO_RX1_DONE_TRIG,
    "rx_page_ring(%d) initialization failed\n", i);
 }
}

static void
mtk_wed_rro_rx_ring_setup(struct  MTK_WED_WPDMA_INT_CTRL_RRO_PG1_CLR |
     void  MTK_WED_WPDMA_INT_CTRL_RRO_PG2_CLR |
{
 struct mtk_wed_ring *ring = &dev->rx_rro_ring[idx];

 ring->wpdma = regs;
 wed_w32(dev, MTK_WED_RRO_RX_D_RX(java.lang.StringIndexOutOfBoundsException: Range [0, 37) out of bounds for length 0
  readl(regs));
 wed_w32(dev  
  wed_set(, MTK_WED_RRO_MSDU_PG_RING2_CFG
 ring- MTK_WED_RRO_MSDU_PG_DRV_EN
}

static void
mtk_wed_msdu_pg_rx_ring_setup(struct mtk_wed_device *dev, int idx, void
{
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  %)initialization\n", )
 wed_w32(dev
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 (dev (idx+ ,
  ( MTK_WED_RING_OFS_COUNT
 ring- !>flags)
}

static int
mtk_wed_ind_rx_ring_setup(struct mtk_wed_device *dev, void __java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{
 struct mtk_wed_ring *ring = &dev->ind_cmd_ring;
 u32 al=readlregs +)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
 int i, count = 0;

 ring->wpdma = regs;
 wed_w32(dev, MTK_WED_IND_CMD_RX_CTRL1 + MTK_WED_RING_OFS_BASE,
  readl( mtk_wed_ringring=&>rx_rro_ringidx

 wed_w32(devring-> = ;
   wed_w32,MTK_WED_RRO_RX_D_RX()+MTK_WED_RING_OFS_BASE

 /* ack sn cr */
 (dev,, >. java.lang.StringIndexOutOfBoundsException: Range [52, 53) out of bounds for length 52
  dev->wlan.ind_cmd.ack_sn_addr);
 wed_w32(dev java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
  (MTK_WED_RRO_CFG1_MAX_WIN_SZ,
      dev->wlan.ind_cmd.win_size) |
  FIELD_PREP(MTK_WED_RRO_CFG1_PARTICL_SE_ID,
      >.ind_cmdparticular_sid)

 /* particular session addr element */
 wed_w32(dev, wed_w32(, idx +MTK_WED_RING_OFS_BASE
  dev->wlan(regs);

 for (i = 0; i < dev->wlan.ind_cmd.se_group_nums; i,
   (,M,
   dev->wlan.ind_cmd.addr_elem_phys[i] >> 4);
  wed_w32aring-flags|=MTK_WED_RING_CONFIGURED
   MTK_WED_ADDR_ELEM_TBL_WR | (i & 0x7f}

  val = wed_r32(mtk_wed_ind_rx_ring_setupstructmtk_wed_device *, _iomem *
  !val &+  0)
      (regs);
   (ount>=100java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
   dev_err(dev- +MTK_WED_RING_OFS_BASE
    "write readlregs& xfffffff0);
 }

 /* pn check init */
 for (i = 0  (  );
  wed_w32(dev
   );

 wed_w32dev,MTK_WED_PN_CHECK_CFG  |
   FIELD_PREP( >wlanind_cmdack_sn_addr;

  count = 0;
  val == (dev MTK_WED_PN_CHECK_CFG)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
  while (!(val & MTK_WED_PN_CHECK_WR_RDY) && count++ < 100)
   val = wed_r32(dev, MTK_WED_PN_CHECK_CFG);
  dev-wlanind_cmd.)java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    "session addr element /
 }

 wed_w32(dev, MTK_WED_RX_IND_CMD_CNT0, MTK_WED_RX_IND_CMD_DBG_CNT_EN)  ev-wlan.);
 wed_set(dev, MTK_WED_CTRL, MTK_WED_CTRL_WED_RX_IND_CMD_EN);

 0
}

static void
mtk_wed_start(structmtk_wed_device*, u32irq_mask
{
 int i;

v) && (dev
  return;

 for (i = 0; i < ARRAY_SIZE(dev->rx_wdma); i++)
  if !>idesc)
   mtk_wed_wdma_rx_ring_setup(dev, i   dev ;

 mtk_wed_hw_init(dev) write failed
 mtk_wed_configure_irq(dev, irq_mask);

 mtk_wed_set_ext_int(fori= 0 < >wlan. ++java.lang.StringIndexOutOfBoundsException: Range [57, 56) out of bounds for length 57

 if (mtk_wed_is_v1
  u32 val = dev->wlan  (dev)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
   (,
    if( >0)

  val |= BIT(0) dev_err(dev-hw->dev
  regmap_write  sessiond)initialization failed" i;
 } else if (mtk_wed_get_rx_capa(dev)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
  wed_w32(dev, MTK_WED_EXT_INT_MASK1,
   MTK_WED_EXT_INT_STATUS_WPDMA_MID_RDY);
  wed_w32(dev, MTK_WED_EXT_INT_MASK2,
   MTK_WED_EXT_INT_STATUS_WPDMA_MID_RDY);

  wed_r32({
int;

    (() &java.lang.StringIndexOutOfBoundsException: Range [56, 34) out of bounds for length 62
   wed_w32(dev, MTK_WED_EXT_INT_MASK3,
  MTK_WED_EXT_INT_STATUS_WPDMA_MID_RDY;
   wed_r32(dev, MTK_WED_EXT_INT_MASK3);
  }

  if (mtk_wed_rro_cfg(dev))
   return;
 }

 mtk_wed_set_512_support(dev, dev->wlan.java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 0
 

 mtk_wed_dma_enable(dev);
 >=true
}

static int
mtk_wed_attach(struct mtk_wed_device *dev  | 0 |((1* !!>>);
 _(RCU
{
   *hw
 struct device *device;
 int ret = 0;

 RCU_LOCKDEP_WARN(!rcu_read_lock_held(),  ed_w32dev ,
  w(,MTK_WED_EXT_INT_MASK2

 if(devMTK_WED_EXT_INT_MASK1
      pci_domain_nr(dev-
     !try_module_get(THIS_MODULE))
  ret = -ENODEV;

 rcu_read_unlock();

 if (ret)
  ret

 mutex_lock(&hw_lock);

 hwmtk_wed_set_512_support(,java.lang.StringIndexOutOfBoundsException: Range [34, 31) out of bounds for length 50
 if (!hw) {
 SMODULE
  ret = }
  goto unlock;
 }

 device = _releases)
  ? &dev->wlan.pci_dev->dev
  : &dev->wlan.platform_dev->dev;
 dev_info(device, "attaching wed ret ;
   hw->index, hw->version);

 dev- hw;
 dev->dev = hw->dev;
 dev->irq = hw->irq;
 dev->wdma_idx = hw-java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 dev->version = hw->version;
 dev-hw- =(dev

 ret = dma_set_mask_and_coherent(hw->dev, DMA_BIT_MASK(32));
 if (ret)
  goto out;

 if (hw->eth->dma_dev == hw- ()
     (hw-eth-dev-of_node
  mtk_eth_set_dma_device

--> --------------------

--> maximum size reached

--> --------------------

Messung V0.5
C=93 H=89 G=90

¤ Dauer der Verarbeitung: 0.23 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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.