@@ -2445,34 +2445,209 @@ void (* const rtw89_phy_c2h_ra_handler[])(struct rtw89_dev *rtwdev,
2445
2445
[RTW89_PHY_C2H_FUNC_TXSTS ] = NULL ,
2446
2446
};
2447
2447
2448
+ static void rtw89_phy_c2h_rfk_rpt_log (struct rtw89_dev * rtwdev ,
2449
+ enum rtw89_phy_c2h_rfk_log_func func ,
2450
+ void * content , u16 len )
2451
+ {
2452
+ struct rtw89_c2h_rf_txgapk_rpt_log * txgapk ;
2453
+ struct rtw89_c2h_rf_rxdck_rpt_log * rxdck ;
2454
+ struct rtw89_c2h_rf_dack_rpt_log * dack ;
2455
+ struct rtw89_c2h_rf_dpk_rpt_log * dpk ;
2456
+
2457
+ switch (func ) {
2458
+ case RTW89_PHY_C2H_RFK_LOG_FUNC_DPK :
2459
+ if (len != sizeof (* dpk ))
2460
+ goto out ;
2461
+
2462
+ dpk = content ;
2463
+ rtw89_debug (rtwdev , RTW89_DBG_RFK ,
2464
+ "DPK ver:%d idx:%2ph band:%2ph bw:%2ph ch:%2ph path:%2ph\n" ,
2465
+ dpk -> ver , dpk -> idx , dpk -> band , dpk -> bw , dpk -> ch , dpk -> path_ok );
2466
+ rtw89_debug (rtwdev , RTW89_DBG_RFK ,
2467
+ "DPK txagc:%2ph ther:%2ph gs:%2ph dc_i:%4ph dc_q:%4ph\n" ,
2468
+ dpk -> txagc , dpk -> ther , dpk -> gs , dpk -> dc_i , dpk -> dc_q );
2469
+ rtw89_debug (rtwdev , RTW89_DBG_RFK ,
2470
+ "DPK corr_v:%2ph corr_i:%2ph to:%2ph ov:%2ph\n" ,
2471
+ dpk -> corr_val , dpk -> corr_idx , dpk -> is_timeout , dpk -> rxbb_ov );
2472
+ return ;
2473
+ case RTW89_PHY_C2H_RFK_LOG_FUNC_DACK :
2474
+ if (len != sizeof (* dack ))
2475
+ goto out ;
2476
+
2477
+ dack = content ;
2478
+
2479
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]ver=0x%x 0x%x\n" ,
2480
+ dack -> fwdack_ver , dack -> fwdack_rpt_ver );
2481
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S0 CDACK ic = [0x%x, 0x%x]\n" ,
2482
+ dack -> cdack_d [0 ][0 ][0 ], dack -> cdack_d [0 ][0 ][1 ]);
2483
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S0 CDACK qc = [0x%x, 0x%x]\n" ,
2484
+ dack -> cdack_d [0 ][1 ][0 ], dack -> cdack_d [0 ][1 ][1 ]);
2485
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S1 CDACK ic = [0x%x, 0x%x]\n" ,
2486
+ dack -> cdack_d [1 ][0 ][0 ], dack -> cdack_d [1 ][0 ][1 ]);
2487
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S1 CDACK qc = [0x%x, 0x%x]\n" ,
2488
+ dack -> cdack_d [1 ][1 ][0 ], dack -> cdack_d [1 ][1 ][1 ]);
2489
+
2490
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S0 ADC_DCK ic = [0x%x, 0x%x]\n" ,
2491
+ dack -> addck2_d [0 ][0 ][0 ], dack -> addck2_d [0 ][0 ][1 ]);
2492
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S0 ADC_DCK qc = [0x%x, 0x%x]\n" ,
2493
+ dack -> addck2_d [0 ][1 ][0 ], dack -> addck2_d [0 ][1 ][1 ]);
2494
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S1 ADC_DCK ic = [0x%x, 0x%x]\n" ,
2495
+ dack -> addck2_d [1 ][0 ][0 ], dack -> addck2_d [1 ][0 ][1 ]);
2496
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S1 ADC_DCK qc = [0x%x, 0x%x]\n" ,
2497
+ dack -> addck2_d [1 ][1 ][0 ], dack -> addck2_d [1 ][1 ][1 ]);
2498
+
2499
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S0 ADC_GAINK ic = 0x%x, qc = 0x%x\n" ,
2500
+ dack -> adgaink_d [0 ][0 ], dack -> adgaink_d [0 ][1 ]);
2501
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S1 ADC_GAINK ic = 0x%x, qc = 0x%x\n" ,
2502
+ dack -> adgaink_d [1 ][0 ], dack -> adgaink_d [1 ][1 ]);
2503
+
2504
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S0 DAC_DCK ic = 0x%x, qc = 0x%x\n" ,
2505
+ dack -> dadck_d [0 ][0 ], dack -> dadck_d [0 ][1 ]);
2506
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S1 DAC_DCK ic = 0x%x, qc = 0x%x\n" ,
2507
+ dack -> dadck_d [1 ][0 ], dack -> dadck_d [1 ][1 ]);
2508
+
2509
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S0 biask iqc = 0x%x\n" ,
2510
+ dack -> biask_d [0 ][0 ]);
2511
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S1 biask iqc = 0x%x\n" ,
2512
+ dack -> biask_d [1 ][0 ]);
2513
+
2514
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S0 MSBK ic: %*ph\n" ,
2515
+ (int )sizeof (dack -> msbk_d [0 ][0 ]), dack -> msbk_d [0 ][0 ]);
2516
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S0 MSBK qc: %*ph\n" ,
2517
+ (int )sizeof (dack -> msbk_d [0 ][1 ]), dack -> msbk_d [0 ][1 ]);
2518
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S1 MSBK ic: %*ph\n" ,
2519
+ (int )sizeof (dack -> msbk_d [1 ][0 ]), dack -> msbk_d [1 ][0 ]);
2520
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[DACK]S1 MSBK qc: %*ph\n" ,
2521
+ (int )sizeof (dack -> msbk_d [1 ][1 ]), dack -> msbk_d [1 ][1 ]);
2522
+ return ;
2523
+ case RTW89_PHY_C2H_RFK_LOG_FUNC_RXDCK :
2524
+ if (len != sizeof (* rxdck ))
2525
+ goto out ;
2526
+
2527
+ rxdck = content ;
2528
+ rtw89_debug (rtwdev , RTW89_DBG_RFK ,
2529
+ "RXDCK ver:%d band:%2ph bw:%2ph ch:%2ph to:%2ph\n" ,
2530
+ rxdck -> ver , rxdck -> band , rxdck -> bw , rxdck -> ch ,
2531
+ rxdck -> timeout );
2532
+ return ;
2533
+ case RTW89_PHY_C2H_RFK_LOG_FUNC_TXGAPK :
2534
+ if (len != sizeof (* txgapk ))
2535
+ goto out ;
2536
+
2537
+ txgapk = content ;
2538
+ rtw89_debug (rtwdev , RTW89_DBG_RFK ,
2539
+ "[TXGAPK]rpt r0x8010[0]=0x%x, r0x8010[1]=0x%x\n" ,
2540
+ le32_to_cpu (txgapk -> r0x8010 [0 ]),
2541
+ le32_to_cpu (txgapk -> r0x8010 [1 ]));
2542
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[TXGAPK]rpt chk_id = %d\n" ,
2543
+ txgapk -> chk_id );
2544
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[TXGAPK]rpt chk_cnt = %d\n" ,
2545
+ le32_to_cpu (txgapk -> chk_cnt ));
2546
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[TXGAPK]rpt ver = 0x%x\n" ,
2547
+ txgapk -> ver );
2548
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[TXGAPK]rpt rsv1 = %d\n" ,
2549
+ txgapk -> rsv1 );
2550
+
2551
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[TXGAPK]rpt track_d[0] = %*ph\n" ,
2552
+ (int )sizeof (txgapk -> track_d [0 ]), txgapk -> track_d [0 ]);
2553
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[TXGAPK]rpt power_d[0] = %*ph\n" ,
2554
+ (int )sizeof (txgapk -> power_d [0 ]), txgapk -> power_d [0 ]);
2555
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[TXGAPK]rpt track_d[1] = %*ph\n" ,
2556
+ (int )sizeof (txgapk -> track_d [1 ]), txgapk -> track_d [1 ]);
2557
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "[TXGAPK]rpt power_d[1] = %*ph\n" ,
2558
+ (int )sizeof (txgapk -> power_d [1 ]), txgapk -> power_d [1 ]);
2559
+ return ;
2560
+ default :
2561
+ break ;
2562
+ }
2563
+
2564
+ out :
2565
+ rtw89_debug (rtwdev , RTW89_DBG_RFK ,
2566
+ "unexpected RFK func %d report log with length %d\n" , func , len );
2567
+ }
2568
+
2569
+ static void rtw89_phy_c2h_rfk_log (struct rtw89_dev * rtwdev , struct sk_buff * c2h ,
2570
+ u32 len , enum rtw89_phy_c2h_rfk_log_func func ,
2571
+ const char * rfk_name )
2572
+ {
2573
+ struct rtw89_c2h_hdr * c2h_hdr = (struct rtw89_c2h_hdr * )c2h -> data ;
2574
+ struct rtw89_c2h_rf_log_hdr * log_hdr ;
2575
+ void * log_ptr = c2h_hdr ;
2576
+ u16 content_len ;
2577
+ u16 chunk_len ;
2578
+
2579
+ if (!rtw89_debug_is_enabled (rtwdev , RTW89_DBG_RFK ))
2580
+ return ;
2581
+
2582
+ log_ptr += sizeof (* c2h_hdr );
2583
+ len -= sizeof (* c2h_hdr );
2584
+
2585
+ while (len > sizeof (* log_hdr )) {
2586
+ log_hdr = log_ptr ;
2587
+ content_len = le16_to_cpu (log_hdr -> len );
2588
+ chunk_len = content_len + sizeof (* log_hdr );
2589
+
2590
+ if (chunk_len > len )
2591
+ break ;
2592
+
2593
+ switch (log_hdr -> type ) {
2594
+ case RTW89_RF_RUN_LOG :
2595
+ rtw89_debug (rtwdev , RTW89_DBG_RFK , "%s run: %*ph\n" ,
2596
+ rfk_name , content_len , log_hdr -> content );
2597
+ break ;
2598
+ case RTW89_RF_RPT_LOG :
2599
+ rtw89_phy_c2h_rfk_rpt_log (rtwdev , func ,
2600
+ log_hdr -> content , content_len );
2601
+ break ;
2602
+ default :
2603
+ return ;
2604
+ }
2605
+
2606
+ log_ptr += chunk_len ;
2607
+ len -= chunk_len ;
2608
+ }
2609
+ }
2610
+
2448
2611
static void
2449
2612
rtw89_phy_c2h_rfk_log_iqk (struct rtw89_dev * rtwdev , struct sk_buff * c2h , u32 len )
2450
2613
{
2614
+ rtw89_phy_c2h_rfk_log (rtwdev , c2h , len ,
2615
+ RTW89_PHY_C2H_RFK_LOG_FUNC_IQK , "IQK" );
2451
2616
}
2452
2617
2453
2618
static void
2454
2619
rtw89_phy_c2h_rfk_log_dpk (struct rtw89_dev * rtwdev , struct sk_buff * c2h , u32 len )
2455
2620
{
2621
+ rtw89_phy_c2h_rfk_log (rtwdev , c2h , len ,
2622
+ RTW89_PHY_C2H_RFK_LOG_FUNC_DPK , "DPK" );
2456
2623
}
2457
2624
2458
2625
static void
2459
2626
rtw89_phy_c2h_rfk_log_dack (struct rtw89_dev * rtwdev , struct sk_buff * c2h , u32 len )
2460
2627
{
2628
+ rtw89_phy_c2h_rfk_log (rtwdev , c2h , len ,
2629
+ RTW89_PHY_C2H_RFK_LOG_FUNC_DACK , "DACK" );
2461
2630
}
2462
2631
2463
2632
static void
2464
2633
rtw89_phy_c2h_rfk_log_rxdck (struct rtw89_dev * rtwdev , struct sk_buff * c2h , u32 len )
2465
2634
{
2635
+ rtw89_phy_c2h_rfk_log (rtwdev , c2h , len ,
2636
+ RTW89_PHY_C2H_RFK_LOG_FUNC_RXDCK , "RX_DCK" );
2466
2637
}
2467
2638
2468
2639
static void
2469
2640
rtw89_phy_c2h_rfk_log_tssi (struct rtw89_dev * rtwdev , struct sk_buff * c2h , u32 len )
2470
2641
{
2642
+ rtw89_phy_c2h_rfk_log (rtwdev , c2h , len ,
2643
+ RTW89_PHY_C2H_RFK_LOG_FUNC_TSSI , "TSSI" );
2471
2644
}
2472
2645
2473
2646
static void
2474
2647
rtw89_phy_c2h_rfk_log_txgapk (struct rtw89_dev * rtwdev , struct sk_buff * c2h , u32 len )
2475
2648
{
2649
+ rtw89_phy_c2h_rfk_log (rtwdev , c2h , len ,
2650
+ RTW89_PHY_C2H_RFK_LOG_FUNC_TXGAPK , "TXGAPK" );
2476
2651
}
2477
2652
2478
2653
static
0 commit comments