[PATCH] ath10k: fix kernel panic while reading tpc_stats

kbuild test robot lkp at intel.com
Sun Mar 25 05:35:20 PDT 2018


Hi Tamizh,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on ath6kl/ath-next]
[also build test ERROR on v4.16-rc6 next-20180323]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Tamizh-chelvam/ath10k-fix-kernel-panic-while-reading-tpc_stats/20180325-093724
base:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git ath-next
config: i386-randconfig-h0-03251902 (attached as .config)
compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   drivers/net/wireless/ath/ath10k/wmi.c: In function 'ath10k_wmi_event_pdev_tpc_config':
>> drivers/net/wireless/ath/ath10k/wmi.c:4465:14: error: 'struct ath10k' has no member named 'debug'
     complete(&ar->debug.tpc_complete);
                 ^

vim +4465 drivers/net/wireless/ath/ath10k/wmi.c

  4315	
  4316	void ath10k_wmi_event_pdev_tpc_config(struct ath10k *ar, struct sk_buff *skb)
  4317	{
  4318		u32 i, j, pream_idx, num_tx_chain;
  4319		u8 rate_code[WMI_TPC_RATE_MAX], rate_idx;
  4320		u16 pream_table[WMI_TPC_PREAM_TABLE_MAX];
  4321		struct wmi_pdev_tpc_config_event *ev;
  4322		struct ath10k_tpc_stats *tpc_stats;
  4323	
  4324		ev = (struct wmi_pdev_tpc_config_event *)skb->data;
  4325	
  4326		tpc_stats = kzalloc(sizeof(*tpc_stats), GFP_ATOMIC);
  4327		if (!tpc_stats)
  4328			goto exit;
  4329	
  4330		/* Create the rate code table based on the chains supported */
  4331		rate_idx = 0;
  4332		pream_idx = 0;
  4333	
  4334		/* Fill CCK rate code */
  4335		for (i = 0; i < 4; i++) {
  4336			rate_code[rate_idx] =
  4337				ATH10K_HW_RATECODE(i, 0, WMI_RATE_PREAMBLE_CCK);
  4338			rate_idx++;
  4339		}
  4340		pream_table[pream_idx] = rate_idx;
  4341		pream_idx++;
  4342	
  4343		/* Fill OFDM rate code */
  4344		for (i = 0; i < 8; i++) {
  4345			rate_code[rate_idx] =
  4346				ATH10K_HW_RATECODE(i, 0, WMI_RATE_PREAMBLE_OFDM);
  4347			rate_idx++;
  4348		}
  4349		pream_table[pream_idx] = rate_idx;
  4350		pream_idx++;
  4351	
  4352		num_tx_chain = __le32_to_cpu(ev->num_tx_chain);
  4353	
  4354		if (num_tx_chain > WMI_TPC_TX_N_CHAIN) {
  4355			ath10k_warn(ar, "number of tx chain is %d greater than TPC configured tx chain %d\n",
  4356				    num_tx_chain, WMI_TPC_TX_N_CHAIN);
  4357			goto exit;
  4358		}
  4359	
  4360		/* Fill HT20 rate code */
  4361		for (i = 0; i < num_tx_chain; i++) {
  4362			for (j = 0; j < 8; j++) {
  4363				rate_code[rate_idx] =
  4364				ATH10K_HW_RATECODE(j, i, WMI_RATE_PREAMBLE_HT);
  4365				rate_idx++;
  4366			}
  4367		}
  4368		pream_table[pream_idx] = rate_idx;
  4369		pream_idx++;
  4370	
  4371		/* Fill HT40 rate code */
  4372		for (i = 0; i < num_tx_chain; i++) {
  4373			for (j = 0; j < 8; j++) {
  4374				rate_code[rate_idx] =
  4375				ATH10K_HW_RATECODE(j, i, WMI_RATE_PREAMBLE_HT);
  4376				rate_idx++;
  4377			}
  4378		}
  4379		pream_table[pream_idx] = rate_idx;
  4380		pream_idx++;
  4381	
  4382		/* Fill VHT20 rate code */
  4383		for (i = 0; i < __le32_to_cpu(ev->num_tx_chain); i++) {
  4384			for (j = 0; j < 10; j++) {
  4385				rate_code[rate_idx] =
  4386				ATH10K_HW_RATECODE(j, i, WMI_RATE_PREAMBLE_VHT);
  4387				rate_idx++;
  4388			}
  4389		}
  4390		pream_table[pream_idx] = rate_idx;
  4391		pream_idx++;
  4392	
  4393		/* Fill VHT40 rate code */
  4394		for (i = 0; i < num_tx_chain; i++) {
  4395			for (j = 0; j < 10; j++) {
  4396				rate_code[rate_idx] =
  4397				ATH10K_HW_RATECODE(j, i, WMI_RATE_PREAMBLE_VHT);
  4398				rate_idx++;
  4399			}
  4400		}
  4401		pream_table[pream_idx] = rate_idx;
  4402		pream_idx++;
  4403	
  4404		/* Fill VHT80 rate code */
  4405		for (i = 0; i < num_tx_chain; i++) {
  4406			for (j = 0; j < 10; j++) {
  4407				rate_code[rate_idx] =
  4408				ATH10K_HW_RATECODE(j, i, WMI_RATE_PREAMBLE_VHT);
  4409				rate_idx++;
  4410			}
  4411		}
  4412		pream_table[pream_idx] = rate_idx;
  4413		pream_idx++;
  4414	
  4415		rate_code[rate_idx++] =
  4416			ATH10K_HW_RATECODE(0, 0, WMI_RATE_PREAMBLE_CCK);
  4417		rate_code[rate_idx++] =
  4418			ATH10K_HW_RATECODE(0, 0, WMI_RATE_PREAMBLE_OFDM);
  4419		rate_code[rate_idx++] =
  4420			ATH10K_HW_RATECODE(0, 0, WMI_RATE_PREAMBLE_CCK);
  4421		rate_code[rate_idx++] =
  4422			ATH10K_HW_RATECODE(0, 0, WMI_RATE_PREAMBLE_OFDM);
  4423		rate_code[rate_idx++] =
  4424			ATH10K_HW_RATECODE(0, 0, WMI_RATE_PREAMBLE_OFDM);
  4425	
  4426		pream_table[pream_idx] = ATH10K_TPC_PREAM_TABLE_END;
  4427	
  4428		tpc_stats->chan_freq = __le32_to_cpu(ev->chan_freq);
  4429		tpc_stats->phy_mode = __le32_to_cpu(ev->phy_mode);
  4430		tpc_stats->ctl = __le32_to_cpu(ev->ctl);
  4431		tpc_stats->reg_domain = __le32_to_cpu(ev->reg_domain);
  4432		tpc_stats->twice_antenna_gain = a_sle32_to_cpu(ev->twice_antenna_gain);
  4433		tpc_stats->twice_antenna_reduction =
  4434			__le32_to_cpu(ev->twice_antenna_reduction);
  4435		tpc_stats->power_limit = __le32_to_cpu(ev->power_limit);
  4436		tpc_stats->twice_max_rd_power = __le32_to_cpu(ev->twice_max_rd_power);
  4437		tpc_stats->num_tx_chain = __le32_to_cpu(ev->num_tx_chain);
  4438		tpc_stats->rate_max = __le32_to_cpu(ev->rate_max);
  4439	
  4440		ath10k_tpc_config_disp_tables(ar, ev, tpc_stats,
  4441					      rate_code, pream_table,
  4442					      WMI_TPC_TABLE_TYPE_CDD);
  4443		ath10k_tpc_config_disp_tables(ar, ev,  tpc_stats,
  4444					      rate_code, pream_table,
  4445					      WMI_TPC_TABLE_TYPE_STBC);
  4446		ath10k_tpc_config_disp_tables(ar, ev, tpc_stats,
  4447					      rate_code, pream_table,
  4448					      WMI_TPC_TABLE_TYPE_TXBF);
  4449	
  4450		ath10k_debug_tpc_stats_process(ar, tpc_stats);
  4451	
  4452		ath10k_dbg(ar, ATH10K_DBG_WMI,
  4453			   "wmi event tpc config channel %d mode %d ctl %d regd %d gain %d %d limit %d max_power %d tx_chanins %d rates %d\n",
  4454			   __le32_to_cpu(ev->chan_freq),
  4455			   __le32_to_cpu(ev->phy_mode),
  4456			   __le32_to_cpu(ev->ctl),
  4457			   __le32_to_cpu(ev->reg_domain),
  4458			   a_sle32_to_cpu(ev->twice_antenna_gain),
  4459			   __le32_to_cpu(ev->twice_antenna_reduction),
  4460			   __le32_to_cpu(ev->power_limit),
  4461			   __le32_to_cpu(ev->twice_max_rd_power) / 2,
  4462			   __le32_to_cpu(ev->num_tx_chain),
  4463			   __le32_to_cpu(ev->rate_max));
  4464	exit:
> 4465		complete(&ar->debug.tpc_complete);
  4466	}
  4467	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 29490 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/ath10k/attachments/20180325/1bc17f9b/attachment-0001.gz>


More information about the ath10k mailing list