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*/
795 struct rtw89_btc_wl_info *wl = &cx->wl;
803 } else if (!wl->status.map.init_ok) {
808 } else if ((wl->status.map.rf_off_pre == BTC_LPS_RF_OFF &&
809 wl->status.map.rf_off == BTC_LPS_RF_OFF) ||
810 (wl->status.map.lps_pre == BTC_LPS_RF_OFF &&
811 wl->status.map.lps == BTC_LPS_RF_OFF)) {
813 "[BTC], %s(): return by wl off!!\n", __func__);
833 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
860 wl_linfo = &wl->rlink_info[i][0];
862 wl_linfo = &wl->link_info[i];
1014 struct rtw89_btc_wl_info *wl = &cx->wl;
1023 if ((wl->ver_info.fw_coex & 0xffff0000) !=
1025 wl->fw_ver_mismatch = true;
1028 wl->fw_ver_mismatch = false;
1322 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
1581 wl->ver_info.fw_coex = prpt->v1.wl_fw_coex_ver;
1582 wl->ver_info.fw = prpt->v1.wl_fw_ver;
1589 if (wl->status.map.lps != BTC_LPS_RF_OFF &&
1590 !wl->status.map.rf_off) {
1601 wl->ver_info.fw_coex = le32_to_cpu(prpt->v4.wl_fw_info.cx_ver);
1602 wl->ver_info.fw = le32_to_cpu(prpt->v4.wl_fw_info.fw_ver);
1633 wl->ver_info.fw_coex = le32_to_cpu(prpt->v5.rpt_info.cx_ver);
1634 wl->ver_info.fw = le32_to_cpu(prpt->v5.rpt_info.fw_ver);
1660 wl->ver_info.fw_coex = le32_to_cpu(prpt->v105.rpt_info.cx_ver);
1661 wl->ver_info.fw = le32_to_cpu(prpt->v105.rpt_info.fw_ver);
1687 wl->ver_info.fw_coex = le32_to_cpu(prpt->v7.rpt_info.cx_ver);
1688 wl->ver_info.fw = le32_to_cpu(prpt->v7.rpt_info.fw_ver);
1719 wl->ver_info.fw_coex = le32_to_cpu(prpt->v8.rpt_info.cx_ver);
1720 wl->ver_info.fw = le32_to_cpu(prpt->v8.rpt_info.fw_ver);
2435 struct rtw89_btc_wl_smap *wl_smap = &btc->cx.wl.status.map;
2615 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
2658 dm->trx_info.cn = wl->cn_report;
2659 dm->trx_info.nhm = wl->nhm.pwr;
2840 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
2843 if (wl->rf_para.tx_pwr_freerun == level)
2846 wl->rf_para.tx_pwr_freerun = level;
2872 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
2874 if (wl->rf_para.rx_gain_freerun == level)
2877 wl->rf_para.rx_gain_freerun = level;
2948 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
2951 struct rtw89_btc_wl_smap *wl_smap = &wl->status.map;
2957 link_mode = wl->role_info.link_mode;
2959 if (wl->dbcc_info.real_band[i] == RTW89_BAND_2G)
2963 link_mode = wl->role_info_v1.link_mode;
2964 dbcc_2g_phy = wl->role_info_v1.dbcc_2g_phy;
2966 link_mode = wl->role_info_v2.link_mode;
2967 dbcc_2g_phy = wl->role_info_v2.dbcc_2g_phy;
2983 wl->status.map.traffic_dir & BIT(RTW89_TFC_UL)) { /* uplink */
2984 if (wl->rssi_level == 4 && bt->rssi_level > 2)
2986 else if (wl->rssi_level == 3 && bt->rssi_level > 3)
3000 if (wl->status.map.traffic_dir & BIT(RTW89_TFC_UL))
3034 struct rtw89_btc_wl_info *wl = &cx->wl;
3038 if (wl->status.map.connecting || wl->status.map._4way ||
3039 wl->status.map.roaming || wl->status.map.dbccing) {
3041 } else if (wl->status.map.scan) { /* wl scan */
3046 } else if (wl->status.map.busy) { /* only busy */
3051 } else { /* wl idle */
3061 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
3064 struct rtw89_btc_wl_role_info *wl_rinfo = &wl->role_info;
3065 struct rtw89_btc_wl_role_info_v1 *wl_rinfo_v1 = &wl->role_info_v1;
3066 struct rtw89_btc_wl_role_info_v2 *wl_rinfo_v2 = &wl->role_info_v2;
3067 struct rtw89_btc_wl_role_info_v7 *wl_rinfo_v7 = &wl->role_info_v7;
3068 struct rtw89_btc_wl_role_info_v8 *wl_rinfo_v8 = &wl->role_info_v8;
3077 if (btc->manual_ctrl || wl->status.map.scan)
3099 if (wl->status.map.rf_off || bt->whql_test ||
3203 if (wl->afh_info.en == en &&
3204 wl->afh_info.ch == ch &&
3205 wl->afh_info.bw == bw &&
3213 wl->afh_info.en = en;
3214 wl->afh_info.ch = ch;
3215 wl->afh_info.bw = bw;
3217 _send_fw_cmd(rtwdev, BTFC_SET, SET_BT_WL_CH_INFO, &wl->afh_info, 3);
3228 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
3230 struct rtw89_btc_wl_role_info *wl_rinfo = &wl->role_info;
3231 struct rtw89_btc_wl_role_info_v1 *wl_rinfo_v1 = &wl->role_info_v1;
3232 struct rtw89_btc_wl_role_info_v2 *wl_rinfo_v2 = &wl->role_info_v2;
3233 struct rtw89_btc_wl_role_info_v7 *wl_rinfo_v7 = &wl->role_info_v7;
3234 struct rtw89_btc_wl_role_info_v8 *wl_rinfo_v8 = &wl->role_info_v8;
3284 if (!wl->status.map.busy) {/* wl idle -> freerun */
3287 } else if (wl->rssi_level > 1) {/* WL rssi < 50% (-60dBm) */
3290 } else if (wl->status.map.traffic_dir & BIT(RTW89_TFC_UL)) {
3291 if (wl->rssi_level == 0 && bt_linfo->rssi > 31) {
3294 } else if (wl->rssi_level == 1 && bt_linfo->rssi > 36) {
3300 } else if (wl->status.map.traffic_dir & BIT(RTW89_TFC_DL)) {
3395 if (btc->cx.wl.status.map._4way)
3540 if (btc->cx.wl.role_info.role_map.role.ap)
3701 struct rtw89_btc_wl_role_info_v1 *wl_rinfo = &btc->cx.wl.role_info_v1;
3705 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
3713 if (btc->cx.wl.status.map._4way)
3735 if (wl->bg_mode)
3737 else if ((wl->status.map.traffic_dir & BIT(RTW89_TFC_UL)) &&
3822 /* To avoid wl-s0 tx break by hid/hfp tx */
4138 struct rtw89_btc_wl_info *wl = &rtwdev->btc.cx.wl;
4145 plt.band = wl->pta_req_mac;
4146 if (wl->bt_polut_type[plt.band] == tx_val)
4149 wl->bt_polut_type[plt.band] = tx_val;
4172 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
4174 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
4182 dbcc_chg = wl->role_info_v1.dbcc_chg;
4184 dbcc_chg = wl->role_info_v2.dbcc_chg;
4186 dbcc_chg = wl->role_info_v7.dbcc_chg;
4188 dbcc_chg = wl->role_info_v8.dbcc_chg;
4205 wl->rfk_info.state != BTC_WRFK_STOP) {
4207 "[BTC], %s(): return by wl rfk!!\n", __func__);
4300 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
4302 struct rtw89_btc_wl_role_info_v8 *wl_rinfo = &wl->role_info_v8;
4304 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
4327 wl->rfk_info.state != BTC_WRFK_STOP) {
4329 "[BTC], %s(): return by wl rfk!!\n", __func__);
4424 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
4428 if (wl->status.map.rf_off || btc->dm.bt_only) {
4430 } else if (wl->status.map.lps == BTC_LPS_RF_ON) {
4439 } else if (wl->status.map.lps == BTC_LPS_RF_ON) {
4481 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
4487 case BTC_WBUSY_BNOSCAN: /*wl-busy + bt idle*/
4488 case BTC_WSCAN_BNOSCAN: /* wl-scan + bt-idle */
4491 else if (wl->status.map.traffic_dir & BIT(RTW89_TFC_DL))
4496 case BTC_WBUSY_BSCAN: /*wl-busy + bt-inq */
4500 case BTC_WSCAN_BSCAN: /* wl-scan + bt-inq */
4504 case BTC_WLINKING: /* wl-connecting + bt-inq or bt-idle */
4508 case BTC_WIDLE: /* wl-idle + bt-idle */
4520 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
4525 if (btc->cx.wl.status.map._4way) {
4527 } else if (wl->status.map.traffic_dir & BIT(RTW89_TFC_UL)) {
4534 if (wl->bg_mode)
4536 else if (wl->status.map.traffic_dir & BIT(RTW89_TFC_UL))
4547 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
4555 if (wl->status.map._4way) {
4557 } else if (wl->status.map.traffic_dir & BIT(RTW89_TFC_UL)) {
4572 if (wl->bg_mode)
4574 else if (wl->status.map.traffic_dir & BIT(RTW89_TFC_UL))
4593 case BTC_WBUSY_BNOSCAN: /* wl-busy + bt-A2DP */
4604 case BTC_WBUSY_BSCAN: /* wl-busy + bt-inq + bt-A2DP */
4607 case BTC_WSCAN_BSCAN: /* wl-scan + bt-inq + bt-A2DP */
4610 case BTC_WSCAN_BNOSCAN: /* wl-scan + bt-A2DP */
4611 case BTC_WLINKING: /* wl-connecting + bt-A2DP */
4622 case BTC_WIDLE: /* wl-idle + bt-A2DP */
4635 case BTC_WBUSY_BNOSCAN: /* wl-busy + bt-A2dp_Sink */
4638 case BTC_WBUSY_BSCAN: /* wl-busy + bt-inq + bt-A2dp_Sink */
4641 case BTC_WSCAN_BNOSCAN: /* wl-scan + bt-A2dp_Sink */
4644 case BTC_WSCAN_BSCAN: /* wl-scan + bt-inq + bt-A2dp_Sink */
4647 case BTC_WLINKING: /* wl-connecting + bt-A2dp_Sink */
4650 case BTC_WIDLE: /* wl-idle + bt-A2dp_Sink */
4666 case BTC_WBUSY_BNOSCAN: /* wl-busy + bt-PAN */
4675 case BTC_WBUSY_BSCAN: /* wl-busy + bt-inq + bt-PAN */
4678 case BTC_WSCAN_BNOSCAN: /* wl-scan + bt-PAN */
4681 case BTC_WSCAN_BSCAN: /* wl-scan + bt-inq + bt-PAN */
4684 case BTC_WLINKING: /* wl-connecting + bt-PAN */
4687 case BTC_WIDLE: /* wl-idle + bt-pan */
4703 case BTC_WBUSY_BNOSCAN: /* wl-busy + bt-A2DP+HID */
4704 case BTC_WIDLE: /* wl-idle + bt-A2DP */
4715 case BTC_WBUSY_BSCAN: /* wl-busy + bt-inq + bt-A2DP+HID */
4719 case BTC_WSCAN_BSCAN: /* wl-scan + bt-inq + bt-A2DP+HID */
4722 case BTC_WSCAN_BNOSCAN: /* wl-scan + bt-A2DP+HID */
4723 case BTC_WLINKING: /* wl-connecting + bt-A2DP+HID */
4744 case BTC_WBUSY_BNOSCAN: /* wl-busy + bt-A2DP+PAN */
4747 case BTC_WBUSY_BSCAN: /* wl-busy + bt-inq + bt-A2DP+PAN */
4750 case BTC_WSCAN_BNOSCAN: /* wl-scan + bt-A2DP+PAN */
4753 case BTC_WSCAN_BSCAN: /* wl-scan + bt-inq + bt-A2DP+PAN */
4756 case BTC_WLINKING: /* wl-connecting + bt-A2DP+PAN */
4759 case BTC_WIDLE: /* wl-idle + bt-A2DP+PAN */
4772 case BTC_WBUSY_BNOSCAN: /* wl-busy + bt-PAN+HID */
4775 case BTC_WBUSY_BSCAN: /* wl-busy + bt-inq + bt-PAN+HID */
4778 case BTC_WSCAN_BNOSCAN: /* wl-scan + bt-PAN+HID */
4781 case BTC_WSCAN_BSCAN: /* wl-scan + bt-inq + bt-PAN+HID */
4784 case BTC_WLINKING: /* wl-connecting + bt-PAN+HID */
4787 case BTC_WIDLE: /* wl-idle + bt-PAN+HID */
4800 case BTC_WBUSY_BNOSCAN: /* wl-busy + bt-A2DP+PAN+HID */
4804 case BTC_WBUSY_BSCAN: /* wl-busy + bt-inq + bt-A2DP+PAN+HID */
4808 case BTC_WSCAN_BSCAN: /* wl-scan + bt-inq + bt-A2DP+PAN+HID */
4812 case BTC_WSCAN_BNOSCAN: /* wl-scan + bt-A2DP+PAN+HID */
4813 case BTC_WLINKING: /* wl-connecting + bt-A2DP+PAN+HID */
4817 case BTC_WIDLE: /* wl-idle + bt-A2DP+PAN+HID */
4851 struct rtw89_btc_wl_rfk_info rfk = btc->cx.wl.rfk_info;
4874 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
4875 struct rtw89_btc_wl_role_info_v1 *wl_rinfo_v1 = &wl->role_info_v1;
4876 struct rtw89_btc_wl_role_info_v2 *wl_rinfo_v2 = &wl->role_info_v2;
4877 struct rtw89_btc_wl_role_info_v7 *wl_rinfo_v7 = &wl->role_info_v7;
4878 struct rtw89_btc_wl_role_info_v8 *wl_rinfo_v8 = &wl->role_info_v8;
4879 struct rtw89_btc_wl_role_info *wl_rinfo_v0 = &wl->role_info;
4880 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
4964 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
4965 struct rtw89_btc_wl_role_info_v2 *rinfo_v2 = &wl->role_info_v2;
4966 struct rtw89_btc_wl_role_info_v7 *rinfo_v7 = &wl->role_info_v7;
4967 struct rtw89_btc_wl_role_info_v8 *rinfo_v8 = &wl->role_info_v8;
5022 if ((wl->coex_mode == BTC_MODE_NORMAL &&
5051 struct rtw89_btc_wl_info *wl = &cx->wl;
5060 plink = &wl->rlink_info[port][0];
5062 plink = &wl->link_info[port];
5122 struct rtw89_btc_wl_info *wl = &cx->wl;
5127 struct rtw89_btc_wl_role_info *wl_rinfo = &wl->role_info;
5128 struct rtw89_btc_wl_role_info_v1 *wl_rinfo_v1 = &wl->role_info_v1;
5129 struct rtw89_btc_wl_role_info_v2 *wl_rinfo_v2 = &wl->role_info_v2;
5130 struct rtw89_btc_wl_role_info_v7 *wl_rinfo_v7 = &wl->role_info_v7;
5131 struct rtw89_btc_wl_role_info_v8 *wl_rinfo_v8 = &wl->role_info_v8;
5204 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5205 struct rtw89_btc_wl_role_info *wl_rinfo = &wl->role_info;
5206 struct rtw89_btc_wl_role_info_v1 *wl_rinfo_v1 = &wl->role_info_v1;
5207 struct rtw89_btc_wl_role_info_v2 *wl_rinfo_v2 = &wl->role_info_v2;
5208 struct rtw89_btc_wl_role_info_v7 *wl_rinfo_v7 = &wl->role_info_v7;
5209 struct rtw89_btc_wl_role_info_v8 *wl_rinfo_v8 = &wl->role_info_v8;
5247 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5248 struct rtw89_btc_wl_smap *wl_smap = &wl->status.map;
5281 if (wl->scbd_change) {
5282 rtw89_mac_cfg_sb(rtwdev, wl->scbd);
5284 wl->scbd);
5285 wl->scbd_change = false;
5387 if (btc->cx.wl.status.map._4way)
5389 else if (btc->cx.wl.status.val & btc_scanning_map.val)
5408 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5409 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
5421 if (wl->scan_info.band[RTW89_PHY_0] != RTW89_BAND_2G)
5466 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5469 struct rtw89_btc_wl_role_info_v1 *wl_rinfo = &wl->role_info_v1;
5497 if (wl->status.map._4way) {
5528 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5531 struct rtw89_btc_wl_role_info_v2 *rinfo_v2 = &wl->role_info_v2;
5532 struct rtw89_btc_wl_role_info_v7 *rinfo_v7 = &wl->role_info_v7;
5570 if (wl->status.map._4way) {
5601 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5607 if (wl->status.map._4way)
5710 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5717 scbd_val = state ? wl->scbd | val : wl->scbd & ~val;
5722 if (scbd_val != wl->scbd || force_exec) {
5723 wl->scbd = scbd_val;
5724 wl->scbd_change = true;
5763 btc->cx.wl.dbcc_info.real_band[phy_idx] =
5764 btc->cx.wl.scan_info.phy_map & BIT(phy_idx) ?
5765 btc->cx.wl.dbcc_info.scan_band[phy_idx] :
5766 btc->cx.wl.dbcc_info.op_band[phy_idx];
5772 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5773 struct rtw89_btc_wl_link_info *wl_linfo = wl->link_info;
5774 struct rtw89_btc_wl_role_info *wl_rinfo = &wl->role_info;
5775 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
5796 wl->port_id[wl_linfo[i].role] = wl_linfo[i].pid;
5923 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
5924 struct rtw89_btc_wl_link_info *wl_linfo = wl->link_info;
5925 struct rtw89_btc_wl_role_info_v1 *wl_rinfo = &wl->role_info_v1;
5926 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
5947 wl->port_id[wl_linfo[i].role] = wl_linfo[i].pid;
6073 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
6074 struct rtw89_btc_wl_link_info *wl_linfo = wl->link_info;
6075 struct rtw89_btc_wl_role_info_v2 *wl_rinfo = &wl->role_info_v2;
6076 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
6097 wl->port_id[wl_linfo[i].role] = wl_linfo[i].pid;
6255 struct rtw89_btc_wl_info *wl = &rtwdev->btc.cx.wl;
6256 struct rtw89_btc_wl_role_info_v7 *rinfo_v7 = &wl->role_info_v7;
6257 struct rtw89_btc_wl_role_info_v8 *rinfo_v8 = &wl->role_info_v8;
6315 struct rtw89_btc_wl_role_info_v8 *rinfo_v8 = &rtwdev->btc.cx.wl.role_info_v8;
6316 struct rtw89_btc_wl_role_info_v7 *rinfo_v7 = &rtwdev->btc.cx.wl.role_info_v7;
6387 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
6388 struct rtw89_btc_wl_role_info_v7 *wl_rinfo = &wl->role_info_v7;
6389 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
6390 struct rtw89_btc_wl_link_info *wl_linfo = wl->link_info;
6467 wl->bg_mode = 1;
6469 wl->he_mode = true;
6476 wl->is_5g_hi_channel = 1;
6478 wl->is_5g_hi_channel = 0;
6482 wl->client_cnt_inc_2g = client_inc_2g;
6543 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
6545 struct rtw89_btc_wl_role_info_v8 *wl_rinfo = &wl->role_info_v8;
6546 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
6561 /* Extract wl->link_info[role_id][rlink_id] to wl->role_info
6567 wl_linfo = &wl->rlink_info[role_id][rlink_id];
6597 wl->is_5g_hi_channel = false;
6598 wl->bg_mode = false;
6630 wl->is_5g_hi_channel = 1;
6634 wl->bg_mode = 1;
6730 struct rtw89_btc_wl_info *wl = &cx->wl;
6735 if (wl->status.map._4way)
6736 wl->status.map._4way = false;
6737 if (wl->status.map.connecting)
6738 wl->status.map.connecting = false;
6767 struct rtw89_btc_wl_info *wl = &cx->wl;
6772 if (wl->rfk_info.state != BTC_WRFK_STOP) {
6777 wl->rfk_info.state = BTC_WRFK_STOP;
6876 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
6878 struct rtw89_btc_wl_role_info *wl_rinfo = &wl->role_info;
6879 struct rtw89_btc_wl_role_info_v1 *wl_rinfo_v1 = &wl->role_info_v1;
6880 struct rtw89_btc_wl_role_info_v2 *wl_rinfo_v2 = &wl->role_info_v2;
6881 struct rtw89_btc_wl_role_info_v7 *wl_rinfo_v7 = &wl->role_info_v7;
6882 struct rtw89_btc_wl_role_info_v8 *wl_rinfo_v8 = &wl->role_info_v8;
6934 if (!wl->status.map.init_ok) {
6941 if (wl->status.map.rf_off_pre == wl->status.map.rf_off &&
6942 wl->status.map.lps_pre == wl->status.map.lps) {
6950 if (wl->status.map.rf_off == 1 ||
6951 wl->status.map.lps == BTC_LPS_RF_OFF) {
6979 if (wl->status.map.rf_off || wl->status.map.lps || dm->bt_only) {
7000 if (wl->rfk_info.state != BTC_WRFK_STOP) {
7005 if (wl->status.val & btc_scanning_map.val) {
7016 if (wl->status.map.traffic_dir & BIT(RTW89_TFC_DL))
7082 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
7087 btc->cx.wl.status.map.rf_off = 1;
7088 btc->cx.wl.status.map.busy = 0;
7089 wl->status.map.lps = BTC_LPS_OFF;
7096 btc->cx.wl.status.map.rf_off_pre = btc->cx.wl.status.map.rf_off;
7105 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
7110 dm->init_info.init_v7.wl_init_ok = (u8)wl->status.map.init_ok;
7117 dm->init_info.init.wl_init_ok = (u8)wl->status.map.init_ok;
7129 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
7144 wl->coex_mode = mode;
7148 wl->status.map.rf_off = mode == BTC_MODE_WLOFF ? 1 : 0;
7153 if (!wl->status.map.init_ok) {
7184 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
7194 wl->status.map.scan = true;
7195 wl->scan_info.band[phy_idx] = band;
7196 wl->scan_info.phy_map |= BIT(phy_idx);
7200 wl->dbcc_info.scan_band[phy_idx] = band;
7211 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
7217 wl->status.map.scan = false;
7218 wl->scan_info.phy_map &= ~BIT(phy_idx);
7232 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
7244 wl->dbcc_info.scan_band[phy_idx] = band;
7256 struct rtw89_btc_wl_info *wl = &cx->wl;
7269 wl->status.map.connecting = true;
7276 wl->status.map._4way = true;
7286 wl->status.map._4way = false;
7391 u8 mode = rtwdev->btc.cx.wl.role_info.link_mode;
7497 if (bt->igno_wl && !cx->wl.status.map.rf_off)
7554 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
7628 wlinfo = &wl->link_info[r.pid];
7644 wlinfo = &wl->rlink_info[r.pid][rlink_id];
7646 link_mode_ori = wl->role_info_v8.link_mode;
7647 pta_req_mac_ori = wl->pta_req_mac;
7650 if (wl->role_info_v8.link_mode != link_mode_ori) {
7651 wl->role_info_v8.link_mode_chg = 1;
7661 if (wl->pta_req_mac != pta_req_mac_ori)
7662 wl->pta_reg_mac_chg = 1;
7670 wl->status.map.connecting = 1;
7672 wl->status.map.connecting = 0;
7675 wl->status.map._4way = false;
7684 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
7693 wl->status.map.rf_off = 1;
7694 wl->status.map.lps = BTC_LPS_OFF;
7695 wl->status.map.busy = 0;
7698 wl->status.map.rf_off = 0;
7699 wl->status.map.lps = BTC_LPS_RF_OFF;
7700 wl->status.map.busy = 0;
7703 wl->status.map.rf_off = 0;
7704 wl->status.map.lps = BTC_LPS_RF_ON;
7705 wl->status.map.busy = 0;
7709 wl->status.map.rf_off = 0;
7710 wl->status.map.lps = BTC_LPS_OFF;
7730 wl->status.map.lps_pre != BTC_LPS_OFF)
7738 wl->status.map.rf_off_pre = wl->status.map.rf_off;
7739 wl->status.map.lps_pre = wl->status.map.lps;
7748 struct rtw89_btc_wl_info *wl = &cx->wl;
7751 wl->rfk_info.type = type;
7752 wl->rfk_info.path_map = FIELD_GET(BTC_RFK_PATH_MAP, phy_path);
7753 wl->rfk_info.phy_map = FIELD_GET(BTC_RFK_PHY_MAP, phy_path);
7754 wl->rfk_info.band = FIELD_GET(BTC_RFK_BAND_MAP, phy_path);
7758 __func__, wl->rfk_info.phy_map, wl->rfk_info.path_map,
7764 wl->rfk_info.state = result ? BTC_WRFK_START : BTC_WRFK_STOP;
7772 if (wl->rfk_info.state == BTC_WRFK_STOP) {
7776 wl->rfk_info.state = state;
7781 wl->rfk_info.state = BTC_WRFK_STOP;
7793 if (wl->rfk_info.state == BTC_WRFK_START ||
7794 wl->rfk_info.state == BTC_WRFK_STOP)
7797 if (wl->rfk_info.state == BTC_WRFK_START)
7865 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
7885 link_info = &wl->link_info[port];
7924 link_info = &wl->link_info[port];
7955 r = &wl->role_info;
7961 r1 = &wl->role_info_v1;
8011 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
8019 wl->rssi_level = 0;
8024 wl->rssi_level = i;
8029 if (dm->trx_info.wl_rssi != wl->rssi_level)
8030 dm->trx_info.wl_rssi = wl->rssi_level;
8033 __func__, !!wl->status.map.busy);
8035 _write_scbd(rtwdev, BTC_WSCB_WLBUSY, (!!wl->status.map.busy));
8040 wl->status.map.busy = data.busy_all;
8041 wl->status.map.traffic_dir = data.dir_all;
8168 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
8187 ver_main = FIELD_GET(GENMASK(31, 24), wl->ver_info.fw_coex);
8188 ver_sub = FIELD_GET(GENMASK(23, 16), wl->ver_info.fw_coex);
8189 ver_hotfix = FIELD_GET(GENMASK(15, 8), wl->ver_info.fw_coex);
8190 id_branch = FIELD_GET(GENMASK(7, 0), wl->ver_info.fw_coex);
8198 (wl->ver_info.fw_coex >= chip->wlcx_desired ?
8211 ver_main = FIELD_GET(GENMASK(31, 24), wl->ver_info.fw);
8212 ver_sub = FIELD_GET(GENMASK(23, 16), wl->ver_info.fw);
8213 ver_hotfix = FIELD_GET(GENMASK(15, 8), wl->ver_info.fw);
8214 id_branch = FIELD_GET(GENMASK(7, 0), wl->ver_info.fw);
8248 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
8249 struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
8268 plink = &btc->cx.wl.rlink_info[i][0];
8270 plink = &btc->cx.wl.link_info[i];
8311 struct rtw89_btc_wl_info *wl = &cx->wl;
8312 struct rtw89_btc_wl_role_info *wl_rinfo = &wl->role_info;
8313 struct rtw89_btc_wl_role_info_v1 *wl_rinfo_v1 = &wl->role_info_v1;
8314 struct rtw89_btc_wl_role_info_v2 *wl_rinfo_v2 = &wl->role_info_v2;
8315 struct rtw89_btc_wl_role_info_v7 *wl_rinfo_v7 = &wl->role_info_v7;
8316 struct rtw89_btc_wl_role_info_v8 *wl_rinfo_v8 = &wl->role_info_v8;
8341 wl->status.map.rf_off, wl->status.map.lps,
8342 wl->status.map.scan ? "Y" : "N",
8343 wl->scan_info.band[RTW89_PHY_0], wl->scan_info.phy_map);
8347 wl->status.map.connecting ? "Y" : "N",
8348 wl->status.map.roaming ? "Y" : "N",
8349 wl->status.map._4way ? "Y" : "N",
8350 wl->status.map.init_ok ? "Y" : "N");
8418 struct rtw89_btc_wl_info *wl = &cx->wl;
8486 wl->afh_info.en, wl->afh_info.ch, wl->afh_info.bw);
8899 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
8916 id_to_mode(wl->coex_mode),
8938 "[trx_ctrl]", wl->rssi_level, dm->trx_para_level);
8943 "[trx_ctrl]", wl->rssi_level, dm->trx_para_level,
9147 seq_printf(m, " %-15s : avg_t[wl:%d/bt:%d/lk:%d.%03d]",
9153 seq_printf(m, ", max_t[wl:%d/bt:%d/lk:%d.%03d]",
9158 seq_printf(m, ", maxdiff_t[wl:%d/bt:%d]\n",
9165 /* 1 cycle record 1 wl-slot and 1 bt-slot */
9271 seq_printf(m, " %-15s : avg_t[wl:%d/bt:%d/lk:%d.%03d]",
9278 ", max_t[wl:%d/bt:%d/lk:%d.%03d]",
9284 ", maxdiff_t[wl:%d/bt:%d]\n",
9292 /* 1 cycle record 1 wl-slot and 1 bt-slot */
9403 seq_printf(m, " %-15s : avg_t[wl:%d/bt:%d/lk:%d.%03d]",
9410 ", max_t[wl:%d/bt:%d/lk:%d.%03d]",
9416 ", maxdiff_t[wl:%d/bt:%d]\n",
9424 /* 1 cycle record 1 wl-slot and 1 bt-slot */
9535 seq_printf(m, " %-15s : avg_t[wl:%d/bt:%d/lk:%d.%03d]",
9542 ", max_t[wl:%d/bt:%d/lk:%d.%03d]\n",
9552 /* 1 cycle record 1 wl-slot and 1 bt-slot */
9656 seq_printf(m, "\n\r %-15s : avg_t[wl:%d/bt:%d/lk:%d.%03d]",
9662 seq_printf(m, ", max_t[wl:%d/bt:%d(>%dms:%d)/lk:%d.%03d]",
9690 /* 1 cycle = 1 wl-slot + 1 bt-slot */
10085 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
10099 "[scoreboard]", wl->scbd, cx->cnt_wl[BTC_WCNT_SCBDUPDATE],
10163 struct rtw89_btc_wl_info *wl = &btc->cx.wl;
10177 "[scoreboard]", wl->scbd, cx->cnt_wl[BTC_WCNT_SCBDUPDATE],
10192 id_to_polut(wl->bt_polut_type[wl->pta_req_mac]));
10241 struct rtw89_btc_wl_info *wl = &cx->wl;
10255 "[scoreboard]", wl->scbd, cx->cnt_wl[BTC_WCNT_SCBDUPDATE],
10267 wl->pta_req_mac, id_to_polut(wl->bt_polut_type[wl->pta_req_mac]));
10312 struct rtw89_btc_wl_info *wl = &cx->wl;
10323 if (pcinfo->valid && !wl->status.map.lps && !wl->status.map.rf_off) {
10416 struct rtw89_btc_wl_info *wl = &cx->wl;
10427 if (pcinfo->valid && !wl->status.map.lps && !wl->status.map.rf_off) {
10528 struct rtw89_btc_wl_info *wl = &cx->wl;
10538 if (pcinfo->valid && !wl->status.map.lps && !wl->status.map.rf_off) {
10603 wl->status.map.lps, wl->status.map.rf_off);
10643 struct rtw89_btc_wl_info *wl = &cx->wl;
10653 if (pcinfo->valid && !wl->status.map.lps && !wl->status.map.rf_off) {
10718 wl->status.map.lps, wl->status.map.rf_off);
10757 struct rtw89_btc_wl_info *wl = &cx->wl;
10768 if (pcinfo->valid && wl->status.map.lps != BTC_LPS_RF_OFF &&
10769 !wl->status.map.rf_off) {
10807 wl->rfk_info.proc_time);
10821 wl->status.map.lps, wl->status.map.rf_off);
10859 struct rtw89_btc_wl_info *wl = &cx->wl;
10870 if (pcinfo->valid && wl->status.map.lps != BTC_LPS_RF_OFF &&
10871 !wl->status.map.rf_off) {
10909 wl->rfk_info.proc_time);
10923 wl->status.map.lps, wl->status.map.rf_off);