All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/net/wireless/broadcom/b43/xmit.c:457 b43_generate_txhdr() error: uninitialized symbol 'cts'.
@ 2020-10-11  6:21 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2020-10-11  6:21 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 42838 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Kees Cook <keescook@chromium.org>
CC: Chao Yu <yuchao0@huawei.com>, Chao Yu <chao@kernel.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   da690031a5d6d50a361e3f19f3eeabd086a6f20d
commit: 3f649ab728cda8038259d8f14492fe400fbab911 treewide: Remove uninitialized_var() usage
date:   3 months ago
:::::: branch date: 7 hours ago
:::::: commit date: 3 months ago
config: riscv-randconfig-m031-20201011 (attached as .config)
compiler: riscv64-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/net/wireless/broadcom/b43/xmit.c:457 b43_generate_txhdr() error: uninitialized symbol 'cts'.
drivers/net/wireless/broadcom/b43/xmit.c:479 b43_generate_txhdr() error: uninitialized symbol 'rts'.
drivers/net/wireless/broadcom/b43/xmit.c:497 b43_generate_txhdr() error: uninitialized symbol 'plcp'.
drivers/net/wireless/broadcom/b43/xmit.c:517 b43_generate_txhdr() error: potentially dereferencing uninitialized 'hdr'.
drivers/net/wireless/broadcom/b43/xmit.c:664 b43_rx() error: uninitialized symbol 'macstat'.
drivers/net/wireless/broadcom/b43/xmit.c:719 b43_rx() error: uninitialized symbol 'chanstat'.
drivers/net/wireless/broadcom/b43/xmit.c:771 b43_rx() error: uninitialized symbol 'mactime'.
drivers/net/wireless/broadcom/b43/dma.c:67 b43_dma_address() error: uninitialized symbol 'addr'.

vim +/cts +457 drivers/net/wireless/broadcom/b43/xmit.c

e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  233  
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  234  /* Generate a TX data header. */
09552ccd8277e63 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  235  int b43_generate_txhdr(struct b43_wldev *dev,
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  236  		       u8 *_txhdr,
035d0243ebbdbd5 drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  237  		       struct sk_buff *skb_frag,
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  238  		       struct ieee80211_tx_info *info,
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  239  		       u16 cookie)
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  240  {
035d0243ebbdbd5 drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  241  	const unsigned char *fragment_data = skb_frag->data;
035d0243ebbdbd5 drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  242  	unsigned int fragment_len = skb_frag->len;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  243  	struct b43_txhdr *txhdr = (struct b43_txhdr *)_txhdr;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  244  	const struct b43_phy *phy = &dev->phy;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  245  	const struct ieee80211_hdr *wlhdr =
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  246  	    (const struct ieee80211_hdr *)fragment_data;
d0f09804144fd94 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-07-29  247  	int use_encryption = !!info->control.hw_key;
f37d923422b6188 drivers/net/wireless/b43/xmit.c          Harvey Harrison 2008-06-14  248  	__le16 fctl = wlhdr->frame_control;
8318d78a44d49ac drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-01-24  249  	struct ieee80211_rate *fbrate;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  250  	u8 rate, rate_fb;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  251  	int rate_ofdm, rate_fb_ofdm;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  252  	unsigned int plcp_fragment_len;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  253  	u32 mac_ctl = 0;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  254  	u16 phy_ctl = 0;
694718d8ad2f0b1 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-10-17  255  	bool fill_phy_ctl1 = (phy->type == B43_PHYTYPE_LP ||
694718d8ad2f0b1 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-10-17  256  			      phy->type == B43_PHYTYPE_N ||
694718d8ad2f0b1 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-10-17  257  			      phy->type == B43_PHYTYPE_HT);
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  258  	u8 extra_ft = 0;
2e92e6f2c50b4ba drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  259  	struct ieee80211_rate *txrate;
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  260  	struct ieee80211_tx_rate *rates;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  261  
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  262  	memset(txhdr, 0, sizeof(*txhdr));
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  263  
e039fa4a4195ac4 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  264  	txrate = ieee80211_get_tx_rate(dev->wl->hw, info);
2e92e6f2c50b4ba drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  265  	rate = txrate ? txrate->hw_value : B43_CCK_RATE_1MB;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  266  	rate_ofdm = b43_is_ofdm_rate(rate);
870abdf67170daa drivers/net/wireless/b43/xmit.c          Felix Fietkau   2008-10-05  267  	fbrate = ieee80211_get_alt_retry_rate(dev->wl->hw, info, 0) ? : txrate;
8318d78a44d49ac drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-01-24  268  	rate_fb = fbrate->hw_value;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  269  	rate_fb_ofdm = b43_is_ofdm_rate(rate_fb);
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  270  
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  271  	if (rate_ofdm)
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  272  		txhdr->phy_rate = b43_plcp_get_ratecode_ofdm(rate);
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  273  	else
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  274  		txhdr->phy_rate = b43_plcp_get_ratecode_cck(rate);
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  275  	txhdr->mac_frame_ctl = wlhdr->frame_control;
d458cdf712e0c67 drivers/net/wireless/b43/xmit.c          Joe Perches     2013-10-01  276  	memcpy(txhdr->tx_receiver, wlhdr->addr1, ETH_ALEN);
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  277  
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  278  	/* Calculate duration for fallback rate */
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  279  	if ((rate_fb == rate) ||
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  280  	    (wlhdr->duration_id & cpu_to_le16(0x8000)) ||
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  281  	    (wlhdr->duration_id == cpu_to_le16(0))) {
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  282  		/* If the fallback rate equals the normal rate or the
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  283  		 * dur_id field contains an AID, CFP magic or 0,
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  284  		 * use the original dur_id field. */
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  285  		txhdr->dur_fb = wlhdr->duration_id;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  286  	} else {
e039fa4a4195ac4 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  287  		txhdr->dur_fb = ieee80211_generic_frame_duration(
4ee73f338a528f4 drivers/net/wireless/b43/xmit.c          Michal Kazior   2012-04-11  288  			dev->wl->hw, info->control.vif, info->band,
4ee73f338a528f4 drivers/net/wireless/b43/xmit.c          Michal Kazior   2012-04-11  289  			fragment_len, fbrate);
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  290  	}
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  291  
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  292  	plcp_fragment_len = fragment_len + FCS_LEN;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  293  	if (use_encryption) {
e039fa4a4195ac4 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  294  		u8 key_idx = info->control.hw_key->hw_key_idx;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  295  		struct b43_key *key;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  296  		int wlhdr_len;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  297  		size_t iv_len;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  298  
66d2d089c394c7e drivers/net/wireless/b43/xmit.c          Michael Buesch  2009-08-06  299  		B43_WARN_ON(key_idx >= ARRAY_SIZE(dev->key));
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  300  		key = &(dev->key[key_idx]);
7be1bb6b798d506 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  301  
09552ccd8277e63 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  302  		if (unlikely(!key->keyconf)) {
09552ccd8277e63 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  303  			/* This key is invalid. This might only happen
09552ccd8277e63 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  304  			 * in a short timeframe after machine resume before
09552ccd8277e63 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  305  			 * we were able to reconfigure keys.
09552ccd8277e63 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  306  			 * Drop this packet completely. Do not transmit it
09552ccd8277e63 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  307  			 * unencrypted to avoid leaking information. */
09552ccd8277e63 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  308  			return -ENOKEY;
09552ccd8277e63 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  309  		}
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  310  
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  311  		/* Hardware appends ICV. */
76708dee382a69b drivers/net/wireless/b43/xmit.c          Felix Fietkau   2008-10-05  312  		plcp_fragment_len += info->control.hw_key->icv_len;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  313  
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  314  		key_idx = b43_kidx_to_fw(dev, key_idx);
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  315  		mac_ctl |= (key_idx << B43_TXH_MAC_KEYIDX_SHIFT) &
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  316  			   B43_TXH_MAC_KEYIDX;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  317  		mac_ctl |= (key->algorithm << B43_TXH_MAC_KEYALG_SHIFT) &
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  318  			   B43_TXH_MAC_KEYALG;
f37d923422b6188 drivers/net/wireless/b43/xmit.c          Harvey Harrison 2008-06-14  319  		wlhdr_len = ieee80211_hdrlen(fctl);
035d0243ebbdbd5 drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  320  		if (key->algorithm == B43_SEC_ALGO_TKIP) {
035d0243ebbdbd5 drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  321  			u16 phase1key[5];
035d0243ebbdbd5 drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  322  			int i;
035d0243ebbdbd5 drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  323  			/* we give the phase1key and iv16 here, the key is stored in
035d0243ebbdbd5 drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  324  			 * shm. With that the hardware can do phase 2 and encryption.
035d0243ebbdbd5 drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  325  			 */
523b02ea23b175d drivers/net/wireless/b43/xmit.c          Johannes Berg   2011-07-07  326  			ieee80211_get_tkip_p1k(info->control.hw_key, skb_frag, phase1key);
cde1b55b43b71ca drivers/net/wireless/b43/xmit.c          Michael Buesch  2009-09-06  327  			/* phase1key is in host endian. Copy to little-endian txhdr->iv. */
cde1b55b43b71ca drivers/net/wireless/b43/xmit.c          Michael Buesch  2009-09-06  328  			for (i = 0; i < 5; i++) {
cde1b55b43b71ca drivers/net/wireless/b43/xmit.c          Michael Buesch  2009-09-06  329  				txhdr->iv[i * 2 + 0] = phase1key[i];
cde1b55b43b71ca drivers/net/wireless/b43/xmit.c          Michael Buesch  2009-09-06  330  				txhdr->iv[i * 2 + 1] = phase1key[i] >> 8;
cde1b55b43b71ca drivers/net/wireless/b43/xmit.c          Michael Buesch  2009-09-06  331  			}
035d0243ebbdbd5 drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  332  			/* iv16 */
035d0243ebbdbd5 drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  333  			memcpy(txhdr->iv + 10, ((u8 *) wlhdr) + wlhdr_len, 3);
035d0243ebbdbd5 drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  334  		} else {
c8e4955653a470e drivers/net/wireless/b43/xmit.c          Silvan Jegen    2014-02-25  335  			iv_len = min_t(size_t, info->control.hw_key->iv_len,
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  336  				     ARRAY_SIZE(txhdr->iv));
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  337  			memcpy(txhdr->iv, ((u8 *) wlhdr) + wlhdr_len, iv_len);
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  338  		}
035d0243ebbdbd5 drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  339  	}
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  340  	switch (dev->fw.hdr_format) {
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  341  	case B43_FW_HDR_598:
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  342  		b43_generate_plcp_hdr((struct b43_plcp_hdr4 *)(&txhdr->format_598.plcp),
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  343  				      plcp_fragment_len, rate);
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  344  		break;
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  345  	case B43_FW_HDR_351:
2391b7e8d40e4b3 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  346  		b43_generate_plcp_hdr((struct b43_plcp_hdr4 *)(&txhdr->format_351.plcp),
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  347  				      plcp_fragment_len, rate);
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  348  		break;
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  349  	case B43_FW_HDR_410:
2391b7e8d40e4b3 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  350  		b43_generate_plcp_hdr((struct b43_plcp_hdr4 *)(&txhdr->format_410.plcp),
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  351  				      plcp_fragment_len, rate);
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  352  		break;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  353  	}
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  354  	b43_generate_plcp_hdr((struct b43_plcp_hdr4 *)(&txhdr->plcp_fb),
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  355  			      plcp_fragment_len, rate_fb);
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  356  
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  357  	/* Extra Frame Types */
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  358  	if (rate_fb_ofdm)
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  359  		extra_ft |= B43_TXH_EFT_FB_OFDM;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  360  	else
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  361  		extra_ft |= B43_TXH_EFT_FB_CCK;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  362  
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  363  	/* Set channel radio code. Note that the micrcode ORs 0x100 to
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  364  	 * this value before comparing it to the value in SHM, if this
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  365  	 * is a 5Ghz packet.
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  366  	 */
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  367  	txhdr->chan_radio_code = phy->channel;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  368  
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  369  	/* PHY TX Control word */
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  370  	if (rate_ofdm)
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  371  		phy_ctl |= B43_TXH_PHY_ENC_OFDM;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  372  	else
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  373  		phy_ctl |= B43_TXH_PHY_ENC_CCK;
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  374  	if (info->control.rates[0].flags & IEEE80211_TX_RC_USE_SHORT_PREAMBLE)
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  375  		phy_ctl |= B43_TXH_PHY_SHORTPRMBL;
9db1f6d725921c4 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-12-22  376  
d748b4642a53cd1 drivers/net/wireless/b43/xmit.c          Johannes Berg   2012-03-28  377  	switch (b43_ieee80211_antenna_sanitize(dev, 0)) {
9db1f6d725921c4 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-12-22  378  	case 0: /* Default */
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  379  		phy_ctl |= B43_TXH_PHY_ANT01AUTO;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  380  		break;
9db1f6d725921c4 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-12-22  381  	case 1: /* Antenna 0 */
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  382  		phy_ctl |= B43_TXH_PHY_ANT0;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  383  		break;
9db1f6d725921c4 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-12-22  384  	case 2: /* Antenna 1 */
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  385  		phy_ctl |= B43_TXH_PHY_ANT1;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  386  		break;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  387  	case 3: /* Antenna 2 */
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  388  		phy_ctl |= B43_TXH_PHY_ANT2;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  389  		break;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  390  	case 4: /* Antenna 3 */
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  391  		phy_ctl |= B43_TXH_PHY_ANT3;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  392  		break;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  393  	default:
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  394  		B43_WARN_ON(1);
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  395  	}
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  396  
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  397  	rates = info->control.rates;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  398  	/* MAC control */
e039fa4a4195ac4 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  399  	if (!(info->flags & IEEE80211_TX_CTL_NO_ACK))
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  400  		mac_ctl |= B43_TXH_MAC_ACK;
f591fa5dbbbeaeb drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-07-10  401  	/* use hardware sequence counter as the non-TID counter */
f591fa5dbbbeaeb drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-07-10  402  	if (info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ)
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  403  		mac_ctl |= B43_TXH_MAC_HWSEQ;
e039fa4a4195ac4 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  404  	if (info->flags & IEEE80211_TX_CTL_FIRST_FRAGMENT)
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  405  		mac_ctl |= B43_TXH_MAC_STMSDU;
24acfc632b7ba55 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2014-05-20  406  	if (!phy->gmode)
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  407  		mac_ctl |= B43_TXH_MAC_5GHZ;
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  408  
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  409  	/* Overwrite rates[0].count to make the retry calculation
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  410  	 * in the tx status easier. need the actual retry limit to
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  411  	 * detect whether the fallback rate was used.
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  412  	 */
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  413  	if ((rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS) ||
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  414  	    (rates[0].count <= dev->wl->hw->conf.long_frame_max_tx_count)) {
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  415  		rates[0].count = dev->wl->hw->conf.long_frame_max_tx_count;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  416  		mac_ctl |= B43_TXH_MAC_LONGFRAME;
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  417  	} else {
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  418  		rates[0].count = dev->wl->hw->conf.short_frame_max_tx_count;
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  419  	}
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  420  
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  421  	/* Generate the RTS or CTS-to-self frame */
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  422  	if ((rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS) ||
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  423  	    (rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT)) {
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  424  		unsigned int len;
3f649ab728cda80 drivers/net/wireless/broadcom/b43/xmit.c Kees Cook       2020-06-03  425  		struct ieee80211_hdr *hdr;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  426  		int rts_rate, rts_rate_fb;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  427  		int rts_rate_ofdm, rts_rate_fb_ofdm;
3f649ab728cda80 drivers/net/wireless/broadcom/b43/xmit.c Kees Cook       2020-06-03  428  		struct b43_plcp_hdr6 *plcp;
2e92e6f2c50b4ba drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  429  		struct ieee80211_rate *rts_cts_rate;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  430  
e039fa4a4195ac4 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  431  		rts_cts_rate = ieee80211_get_rts_cts_rate(dev->wl->hw, info);
2e92e6f2c50b4ba drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  432  
2e92e6f2c50b4ba drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  433  		rts_rate = rts_cts_rate ? rts_cts_rate->hw_value : B43_CCK_RATE_1MB;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  434  		rts_rate_ofdm = b43_is_ofdm_rate(rts_rate);
d0b03439f7845ad drivers/net/wireless/broadcom/b43/xmit.c Adrian Chadd    2016-05-16  435  		rts_rate_fb = b43_calc_fallback_rate(rts_rate, phy->gmode);
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  436  		rts_rate_fb_ofdm = b43_is_ofdm_rate(rts_rate_fb);
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  437  
e6a9854b05c1a6a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  438  		if (rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT) {
3f649ab728cda80 drivers/net/wireless/broadcom/b43/xmit.c Kees Cook       2020-06-03  439  			struct ieee80211_cts *cts;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  440  
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  441  			switch (dev->fw.hdr_format) {
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  442  			case B43_FW_HDR_598:
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  443  				cts = (struct ieee80211_cts *)
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  444  					(txhdr->format_598.rts_frame);
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  445  				break;
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  446  			case B43_FW_HDR_351:
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  447  				cts = (struct ieee80211_cts *)
2391b7e8d40e4b3 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  448  					(txhdr->format_351.rts_frame);
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  449  				break;
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  450  			case B43_FW_HDR_410:
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  451  				cts = (struct ieee80211_cts *)
2391b7e8d40e4b3 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  452  					(txhdr->format_410.rts_frame);
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  453  				break;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  454  			}
e039fa4a4195ac4 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  455  			ieee80211_ctstoself_get(dev->wl->hw, info->control.vif,
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  456  						fragment_data, fragment_len,
e039fa4a4195ac4 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15 @457  						info, cts);
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  458  			mac_ctl |= B43_TXH_MAC_SENDCTS;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  459  			len = sizeof(struct ieee80211_cts);
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  460  		} else {
3f649ab728cda80 drivers/net/wireless/broadcom/b43/xmit.c Kees Cook       2020-06-03  461  			struct ieee80211_rts *rts;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  462  
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  463  			switch (dev->fw.hdr_format) {
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  464  			case B43_FW_HDR_598:
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  465  				rts = (struct ieee80211_rts *)
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  466  					(txhdr->format_598.rts_frame);
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  467  				break;
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  468  			case B43_FW_HDR_351:
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  469  				rts = (struct ieee80211_rts *)
2391b7e8d40e4b3 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  470  					(txhdr->format_351.rts_frame);
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  471  				break;
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  472  			case B43_FW_HDR_410:
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  473  				rts = (struct ieee80211_rts *)
2391b7e8d40e4b3 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  474  					(txhdr->format_410.rts_frame);
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  475  				break;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  476  			}
e039fa4a4195ac4 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  477  			ieee80211_rts_get(dev->wl->hw, info->control.vif,
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  478  					  fragment_data, fragment_len,
e039fa4a4195ac4 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15 @479  					  info, rts);
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  480  			mac_ctl |= B43_TXH_MAC_SENDRTS;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  481  			len = sizeof(struct ieee80211_rts);
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  482  		}
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  483  		len += FCS_LEN;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  484  
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  485  		/* Generate the PLCP headers for the RTS/CTS frame */
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  486  		switch (dev->fw.hdr_format) {
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  487  		case B43_FW_HDR_598:
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  488  			plcp = &txhdr->format_598.rts_plcp;
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  489  			break;
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  490  		case B43_FW_HDR_351:
2391b7e8d40e4b3 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  491  			plcp = &txhdr->format_351.rts_plcp;
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  492  			break;
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  493  		case B43_FW_HDR_410:
2391b7e8d40e4b3 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  494  			plcp = &txhdr->format_410.rts_plcp;
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  495  			break;
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  496  		}
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28 @497  		b43_generate_plcp_hdr((struct b43_plcp_hdr4 *)plcp,
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  498  				      len, rts_rate);
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  499  		plcp = &txhdr->rts_plcp_fb;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  500  		b43_generate_plcp_hdr((struct b43_plcp_hdr4 *)plcp,
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  501  				      len, rts_rate_fb);
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  502  
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  503  		switch (dev->fw.hdr_format) {
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  504  		case B43_FW_HDR_598:
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  505  			hdr = (struct ieee80211_hdr *)
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  506  				(&txhdr->format_598.rts_frame);
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  507  			break;
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  508  		case B43_FW_HDR_351:
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  509  			hdr = (struct ieee80211_hdr *)
2391b7e8d40e4b3 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  510  				(&txhdr->format_351.rts_frame);
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  511  			break;
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  512  		case B43_FW_HDR_410:
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  513  			hdr = (struct ieee80211_hdr *)
2391b7e8d40e4b3 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  514  				(&txhdr->format_410.rts_frame);
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  515  			break;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  516  		}
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18 @517  		txhdr->rts_dur_fb = hdr->duration_id;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  518  
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  519  		if (rts_rate_ofdm) {
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  520  			extra_ft |= B43_TXH_EFT_RTS_OFDM;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  521  			txhdr->phy_rate_rts =
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  522  			    b43_plcp_get_ratecode_ofdm(rts_rate);
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  523  		} else {
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  524  			extra_ft |= B43_TXH_EFT_RTS_CCK;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  525  			txhdr->phy_rate_rts =
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  526  			    b43_plcp_get_ratecode_cck(rts_rate);
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  527  		}
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  528  		if (rts_rate_fb_ofdm)
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  529  			extra_ft |= B43_TXH_EFT_RTSFB_OFDM;
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  530  		else
eb189d8bc9824bc drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  531  			extra_ft |= B43_TXH_EFT_RTSFB_CCK;
3311abbbbff1719 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  532  
3311abbbbff1719 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  533  		if (rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS &&
694718d8ad2f0b1 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-10-17  534  		    fill_phy_ctl1) {
3311abbbbff1719 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  535  			txhdr->phy_ctl1_rts = cpu_to_le16(
3311abbbbff1719 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  536  				b43_generate_tx_phy_ctl1(dev, rts_rate));
3311abbbbff1719 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  537  			txhdr->phy_ctl1_rts_fb = cpu_to_le16(
3311abbbbff1719 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  538  				b43_generate_tx_phy_ctl1(dev, rts_rate_fb));
3311abbbbff1719 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  539  		}
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  540  	}
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  541  
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  542  	/* Magic cookie */
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  543  	switch (dev->fw.hdr_format) {
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  544  	case B43_FW_HDR_598:
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  545  		txhdr->format_598.cookie = cpu_to_le16(cookie);
5d852905561a979 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  546  		break;
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  547  	case B43_FW_HDR_351:
2391b7e8d40e4b3 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  548  		txhdr->format_351.cookie = cpu_to_le16(cookie);
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  549  		break;
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  550  	case B43_FW_HDR_410:
2391b7e8d40e4b3 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  551  		txhdr->format_410.cookie = cpu_to_le16(cookie);
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  552  		break;
efe0249b0fd1e9a drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  553  	}
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  554  
694718d8ad2f0b1 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-10-17  555  	if (fill_phy_ctl1) {
3311abbbbff1719 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  556  		txhdr->phy_ctl1 =
3311abbbbff1719 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  557  			cpu_to_le16(b43_generate_tx_phy_ctl1(dev, rate));
3311abbbbff1719 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  558  		txhdr->phy_ctl1_fb =
3311abbbbff1719 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  559  			cpu_to_le16(b43_generate_tx_phy_ctl1(dev, rate_fb));
3311abbbbff1719 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  560  	}
3311abbbbff1719 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  561  
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  562  	/* Apply the bitfields */
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  563  	txhdr->mac_ctl = cpu_to_le32(mac_ctl);
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  564  	txhdr->phy_ctl = cpu_to_le16(phy_ctl);
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  565  	txhdr->extra_ft = extra_ft;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  566  
09552ccd8277e63 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  567  	return 0;
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  568  }
e4d6b7951812d98 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  569  

:::::: The code at line 457 was first introduced by commit
:::::: e039fa4a4195ac4ee895e6f3d1334beed63256fe mac80211: move TX info into skb->cb

:::::: TO: Johannes Berg <johannes@sipsolutions.net>
:::::: CC: John W. Linville <linville@tuxdriver.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 34092 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread
* drivers/net/wireless/broadcom/b43/xmit.c:457 b43_generate_txhdr() error: uninitialized symbol 'cts'.
@ 2021-06-25 13:05 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2021-06-25 13:05 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 43085 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Kees Cook <keescook@chromium.org>
CC: Chao Yu <yuchao0@huawei.com>, Chao Yu <chao@kernel.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   44db63d1ad8d71c6932cbe007eb41f31c434d140
commit: 3f649ab728cda8038259d8f14492fe400fbab911 treewide: Remove uninitialized_var() usage
date:   11 months ago
:::::: branch date: 17 hours ago
:::::: commit date: 11 months ago
config: i386-randconfig-m031-20210625 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
drivers/net/wireless/broadcom/b43/xmit.c:457 b43_generate_txhdr() error: uninitialized symbol 'cts'.
drivers/net/wireless/broadcom/b43/xmit.c:479 b43_generate_txhdr() error: uninitialized symbol 'rts'.
drivers/net/wireless/broadcom/b43/xmit.c:497 b43_generate_txhdr() error: uninitialized symbol 'plcp'.
drivers/net/wireless/broadcom/b43/xmit.c:517 b43_generate_txhdr() error: potentially dereferencing uninitialized 'hdr'.
drivers/net/wireless/broadcom/b43/xmit.c:664 b43_rx() error: uninitialized symbol 'macstat'.
drivers/net/wireless/broadcom/b43/xmit.c:719 b43_rx() error: uninitialized symbol 'chanstat'.
drivers/net/wireless/broadcom/b43/xmit.c:771 b43_rx() error: uninitialized symbol 'mactime'.
drivers/net/wireless/broadcom/b43/dma.c:67 b43_dma_address() error: uninitialized symbol 'addr'.
drivers/net/wireless/realtek/rtlwifi/rtl8192cu/hw.c:642 _rtl92cu_init_chipn_two_out_ep_priority() error: uninitialized symbol 'valuelow'.
drivers/net/wireless/realtek/rtlwifi/rtl8192cu/hw.c:644 _rtl92cu_init_chipn_two_out_ep_priority() error: uninitialized symbol 'valuehi'.

