> -----Original Message----- > From: Oleksij Rempel [mailto:o.rempel@xxxxxxxxxxxxxx] > Sent: Saturday, July 10, 2021 1:38 AM > To: Pkshih > Cc: kvalo@xxxxxxxxxxxxxx; linux-wireless@xxxxxxxxxxxxxxx > Subject: Re: [PATCH 07/24] rtw89: add MAC files > > On Fri, Jun 18, 2021 at 02:46:08PM +0800, Ping-Ke Shih wrote: > > Provide interfaces to access MAC function blocks including power-on/off > > configuration. > > > > MAC initialization does power-on, and then enable HCI to download firmware. > > The BB, RF, DMAC and CMAC function blocks are enabled, and then configure > > TXRX settings that contains DMAC, CMAC, interrupt mask, and RPQ parameters. > > DMAC is short for data MAC, including data link engine (DLE), HCI function > > control (HFC), MPDU processor, security engine and so on. CMAC is short for > > control MAC, including scheduler, address CAM, RX filter, CCA control, > > TMAC, RMAC, protocol component and so on. > > > > The full MAC initialization is done for normal use case when user does > > network interface up. When device is probing, driver does partial > > initialization to do power-on and download firmware, because we need to > > read hardware capabilities from efuse and firmware. > > > > MAC supports five ports, so we can have five VIFs at most. To control MAC > > port, we control a set of registers, and the most important one among them > > is port_cfg register named R_AX_PORT_CFG_P0. We can turn on/off the port > > function and configure network type (STA or AP mode) by this register. > > The address and BSSID corresponding to this port are given by address > > and BSSID CAM that is set by firmware via H2C command. > > > > Since BT coexistence code needs to access coex registers, some help > > functions are provided to make WiFi-only case work. > > > > To access MAC registers, normally we use rtw89_writeXX/rtw89_readYY, but > > we use rtw89_mac_txpwr_write32_ZZ to access TX power register with proper > > address range checking. > > > > Signed-off-by: Ping-Ke Shih <pkshih@xxxxxxxxxxx> > > --- > > drivers/net/wireless/realtek/rtw89/mac.c | 4070 ++++++++++++++++++++++ > > drivers/net/wireless/realtek/rtw89/mac.h | 905 +++++ > > 2 files changed, 4975 insertions(+) > > create mode 100644 drivers/net/wireless/realtek/rtw89/mac.c > > create mode 100644 drivers/net/wireless/realtek/rtw89/mac.h > > > > diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c > > new file mode 100644 > > index 000000000000..e00652e11941 > > --- /dev/null > > +++ b/drivers/net/wireless/realtek/rtw89/mac.c > > @@ -0,0 +1,4070 @@ [...] > > +u16 rtw89_mac_get_plt(struct rtw89_dev *rtwdev, u8 band) > > +{ > > + u32 reg; > > + u16 cnt; > > + > > + reg = rtw89_mac_reg_by_idx(R_AX_BT_PLT, band); > > + cnt = rtw89_read32_mask(rtwdev, reg, B_AX_BT_PLT_PKT_CNT_MASK); > > + rtw89_write16_set(rtwdev, reg, B_AX_BT_PLT_RST); > > + > > + return cnt; > > +} > > This function is not used, please remove. > OK. Will remove it. [...] If I miss any comment, please let me know. -- Ping-Ke