Lines Matching defs:wl
14 #define FCXDEF_STEP 50 /* MUST <= FCXMAX_STEP and match with wl fw*/
47 CXTPS_OFF = 0x0, /* no wl tx pause*/
773 struct rtw89_btc_wl_info *wl = &cx->wl;
781 } else if (!wl->status.map.init_ok) {
786 } else if ((wl->status.map.rf_off_pre == BTC_LPS_RF_OFF &&
787 wl->status.map.rf_off == BTC_LPS_RF_OFF) ||
788 (wl->status.map.lps_pre == BTC_LPS_RF_OFF &&
789 wl->status.map.lps == BTC_LPS_RF_OFF)) {
791 "[BTC], %s(): return by wl off!!\n", __func__);
811 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
838 wl_linfo = &wl->rlink_info[i][0];
840 wl_linfo = &wl->link_info[i];
992 struct rtw89_btc_wl_info *wl = &cx->wl;
1001 if ((wl->ver_info.fw_coex & 0xffff0000) !=
1003 wl->fw_ver_mismatch = true;
1006 wl->fw_ver_mismatch = false;
1300 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
1555 wl->ver_info.fw_coex = prpt->v1.wl_fw_coex_ver;
1556 wl->ver_info.fw = prpt->v1.wl_fw_ver;
1563 if (wl->status.map.lps != BTC_LPS_RF_OFF &&
1564 !wl->status.map.rf_off) {
1575 wl->ver_info.fw_coex = le32_to_cpu(prpt->v4.wl_fw_info.cx_ver);
1576 wl->ver_info.fw = le32_to_cpu(prpt->v4.wl_fw_info.fw_ver);
1607 wl->ver_info.fw_coex = le32_to_cpu(prpt->v5.rpt_info.cx_ver);
1608 wl->ver_info.fw = le32_to_cpu(prpt->v5.rpt_info.fw_ver);
1634 wl->ver_info.fw_coex = le32_to_cpu(prpt->v105.rpt_info.cx_ver);
1635 wl->ver_info.fw = le32_to_cpu(prpt->v105.rpt_info.fw_ver);
1661 wl->ver_info.fw_coex = le32_to_cpu(prpt->v8.rpt_info.cx_ver);
1662 wl->ver_info.fw = le32_to_cpu(prpt->v8.rpt_info.fw_ver);
2377 struct rtw89_btc_wl_smap *wl_smap = &btc->cx.wl.status.map;
2553 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
2592 dm->trx_info.cn = wl->cn_report;
2593 dm->trx_info.nhm = wl->nhm.pwr;
2774 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
2777 if (wl->rf_para.tx_pwr_freerun == level)
2780 wl->rf_para.tx_pwr_freerun = level;
2806 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
2808 if (wl->rf_para.rx_gain_freerun == level)
2811 wl->rf_para.rx_gain_freerun = level;
2882 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
2885 struct rtw89_btc_wl_smap *wl_smap = &wl->status.map;
2891 link_mode = wl->role_info.link_mode;
2893 if (wl->dbcc_info.real_band[i] == RTW89_BAND_2G)
2897 link_mode = wl->role_info_v1.link_mode;
2898 dbcc_2g_phy = wl->role_info_v1.dbcc_2g_phy;
2900 link_mode = wl->role_info_v2.link_mode;
2901 dbcc_2g_phy = wl->role_info_v2.dbcc_2g_phy;
2917 wl->status.map.traffic_dir & BIT(RTW89_TFC_UL)) { /* uplink */
2918 if (wl->rssi_level == 4 && bt->rssi_level > 2)
2920 else if (wl->rssi_level == 3 && bt->rssi_level > 3)
2934 if (wl->status.map.traffic_dir & BIT(RTW89_TFC_UL))
2968 struct rtw89_btc_wl_info *wl = &cx->wl;
2972 if (wl->status.map.connecting || wl->status.map._4way ||
2973 wl->status.map.roaming) {
2975 } else if (wl->status.map.scan) { /* wl scan */
2980 } else if (wl->status.map.busy) { /* only busy */
2985 } else { /* wl idle */
2995 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
2998 struct rtw89_btc_wl_role_info *wl_rinfo = &wl->role_info;
2999 struct rtw89_btc_wl_role_info_v1 *wl_rinfo_v1 = &wl->role_info_v1;
3000 struct rtw89_btc_wl_role_info_v2 *wl_rinfo_v2 = &wl->role_info_v2;
3001 struct rtw89_btc_wl_role_info_v8 *wl_rinfo_v8 = &wl->role_info_v8;
3009 if (btc->manual_ctrl || wl->status.map.scan)
3028 if (wl->status.map.rf_off || bt->whql_test ||
3119 if (wl->afh_info.en == en &&
3120 wl->afh_info.ch == ch &&
3121 wl->afh_info.bw == bw &&
3129 wl->afh_info.en = en;
3130 wl->afh_info.ch = ch;
3131 wl->afh_info.bw = bw;
3133 _send_fw_cmd(rtwdev, BTFC_SET, SET_BT_WL_CH_INFO, &wl->afh_info, 3);
3144 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
3146 struct rtw89_btc_wl_role_info *wl_rinfo = &wl->role_info;
3147 struct rtw89_btc_wl_role_info_v1 *wl_rinfo_v1 = &wl->role_info_v1;
3148 struct rtw89_btc_wl_role_info_v2 *wl_rinfo_v2 = &wl->role_info_v2;
3149 struct rtw89_btc_wl_role_info_v8 *wl_rinfo_v8 = &wl->role_info_v8;
3197 if (!wl->status.map.busy) {/* wl idle -> freerun */
3200 } else if (wl->rssi_level > 1) {/* WL rssi < 50% (-60dBm) */
3203 } else if (wl->status.map.traffic_dir & BIT(RTW89_TFC_UL)) {
3204 if (wl->rssi_level == 0 && bt_linfo->rssi > 31) {
3207 } else if (wl->rssi_level == 1 && bt_linfo->rssi > 36) {
3213 } else if (wl->status.map.traffic_dir & BIT(RTW89_TFC_DL)) {
3308 if (btc->cx.wl.status.map._4way)
3453 if (btc->cx.wl.role_info.role_map.role.ap)
3614 struct rtw89_btc_wl_role_info_v1 *wl_rinfo = &btc->cx.wl.role_info_v1;
3617 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
3625 if (btc->cx.wl.status.map._4way)
3647 if (wl->bg_mode)
3649 else if ((wl->status.map.traffic_dir & BIT(RTW89_TFC_UL)) &&
3727 /* To avoid wl-s0 tx break by hid/hfp tx */
4038 struct rtw89_btc_wl_info *wl = &rtwdev->btc.cx.wl;
4045 plt.band = wl->pta_req_mac;
4046 if (wl->bt_polut_type[plt.band] == tx_val)
4049 wl->bt_polut_type[plt.band] = tx_val;
4072 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
4074 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
4082 dbcc_chg = wl->role_info_v1.dbcc_chg;
4084 dbcc_chg = wl->role_info_v2.dbcc_chg;
4086 dbcc_chg = wl->role_info_v8.dbcc_chg;
4103 wl->rfk_info.state != BTC_WRFK_STOP) {
4105 "[BTC], %s(): return by wl rfk!!\n", __func__);
4197 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
4199 struct rtw89_btc_wl_role_info_v8 *wl_rinfo = &wl->role_info_v8;
4201 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
4224 wl->rfk_info.state != BTC_WRFK_STOP) {
4226 "[BTC], %s(): return by wl rfk!!\n", __func__);
4321 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
4325 if (wl->status.map.rf_off || btc->dm.bt_only) {
4327 } else if (wl->status.map.lps == BTC_LPS_RF_ON) {
4336 } else if (wl->status.map.lps == BTC_LPS_RF_ON) {
4378 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
4384 case BTC_WBUSY_BNOSCAN: /*wl-busy + bt idle*/
4385 case BTC_WSCAN_BNOSCAN: /* wl-scan + bt-idle */
4388 else if (wl->status.map.traffic_dir & BIT(RTW89_TFC_DL))
4393 case BTC_WBUSY_BSCAN: /*wl-busy + bt-inq */
4397 case BTC_WSCAN_BSCAN: /* wl-scan + bt-inq */
4401 case BTC_WLINKING: /* wl-connecting + bt-inq or bt-idle */
4405 case BTC_WIDLE: /* wl-idle + bt-idle */
4417 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
4422 if (btc->cx.wl.status.map._4way) {
4424 } else if (wl->status.map.traffic_dir & BIT(RTW89_TFC_UL)) {
4431 if (wl->bg_mode)
4433 else if (wl->status.map.traffic_dir & BIT(RTW89_TFC_UL))
4444 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
4452 if (wl->status.map._4way) {
4454 } else if (wl->status.map.traffic_dir & BIT(RTW89_TFC_UL)) {
4469 if (wl->bg_mode)
4471 else if (wl->status.map.traffic_dir & BIT(RTW89_TFC_UL))
4490 case BTC_WBUSY_BNOSCAN: /* wl-busy + bt-A2DP */
4501 case BTC_WBUSY_BSCAN: /* wl-busy + bt-inq + bt-A2DP */
4504 case BTC_WSCAN_BSCAN: /* wl-scan + bt-inq + bt-A2DP */
4507 case BTC_WSCAN_BNOSCAN: /* wl-scan + bt-A2DP */
4508 case BTC_WLINKING: /* wl-connecting + bt-A2DP */
4519 case BTC_WIDLE: /* wl-idle + bt-A2DP */
4532 case BTC_WBUSY_BNOSCAN: /* wl-busy + bt-A2dp_Sink */
4535 case BTC_WBUSY_BSCAN: /* wl-busy + bt-inq + bt-A2dp_Sink */
4538 case BTC_WSCAN_BNOSCAN: /* wl-scan + bt-A2dp_Sink */
4541 case BTC_WSCAN_BSCAN: /* wl-scan + bt-inq + bt-A2dp_Sink */
4544 case BTC_WLINKING: /* wl-connecting + bt-A2dp_Sink */
4547 case BTC_WIDLE: /* wl-idle + bt-A2dp_Sink */
4560 case BTC_WBUSY_BNOSCAN: /* wl-busy + bt-PAN */
4563 case BTC_WBUSY_BSCAN: /* wl-busy + bt-inq + bt-PAN */
4566 case BTC_WSCAN_BNOSCAN: /* wl-scan + bt-PAN */
4569 case BTC_WSCAN_BSCAN: /* wl-scan + bt-inq + bt-PAN */
4572 case BTC_WLINKING: /* wl-connecting + bt-PAN */
4575 case BTC_WIDLE: /* wl-idle + bt-pan */
4591 case BTC_WBUSY_BNOSCAN: /* wl-busy + bt-A2DP+HID */
4592 case BTC_WIDLE: /* wl-idle + bt-A2DP */
4603 case BTC_WBUSY_BSCAN: /* wl-busy + bt-inq + bt-A2DP+HID */
4607 case BTC_WSCAN_BSCAN: /* wl-scan + bt-inq + bt-A2DP+HID */
4610 case BTC_WSCAN_BNOSCAN: /* wl-scan + bt-A2DP+HID */
4611 case BTC_WLINKING: /* wl-connecting + bt-A2DP+HID */
4632 case BTC_WBUSY_BNOSCAN: /* wl-busy + bt-A2DP+PAN */
4635 case BTC_WBUSY_BSCAN: /* wl-busy + bt-inq + bt-A2DP+PAN */
4638 case BTC_WSCAN_BNOSCAN: /* wl-scan + bt-A2DP+PAN */
4641 case BTC_WSCAN_BSCAN: /* wl-scan + bt-inq + bt-A2DP+PAN */
4644 case BTC_WLINKING: /* wl-connecting + bt-A2DP+PAN */
4647 case BTC_WIDLE: /* wl-idle + bt-A2DP+PAN */
4660 case BTC_WBUSY_BNOSCAN: /* wl-busy + bt-PAN+HID */
4663 case BTC_WBUSY_BSCAN: /* wl-busy + bt-inq + bt-PAN+HID */
4666 case BTC_WSCAN_BNOSCAN: /* wl-scan + bt-PAN+HID */
4669 case BTC_WSCAN_BSCAN: /* wl-scan + bt-inq + bt-PAN+HID */
4672 case BTC_WLINKING: /* wl-connecting + bt-PAN+HID */
4675 case BTC_WIDLE: /* wl-idle + bt-PAN+HID */
4688 case BTC_WBUSY_BNOSCAN: /* wl-busy + bt-A2DP+PAN+HID */
4692 case BTC_WBUSY_BSCAN: /* wl-busy + bt-inq + bt-A2DP+PAN+HID */
4696 case BTC_WSCAN_BSCAN: /* wl-scan + bt-inq + bt-A2DP+PAN+HID */
4700 case BTC_WSCAN_BNOSCAN: /* wl-scan + bt-A2DP+PAN+HID */
4701 case BTC_WLINKING: /* wl-connecting + bt-A2DP+PAN+HID */
4705 case BTC_WIDLE: /* wl-idle + bt-A2DP+PAN+HID */
4739 struct rtw89_btc_wl_rfk_info rfk = btc->cx.wl.rfk_info;
4754 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
4755 struct rtw89_btc_wl_role_info_v1 *wl_rinfo_v1 = &wl->role_info_v1;
4756 struct rtw89_btc_wl_role_info_v2 *wl_rinfo_v2 = &wl->role_info_v2;
4757 struct rtw89_btc_wl_role_info_v8 *wl_rinfo_v8 = &wl->role_info_v8;
4758 struct rtw89_btc_wl_role_info *wl_rinfo_v0 = &wl->role_info;
4759 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
4837 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
4838 struct rtw89_btc_wl_role_info_v2 *wl_rinfo = &wl->role_info_v2;
4876 if ((wl->coex_mode == BTC_MODE_NORMAL &&
4907 struct rtw89_btc_wl_info *wl = &cx->wl;
4916 plink = &wl->rlink_info[port][0];
4918 plink = &wl->link_info[port];
4963 struct rtw89_btc_wl_info *wl = &cx->wl;
4968 struct rtw89_btc_wl_role_info *wl_rinfo = &wl->role_info;
4969 struct rtw89_btc_wl_role_info_v1 *wl_rinfo_v1 = &wl->role_info_v1;
4970 struct rtw89_btc_wl_role_info_v2 *wl_rinfo_v2 = &wl->role_info_v2;
4971 struct rtw89_btc_wl_role_info_v8 *wl_rinfo_v8 = &wl->role_info_v8;
5042 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5043 struct rtw89_btc_wl_role_info *wl_rinfo = &wl->role_info;
5044 struct rtw89_btc_wl_role_info_v1 *wl_rinfo_v1 = &wl->role_info_v1;
5045 struct rtw89_btc_wl_role_info_v2 *wl_rinfo_v2 = &wl->role_info_v2;
5046 struct rtw89_btc_wl_role_info_v8 *wl_rinfo_v8 = &wl->role_info_v8;
5082 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5083 struct rtw89_btc_wl_smap *wl_smap = &wl->status.map;
5116 if (wl->scbd_change) {
5117 rtw89_mac_cfg_sb(rtwdev, wl->scbd);
5119 wl->scbd);
5120 wl->scbd_change = false;
5218 if (btc->cx.wl.status.map._4way)
5220 else if (btc->cx.wl.status.val & btc_scanning_map.val)
5239 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5240 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
5252 if (wl->scan_info.band[RTW89_PHY_0] != RTW89_BAND_2G)
5297 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5300 struct rtw89_btc_wl_role_info_v1 *wl_rinfo = &wl->role_info_v1;
5328 if (wl->status.map._4way) {
5359 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5362 struct rtw89_btc_wl_role_info_v2 *wl_rinfo = &wl->role_info_v2;
5390 if (wl->status.map._4way) {
5421 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5427 if (wl->status.map._4way)
5530 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5537 scbd_val = state ? wl->scbd | val : wl->scbd & ~val;
5542 if (scbd_val != wl->scbd || force_exec) {
5543 wl->scbd = scbd_val;
5544 wl->scbd_change = true;
5575 btc->cx.wl.dbcc_info.real_band[phy_idx] =
5576 btc->cx.wl.scan_info.phy_map & BIT(phy_idx) ?
5577 btc->cx.wl.dbcc_info.scan_band[phy_idx] :
5578 btc->cx.wl.dbcc_info.op_band[phy_idx];
5584 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5585 struct rtw89_btc_wl_link_info *wl_linfo = wl->link_info;
5586 struct rtw89_btc_wl_role_info *wl_rinfo = &wl->role_info;
5587 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
5608 wl->port_id[wl_linfo[i].role] = wl_linfo[i].pid;
5735 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5736 struct rtw89_btc_wl_link_info *wl_linfo = wl->link_info;
5737 struct rtw89_btc_wl_role_info_v1 *wl_rinfo = &wl->role_info_v1;
5738 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
5759 wl->port_id[wl_linfo[i].role] = wl_linfo[i].pid;
5885 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5886 struct rtw89_btc_wl_link_info *wl_linfo = wl->link_info;
5887 struct rtw89_btc_wl_role_info_v2 *wl_rinfo = &wl->role_info_v2;
5888 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
5909 wl->port_id[wl_linfo[i].role] = wl_linfo[i].pid;
6067 struct rtw89_btc_wl_info *wl = &rtwdev->btc.cx.wl;
6068 struct rtw89_btc_wl_role_info_v8 *wl_rinfo = &wl->role_info_v8;
6119 struct rtw89_btc_wl_role_info_v8 *wl_rinfo = &rtwdev->btc.cx.wl.role_info_v8;
6161 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
6163 struct rtw89_btc_wl_role_info_v8 *wl_rinfo = &wl->role_info_v8;
6164 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
6179 /* Extract wl->link_info[role_id][rlink_id] to wl->role_info
6185 wl_linfo = &wl->rlink_info[role_id][rlink_id];
6215 wl->is_5g_hi_channel = false;
6216 wl->bg_mode = false;
6248 wl->is_5g_hi_channel = 1;
6252 wl->bg_mode = 1;
6348 struct rtw89_btc_wl_info *wl = &cx->wl;
6353 if (wl->status.map._4way)
6354 wl->status.map._4way = false;
6355 if (wl->status.map.connecting)
6356 wl->status.map.connecting = false;
6385 struct rtw89_btc_wl_info *wl = &cx->wl;
6390 if (wl->rfk_info.state != BTC_WRFK_STOP) {
6395 wl->rfk_info.state = BTC_WRFK_STOP;
6494 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
6496 struct rtw89_btc_wl_role_info *wl_rinfo = &wl->role_info;
6497 struct rtw89_btc_wl_role_info_v1 *wl_rinfo_v1 = &wl->role_info_v1;
6498 struct rtw89_btc_wl_role_info_v2 *wl_rinfo_v2 = &wl->role_info_v2;
6499 struct rtw89_btc_wl_role_info_v8 *wl_rinfo_v8 = &wl->role_info_v8;
6549 if (!wl->status.map.init_ok) {
6556 if (wl->status.map.rf_off_pre == wl->status.map.rf_off &&
6557 wl->status.map.lps_pre == wl->status.map.lps) {
6565 if (wl->status.map.rf_off == 1 ||
6566 wl->status.map.lps == BTC_LPS_RF_OFF) {
6592 if (wl->status.map.rf_off || wl->status.map.lps || dm->bt_only) {
6613 if (wl->rfk_info.state != BTC_WRFK_STOP) {
6627 if (wl->status.map.scan) {
6638 if (wl->status.map.traffic_dir & BIT(RTW89_TFC_DL))
6704 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
6709 btc->cx.wl.status.map.rf_off = 1;
6710 btc->cx.wl.status.map.busy = 0;
6711 wl->status.map.lps = BTC_LPS_OFF;
6718 btc->cx.wl.status.map.rf_off_pre = btc->cx.wl.status.map.rf_off;
6727 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
6732 dm->init_info.init_v7.wl_init_ok = (u8)wl->status.map.init_ok;
6739 dm->init_info.init.wl_init_ok = (u8)wl->status.map.init_ok;
6751 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
6766 wl->coex_mode = mode;
6770 wl->status.map.rf_off = mode == BTC_MODE_WLOFF ? 1 : 0;
6775 if (!wl->status.map.init_ok) {
6806 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
6816 wl->status.map.scan = true;
6817 wl->scan_info.band[phy_idx] = band;
6818 wl->scan_info.phy_map |= BIT(phy_idx);
6822 wl->dbcc_info.scan_band[phy_idx] = band;
6833 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
6839 wl->status.map.scan = false;
6840 wl->scan_info.phy_map &= ~BIT(phy_idx);
6854 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
6865 wl->scan_info.band[phy_idx] = band;
6866 wl->scan_info.phy_map |= BIT(phy_idx);
6870 wl->dbcc_info.scan_band[phy_idx] = band;
6882 struct rtw89_btc_wl_info *wl = &cx->wl;
6895 wl->status.map.connecting = true;
6902 wl->status.map._4way = true;
6912 wl->status.map._4way = false;
7017 u8 mode = rtwdev->btc.cx.wl.role_info.link_mode;
7122 if (bt->igno_wl && !cx->wl.status.map.rf_off)
7177 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
7241 wlinfo = &wl->link_info[r.pid];
7254 wlinfo = &wl->rlink_info[r.pid][rlink_id];
7256 link_mode_ori = wl->role_info_v8.link_mode;
7257 pta_req_mac_ori = wl->pta_req_mac;
7260 if (wl->role_info_v8.link_mode != link_mode_ori) {
7261 wl->role_info_v8.link_mode_chg = 1;
7271 if (wl->pta_req_mac != pta_req_mac_ori)
7272 wl->pta_reg_mac_chg = 1;
7280 wl->status.map.connecting = 1;
7282 wl->status.map.connecting = 0;
7285 wl->status.map._4way = false;
7294 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
7303 wl->status.map.rf_off = 1;
7304 wl->status.map.lps = BTC_LPS_OFF;
7305 wl->status.map.busy = 0;
7308 wl->status.map.rf_off = 0;
7309 wl->status.map.lps = BTC_LPS_RF_OFF;
7310 wl->status.map.busy = 0;
7313 wl->status.map.rf_off = 0;
7314 wl->status.map.lps = BTC_LPS_RF_ON;
7315 wl->status.map.busy = 0;
7319 wl->status.map.rf_off = 0;
7320 wl->status.map.lps = BTC_LPS_OFF;
7340 wl->status.map.lps_pre != BTC_LPS_OFF)
7348 wl->status.map.rf_off_pre = wl->status.map.rf_off;
7349 wl->status.map.lps_pre = wl->status.map.lps;
7358 struct rtw89_btc_wl_info *wl = &cx->wl;
7361 wl->rfk_info.type = type;
7362 wl->rfk_info.path_map = FIELD_GET(BTC_RFK_PATH_MAP, phy_path);
7363 wl->rfk_info.phy_map = FIELD_GET(BTC_RFK_PHY_MAP, phy_path);
7364 wl->rfk_info.band = FIELD_GET(BTC_RFK_BAND_MAP, phy_path);
7368 __func__, wl->rfk_info.phy_map, wl->rfk_info.path_map,
7374 wl->rfk_info.state = result ? BTC_WRFK_START : BTC_WRFK_STOP;
7382 if (wl->rfk_info.state == BTC_WRFK_STOP) {
7386 wl->rfk_info.state = state;
7391 wl->rfk_info.state = BTC_WRFK_STOP;
7403 if (wl->rfk_info.state == BTC_WRFK_START ||
7404 wl->rfk_info.state == BTC_WRFK_STOP)
7407 if (wl->rfk_info.state == BTC_WRFK_START)
7473 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
7495 link_info = &wl->link_info[port];
7534 link_info = &wl->link_info[port];
7565 r = &wl->role_info;
7571 r1 = &wl->role_info_v1;
7606 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
7614 wl->rssi_level = 0;
7619 wl->rssi_level = i;
7624 if (dm->trx_info.wl_rssi != wl->rssi_level)
7625 dm->trx_info.wl_rssi = wl->rssi_level;
7628 __func__, !!wl->status.map.busy);
7630 _write_scbd(rtwdev, BTC_WSCB_WLBUSY, (!!wl->status.map.busy));
7635 wl->status.map.busy = data.busy_all;
7636 wl->status.map.traffic_dir = data.dir_all;
7712 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
7731 ver_main = FIELD_GET(GENMASK(31, 24), wl->ver_info.fw_coex);
7732 ver_sub = FIELD_GET(GENMASK(23, 16), wl->ver_info.fw_coex);
7733 ver_hotfix = FIELD_GET(GENMASK(15, 8), wl->ver_info.fw_coex);
7734 id_branch = FIELD_GET(GENMASK(7, 0), wl->ver_info.fw_coex);
7742 (wl->ver_info.fw_coex >= chip->wlcx_desired ?
7755 ver_main = FIELD_GET(GENMASK(31, 24), wl->ver_info.fw);
7756 ver_sub = FIELD_GET(GENMASK(23, 16), wl->ver_info.fw);
7757 ver_hotfix = FIELD_GET(GENMASK(15, 8), wl->ver_info.fw);
7758 id_branch = FIELD_GET(GENMASK(7, 0), wl->ver_info.fw);
7792 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
7793 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
7812 plink = &btc->cx.wl.rlink_info[i][0];
7814 plink = &btc->cx.wl.link_info[i];
7855 struct rtw89_btc_wl_info *wl = &cx->wl;
7856 struct rtw89_btc_wl_role_info *wl_rinfo = &wl->role_info;
7857 struct rtw89_btc_wl_role_info_v1 *wl_rinfo_v1 = &wl->role_info_v1;
7858 struct rtw89_btc_wl_role_info_v2 *wl_rinfo_v2 = &wl->role_info_v2;
7859 struct rtw89_btc_wl_role_info_v8 *wl_rinfo_v8 = &wl->role_info_v8;
7882 wl->status.map.rf_off, wl->status.map.lps,
7883 wl->status.map.scan ? "Y" : "N",
7884 wl->scan_info.band[RTW89_PHY_0], wl->scan_info.phy_map);
7888 wl->status.map.connecting ? "Y" : "N",
7889 wl->status.map.roaming ? "Y" : "N",
7890 wl->status.map._4way ? "Y" : "N",
7891 wl->status.map.init_ok ? "Y" : "N");
7959 struct rtw89_btc_wl_info *wl = &cx->wl;
8027 wl->afh_info.en, wl->afh_info.ch, wl->afh_info.bw);
8440 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
8457 id_to_mode(wl->coex_mode),
8479 "[trx_ctrl]", wl->rssi_level, dm->trx_para_level);
8484 "[trx_ctrl]", wl->rssi_level, dm->trx_para_level,
8688 seq_printf(m, " %-15s : avg_t[wl:%d/bt:%d/lk:%d.%03d]",
8694 seq_printf(m, ", max_t[wl:%d/bt:%d/lk:%d.%03d]",
8699 seq_printf(m, ", maxdiff_t[wl:%d/bt:%d]\n",
8706 /* 1 cycle record 1 wl-slot and 1 bt-slot */
8812 seq_printf(m, " %-15s : avg_t[wl:%d/bt:%d/lk:%d.%03d]",
8819 ", max_t[wl:%d/bt:%d/lk:%d.%03d]",
8825 ", maxdiff_t[wl:%d/bt:%d]\n",
8833 /* 1 cycle record 1 wl-slot and 1 bt-slot */
8944 seq_printf(m, " %-15s : avg_t[wl:%d/bt:%d/lk:%d.%03d]",
8951 ", max_t[wl:%d/bt:%d/lk:%d.%03d]",
8957 ", maxdiff_t[wl:%d/bt:%d]\n",
8965 /* 1 cycle record 1 wl-slot and 1 bt-slot */
9076 seq_printf(m, " %-15s : avg_t[wl:%d/bt:%d/lk:%d.%03d]",
9083 ", max_t[wl:%d/bt:%d/lk:%d.%03d]\n",
9093 /* 1 cycle record 1 wl-slot and 1 bt-slot */
9197 seq_printf(m, "\n\r %-15s : avg_t[wl:%d/bt:%d/lk:%d.%03d]",
9203 seq_printf(m, ", max_t[wl:%d/bt:%d(>%dms:%d)/lk:%d.%03d]",
9231 /* 1 cycle = 1 wl-slot + 1 bt-slot */
9626 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
9640 "[scoreboard]", wl->scbd, cx->cnt_wl[BTC_WCNT_SCBDUPDATE],
9704 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
9718 "[scoreboard]", wl->scbd, cx->cnt_wl[BTC_WCNT_SCBDUPDATE],
9733 id_to_polut(wl->bt_polut_type[wl->pta_req_mac]));
9782 struct rtw89_btc_wl_info *wl = &cx->wl;
9796 "[scoreboard]", wl->scbd, cx->cnt_wl[BTC_WCNT_SCBDUPDATE],
9808 wl->pta_req_mac, id_to_polut(wl->bt_polut_type[wl->pta_req_mac]));
9853 struct rtw89_btc_wl_info *wl = &cx->wl;
9864 if (pcinfo->valid && !wl->status.map.lps && !wl->status.map.rf_off) {
9957 struct rtw89_btc_wl_info *wl = &cx->wl;
9968 if (pcinfo->valid && !wl->status.map.lps && !wl->status.map.rf_off) {
10069 struct rtw89_btc_wl_info *wl = &cx->wl;
10079 if (pcinfo->valid && !wl->status.map.lps && !wl->status.map.rf_off) {
10144 wl->status.map.lps, wl->status.map.rf_off);
10184 struct rtw89_btc_wl_info *wl = &cx->wl;
10194 if (pcinfo->valid && !wl->status.map.lps && !wl->status.map.rf_off) {
10259 wl->status.map.lps, wl->status.map.rf_off);
10298 struct rtw89_btc_wl_info *wl = &cx->wl;
10309 if (pcinfo->valid && wl->status.map.lps != BTC_LPS_RF_OFF &&
10310 !wl->status.map.rf_off) {
10348 wl->rfk_info.proc_time);
10362 wl->status.map.lps, wl->status.map.rf_off);