Old smatch warnings:
drivers/net/wireless/realtek/rtlwifi/rtl8192cu/hw.c:649 _rtl92cu_init_chipn_two_out_ep_priority() error: uninitialized symbol 'valuehi'.
drivers/net/wireless/realtek/rtlwifi/rtl8192cu/hw.c:650 _rtl92cu_init_chipn_two_out_ep_priority() error: uninitialized symbol 'valuelow'.

vim +/cts +457 drivers/net/wireless/broadcom/b43/xmit.c

e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  233  
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  234  /* Generate a TX data header. */
09552ccd8277e6 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  235  int b43_generate_txhdr(struct b43_wldev *dev,
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  236  		       u8 *_txhdr,
035d0243ebbdbd drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  237  		       struct sk_buff *skb_frag,
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  238  		       struct ieee80211_tx_info *info,
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  239  		       u16 cookie)
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  240  {
035d0243ebbdbd drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  241  	const unsigned char *fragment_data = skb_frag->data;
035d0243ebbdbd drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  242  	unsigned int fragment_len = skb_frag->len;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  243  	struct b43_txhdr *txhdr = (struct b43_txhdr *)_txhdr;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  244  	const struct b43_phy *phy = &dev->phy;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  245  	const struct ieee80211_hdr *wlhdr =
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  246  	    (const struct ieee80211_hdr *)fragment_data;
d0f09804144fd9 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-07-29  247  	int use_encryption = !!info->control.hw_key;
f37d923422b618 drivers/net/wireless/b43/xmit.c          Harvey Harrison 2008-06-14  248  	__le16 fctl = wlhdr->frame_control;
8318d78a44d49a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-01-24  249  	struct ieee80211_rate *fbrate;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  250  	u8 rate, rate_fb;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  251  	int rate_ofdm, rate_fb_ofdm;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  252  	unsigned int plcp_fragment_len;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  253  	u32 mac_ctl = 0;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  254  	u16 phy_ctl = 0;
694718d8ad2f0b drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-10-17  255  	bool fill_phy_ctl1 = (phy->type == B43_PHYTYPE_LP ||
694718d8ad2f0b drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-10-17  256  			      phy->type == B43_PHYTYPE_N ||
694718d8ad2f0b drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-10-17  257  			      phy->type == B43_PHYTYPE_HT);
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  258  	u8 extra_ft = 0;
2e92e6f2c50b4b drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  259  	struct ieee80211_rate *txrate;
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  260  	struct ieee80211_tx_rate *rates;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  261  
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  262  	memset(txhdr, 0, sizeof(*txhdr));
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  263  
e039fa4a4195ac drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  264  	txrate = ieee80211_get_tx_rate(dev->wl->hw, info);
2e92e6f2c50b4b drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  265  	rate = txrate ? txrate->hw_value : B43_CCK_RATE_1MB;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  266  	rate_ofdm = b43_is_ofdm_rate(rate);
870abdf67170da drivers/net/wireless/b43/xmit.c          Felix Fietkau   2008-10-05  267  	fbrate = ieee80211_get_alt_retry_rate(dev->wl->hw, info, 0) ? : txrate;
8318d78a44d49a drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-01-24  268  	rate_fb = fbrate->hw_value;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  269  	rate_fb_ofdm = b43_is_ofdm_rate(rate_fb);
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  270  
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  271  	if (rate_ofdm)
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  272  		txhdr->phy_rate = b43_plcp_get_ratecode_ofdm(rate);
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  273  	else
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  274  		txhdr->phy_rate = b43_plcp_get_ratecode_cck(rate);
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  275  	txhdr->mac_frame_ctl = wlhdr->frame_control;
d458cdf712e0c6 drivers/net/wireless/b43/xmit.c          Joe Perches     2013-10-01  276  	memcpy(txhdr->tx_receiver, wlhdr->addr1, ETH_ALEN);
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  277  
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  278  	/* Calculate duration for fallback rate */
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  279  	if ((rate_fb == rate) ||
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  280  	    (wlhdr->duration_id & cpu_to_le16(0x8000)) ||
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  281  	    (wlhdr->duration_id == cpu_to_le16(0))) {
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  282  		/* If the fallback rate equals the normal rate or the
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  283  		 * dur_id field contains an AID, CFP magic or 0,
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  284  		 * use the original dur_id field. */
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  285  		txhdr->dur_fb = wlhdr->duration_id;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  286  	} else {
e039fa4a4195ac drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  287  		txhdr->dur_fb = ieee80211_generic_frame_duration(
4ee73f338a528f drivers/net/wireless/b43/xmit.c          Michal Kazior   2012-04-11  288  			dev->wl->hw, info->control.vif, info->band,
4ee73f338a528f drivers/net/wireless/b43/xmit.c          Michal Kazior   2012-04-11  289  			fragment_len, fbrate);
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  290  	}
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  291  
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  292  	plcp_fragment_len = fragment_len + FCS_LEN;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  293  	if (use_encryption) {
e039fa4a4195ac drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  294  		u8 key_idx = info->control.hw_key->hw_key_idx;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  295  		struct b43_key *key;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  296  		int wlhdr_len;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  297  		size_t iv_len;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  298  
66d2d089c394c7 drivers/net/wireless/b43/xmit.c          Michael Buesch  2009-08-06  299  		B43_WARN_ON(key_idx >= ARRAY_SIZE(dev->key));
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  300  		key = &(dev->key[key_idx]);
7be1bb6b798d50 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  301  
09552ccd8277e6 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  302  		if (unlikely(!key->keyconf)) {
09552ccd8277e6 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  303  			/* This key is invalid. This might only happen
09552ccd8277e6 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  304  			 * in a short timeframe after machine resume before
09552ccd8277e6 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  305  			 * we were able to reconfigure keys.
09552ccd8277e6 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  306  			 * Drop this packet completely. Do not transmit it
09552ccd8277e6 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  307  			 * unencrypted to avoid leaking information. */
09552ccd8277e6 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  308  			return -ENOKEY;
09552ccd8277e6 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  309  		}
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  310  
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  311  		/* Hardware appends ICV. */
76708dee382a69 drivers/net/wireless/b43/xmit.c          Felix Fietkau   2008-10-05  312  		plcp_fragment_len += info->control.hw_key->icv_len;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  313  
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  314  		key_idx = b43_kidx_to_fw(dev, key_idx);
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  315  		mac_ctl |= (key_idx << B43_TXH_MAC_KEYIDX_SHIFT) &
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  316  			   B43_TXH_MAC_KEYIDX;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  317  		mac_ctl |= (key->algorithm << B43_TXH_MAC_KEYALG_SHIFT) &
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  318  			   B43_TXH_MAC_KEYALG;
f37d923422b618 drivers/net/wireless/b43/xmit.c          Harvey Harrison 2008-06-14  319  		wlhdr_len = ieee80211_hdrlen(fctl);
035d0243ebbdbd drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  320  		if (key->algorithm == B43_SEC_ALGO_TKIP) {
035d0243ebbdbd drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  321  			u16 phase1key[5];
035d0243ebbdbd drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  322  			int i;
035d0243ebbdbd drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  323  			/* we give the phase1key and iv16 here, the key is stored in
035d0243ebbdbd drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  324  			 * shm. With that the hardware can do phase 2 and encryption.
035d0243ebbdbd drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  325  			 */
523b02ea23b175 drivers/net/wireless/b43/xmit.c          Johannes Berg   2011-07-07  326  			ieee80211_get_tkip_p1k(info->control.hw_key, skb_frag, phase1key);
cde1b55b43b71c drivers/net/wireless/b43/xmit.c          Michael Buesch  2009-09-06  327  			/* phase1key is in host endian. Copy to little-endian txhdr->iv. */
cde1b55b43b71c drivers/net/wireless/b43/xmit.c          Michael Buesch  2009-09-06  328  			for (i = 0; i < 5; i++) {
cde1b55b43b71c drivers/net/wireless/b43/xmit.c          Michael Buesch  2009-09-06  329  				txhdr->iv[i * 2 + 0] = phase1key[i];
cde1b55b43b71c drivers/net/wireless/b43/xmit.c          Michael Buesch  2009-09-06  330  				txhdr->iv[i * 2 + 1] = phase1key[i] >> 8;
cde1b55b43b71c drivers/net/wireless/b43/xmit.c          Michael Buesch  2009-09-06  331  			}
035d0243ebbdbd drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  332  			/* iv16 */
035d0243ebbdbd drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  333  			memcpy(txhdr->iv + 10, ((u8 *) wlhdr) + wlhdr_len, 3);
035d0243ebbdbd drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  334  		} else {
c8e4955653a470 drivers/net/wireless/b43/xmit.c          Silvan Jegen    2014-02-25  335  			iv_len = min_t(size_t, info->control.hw_key->iv_len,
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  336  				     ARRAY_SIZE(txhdr->iv));
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  337  			memcpy(txhdr->iv, ((u8 *) wlhdr) + wlhdr_len, iv_len);
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  338  		}
035d0243ebbdbd drivers/net/wireless/b43/xmit.c          gregor kowski   2009-08-19  339  	}
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  340  	switch (dev->fw.hdr_format) {
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  341  	case B43_FW_HDR_598:
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  342  		b43_generate_plcp_hdr((struct b43_plcp_hdr4 *)(&txhdr->format_598.plcp),
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  343  				      plcp_fragment_len, rate);
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  344  		break;
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  345  	case B43_FW_HDR_351:
2391b7e8d40e4b drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  346  		b43_generate_plcp_hdr((struct b43_plcp_hdr4 *)(&txhdr->format_351.plcp),
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  347  				      plcp_fragment_len, rate);
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  348  		break;
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  349  	case B43_FW_HDR_410:
2391b7e8d40e4b drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  350  		b43_generate_plcp_hdr((struct b43_plcp_hdr4 *)(&txhdr->format_410.plcp),
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  351  				      plcp_fragment_len, rate);
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  352  		break;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  353  	}
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  354  	b43_generate_plcp_hdr((struct b43_plcp_hdr4 *)(&txhdr->plcp_fb),
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  355  			      plcp_fragment_len, rate_fb);
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  356  
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  357  	/* Extra Frame Types */
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  358  	if (rate_fb_ofdm)
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  359  		extra_ft |= B43_TXH_EFT_FB_OFDM;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  360  	else
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  361  		extra_ft |= B43_TXH_EFT_FB_CCK;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  362  
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  363  	/* Set channel radio code. Note that the micrcode ORs 0x100 to
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  364  	 * this value before comparing it to the value in SHM, if this
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  365  	 * is a 5Ghz packet.
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  366  	 */
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  367  	txhdr->chan_radio_code = phy->channel;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  368  
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  369  	/* PHY TX Control word */
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  370  	if (rate_ofdm)
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  371  		phy_ctl |= B43_TXH_PHY_ENC_OFDM;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  372  	else
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  373  		phy_ctl |= B43_TXH_PHY_ENC_CCK;
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  374  	if (info->control.rates[0].flags & IEEE80211_TX_RC_USE_SHORT_PREAMBLE)
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  375  		phy_ctl |= B43_TXH_PHY_SHORTPRMBL;
9db1f6d725921c drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-12-22  376  
d748b4642a53cd drivers/net/wireless/b43/xmit.c          Johannes Berg   2012-03-28  377  	switch (b43_ieee80211_antenna_sanitize(dev, 0)) {
9db1f6d725921c drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-12-22  378  	case 0: /* Default */
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  379  		phy_ctl |= B43_TXH_PHY_ANT01AUTO;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  380  		break;
9db1f6d725921c drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-12-22  381  	case 1: /* Antenna 0 */
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  382  		phy_ctl |= B43_TXH_PHY_ANT0;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  383  		break;
9db1f6d725921c drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-12-22  384  	case 2: /* Antenna 1 */
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  385  		phy_ctl |= B43_TXH_PHY_ANT1;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  386  		break;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  387  	case 3: /* Antenna 2 */
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  388  		phy_ctl |= B43_TXH_PHY_ANT2;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  389  		break;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  390  	case 4: /* Antenna 3 */
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  391  		phy_ctl |= B43_TXH_PHY_ANT3;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  392  		break;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  393  	default:
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  394  		B43_WARN_ON(1);
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  395  	}
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  396  
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  397  	rates = info->control.rates;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  398  	/* MAC control */
e039fa4a4195ac drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  399  	if (!(info->flags & IEEE80211_TX_CTL_NO_ACK))
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  400  		mac_ctl |= B43_TXH_MAC_ACK;
f591fa5dbbbeae drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-07-10  401  	/* use hardware sequence counter as the non-TID counter */
f591fa5dbbbeae drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-07-10  402  	if (info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ)
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  403  		mac_ctl |= B43_TXH_MAC_HWSEQ;
e039fa4a4195ac drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  404  	if (info->flags & IEEE80211_TX_CTL_FIRST_FRAGMENT)
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  405  		mac_ctl |= B43_TXH_MAC_STMSDU;
24acfc632b7ba5 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2014-05-20  406  	if (!phy->gmode)
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  407  		mac_ctl |= B43_TXH_MAC_5GHZ;
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  408  
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  409  	/* Overwrite rates[0].count to make the retry calculation
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  410  	 * in the tx status easier. need the actual retry limit to
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  411  	 * detect whether the fallback rate was used.
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  412  	 */
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  413  	if ((rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS) ||
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  414  	    (rates[0].count <= dev->wl->hw->conf.long_frame_max_tx_count)) {
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  415  		rates[0].count = dev->wl->hw->conf.long_frame_max_tx_count;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  416  		mac_ctl |= B43_TXH_MAC_LONGFRAME;
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  417  	} else {
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  418  		rates[0].count = dev->wl->hw->conf.short_frame_max_tx_count;
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  419  	}
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  420  
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  421  	/* Generate the RTS or CTS-to-self frame */
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  422  	if ((rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS) ||
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  423  	    (rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT)) {
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  424  		unsigned int len;
3f649ab728cda8 drivers/net/wireless/broadcom/b43/xmit.c Kees Cook       2020-06-03  425  		struct ieee80211_hdr *hdr;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  426  		int rts_rate, rts_rate_fb;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  427  		int rts_rate_ofdm, rts_rate_fb_ofdm;
3f649ab728cda8 drivers/net/wireless/broadcom/b43/xmit.c Kees Cook       2020-06-03  428  		struct b43_plcp_hdr6 *plcp;
2e92e6f2c50b4b drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  429  		struct ieee80211_rate *rts_cts_rate;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  430  
e039fa4a4195ac drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  431  		rts_cts_rate = ieee80211_get_rts_cts_rate(dev->wl->hw, info);
2e92e6f2c50b4b drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  432  
2e92e6f2c50b4b drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  433  		rts_rate = rts_cts_rate ? rts_cts_rate->hw_value : B43_CCK_RATE_1MB;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  434  		rts_rate_ofdm = b43_is_ofdm_rate(rts_rate);
d0b03439f7845a drivers/net/wireless/broadcom/b43/xmit.c Adrian Chadd    2016-05-16  435  		rts_rate_fb = b43_calc_fallback_rate(rts_rate, phy->gmode);
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  436  		rts_rate_fb_ofdm = b43_is_ofdm_rate(rts_rate_fb);
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  437  
e6a9854b05c1a6 drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-10-21  438  		if (rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT) {
3f649ab728cda8 drivers/net/wireless/broadcom/b43/xmit.c Kees Cook       2020-06-03  439  			struct ieee80211_cts *cts;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  440  
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  441  			switch (dev->fw.hdr_format) {
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  442  			case B43_FW_HDR_598:
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  443  				cts = (struct ieee80211_cts *)
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  444  					(txhdr->format_598.rts_frame);
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  445  				break;
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  446  			case B43_FW_HDR_351:
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  447  				cts = (struct ieee80211_cts *)
2391b7e8d40e4b drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  448  					(txhdr->format_351.rts_frame);
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  449  				break;
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  450  			case B43_FW_HDR_410:
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  451  				cts = (struct ieee80211_cts *)
2391b7e8d40e4b drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  452  					(txhdr->format_410.rts_frame);
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  453  				break;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  454  			}
e039fa4a4195ac drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  455  			ieee80211_ctstoself_get(dev->wl->hw, info->control.vif,
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  456  						fragment_data, fragment_len,
e039fa4a4195ac drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15 @457  						info, cts);
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  458  			mac_ctl |= B43_TXH_MAC_SENDCTS;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  459  			len = sizeof(struct ieee80211_cts);
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  460  		} else {
3f649ab728cda8 drivers/net/wireless/broadcom/b43/xmit.c Kees Cook       2020-06-03  461  			struct ieee80211_rts *rts;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  462  
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  463  			switch (dev->fw.hdr_format) {
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  464  			case B43_FW_HDR_598:
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  465  				rts = (struct ieee80211_rts *)
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  466  					(txhdr->format_598.rts_frame);
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  467  				break;
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  468  			case B43_FW_HDR_351:
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  469  				rts = (struct ieee80211_rts *)
2391b7e8d40e4b drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  470  					(txhdr->format_351.rts_frame);
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  471  				break;
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  472  			case B43_FW_HDR_410:
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  473  				rts = (struct ieee80211_rts *)
2391b7e8d40e4b drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  474  					(txhdr->format_410.rts_frame);
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  475  				break;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  476  			}
e039fa4a4195ac drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15  477  			ieee80211_rts_get(dev->wl->hw, info->control.vif,
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  478  					  fragment_data, fragment_len,
e039fa4a4195ac drivers/net/wireless/b43/xmit.c          Johannes Berg   2008-05-15 @479  					  info, rts);
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  480  			mac_ctl |= B43_TXH_MAC_SENDRTS;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  481  			len = sizeof(struct ieee80211_rts);
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  482  		}
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  483  		len += FCS_LEN;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  484  
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  485  		/* Generate the PLCP headers for the RTS/CTS frame */
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  486  		switch (dev->fw.hdr_format) {
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  487  		case B43_FW_HDR_598:
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  488  			plcp = &txhdr->format_598.rts_plcp;
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  489  			break;
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  490  		case B43_FW_HDR_351:
2391b7e8d40e4b drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  491  			plcp = &txhdr->format_351.rts_plcp;
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  492  			break;
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  493  		case B43_FW_HDR_410:
2391b7e8d40e4b drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  494  			plcp = &txhdr->format_410.rts_plcp;
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  495  			break;
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  496  		}
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28 @497  		b43_generate_plcp_hdr((struct b43_plcp_hdr4 *)plcp,
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  498  				      len, rts_rate);
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  499  		plcp = &txhdr->rts_plcp_fb;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  500  		b43_generate_plcp_hdr((struct b43_plcp_hdr4 *)plcp,
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  501  				      len, rts_rate_fb);
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  502  
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  503  		switch (dev->fw.hdr_format) {
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  504  		case B43_FW_HDR_598:
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  505  			hdr = (struct ieee80211_hdr *)
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  506  				(&txhdr->format_598.rts_frame);
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  507  			break;
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  508  		case B43_FW_HDR_351:
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  509  			hdr = (struct ieee80211_hdr *)
2391b7e8d40e4b drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  510  				(&txhdr->format_351.rts_frame);
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  511  			break;
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  512  		case B43_FW_HDR_410:
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  513  			hdr = (struct ieee80211_hdr *)
2391b7e8d40e4b drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  514  				(&txhdr->format_410.rts_frame);
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  515  			break;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  516  		}
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18 @517  		txhdr->rts_dur_fb = hdr->duration_id;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  518  
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  519  		if (rts_rate_ofdm) {
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  520  			extra_ft |= B43_TXH_EFT_RTS_OFDM;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  521  			txhdr->phy_rate_rts =
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  522  			    b43_plcp_get_ratecode_ofdm(rts_rate);
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  523  		} else {
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  524  			extra_ft |= B43_TXH_EFT_RTS_CCK;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  525  			txhdr->phy_rate_rts =
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  526  			    b43_plcp_get_ratecode_cck(rts_rate);
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  527  		}
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  528  		if (rts_rate_fb_ofdm)
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  529  			extra_ft |= B43_TXH_EFT_RTSFB_OFDM;
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  530  		else
eb189d8bc9824b drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-28  531  			extra_ft |= B43_TXH_EFT_RTSFB_CCK;
3311abbbbff171 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  532  
3311abbbbff171 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  533  		if (rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS &&
694718d8ad2f0b drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-10-17  534  		    fill_phy_ctl1) {
3311abbbbff171 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  535  			txhdr->phy_ctl1_rts = cpu_to_le16(
3311abbbbff171 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  536  				b43_generate_tx_phy_ctl1(dev, rts_rate));
3311abbbbff171 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  537  			txhdr->phy_ctl1_rts_fb = cpu_to_le16(
3311abbbbff171 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  538  				b43_generate_tx_phy_ctl1(dev, rts_rate_fb));
3311abbbbff171 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  539  		}
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  540  	}
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  541  
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  542  	/* Magic cookie */
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  543  	switch (dev->fw.hdr_format) {
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  544  	case B43_FW_HDR_598:
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  545  		txhdr->format_598.cookie = cpu_to_le16(cookie);
5d852905561a97 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  546  		break;
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  547  	case B43_FW_HDR_351:
2391b7e8d40e4b drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  548  		txhdr->format_351.cookie = cpu_to_le16(cookie);
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  549  		break;
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  550  	case B43_FW_HDR_410:
2391b7e8d40e4b drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  551  		txhdr->format_410.cookie = cpu_to_le16(cookie);
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  552  		break;
efe0249b0fd1e9 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-08-11  553  	}
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  554  
694718d8ad2f0b drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-10-17  555  	if (fill_phy_ctl1) {
3311abbbbff171 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  556  		txhdr->phy_ctl1 =
3311abbbbff171 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  557  			cpu_to_le16(b43_generate_tx_phy_ctl1(dev, rate));
3311abbbbff171 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  558  		txhdr->phy_ctl1_fb =
3311abbbbff171 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  559  			cpu_to_le16(b43_generate_tx_phy_ctl1(dev, rate_fb));
3311abbbbff171 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  560  	}
3311abbbbff171 drivers/net/wireless/b43/xmit.c          Rafał Miłecki   2011-02-25  561  
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  562  	/* Apply the bitfields */
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  563  	txhdr->mac_ctl = cpu_to_le32(mac_ctl);
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  564  	txhdr->phy_ctl = cpu_to_le16(phy_ctl);
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  565  	txhdr->extra_ft = extra_ft;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  566  
09552ccd8277e6 drivers/net/wireless/b43/xmit.c          Michael Buesch  2008-01-23  567  	return 0;
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  568  }
e4d6b7951812d9 drivers/net/wireless/b43/xmit.c          Michael Buesch  2007-09-18  569  

:::::: The code at line 457 was first introduced by commit
:::::: e039fa4a4195ac4ee895e6f3d1334beed63256fe mac80211: move TX info into skb->cb

:::::: TO: Johannes Berg <johannes@sipsolutions.net>
:::::: CC: John W. Linville <linville@tuxdriver.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 35744 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-06-25 13:05 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-10-11  6:21 drivers/net/wireless/broadcom/b43/xmit.c:457 b43_generate_txhdr() error: uninitialized symbol 'cts' kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2021-06-25 13:05 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.