Search Linux Wireless

Some funny code in brcmsmac

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

 



Franky,

I was looking through the code and noticed the following in routine wlc_phy_txpwrctrl_pwr_setup_nphy():

        if (pi->sh->sromrev < 4) {
		...
                target_pwr_qtrdbm[0] = 13 * 4;
                target_pwr_qtrdbm[1] = 13 * 4;
		...
        } else {
                chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
                switch (chan_freq_range) {
                case WL_CHAN_FREQ_RANGE_2G:
			...
                        target_pwr_qtrdbm[0] =
                                pi->nphy_pwrctrl_info[0].max_pwr_2g;
                        target_pwr_qtrdbm[1] =
                                pi->nphy_pwrctrl_info[1].max_pwr_2g;
			...

                        break;
                case WL_CHAN_FREQ_RANGE_5GL:
			...
                        target_pwr_qtrdbm[0] =
                                pi->nphy_pwrctrl_info[0].max_pwr_5gl;
                        target_pwr_qtrdbm[1] =
                                pi->nphy_pwrctrl_info[1].max_pwr_5gl;
			...
                        break;
                case WL_CHAN_FREQ_RANGE_5GM:
			...
                        target_pwr_qtrdbm[0] =
                                pi->nphy_pwrctrl_info[0].max_pwr_5gm;
                        target_pwr_qtrdbm[1] =
                                pi->nphy_pwrctrl_info[1].max_pwr_5gm;
			...
                        break;
                case WL_CHAN_FREQ_RANGE_5GH:
			...
                        target_pwr_qtrdbm[0] =
                                pi->nphy_pwrctrl_info[0].max_pwr_5gh;
                        target_pwr_qtrdbm[1] =
                                pi->nphy_pwrctrl_info[1].max_pwr_5gh;
			...
                        break;
                default:
			...
                        target_pwr_qtrdbm[0] = 13 * 4;
                        target_pwr_qtrdbm[1] = 13 * 4;
			...
                        break;
                }
        }

        target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
        target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;

After going to some effort to customize the target_pwr_qtrdbm array depending on the SPROM version and the particular channel being used, the array is unconditionally overwritten in the end. Although gcc probably optimizes out the statements that are not needed (I have not looked at the generated code.), perhaps the code should be modified to make it clearer for human readers.

Thanks,

Larry
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux