Search Linux Wireless

RE: [PATCH v3 2/5] rtw88: add power tracking support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: linux-wireless-owner@xxxxxxxxxxxxxxx
> [mailto:linux-wireless-owner@xxxxxxxxxxxxxxx] On Behalf Of Chris Chiu
> Sent: Tuesday, October 22, 2019 8:36 PM
> To: Tony Chuang
> Cc: Kalle Valo; linux-wireless; Brian Norris
> Subject: Re: [PATCH v3 2/5] rtw88: add power tracking support
> 
> On Tue, Oct 22, 2019 at 6:04 PM <yhchuang@xxxxxxxxxxx> wrote:
> >
> > From: Tzu-En Huang <tehuang@xxxxxxxxxxx>
> >
> > The temperature of the chip can affect the output power
> > of the RF components. Hence driver requires to compensate
> > the power by adjusting the power index recorded in the
> > power swing table.
> >
> > And if the difference of current thermal value to the
> > default thermal value exceeds a threshold, the RF IQK
> > should be triggered to re-calibrate the characteristics
> > of the RF components, to keep the output IQ vectors of
> > the RF components orthogonal enough.
> >
> > Signed-off-by: Tzu-En Huang <tehuang@xxxxxxxxxxx>
> > Signed-off-by: Yan-Hsuan Chuang <yhchuang@xxxxxxxxxxx>
> > ---
> >
> > v1 -> v2
> >   * Use macros to check current band
> >   * Some coding style refinement
> >   * Not casting "const" pointers
> >
> > v2 -> v3
> >   * Use RF_PATH_* for thermal values
> >
> >  drivers/net/wireless/realtek/rtw88/fw.c       |   1 +
> >  drivers/net/wireless/realtek/rtw88/main.h     |  49 ++-
> >  drivers/net/wireless/realtek/rtw88/phy.c      | 126 +++++++
> >  drivers/net/wireless/realtek/rtw88/phy.h      |  12 +
> >  drivers/net/wireless/realtek/rtw88/rtw8822b.c | 330
> ++++++++++++++++++
> >  drivers/net/wireless/realtek/rtw88/rtw8822c.c | 228 ++++++++++++
> >  6 files changed, 745 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/wireless/realtek/rtw88/main.h
> b/drivers/net/wireless/realtek/rtw88/main.h
> > index 492a2bfc0d5a..757b0ce2bbee 100644
> > --- a/drivers/net/wireless/realtek/rtw88/main.h
> > +++ b/drivers/net/wireless/realtek/rtw88/main.h
> > +/* This table stores the values of TX power that will be adjusted by power
> > + * tracking.
> > + *
> > + * For 5G bands, there are 3 different settings.
> > + * For 2G there are cck rate and ofdm rate with different settings.
> > + */
> > +struct rtw_pwr_track_tbl {
> > +       const u8 *pwrtrk_5gb_n[RTW_PWR_TRK_5G_NUM];
> > +       const u8 *pwrtrk_5gb_p[RTW_PWR_TRK_5G_NUM];
> > +       const u8 *pwrtrk_5ga_n[RTW_PWR_TRK_5G_NUM];
> > +       const u8 *pwrtrk_5ga_p[RTW_PWR_TRK_5G_NUM];
> > +       const u8 *pwrtrk_2gb_n;
> > +       const u8 *pwrtrk_2gb_p;
> > +       const u8 *pwrtrk_2ga_n;
> > +       const u8 *pwrtrk_2ga_p;
> > +       const u8 *pwrtrk_2g_cckb_n;
> > +       const u8 *pwrtrk_2g_cckb_p;
> > +       const u8 *pwrtrk_2g_ccka_n;
> > +       const u8 *pwrtrk_2g_ccka_p;
> > +};
> > +
> >  /* hardware configuration for each IC */
> >  struct rtw_chip_info {
> >         struct rtw_chip_ops *ops;
> > @@ -1171,6 +1202,11 @@ struct rtw_phy_cck_pd_reg {
> >  #define DACK_MSBK_BACKUP_NUM   0xf
> >  #define DACK_DCK_BACKUP_NUM    0x2
> >
> > +struct rtw_swing_table {
> > +       const u8 *p[RTW_RF_PATH_MAX];
> > +       const u8 *n[RTW_RF_PATH_MAX];
> > +};
> > +
> >  struct rtw_dm_info {
> >         u32 cck_fa_cnt;
> >         u32 ofdm_fa_cnt;
> > @@ -1197,6 +1233,15 @@ struct rtw_dm_info {
> >         u8 cck_gi_u_bnd;
> >         u8 cck_gi_l_bnd;
> >
> > +       u8 tx_rate;
> > +       u8 thermal_avg[RTW_RF_PATH_MAX];
> > +       u8 thermal_meter_k;
> > +       s8 delta_power_index[RTW_RF_PATH_MAX];
> 
> I don't see any chance that delta_power_index[] will be < 0. Either from
> rtw_phy_pwrtrack_get_pwridx() or swing_table.
> 
> Maybe just use u8 instead of s8?
> 

I think "return -delta_swing_table_idx_neg[delta];" should be stored
with s8 ?

Yan-Hsuan




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux