* [PATCH v3] ath10k: high latency fixes for beacon buffer
@ 2021-08-18 23:26 ` Fabio Estevam
0 siblings, 0 replies; 9+ messages in thread
From: Fabio Estevam @ 2021-08-18 23:26 UTC (permalink / raw
To: kvalo
Cc: ath10k, linux-wireless, hch, erik.stromdahl, peter.oh, aspriel,
marex, alagusankar, Fabio Estevam
From: Alagu Sankar <alagusankar@silex-india.com>
Beacon buffer for high latency devices does not use DMA. other similar
buffer allocation methods in the driver have already been modified for
high latency path. Fix the beacon buffer allocation left out in the
earlier high latency changes.
Signed-off-by: Alagu Sankar <alagusankar@silex-india.com>
Signed-off-by: Erik Stromdahl <erik.stromdahl@gmail.com>
[fabio: adapt it to use ar->bus_param.dev_type ]
Signed-off-by: Fabio Estevam <festevam@denx.de>
---
Changes since v2:
- Pick Alagu's patch:
https://patchwork.kernel.org/project/ath10k/patch/20190417191503.18814-3-erik.stromdahl@gmail.com/
drivers/net/wireless/ath/ath10k/mac.c | 31 ++++++++++++++++++++-------
1 file changed, 23 insertions(+), 8 deletions(-)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index c272b290fa73..7ca68c81d9b6 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -993,8 +993,12 @@ static void ath10k_mac_vif_beacon_cleanup(struct ath10k_vif *arvif)
ath10k_mac_vif_beacon_free(arvif);
if (arvif->beacon_buf) {
- dma_free_coherent(ar->dev, IEEE80211_MAX_FRAME_LEN,
- arvif->beacon_buf, arvif->beacon_paddr);
+ if (ar->bus_param.dev_type == ATH10K_DEV_TYPE_HL)
+ kfree(arvif->beacon_buf);
+ else
+ dma_free_coherent(ar->dev, IEEE80211_MAX_FRAME_LEN,
+ arvif->beacon_buf,
+ arvif->beacon_paddr);
arvif->beacon_buf = NULL;
}
}
@@ -5576,10 +5580,17 @@ static int ath10k_add_interface(struct ieee80211_hw *hw,
if (vif->type == NL80211_IFTYPE_ADHOC ||
vif->type == NL80211_IFTYPE_MESH_POINT ||
vif->type == NL80211_IFTYPE_AP) {
- arvif->beacon_buf = dma_alloc_coherent(ar->dev,
- IEEE80211_MAX_FRAME_LEN,
- &arvif->beacon_paddr,
- GFP_ATOMIC);
+ if (ar->bus_param.dev_type == ATH10K_DEV_TYPE_HL) {
+ arvif->beacon_buf = kmalloc(IEEE80211_MAX_FRAME_LEN,
+ GFP_KERNEL);
+ arvif->beacon_paddr = (dma_addr_t)arvif->beacon_buf;
+ } else {
+ arvif->beacon_buf =
+ dma_alloc_coherent(ar->dev,
+ IEEE80211_MAX_FRAME_LEN,
+ &arvif->beacon_paddr,
+ GFP_ATOMIC);
+ }
if (!arvif->beacon_buf) {
ret = -ENOMEM;
ath10k_warn(ar, "failed to allocate beacon buffer: %d\n",
@@ -5794,8 +5805,12 @@ static int ath10k_add_interface(struct ieee80211_hw *hw,
err:
if (arvif->beacon_buf) {
- dma_free_coherent(ar->dev, IEEE80211_MAX_FRAME_LEN,
- arvif->beacon_buf, arvif->beacon_paddr);
+ if (ar->bus_param.dev_type == ATH10K_DEV_TYPE_HL)
+ kfree(arvif->beacon_buf);
+ else
+ dma_free_coherent(ar->dev, IEEE80211_MAX_FRAME_LEN,
+ arvif->beacon_buf,
+ arvif->beacon_paddr);
arvif->beacon_buf = NULL;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v3] ath10k: high latency fixes for beacon buffer
@ 2021-08-18 23:26 ` Fabio Estevam
0 siblings, 0 replies; 9+ messages in thread
From: Fabio Estevam @ 2021-08-18 23:26 UTC (permalink / raw
To: kvalo
Cc: ath10k, linux-wireless, hch, erik.stromdahl, peter.oh, aspriel,
marex, alagusankar, Fabio Estevam
From: Alagu Sankar <alagusankar@silex-india.com>
Beacon buffer for high latency devices does not use DMA. other similar
buffer allocation methods in the driver have already been modified for
high latency path. Fix the beacon buffer allocation left out in the
earlier high latency changes.
Signed-off-by: Alagu Sankar <alagusankar@silex-india.com>
Signed-off-by: Erik Stromdahl <erik.stromdahl@gmail.com>
[fabio: adapt it to use ar->bus_param.dev_type ]
Signed-off-by: Fabio Estevam <festevam@denx.de>
---
Changes since v2:
- Pick Alagu's patch:
https://patchwork.kernel.org/project/ath10k/patch/20190417191503.18814-3-erik.stromdahl@gmail.com/
drivers/net/wireless/ath/ath10k/mac.c | 31 ++++++++++++++++++++-------
1 file changed, 23 insertions(+), 8 deletions(-)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index c272b290fa73..7ca68c81d9b6 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -993,8 +993,12 @@ static void ath10k_mac_vif_beacon_cleanup(struct ath10k_vif *arvif)
ath10k_mac_vif_beacon_free(arvif);
if (arvif->beacon_buf) {
- dma_free_coherent(ar->dev, IEEE80211_MAX_FRAME_LEN,
- arvif->beacon_buf, arvif->beacon_paddr);
+ if (ar->bus_param.dev_type == ATH10K_DEV_TYPE_HL)
+ kfree(arvif->beacon_buf);
+ else
+ dma_free_coherent(ar->dev, IEEE80211_MAX_FRAME_LEN,
+ arvif->beacon_buf,
+ arvif->beacon_paddr);
arvif->beacon_buf = NULL;
}
}
@@ -5576,10 +5580,17 @@ static int ath10k_add_interface(struct ieee80211_hw *hw,
if (vif->type == NL80211_IFTYPE_ADHOC ||
vif->type == NL80211_IFTYPE_MESH_POINT ||
vif->type == NL80211_IFTYPE_AP) {
- arvif->beacon_buf = dma_alloc_coherent(ar->dev,
- IEEE80211_MAX_FRAME_LEN,
- &arvif->beacon_paddr,
- GFP_ATOMIC);
+ if (ar->bus_param.dev_type == ATH10K_DEV_TYPE_HL) {
+ arvif->beacon_buf = kmalloc(IEEE80211_MAX_FRAME_LEN,
+ GFP_KERNEL);
+ arvif->beacon_paddr = (dma_addr_t)arvif->beacon_buf;
+ } else {
+ arvif->beacon_buf =
+ dma_alloc_coherent(ar->dev,
+ IEEE80211_MAX_FRAME_LEN,
+ &arvif->beacon_paddr,
+ GFP_ATOMIC);
+ }
if (!arvif->beacon_buf) {
ret = -ENOMEM;
ath10k_warn(ar, "failed to allocate beacon buffer: %d\n",
@@ -5794,8 +5805,12 @@ static int ath10k_add_interface(struct ieee80211_hw *hw,
err:
if (arvif->beacon_buf) {
- dma_free_coherent(ar->dev, IEEE80211_MAX_FRAME_LEN,
- arvif->beacon_buf, arvif->beacon_paddr);
+ if (ar->bus_param.dev_type == ATH10K_DEV_TYPE_HL)
+ kfree(arvif->beacon_buf);
+ else
+ dma_free_coherent(ar->dev, IEEE80211_MAX_FRAME_LEN,
+ arvif->beacon_buf,
+ arvif->beacon_paddr);
arvif->beacon_buf = NULL;
}
--
2.25.1
_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v3] ath10k: high latency fixes for beacon buffer
2021-08-18 23:26 ` Fabio Estevam
(?)
@ 2021-08-20 6:45 ` kernel test robot
-1 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2021-08-20 6:45 UTC (permalink / raw
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 16337 bytes --]
Hi Fabio,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on ath6kl/ath-next]
[also build test WARNING on wireless-drivers-next/master wireless-drivers/master v5.14-rc6 next-20210819]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Fabio-Estevam/ath10k-high-latency-fixes-for-beacon-buffer/20210819-072934
base: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git ath-next
config: arc-randconfig-p001-20210818 (attached as .config)
compiler: arceb-elf-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/eb431ba513a87e043e8e8ba40f6f9509e62111bd
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Fabio-Estevam/ath10k-high-latency-fixes-for-beacon-buffer/20210819-072934
git checkout eb431ba513a87e043e8e8ba40f6f9509e62111bd
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=arc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/net/wireless/ath/ath10k/mac.c: In function 'ath10k_add_interface':
>> drivers/net/wireless/ath/ath10k/mac.c:5586:47: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
5586 | arvif->beacon_paddr = (dma_addr_t)arvif->beacon_buf;
| ^
vim +5586 drivers/net/wireless/ath/ath10k/mac.c
5449
5450 /*
5451 * TODO:
5452 * Figure out how to handle WMI_VDEV_SUBTYPE_P2P_DEVICE,
5453 * because we will send mgmt frames without CCK. This requirement
5454 * for P2P_FIND/GO_NEG should be handled by checking CCK flag
5455 * in the TX packet.
5456 */
5457 static int ath10k_add_interface(struct ieee80211_hw *hw,
5458 struct ieee80211_vif *vif)
5459 {
5460 struct ath10k *ar = hw->priv;
5461 struct ath10k_vif *arvif = (void *)vif->drv_priv;
5462 struct ath10k_peer *peer;
5463 enum wmi_sta_powersave_param param;
5464 int ret = 0;
5465 u32 value;
5466 int bit;
5467 int i;
5468 u32 vdev_param;
5469
5470 vif->driver_flags |= IEEE80211_VIF_SUPPORTS_UAPSD;
5471
5472 mutex_lock(&ar->conf_mutex);
5473
5474 memset(arvif, 0, sizeof(*arvif));
5475 ath10k_mac_txq_init(vif->txq);
5476
5477 arvif->ar = ar;
5478 arvif->vif = vif;
5479
5480 INIT_LIST_HEAD(&arvif->list);
5481 INIT_WORK(&arvif->ap_csa_work, ath10k_mac_vif_ap_csa_work);
5482 INIT_DELAYED_WORK(&arvif->connection_loss_work,
5483 ath10k_mac_vif_sta_connection_loss_work);
5484
5485 for (i = 0; i < ARRAY_SIZE(arvif->bitrate_mask.control); i++) {
5486 arvif->bitrate_mask.control[i].legacy = 0xffffffff;
5487 memset(arvif->bitrate_mask.control[i].ht_mcs, 0xff,
5488 sizeof(arvif->bitrate_mask.control[i].ht_mcs));
5489 memset(arvif->bitrate_mask.control[i].vht_mcs, 0xff,
5490 sizeof(arvif->bitrate_mask.control[i].vht_mcs));
5491 }
5492
5493 if (ar->num_peers >= ar->max_num_peers) {
5494 ath10k_warn(ar, "refusing vdev creation due to insufficient peer entry resources in firmware\n");
5495 ret = -ENOBUFS;
5496 goto err;
5497 }
5498
5499 if (ar->free_vdev_map == 0) {
5500 ath10k_warn(ar, "Free vdev map is empty, no more interfaces allowed.\n");
5501 ret = -EBUSY;
5502 goto err;
5503 }
5504 bit = __ffs64(ar->free_vdev_map);
5505
5506 ath10k_dbg(ar, ATH10K_DBG_MAC, "mac create vdev %i map %llx\n",
5507 bit, ar->free_vdev_map);
5508
5509 arvif->vdev_id = bit;
5510 arvif->vdev_subtype =
5511 ath10k_wmi_get_vdev_subtype(ar, WMI_VDEV_SUBTYPE_NONE);
5512
5513 switch (vif->type) {
5514 case NL80211_IFTYPE_P2P_DEVICE:
5515 arvif->vdev_type = WMI_VDEV_TYPE_STA;
5516 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype
5517 (ar, WMI_VDEV_SUBTYPE_P2P_DEVICE);
5518 break;
5519 case NL80211_IFTYPE_UNSPECIFIED:
5520 case NL80211_IFTYPE_STATION:
5521 arvif->vdev_type = WMI_VDEV_TYPE_STA;
5522 if (vif->p2p)
5523 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype
5524 (ar, WMI_VDEV_SUBTYPE_P2P_CLIENT);
5525 break;
5526 case NL80211_IFTYPE_ADHOC:
5527 arvif->vdev_type = WMI_VDEV_TYPE_IBSS;
5528 break;
5529 case NL80211_IFTYPE_MESH_POINT:
5530 if (test_bit(WMI_SERVICE_MESH_11S, ar->wmi.svc_map)) {
5531 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype
5532 (ar, WMI_VDEV_SUBTYPE_MESH_11S);
5533 } else if (!test_bit(ATH10K_FLAG_RAW_MODE, &ar->dev_flags)) {
5534 ret = -EINVAL;
5535 ath10k_warn(ar, "must load driver with rawmode=1 to add mesh interfaces\n");
5536 goto err;
5537 }
5538 arvif->vdev_type = WMI_VDEV_TYPE_AP;
5539 break;
5540 case NL80211_IFTYPE_AP:
5541 arvif->vdev_type = WMI_VDEV_TYPE_AP;
5542
5543 if (vif->p2p)
5544 arvif->vdev_subtype = ath10k_wmi_get_vdev_subtype
5545 (ar, WMI_VDEV_SUBTYPE_P2P_GO);
5546 break;
5547 case NL80211_IFTYPE_MONITOR:
5548 arvif->vdev_type = WMI_VDEV_TYPE_MONITOR;
5549 break;
5550 default:
5551 WARN_ON(1);
5552 break;
5553 }
5554
5555 /* Using vdev_id as queue number will make it very easy to do per-vif
5556 * tx queue locking. This shouldn't wrap due to interface combinations
5557 * but do a modulo for correctness sake and prevent using offchannel tx
5558 * queues for regular vif tx.
5559 */
5560 vif->cab_queue = arvif->vdev_id % (IEEE80211_MAX_QUEUES - 1);
5561 for (i = 0; i < ARRAY_SIZE(vif->hw_queue); i++)
5562 vif->hw_queue[i] = arvif->vdev_id % (IEEE80211_MAX_QUEUES - 1);
5563
5564 /* Some firmware revisions don't wait for beacon tx completion before
5565 * sending another SWBA event. This could lead to hardware using old
5566 * (freed) beacon data in some cases, e.g. tx credit starvation
5567 * combined with missed TBTT. This is very rare.
5568 *
5569 * On non-IOMMU-enabled hosts this could be a possible security issue
5570 * because hw could beacon some random data on the air. On
5571 * IOMMU-enabled hosts DMAR faults would occur in most cases and target
5572 * device would crash.
5573 *
5574 * Since there are no beacon tx completions (implicit nor explicit)
5575 * propagated to host the only workaround for this is to allocate a
5576 * DMA-coherent buffer for a lifetime of a vif and use it for all
5577 * beacon tx commands. Worst case for this approach is some beacons may
5578 * become corrupted, e.g. have garbled IEs or out-of-date TIM bitmap.
5579 */
5580 if (vif->type == NL80211_IFTYPE_ADHOC ||
5581 vif->type == NL80211_IFTYPE_MESH_POINT ||
5582 vif->type == NL80211_IFTYPE_AP) {
5583 if (ar->bus_param.dev_type == ATH10K_DEV_TYPE_HL) {
5584 arvif->beacon_buf = kmalloc(IEEE80211_MAX_FRAME_LEN,
5585 GFP_KERNEL);
> 5586 arvif->beacon_paddr = (dma_addr_t)arvif->beacon_buf;
5587 } else {
5588 arvif->beacon_buf =
5589 dma_alloc_coherent(ar->dev,
5590 IEEE80211_MAX_FRAME_LEN,
5591 &arvif->beacon_paddr,
5592 GFP_ATOMIC);
5593 }
5594 if (!arvif->beacon_buf) {
5595 ret = -ENOMEM;
5596 ath10k_warn(ar, "failed to allocate beacon buffer: %d\n",
5597 ret);
5598 goto err;
5599 }
5600 }
5601 if (test_bit(ATH10K_FLAG_HW_CRYPTO_DISABLED, &ar->dev_flags))
5602 arvif->nohwcrypt = true;
5603
5604 if (arvif->nohwcrypt &&
5605 !test_bit(ATH10K_FLAG_RAW_MODE, &ar->dev_flags)) {
5606 ret = -EINVAL;
5607 ath10k_warn(ar, "cryptmode module param needed for sw crypto\n");
5608 goto err;
5609 }
5610
5611 ath10k_dbg(ar, ATH10K_DBG_MAC, "mac vdev create %d (add interface) type %d subtype %d bcnmode %s\n",
5612 arvif->vdev_id, arvif->vdev_type, arvif->vdev_subtype,
5613 arvif->beacon_buf ? "single-buf" : "per-skb");
5614
5615 ret = ath10k_wmi_vdev_create(ar, arvif->vdev_id, arvif->vdev_type,
5616 arvif->vdev_subtype, vif->addr);
5617 if (ret) {
5618 ath10k_warn(ar, "failed to create WMI vdev %i: %d\n",
5619 arvif->vdev_id, ret);
5620 goto err;
5621 }
5622
5623 if (test_bit(WMI_SERVICE_VDEV_DISABLE_4_ADDR_SRC_LRN_SUPPORT,
5624 ar->wmi.svc_map)) {
5625 vdev_param = ar->wmi.vdev_param->disable_4addr_src_lrn;
5626 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
5627 WMI_VDEV_DISABLE_4_ADDR_SRC_LRN);
5628 if (ret && ret != -EOPNOTSUPP) {
5629 ath10k_warn(ar, "failed to disable 4addr src lrn vdev %i: %d\n",
5630 arvif->vdev_id, ret);
5631 }
5632 }
5633
5634 ar->free_vdev_map &= ~(1LL << arvif->vdev_id);
5635 spin_lock_bh(&ar->data_lock);
5636 list_add(&arvif->list, &ar->arvifs);
5637 spin_unlock_bh(&ar->data_lock);
5638
5639 /* It makes no sense to have firmware do keepalives. mac80211 already
5640 * takes care of this with idle connection polling.
5641 */
5642 ret = ath10k_mac_vif_disable_keepalive(arvif);
5643 if (ret) {
5644 ath10k_warn(ar, "failed to disable keepalive on vdev %i: %d\n",
5645 arvif->vdev_id, ret);
5646 goto err_vdev_delete;
5647 }
5648
5649 arvif->def_wep_key_idx = -1;
5650
5651 vdev_param = ar->wmi.vdev_param->tx_encap_type;
5652 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
5653 ATH10K_HW_TXRX_NATIVE_WIFI);
5654 /* 10.X firmware does not support this VDEV parameter. Do not warn */
5655 if (ret && ret != -EOPNOTSUPP) {
5656 ath10k_warn(ar, "failed to set vdev %i TX encapsulation: %d\n",
5657 arvif->vdev_id, ret);
5658 goto err_vdev_delete;
5659 }
5660
5661 /* Configuring number of spatial stream for monitor interface is causing
5662 * target assert in qca9888 and qca6174.
5663 */
5664 if (ar->cfg_tx_chainmask && (vif->type != NL80211_IFTYPE_MONITOR)) {
5665 u16 nss = get_nss_from_chainmask(ar->cfg_tx_chainmask);
5666
5667 vdev_param = ar->wmi.vdev_param->nss;
5668 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
5669 nss);
5670 if (ret) {
5671 ath10k_warn(ar, "failed to set vdev %i chainmask 0x%x, nss %i: %d\n",
5672 arvif->vdev_id, ar->cfg_tx_chainmask, nss,
5673 ret);
5674 goto err_vdev_delete;
5675 }
5676 }
5677
5678 if (arvif->vdev_type == WMI_VDEV_TYPE_AP ||
5679 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) {
5680 ret = ath10k_peer_create(ar, vif, NULL, arvif->vdev_id,
5681 vif->addr, WMI_PEER_TYPE_DEFAULT);
5682 if (ret) {
5683 ath10k_warn(ar, "failed to create vdev %i peer for AP/IBSS: %d\n",
5684 arvif->vdev_id, ret);
5685 goto err_vdev_delete;
5686 }
5687
5688 spin_lock_bh(&ar->data_lock);
5689
5690 peer = ath10k_peer_find(ar, arvif->vdev_id, vif->addr);
5691 if (!peer) {
5692 ath10k_warn(ar, "failed to lookup peer %pM on vdev %i\n",
5693 vif->addr, arvif->vdev_id);
5694 spin_unlock_bh(&ar->data_lock);
5695 ret = -ENOENT;
5696 goto err_peer_delete;
5697 }
5698
5699 arvif->peer_id = find_first_bit(peer->peer_ids,
5700 ATH10K_MAX_NUM_PEER_IDS);
5701
5702 spin_unlock_bh(&ar->data_lock);
5703 } else {
5704 arvif->peer_id = HTT_INVALID_PEERID;
5705 }
5706
5707 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
5708 ret = ath10k_mac_set_kickout(arvif);
5709 if (ret) {
5710 ath10k_warn(ar, "failed to set vdev %i kickout parameters: %d\n",
5711 arvif->vdev_id, ret);
5712 goto err_peer_delete;
5713 }
5714 }
5715
5716 if (arvif->vdev_type == WMI_VDEV_TYPE_STA) {
5717 param = WMI_STA_PS_PARAM_RX_WAKE_POLICY;
5718 value = WMI_STA_PS_RX_WAKE_POLICY_WAKE;
5719 ret = ath10k_wmi_set_sta_ps_param(ar, arvif->vdev_id,
5720 param, value);
5721 if (ret) {
5722 ath10k_warn(ar, "failed to set vdev %i RX wake policy: %d\n",
5723 arvif->vdev_id, ret);
5724 goto err_peer_delete;
5725 }
5726
5727 ret = ath10k_mac_vif_recalc_ps_wake_threshold(arvif);
5728 if (ret) {
5729 ath10k_warn(ar, "failed to recalc ps wake threshold on vdev %i: %d\n",
5730 arvif->vdev_id, ret);
5731 goto err_peer_delete;
5732 }
5733
5734 ret = ath10k_mac_vif_recalc_ps_poll_count(arvif);
5735 if (ret) {
5736 ath10k_warn(ar, "failed to recalc ps poll count on vdev %i: %d\n",
5737 arvif->vdev_id, ret);
5738 goto err_peer_delete;
5739 }
5740 }
5741
5742 ret = ath10k_mac_set_txbf_conf(arvif);
5743 if (ret) {
5744 ath10k_warn(ar, "failed to set txbf for vdev %d: %d\n",
5745 arvif->vdev_id, ret);
5746 goto err_peer_delete;
5747 }
5748
5749 ret = ath10k_mac_set_rts(arvif, ar->hw->wiphy->rts_threshold);
5750 if (ret) {
5751 ath10k_warn(ar, "failed to set rts threshold for vdev %d: %d\n",
5752 arvif->vdev_id, ret);
5753 goto err_peer_delete;
5754 }
5755
5756 arvif->txpower = vif->bss_conf.txpower;
5757 ret = ath10k_mac_txpower_recalc(ar);
5758 if (ret) {
5759 ath10k_warn(ar, "failed to recalc tx power: %d\n", ret);
5760 goto err_peer_delete;
5761 }
5762
5763 if (test_bit(WMI_SERVICE_RTT_RESPONDER_ROLE, ar->wmi.svc_map)) {
5764 vdev_param = ar->wmi.vdev_param->rtt_responder_role;
5765 ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
5766 arvif->ftm_responder);
5767
5768 /* It is harmless to not set FTM role. Do not warn */
5769 if (ret && ret != -EOPNOTSUPP)
5770 ath10k_warn(ar, "failed to set vdev %i FTM Responder: %d\n",
5771 arvif->vdev_id, ret);
5772 }
5773
5774 if (vif->type == NL80211_IFTYPE_MONITOR) {
5775 ar->monitor_arvif = arvif;
5776 ret = ath10k_monitor_recalc(ar);
5777 if (ret) {
5778 ath10k_warn(ar, "failed to recalc monitor: %d\n", ret);
5779 goto err_peer_delete;
5780 }
5781 }
5782
5783 spin_lock_bh(&ar->htt.tx_lock);
5784 if (!ar->tx_paused)
5785 ieee80211_wake_queue(ar->hw, arvif->vdev_id);
5786 spin_unlock_bh(&ar->htt.tx_lock);
5787
5788 mutex_unlock(&ar->conf_mutex);
5789 return 0;
5790
5791 err_peer_delete:
5792 if (arvif->vdev_type == WMI_VDEV_TYPE_AP ||
5793 arvif->vdev_type == WMI_VDEV_TYPE_IBSS) {
5794 ath10k_wmi_peer_delete(ar, arvif->vdev_id, vif->addr);
5795 ath10k_wait_for_peer_delete_done(ar, arvif->vdev_id,
5796 vif->addr);
5797 }
5798
5799 err_vdev_delete:
5800 ath10k_wmi_vdev_delete(ar, arvif->vdev_id);
5801 ar->free_vdev_map |= 1LL << arvif->vdev_id;
5802 spin_lock_bh(&ar->data_lock);
5803 list_del(&arvif->list);
5804 spin_unlock_bh(&ar->data_lock);
5805
5806 err:
5807 if (arvif->beacon_buf) {
5808 if (ar->bus_param.dev_type == ATH10K_DEV_TYPE_HL)
5809 kfree(arvif->beacon_buf);
5810 else
5811 dma_free_coherent(ar->dev, IEEE80211_MAX_FRAME_LEN,
5812 arvif->beacon_buf,
5813 arvif->beacon_paddr);
5814 arvif->beacon_buf = NULL;
5815 }
5816
5817 mutex_unlock(&ar->conf_mutex);
5818
5819 return ret;
5820 }
5821
---
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: 34615 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3] ath10k: high latency fixes for beacon buffer
2021-08-18 23:26 ` Fabio Estevam
@ 2021-08-26 12:01 ` Fabio Estevam
-1 siblings, 0 replies; 9+ messages in thread
From: Fabio Estevam @ 2021-08-26 12:01 UTC (permalink / raw
To: Fabio Estevam
Cc: Kalle Valo, ath10k, linux-wireless, Christoph Hellwig,
erik.stromdahl, Peter Oh, Arend van Spriel, Marek Vasut,
alagusankar
Hello Kalle,
On Wed, Aug 18, 2021 at 8:27 PM Fabio Estevam <festevam@denx.de> wrote:
>
> From: Alagu Sankar <alagusankar@silex-india.com>
>
> Beacon buffer for high latency devices does not use DMA. other similar
> buffer allocation methods in the driver have already been modified for
> high latency path. Fix the beacon buffer allocation left out in the
> earlier high latency changes.
>
> Signed-off-by: Alagu Sankar <alagusankar@silex-india.com>
> Signed-off-by: Erik Stromdahl <erik.stromdahl@gmail.com>
> [fabio: adapt it to use ar->bus_param.dev_type ]
> Signed-off-by: Fabio Estevam <festevam@denx.de>
> ---
> Changes since v2:
> - Pick Alagu's patch:
> https://patchwork.kernel.org/project/ath10k/patch/20190417191503.18814-3-erik.stromdahl@gmail.com/
A gentle ping on this one.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3] ath10k: high latency fixes for beacon buffer
@ 2021-08-26 12:01 ` Fabio Estevam
0 siblings, 0 replies; 9+ messages in thread
From: Fabio Estevam @ 2021-08-26 12:01 UTC (permalink / raw
To: Fabio Estevam
Cc: Kalle Valo, ath10k, linux-wireless, Christoph Hellwig,
erik.stromdahl, Peter Oh, Arend van Spriel, Marek Vasut,
alagusankar
Hello Kalle,
On Wed, Aug 18, 2021 at 8:27 PM Fabio Estevam <festevam@denx.de> wrote:
>
> From: Alagu Sankar <alagusankar@silex-india.com>
>
> Beacon buffer for high latency devices does not use DMA. other similar
> buffer allocation methods in the driver have already been modified for
> high latency path. Fix the beacon buffer allocation left out in the
> earlier high latency changes.
>
> Signed-off-by: Alagu Sankar <alagusankar@silex-india.com>
> Signed-off-by: Erik Stromdahl <erik.stromdahl@gmail.com>
> [fabio: adapt it to use ar->bus_param.dev_type ]
> Signed-off-by: Fabio Estevam <festevam@denx.de>
> ---
> Changes since v2:
> - Pick Alagu's patch:
> https://patchwork.kernel.org/project/ath10k/patch/20190417191503.18814-3-erik.stromdahl@gmail.com/
A gentle ping on this one.
_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3] ath10k: high latency fixes for beacon buffer
2021-08-26 12:01 ` Fabio Estevam
@ 2021-09-16 12:38 ` Kalle Valo
-1 siblings, 0 replies; 9+ messages in thread
From: Kalle Valo @ 2021-09-16 12:38 UTC (permalink / raw
To: Fabio Estevam
Cc: Fabio Estevam, ath10k, linux-wireless, Christoph Hellwig,
erik.stromdahl, Peter Oh, Arend van Spriel, Marek Vasut,
alagusankar
Fabio Estevam <festevam@gmail.com> writes:
> Hello Kalle,
>
> On Wed, Aug 18, 2021 at 8:27 PM Fabio Estevam <festevam@denx.de> wrote:
>>
>> From: Alagu Sankar <alagusankar@silex-india.com>
>>
>> Beacon buffer for high latency devices does not use DMA. other similar
>> buffer allocation methods in the driver have already been modified for
>> high latency path. Fix the beacon buffer allocation left out in the
>> earlier high latency changes.
>>
>> Signed-off-by: Alagu Sankar <alagusankar@silex-india.com>
>> Signed-off-by: Erik Stromdahl <erik.stromdahl@gmail.com>
>> [fabio: adapt it to use ar->bus_param.dev_type ]
>> Signed-off-by: Fabio Estevam <festevam@denx.de>
>> ---
>> Changes since v2:
>> - Pick Alagu's patch:
>> https://patchwork.kernel.org/project/ath10k/patch/20190417191503.18814-3-erik.stromdahl@gmail.com/
>
> A gentle ping on this one.
This is on my queue, it's just that the queue is quite long at the
moment.
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3] ath10k: high latency fixes for beacon buffer
@ 2021-09-16 12:38 ` Kalle Valo
0 siblings, 0 replies; 9+ messages in thread
From: Kalle Valo @ 2021-09-16 12:38 UTC (permalink / raw
To: Fabio Estevam
Cc: Fabio Estevam, ath10k, linux-wireless, Christoph Hellwig,
erik.stromdahl, Peter Oh, Arend van Spriel, Marek Vasut,
alagusankar
Fabio Estevam <festevam@gmail.com> writes:
> Hello Kalle,
>
> On Wed, Aug 18, 2021 at 8:27 PM Fabio Estevam <festevam@denx.de> wrote:
>>
>> From: Alagu Sankar <alagusankar@silex-india.com>
>>
>> Beacon buffer for high latency devices does not use DMA. other similar
>> buffer allocation methods in the driver have already been modified for
>> high latency path. Fix the beacon buffer allocation left out in the
>> earlier high latency changes.
>>
>> Signed-off-by: Alagu Sankar <alagusankar@silex-india.com>
>> Signed-off-by: Erik Stromdahl <erik.stromdahl@gmail.com>
>> [fabio: adapt it to use ar->bus_param.dev_type ]
>> Signed-off-by: Fabio Estevam <festevam@denx.de>
>> ---
>> Changes since v2:
>> - Pick Alagu's patch:
>> https://patchwork.kernel.org/project/ath10k/patch/20190417191503.18814-3-erik.stromdahl@gmail.com/
>
> A gentle ping on this one.
This is on my queue, it's just that the queue is quite long at the
moment.
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3] ath10k: high latency fixes for beacon buffer
2021-08-18 23:26 ` Fabio Estevam
` (2 preceding siblings ...)
(?)
@ 2021-09-28 14:34 ` Kalle Valo
-1 siblings, 0 replies; 9+ messages in thread
From: Kalle Valo @ 2021-09-28 14:34 UTC (permalink / raw
To: Fabio Estevam
Cc: ath10k, linux-wireless, hch, erik.stromdahl, peter.oh, aspriel,
marex, alagusankar, Fabio Estevam
Fabio Estevam <festevam@denx.de> wrote:
> Beacon buffer for high latency devices does not use DMA. other similar
> buffer allocation methods in the driver have already been modified for
> high latency path. Fix the beacon buffer allocation left out in the
> earlier high latency changes.
>
> Signed-off-by: Alagu Sankar <alagusankar@silex-india.com>
> Signed-off-by: Erik Stromdahl <erik.stromdahl@gmail.com>
> [fabio: adapt it to use ar->bus_param.dev_type ]
> Signed-off-by: Fabio Estevam <festevam@denx.de>
> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Patch applied to ath-next branch of ath.git, thanks.
e263bdab9c0e ath10k: high latency fixes for beacon buffer
--
https://patchwork.kernel.org/project/linux-wireless/patch/20210818232627.2040121-1-festevam@denx.de/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3] ath10k: high latency fixes for beacon buffer
2021-08-18 23:26 ` Fabio Estevam
` (3 preceding siblings ...)
(?)
@ 2021-09-28 14:34 ` Kalle Valo
-1 siblings, 0 replies; 9+ messages in thread
From: Kalle Valo @ 2021-09-28 14:34 UTC (permalink / raw
To: Fabio Estevam
Cc: ath10k, linux-wireless, hch, erik.stromdahl, peter.oh, aspriel,
marex, alagusankar, Fabio Estevam
Fabio Estevam <festevam@denx.de> wrote:
> Beacon buffer for high latency devices does not use DMA. other similar
> buffer allocation methods in the driver have already been modified for
> high latency path. Fix the beacon buffer allocation left out in the
> earlier high latency changes.
>
> Signed-off-by: Alagu Sankar <alagusankar@silex-india.com>
> Signed-off-by: Erik Stromdahl <erik.stromdahl@gmail.com>
> [fabio: adapt it to use ar->bus_param.dev_type ]
> Signed-off-by: Fabio Estevam <festevam@denx.de>
> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Patch applied to ath-next branch of ath.git, thanks.
e263bdab9c0e ath10k: high latency fixes for beacon buffer
--
https://patchwork.kernel.org/project/linux-wireless/patch/20210818232627.2040121-1-festevam@denx.de/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2021-09-28 14:35 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-08-18 23:26 [PATCH v3] ath10k: high latency fixes for beacon buffer Fabio Estevam
2021-08-18 23:26 ` Fabio Estevam
2021-08-20 6:45 ` kernel test robot
2021-08-26 12:01 ` Fabio Estevam
2021-08-26 12:01 ` Fabio Estevam
2021-09-16 12:38 ` Kalle Valo
2021-09-16 12:38 ` Kalle Valo
2021-09-28 14:34 ` Kalle Valo
2021-09-28 14:34 ` Kalle Valo
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.