drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c:6771 rtl8xxxu_probe() warn: variable dereferenced before check 'priv' (see line 6665)
From: Dan Carpenter
Date: Wed Aug 17 2022 - 04:52:31 EST
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 568035b01cfb107af8d2e4bd2fb9aea22cf5b868
commit: 13876f2a087ad352bf640a7a0a4a4229ea6e9e4f wifi: rtl8xxxu: Fix the error handling of the probe function
config: ia64-randconfig-m031-20220814 (https://download.01.org/0day-ci/archive/20220816/202208162305.WUMVi6BN-lkp@xxxxxxxxx/config)
compiler: ia64-linux-gcc (GCC) 12.1.0
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@xxxxxxxxx>
Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
New smatch warnings:
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c:6771 rtl8xxxu_probe() warn: variable dereferenced before check 'priv' (see line 6665)
vim +/priv +6771 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6600 static int rtl8xxxu_probe(struct usb_interface *interface,
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6601 const struct usb_device_id *id)
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6602 {
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6603 struct rtl8xxxu_priv *priv;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6604 struct ieee80211_hw *hw;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6605 struct usb_device *udev;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6606 struct ieee80211_supported_band *sband;
deb6176e561324 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6607 int ret;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6608 int untested = 1;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6609
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6610 udev = usb_get_dev(interface_to_usbdev(interface));
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6611
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6612 switch (id->idVendor) {
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6613 case USB_VENDOR_ID_REALTEK:
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6614 switch(id->idProduct) {
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6615 case 0x1724:
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6616 case 0x8176:
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6617 case 0x8178:
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6618 case 0x817f:
d607e396566a10 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2017-01-17 6619 case 0x818b:
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6620 untested = 0;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6621 break;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6622 }
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6623 break;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6624 case 0x7392:
408f122a1f9230 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2019-11-12 6625 if (id->idProduct == 0x7811 || id->idProduct == 0xa611)
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6626 untested = 0;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6627 break;
e1d70c9b04000e drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2016-04-14 6628 case 0x050d:
e1d70c9b04000e drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2016-04-14 6629 if (id->idProduct == 0x1004)
e1d70c9b04000e drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2016-04-14 6630 untested = 0;
e1d70c9b04000e drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2016-04-14 6631 break;
b81669b9e0b486 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6632 case 0x20f4:
b81669b9e0b486 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6633 if (id->idProduct == 0x648b)
b81669b9e0b486 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6634 untested = 0;
b81669b9e0b486 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6635 break;
76a8e07d49b652 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6636 case 0x2001:
76a8e07d49b652 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6637 if (id->idProduct == 0x3308)
76a8e07d49b652 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6638 untested = 0;
76a8e07d49b652 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6639 break;
690a6d268bdf85 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6640 case 0x2357:
690a6d268bdf85 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6641 if (id->idProduct == 0x0109)
690a6d268bdf85 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6642 untested = 0;
690a6d268bdf85 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6643 break;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6644 default:
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6645 break;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6646 }
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6647
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6648 if (untested) {
eaa4d14c97c199 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2016-02-29 6649 rtl8xxxu_debug |= RTL8XXXU_DEBUG_EFUSE;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6650 dev_info(&udev->dev,
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6651 "This Realtek USB WiFi dongle (0x%04x:0x%04x) is untested!\n",
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6652 id->idVendor, id->idProduct);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6653 dev_info(&udev->dev,
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6654 "Please report results to Jes.Sorensen@xxxxxxxxx\n");
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6655 }
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6656
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6657 hw = ieee80211_alloc_hw(sizeof(struct rtl8xxxu_priv), &rtl8xxxu_ops);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6658 if (!hw) {
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6659 ret = -ENOMEM;
deb6176e561324 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6660 priv = NULL;
13876f2a087ad3 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Zheyu Ma 2022-07-16 6661 goto err_put_dev;
It you wanted, you could delete the "priv = NULL;" assignment. It's not
used any more. I think it will cause a dead store (unused assignment)
warning on clang.
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6662 }
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6663
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6664 priv = hw->priv;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 @6665 priv->hw = hw;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6666 priv->udev = udev;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6667 priv->fops = (struct rtl8xxxu_fileops *)id->driver_info;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6668 mutex_init(&priv->usb_buf_mutex);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6669 mutex_init(&priv->h2c_mutex);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6670 INIT_LIST_HEAD(&priv->tx_urb_free_list);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6671 spin_lock_init(&priv->tx_urb_lock);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6672 INIT_LIST_HEAD(&priv->rx_urb_pending_list);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6673 spin_lock_init(&priv->rx_urb_lock);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6674 INIT_WORK(&priv->rx_urb_wq, rtl8xxxu_rx_urb_work);
a9bb0b51577835 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Chris Chiu 2019-10-02 6675 INIT_DELAYED_WORK(&priv->ra_watchdog, rtl8xxxu_watchdog_callback);
e542e66b7c2ee2 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Chris Chiu 2019-10-05 6676 INIT_WORK(&priv->c2hcmd_work, rtl8xxxu_c2hcmd_callback);
e542e66b7c2ee2 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Chris Chiu 2019-10-05 6677 skb_queue_head_init(&priv->c2hcmd_queue);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6678
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6679 usb_set_intfdata(interface, hw);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6680
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6681 ret = rtl8xxxu_parse_usb(priv, interface);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6682 if (ret)
13876f2a087ad3 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Zheyu Ma 2022-07-16 6683 goto err_set_intfdata;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6684
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6685 ret = rtl8xxxu_identify_chip(priv);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6686 if (ret) {
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6687 dev_err(&udev->dev, "Fatal - failed to identify chip\n");
13876f2a087ad3 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Zheyu Ma 2022-07-16 6688 goto err_set_intfdata;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6689 }
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6690
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6691 ret = rtl8xxxu_read_efuse(priv);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6692 if (ret) {
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6693 dev_err(&udev->dev, "Fatal - failed to read EFuse\n");
13876f2a087ad3 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Zheyu Ma 2022-07-16 6694 goto err_set_intfdata;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6695 }
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6696
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6697 ret = priv->fops->parse_efuse(priv);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6698 if (ret) {
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6699 dev_err(&udev->dev, "Fatal - failed to parse EFuse\n");
13876f2a087ad3 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Zheyu Ma 2022-07-16 6700 goto err_set_intfdata;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6701 }
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6702
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6703 rtl8xxxu_print_chipinfo(priv);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6704
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6705 ret = priv->fops->load_firmware(priv);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6706 if (ret) {
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6707 dev_err(&udev->dev, "Fatal - failed to load firmware\n");
13876f2a087ad3 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Zheyu Ma 2022-07-16 6708 goto err_set_intfdata;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6709 }
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6710
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6711 ret = rtl8xxxu_init_device(hw);
deb6176e561324 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6712 if (ret)
13876f2a087ad3 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Zheyu Ma 2022-07-16 6713 goto err_set_intfdata;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6714
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6715 hw->wiphy->max_scan_ssids = 1;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6716 hw->wiphy->max_scan_ie_len = IEEE80211_MAX_DATA_LEN;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6717 hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6718 hw->queues = 4;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6719
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6720 sband = &rtl8xxxu_supported_band;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6721 sband->ht_cap.ht_supported = true;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6722 sband->ht_cap.ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6723 sband->ht_cap.ampdu_density = IEEE80211_HT_MPDU_DENSITY_16;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6724 sband->ht_cap.cap = IEEE80211_HT_CAP_SGI_20 | IEEE80211_HT_CAP_SGI_40;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6725 memset(&sband->ht_cap.mcs, 0, sizeof(sband->ht_cap.mcs));
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6726 sband->ht_cap.mcs.rx_mask[0] = 0xff;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6727 sband->ht_cap.mcs.rx_mask[4] = 0x01;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6728 if (priv->rf_paths > 1) {
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6729 sband->ht_cap.mcs.rx_mask[1] = 0xff;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6730 sband->ht_cap.cap |= IEEE80211_HT_CAP_SGI_40;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6731 }
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6732 sband->ht_cap.mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6733 /*
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6734 * Some APs will negotiate HT20_40 in a noisy environment leading
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6735 * to miserable performance. Rather than defaulting to this, only
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6736 * enable it if explicitly requested at module load time.
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6737 */
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6738 if (rtl8xxxu_ht40_2g) {
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6739 dev_info(&udev->dev, "Enabling HT_20_40 on the 2.4GHz band\n");
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6740 sband->ht_cap.cap |= IEEE80211_HT_CAP_SUP_WIDTH_20_40;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6741 }
57fbcce37be7c1 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Johannes Berg 2016-04-12 6742 hw->wiphy->bands[NL80211_BAND_2GHZ] = sband;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6743
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6744 hw->wiphy->rts_threshold = 2347;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6745
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6746 SET_IEEE80211_DEV(priv->hw, &interface->dev);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6747 SET_IEEE80211_PERM_ADDR(hw, priv->mac_addr);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6748
179e1742569620 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2016-02-29 6749 hw->extra_tx_headroom = priv->fops->tx_desc_size;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6750 ieee80211_hw_set(hw, SIGNAL_DBM);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6751 /*
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6752 * The firmware handles rate control
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6753 */
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6754 ieee80211_hw_set(hw, HAS_RATE_CONTROL);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6755 ieee80211_hw_set(hw, AMPDU_AGGREGATION);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6756
ae44b502669d0c drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Andrew Zaborowski 2017-02-10 6757 wiphy_ext_feature_set(hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST);
ae44b502669d0c drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Andrew Zaborowski 2017-02-10 6758
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6759 ret = ieee80211_register_hw(priv->hw);
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6760 if (ret) {
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6761 dev_err(&udev->dev, "%s: Failed to register: %i\n",
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6762 __func__, ret);
13876f2a087ad3 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Zheyu Ma 2022-07-16 6763 goto err_set_intfdata;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6764 }
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6765
deb6176e561324 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6766 return 0;
deb6176e561324 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6767
13876f2a087ad3 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Zheyu Ma 2022-07-16 6768 err_set_intfdata:
deb6176e561324 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6769 usb_set_intfdata(interface, NULL);
deb6176e561324 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6770
deb6176e561324 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 @6771 if (priv) {
You can delete this check now.
deb6176e561324 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6772 kfree(priv->fw_data);
deb6176e561324 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6773 mutex_destroy(&priv->usb_buf_mutex);
deb6176e561324 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6774 mutex_destroy(&priv->h2c_mutex);
deb6176e561324 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6775 }
deb6176e561324 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6776
deb6176e561324 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6777 ieee80211_free_hw(hw);
13876f2a087ad3 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Zheyu Ma 2022-07-16 6778 err_put_dev:
13876f2a087ad3 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Zheyu Ma 2022-07-16 6779 usb_put_dev(udev);
deb6176e561324 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c Jes Sorensen 2016-08-19 6780
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6781 return ret;
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6782 }
26f1fad29ad973 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c Jes Sorensen 2015-10-14 6783
--
0-DAY CI Kernel Test Service
https://01.org/lkp