mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
wireless-next patches for v6.8
The second features pull request for v6.8. A bigger one this time with changes both to stack and drivers. We have a new Wifi band RFI (WBRF) mitigation feature for which we pulled an immutable branch shared with other subsystems. And, as always, other new features and bug fixes all over. Major changes: cfg80211/mac80211 * AMD ACPI based Wifi band RFI (WBRF) mitigation feature * Basic Service Set (BSS) usage reporting * TID to link mapping support * mac80211 hardware flag to disallow puncturing iwlwifi * new debugfs file fw_dbg_clear mt76 * NVMEM EEPROM improvements * mt7996 Extremely High Throughpu (EHT) improvements * mt7996 Wireless Ethernet Dispatcher (WED) support * mt7996 36-bit DMA support ath12k * support one MSI vector * WCN7850: support AP mode -----BEGIN PGP SIGNATURE----- iQFFBAABCgAvFiEEiBjanGPFTz4PRfLobhckVSbrbZsFAmWAdRERHGt2YWxvQGtl cm5lbC5vcmcACgkQbhckVSbrbZu0RAf+JtHgfjmUMFb54xcncLgj8ZAN82E0ThE0 bPewQDhot0QTri4s7i5Kn8PCWjk+eKEmiIK+eARM+JDyZMTlCpXs2Y92cDAGQ8KG +LbIMRQkwOUg0HmtX3NysUG3mGAx4QTcIX/y3+GmtMZpKXMFuNy6ODuFvuWFNJrF 3XTq1qFQNnA0XqUDKHW9uareeCiOMVOsqcxNW2FAi2gqRUfQpKnU1Ukv5iOjkqE9 i53GHzeAG2WI4/YjXaTEZvibkM3jqrPcquHlul3fVuq05qkKOEuiy2UalDjgDCYp u91vbmMpcOjhlf9GIiu2BF6K/muEUCCIjlh5oxob0k9NiKhnPUZLng== =6Y8M -----END PGP SIGNATURE----- Merge tag 'wireless-next-2023-12-18' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next Kalle Valo says: ==================== wireless-next patches for v6.8 The second features pull request for v6.8. A bigger one this time with changes both to stack and drivers. We have a new Wifi band RFI (WBRF) mitigation feature for which we pulled an immutable branch shared with other subsystems. And, as always, other new features and bug fixes all over. Major changes: cfg80211/mac80211 * AMD ACPI based Wifi band RFI (WBRF) mitigation feature * Basic Service Set (BSS) usage reporting * TID to link mapping support * mac80211 hardware flag to disallow puncturing iwlwifi * new debugfs file fw_dbg_clear mt76 * NVMEM EEPROM improvements * mt7996 Extremely High Throughpu (EHT) improvements * mt7996 Wireless Ethernet Dispatcher (WED) support * mt7996 36-bit DMA support ath12k * support one MSI vector * WCN7850: support AP mode * tag 'wireless-next-2023-12-18' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next: (207 commits) wifi: mt76: mt7996: Use DECLARE_FLEX_ARRAY() and fix -Warray-bounds warnings wifi: ath11k: workaround too long expansion sparse warnings Revert "wifi: ath12k: use ATH12K_PCI_IRQ_DP_OFFSET for DP IRQ" wifi: rt2x00: remove useless code in rt2x00queue_create_tx_descriptor() wifi: rtw89: only reset BB/RF for existing WiFi 6 chips while starting up wifi: rtw89: add DBCC H2C to notify firmware the status wifi: rtw89: mac: add suffix _ax to MAC functions wifi: rtw89: mac: add flags to check if CMAC and DMAC are enabled wifi: rtw89: 8922a: add power on/off functions wifi: rtw89: add XTAL SI for WiFi 7 chips wifi: rtw89: phy: print out RFK log with formatted string wifi: rtw89: parse and print out RFK log from C2H events wifi: rtw89: add C2H event handlers of RFK log and report wifi: rtw89: load RFK log format string from firmware file wifi: rtw89: fw: add version field to BB MCU firmware element wifi: rtw89: fw: load TX power track tables from fw_element wifi: mwifiex: configure BSSID consistently when starting AP wifi: mwifiex: add extra delay for firmware ready wifi: mac80211: sta_info.c: fix sentence grammar wifi: mac80211: rx.c: fix sentence grammar ... ==================== Link: https://lore.kernel.org/r/20231218163900.C031DC433C9@smtp.kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
0ee28c9ae0
292 changed files with 10710 additions and 2093 deletions
|
@ -115,6 +115,7 @@ available subsections can be seen below.
|
|||
hte/index
|
||||
wmi
|
||||
dpll
|
||||
wbrf
|
||||
|
||||
.. only:: subproject and html
|
||||
|
||||
|
|
78
Documentation/driver-api/wbrf.rst
Normal file
78
Documentation/driver-api/wbrf.rst
Normal file
|
@ -0,0 +1,78 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
=================================
|
||||
WBRF - Wifi Band RFI Mitigations
|
||||
=================================
|
||||
|
||||
Due to electrical and mechanical constraints in certain platform designs
|
||||
there may be likely interference of relatively high-powered harmonics of
|
||||
the GPU memory clocks with local radio module frequency bands used by
|
||||
certain Wifi bands.
|
||||
|
||||
To mitigate possible RFI interference producers can advertise the
|
||||
frequencies in use and consumers can use this information to avoid using
|
||||
these frequencies for sensitive features.
|
||||
|
||||
When a platform is known to have this issue with any contained devices,
|
||||
the platform designer will advertise the availability of this feature via
|
||||
ACPI devices with a device specific method (_DSM).
|
||||
* Producers with this _DSM will be able to advertise the frequencies in use.
|
||||
* Consumers with this _DSM will be able to register for notifications of
|
||||
frequencies in use.
|
||||
|
||||
Some general terms
|
||||
==================
|
||||
|
||||
Producer: such component who can produce high-powered radio frequency
|
||||
Consumer: such component who can adjust its in-use frequency in
|
||||
response to the radio frequencies of other components to mitigate the
|
||||
possible RFI.
|
||||
|
||||
To make the mechanism function, those producers should notify active use
|
||||
of their particular frequencies so that other consumers can make relative
|
||||
internal adjustments as necessary to avoid this resonance.
|
||||
|
||||
ACPI interface
|
||||
==============
|
||||
|
||||
Although initially used by for wifi + dGPU use cases, the ACPI interface
|
||||
can be scaled to any type of device that a platform designer discovers
|
||||
can cause interference.
|
||||
|
||||
The GUID used for the _DSM is 7B7656CF-DC3D-4C1C-83E9-66E721DE3070.
|
||||
|
||||
3 functions are available in this _DSM:
|
||||
|
||||
* 0: discover # of functions available
|
||||
* 1: record RF bands in use
|
||||
* 2: retrieve RF bands in use
|
||||
|
||||
Driver programming interface
|
||||
============================
|
||||
|
||||
.. kernel-doc:: drivers/platform/x86/amd/wbrf.c
|
||||
|
||||
Sample Usage
|
||||
=============
|
||||
|
||||
The expected flow for the producers:
|
||||
1. During probe, call `acpi_amd_wbrf_supported_producer` to check if WBRF
|
||||
can be enabled for the device.
|
||||
2. On using some frequency band, call `acpi_amd_wbrf_add_remove` with 'add'
|
||||
param to get other consumers properly notified.
|
||||
3. Or on stopping using some frequency band, call
|
||||
`acpi_amd_wbrf_add_remove` with 'remove' param to get other consumers notified.
|
||||
|
||||
The expected flow for the consumers:
|
||||
1. During probe, call `acpi_amd_wbrf_supported_consumer` to check if WBRF
|
||||
can be enabled for the device.
|
||||
2. Call `amd_wbrf_register_notifier` to register for notification
|
||||
of frequency band change(add or remove) from other producers.
|
||||
3. Call the `amd_wbrf_retrieve_freq_band` initally to retrieve
|
||||
current active frequency bands considering some producers may broadcast
|
||||
such information before the consumer is up.
|
||||
4. On receiving a notification for frequency band change, run
|
||||
`amd_wbrf_retrieve_freq_band` again to retrieve the latest
|
||||
active frequency bands.
|
||||
5. During driver cleanup, call `amd_wbrf_unregister_notifier` to
|
||||
unregister the notifier.
|
|
@ -280,7 +280,7 @@ static u8 bcma_find_pci_capability(struct bcma_drv_pci *pc, unsigned int dev,
|
|||
/* check for Header type 0 */
|
||||
bcma_extpci_read_config(pc, dev, func, PCI_HEADER_TYPE, &byte_val,
|
||||
sizeof(u8));
|
||||
if ((byte_val & 0x7F) != PCI_HEADER_TYPE_NORMAL)
|
||||
if ((byte_val & PCI_HEADER_TYPE_MASK) != PCI_HEADER_TYPE_NORMAL)
|
||||
return cap_ptr;
|
||||
|
||||
/* check if the capability pointer field exists */
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
/*
|
||||
* Copyright (c) 2005-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2014,2016-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "bmi.h"
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Copyright (c) 2005-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2018 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "hif.h"
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Copyright (c) 2005-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
@ -100,6 +101,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
|
|||
.hw_restart_disconnect = false,
|
||||
.use_fw_tx_credits = true,
|
||||
.delay_unmap_buffer = false,
|
||||
.mcast_frame_registration = false,
|
||||
},
|
||||
{
|
||||
.id = QCA988X_HW_2_0_VERSION,
|
||||
|
@ -140,6 +142,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
|
|||
.hw_restart_disconnect = false,
|
||||
.use_fw_tx_credits = true,
|
||||
.delay_unmap_buffer = false,
|
||||
.mcast_frame_registration = false,
|
||||
},
|
||||
{
|
||||
.id = QCA9887_HW_1_0_VERSION,
|
||||
|
@ -181,6 +184,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
|
|||
.hw_restart_disconnect = false,
|
||||
.use_fw_tx_credits = true,
|
||||
.delay_unmap_buffer = false,
|
||||
.mcast_frame_registration = false,
|
||||
},
|
||||
{
|
||||
.id = QCA6174_HW_3_2_VERSION,
|
||||
|
@ -217,6 +221,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
|
|||
.hw_restart_disconnect = false,
|
||||
.use_fw_tx_credits = true,
|
||||
.delay_unmap_buffer = false,
|
||||
.mcast_frame_registration = false,
|
||||
},
|
||||
{
|
||||
.id = QCA6174_HW_2_1_VERSION,
|
||||
|
@ -257,6 +262,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
|
|||
.hw_restart_disconnect = false,
|
||||
.use_fw_tx_credits = true,
|
||||
.delay_unmap_buffer = false,
|
||||
.mcast_frame_registration = false,
|
||||
},
|
||||
{
|
||||
.id = QCA6174_HW_2_1_VERSION,
|
||||
|
@ -297,6 +303,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
|
|||
.hw_restart_disconnect = false,
|
||||
.use_fw_tx_credits = true,
|
||||
.delay_unmap_buffer = false,
|
||||
.mcast_frame_registration = false,
|
||||
},
|
||||
{
|
||||
.id = QCA6174_HW_3_0_VERSION,
|
||||
|
@ -337,6 +344,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
|
|||
.hw_restart_disconnect = false,
|
||||
.use_fw_tx_credits = true,
|
||||
.delay_unmap_buffer = false,
|
||||
.mcast_frame_registration = false,
|
||||
},
|
||||
{
|
||||
.id = QCA6174_HW_3_2_VERSION,
|
||||
|
@ -381,6 +389,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
|
|||
.hw_restart_disconnect = false,
|
||||
.use_fw_tx_credits = true,
|
||||
.delay_unmap_buffer = false,
|
||||
.mcast_frame_registration = true,
|
||||
},
|
||||
{
|
||||
.id = QCA99X0_HW_2_0_DEV_VERSION,
|
||||
|
@ -427,6 +436,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
|
|||
.hw_restart_disconnect = false,
|
||||
.use_fw_tx_credits = true,
|
||||
.delay_unmap_buffer = false,
|
||||
.mcast_frame_registration = false,
|
||||
},
|
||||
{
|
||||
.id = QCA9984_HW_1_0_DEV_VERSION,
|
||||
|
@ -480,6 +490,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
|
|||
.hw_restart_disconnect = false,
|
||||
.use_fw_tx_credits = true,
|
||||
.delay_unmap_buffer = false,
|
||||
.mcast_frame_registration = false,
|
||||
},
|
||||
{
|
||||
.id = QCA9888_HW_2_0_DEV_VERSION,
|
||||
|
@ -530,6 +541,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
|
|||
.hw_restart_disconnect = false,
|
||||
.use_fw_tx_credits = true,
|
||||
.delay_unmap_buffer = false,
|
||||
.mcast_frame_registration = false,
|
||||
},
|
||||
{
|
||||
.id = QCA9377_HW_1_0_DEV_VERSION,
|
||||
|
@ -570,6 +582,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
|
|||
.hw_restart_disconnect = false,
|
||||
.use_fw_tx_credits = true,
|
||||
.delay_unmap_buffer = false,
|
||||
.mcast_frame_registration = false,
|
||||
},
|
||||
{
|
||||
.id = QCA9377_HW_1_1_DEV_VERSION,
|
||||
|
@ -612,6 +625,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
|
|||
.hw_restart_disconnect = false,
|
||||
.use_fw_tx_credits = true,
|
||||
.delay_unmap_buffer = false,
|
||||
.mcast_frame_registration = false,
|
||||
},
|
||||
{
|
||||
.id = QCA9377_HW_1_1_DEV_VERSION,
|
||||
|
@ -645,6 +659,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
|
|||
.hw_restart_disconnect = false,
|
||||
.use_fw_tx_credits = true,
|
||||
.delay_unmap_buffer = false,
|
||||
.mcast_frame_registration = false,
|
||||
},
|
||||
{
|
||||
.id = QCA4019_HW_1_0_DEV_VERSION,
|
||||
|
@ -692,6 +707,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
|
|||
.hw_restart_disconnect = false,
|
||||
.use_fw_tx_credits = true,
|
||||
.delay_unmap_buffer = false,
|
||||
.mcast_frame_registration = false,
|
||||
},
|
||||
{
|
||||
.id = WCN3990_HW_1_0_DEV_VERSION,
|
||||
|
@ -725,6 +741,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
|
|||
.hw_restart_disconnect = true,
|
||||
.use_fw_tx_credits = false,
|
||||
.delay_unmap_buffer = true,
|
||||
.mcast_frame_registration = false,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Copyright (c) 2005-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _CORE_H_
|
||||
|
@ -607,7 +608,7 @@ struct ath10k_vif {
|
|||
u8 tim_bitmap[64];
|
||||
u8 tim_len;
|
||||
u32 ssid_len;
|
||||
u8 ssid[IEEE80211_MAX_SSID_LEN];
|
||||
u8 ssid[IEEE80211_MAX_SSID_LEN] __nonstring;
|
||||
bool hidden_ssid;
|
||||
/* P2P_IE with NoA attribute for P2P_GO case */
|
||||
u32 noa_len;
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
/*
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2018, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "coredump.h"
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: ISC */
|
||||
/*
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _COREDUMP_H_
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Copyright (c) 2005-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2018, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
/*
|
||||
* Copyright (c) 2014-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2018, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "core.h"
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
/*
|
||||
* Copyright (c) 2005-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "core.h"
|
||||
|
|
|
@ -246,26 +246,12 @@ struct ath10k_htc_lookahead_bundle {
|
|||
struct ath10k_htc_record {
|
||||
struct ath10k_ath10k_htc_record_hdr hdr;
|
||||
union {
|
||||
struct ath10k_htc_credit_report credit_report[0];
|
||||
struct ath10k_htc_lookahead_report lookahead_report[0];
|
||||
struct ath10k_htc_lookahead_bundle lookahead_bundle[0];
|
||||
u8 pauload[0];
|
||||
DECLARE_FLEX_ARRAY(struct ath10k_htc_credit_report, credit_report);
|
||||
DECLARE_FLEX_ARRAY(struct ath10k_htc_lookahead_report, lookahead_report);
|
||||
DECLARE_FLEX_ARRAY(struct ath10k_htc_lookahead_bundle, lookahead_bundle);
|
||||
};
|
||||
} __packed __aligned(4);
|
||||
|
||||
/*
|
||||
* note: the trailer offset is dynamic depending
|
||||
* on payload length. this is only a struct layout draft
|
||||
*/
|
||||
struct ath10k_htc_frame {
|
||||
struct ath10k_htc_hdr hdr;
|
||||
union {
|
||||
struct ath10k_htc_msg msg;
|
||||
u8 payload[0];
|
||||
};
|
||||
struct ath10k_htc_record trailer[0];
|
||||
} __packed __aligned(4);
|
||||
|
||||
/*******************/
|
||||
/* Host-side stuff */
|
||||
/*******************/
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Copyright (c) 2005-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2018, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021, 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _HTT_H_
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Copyright (c) 2005-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2018, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "core.h"
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
/*
|
||||
* Copyright (c) 2005-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/etherdevice.h>
|
||||
|
@ -40,7 +41,6 @@ static void __ath10k_htt_tx_txq_recalc(struct ieee80211_hw *hw,
|
|||
struct ath10k *ar = hw->priv;
|
||||
struct ath10k_sta *arsta;
|
||||
struct ath10k_vif *arvif = (void *)txq->vif->drv_priv;
|
||||
unsigned long frame_cnt;
|
||||
unsigned long byte_cnt;
|
||||
int idx;
|
||||
u32 bit;
|
||||
|
@ -67,7 +67,7 @@ static void __ath10k_htt_tx_txq_recalc(struct ieee80211_hw *hw,
|
|||
bit = BIT(peer_id % 32);
|
||||
idx = peer_id / 32;
|
||||
|
||||
ieee80211_txq_get_depth(txq, &frame_cnt, &byte_cnt);
|
||||
ieee80211_txq_get_depth(txq, NULL, &byte_cnt);
|
||||
count = ath10k_htt_tx_txq_calc_size(byte_cnt);
|
||||
|
||||
if (unlikely(peer_id >= ar->htt.tx_q_state.num_peers) ||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: ISC
|
||||
/*
|
||||
* Copyright (c) 2014-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/types.h>
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Copyright (c) 2005-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2018 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _HW_H_
|
||||
|
@ -639,6 +640,9 @@ struct ath10k_hw_params {
|
|||
bool use_fw_tx_credits;
|
||||
|
||||
bool delay_unmap_buffer;
|
||||
|
||||
/* The hardware support multicast frame registrations */
|
||||
bool mcast_frame_registration;
|
||||
};
|
||||
|
||||
struct htt_resp;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Copyright (c) 2005-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "mac.h"
|
||||
|
@ -1242,7 +1243,7 @@ static bool ath10k_mac_monitor_vdev_is_needed(struct ath10k *ar)
|
|||
return ar->monitor ||
|
||||
(!test_bit(ATH10K_FW_FEATURE_ALLOWS_MESH_BCAST,
|
||||
ar->running_fw->fw_file.fw_features) &&
|
||||
(ar->filter_flags & FIF_OTHER_BSS)) ||
|
||||
(ar->filter_flags & (FIF_OTHER_BSS | FIF_MCAST_ACTION))) ||
|
||||
test_bit(ATH10K_CAC_RUNNING, &ar->dev_flags);
|
||||
}
|
||||
|
||||
|
@ -6025,10 +6026,15 @@ static void ath10k_configure_filter(struct ieee80211_hw *hw,
|
|||
{
|
||||
struct ath10k *ar = hw->priv;
|
||||
int ret;
|
||||
unsigned int supported = SUPPORTED_FILTERS;
|
||||
|
||||
mutex_lock(&ar->conf_mutex);
|
||||
|
||||
*total_flags &= SUPPORTED_FILTERS;
|
||||
if (ar->hw_params.mcast_frame_registration)
|
||||
supported |= FIF_MCAST_ACTION;
|
||||
|
||||
*total_flags &= supported;
|
||||
|
||||
ar->filter_flags = *total_flags;
|
||||
|
||||
ret = ath10k_monitor_recalc(ar);
|
||||
|
@ -6121,9 +6127,8 @@ static void ath10k_bss_info_changed(struct ieee80211_hw *hw,
|
|||
|
||||
if (ieee80211_vif_is_mesh(vif)) {
|
||||
/* mesh doesn't use SSID but firmware needs it */
|
||||
strncpy(arvif->u.ap.ssid, "mesh",
|
||||
sizeof(arvif->u.ap.ssid));
|
||||
arvif->u.ap.ssid_len = 4;
|
||||
memcpy(arvif->u.ap.ssid, "mesh", arvif->u.ap.ssid_len);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10118,6 +10123,10 @@ int ath10k_mac_register(struct ath10k *ar)
|
|||
NL80211_EXT_FEATURE_SET_SCAN_DWELL);
|
||||
wiphy_ext_feature_set(ar->hw->wiphy, NL80211_EXT_FEATURE_AQL);
|
||||
|
||||
if (ar->hw_params.mcast_frame_registration)
|
||||
wiphy_ext_feature_set(ar->hw->wiphy,
|
||||
NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS);
|
||||
|
||||
if (test_bit(WMI_SERVICE_TX_DATA_ACK_RSSI, ar->wmi.svc_map) ||
|
||||
test_bit(WMI_SERVICE_HTT_MGMT_TX_COMP_VALID_FLAGS, ar->wmi.svc_map))
|
||||
wiphy_ext_feature_set(ar->hw->wiphy,
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
/*
|
||||
* Copyright (c) 2005-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/pci.h>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
/*
|
||||
* Copyright (c) 2005-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _PCI_H_
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: ISC
|
||||
/*
|
||||
* Copyright (c) 2018 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/completion.h>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: ISC
|
||||
/*
|
||||
* Copyright (c) 2018 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/soc/qcom/qmi.h>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: ISC */
|
||||
/*
|
||||
* Copyright (c) 2018 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef WCN3990_QMI_SVC_V01_H
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
/*
|
||||
* Copyright (c) 2005-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _RX_DESC_H_
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Copyright (c) 2004-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2012,2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2016-2017 Erik Stromdahl <erik.stromdahl@gmail.com>
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: ISC
|
||||
/*
|
||||
* Copyright (c) 2014-2015 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/device.h>
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Copyright (c) 2004-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2012 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2016-2017 Erik Stromdahl <erik.stromdahl@gmail.com>
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _USB_H_
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Copyright (c) 2005-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
#ifndef _WMI_TLV_H
|
||||
#define _WMI_TLV_H
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Copyright (c) 2005-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/skbuff.h>
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Copyright (c) 2005-2011 Atheros Communications Inc.
|
||||
* Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _WMI_H_
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
/*
|
||||
* Copyright (c) 2015-2017 Qualcomm Atheros, Inc.
|
||||
* Copyright (c) 2018, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "mac.h"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
config ATH11K
|
||||
tristate "Qualcomm Technologies 802.11ax chipset support"
|
||||
depends on MAC80211 && HAS_DMA
|
||||
depends on CRYPTO_MICHAEL_MIC
|
||||
select CRYPTO_MICHAEL_MIC
|
||||
select ATH_COMMON
|
||||
select QCOM_QMI_HELPERS
|
||||
help
|
||||
|
|
|
@ -803,8 +803,8 @@ static int ath11k_core_get_rproc(struct ath11k_base *ab)
|
|||
|
||||
prproc = rproc_get_by_phandle(rproc_phandle);
|
||||
if (!prproc) {
|
||||
ath11k_err(ab, "failed to get rproc\n");
|
||||
return -EINVAL;
|
||||
ath11k_dbg(ab, ATH11K_DBG_AHB, "failed to get rproc, deferring\n");
|
||||
return -EPROBE_DEFER;
|
||||
}
|
||||
ab_ahb->tgt_rproc = prproc;
|
||||
|
||||
|
@ -1251,7 +1251,7 @@ static void ath11k_ahb_free_resources(struct ath11k_base *ab)
|
|||
platform_set_drvdata(pdev, NULL);
|
||||
}
|
||||
|
||||
static int ath11k_ahb_remove(struct platform_device *pdev)
|
||||
static void ath11k_ahb_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct ath11k_base *ab = platform_get_drvdata(pdev);
|
||||
|
||||
|
@ -1267,8 +1267,6 @@ static int ath11k_ahb_remove(struct platform_device *pdev)
|
|||
|
||||
qmi_fail:
|
||||
ath11k_ahb_free_resources(ab);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ath11k_ahb_shutdown(struct platform_device *pdev)
|
||||
|
@ -1296,7 +1294,7 @@ static struct platform_driver ath11k_ahb_driver = {
|
|||
.of_match_table = ath11k_ahb_of_match,
|
||||
},
|
||||
.probe = ath11k_ahb_probe,
|
||||
.remove = ath11k_ahb_remove,
|
||||
.remove_new = ath11k_ahb_remove,
|
||||
.shutdown = ath11k_ahb_shutdown,
|
||||
};
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "dp_rx.h"
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH11K_CE_H
|
||||
|
|
|
@ -599,7 +599,6 @@ struct ath11k {
|
|||
struct ath11k_base *ab;
|
||||
struct ath11k_pdev *pdev;
|
||||
struct ieee80211_hw *hw;
|
||||
struct ieee80211_ops *ops;
|
||||
struct ath11k_pdev_wmi *wmi;
|
||||
struct ath11k_pdev_dp dp;
|
||||
u8 mac_addr[ETH_ALEN];
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "core.h"
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH11K_DBRING_H
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/vmalloc.h>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _ATH11K_DEBUG_H_
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/vmalloc.h>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _ATH11K_DEBUGFS_H_
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/vmalloc.h>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef DEBUG_HTT_STATS_H
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/vmalloc.h>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _ATH11K_DEBUGFS_STA_H_
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <crypto/hash.h>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH11K_DP_H
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/ieee80211.h>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "core.h"
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021, 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH11K_DP_TX_H
|
||||
|
|
|
@ -133,7 +133,7 @@ static int ath11k_fw_request_firmware_api_n(struct ath11k_base *ab,
|
|||
|
||||
len -= ie_len;
|
||||
data += ie_len;
|
||||
};
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
#include <linux/dma-mapping.h>
|
||||
#include "hal_tx.h"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH11K_HAL_H
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
#include "core.h"
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "debug.h"
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH11K_HAL_RX_H
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _HIF_H_
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/ctype.h>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH11K_HTC_H
|
||||
|
@ -150,10 +151,7 @@ struct ath11k_htc_credit_report {
|
|||
|
||||
struct ath11k_htc_record {
|
||||
struct ath11k_htc_record_hdr hdr;
|
||||
union {
|
||||
struct ath11k_htc_credit_report credit_report[0];
|
||||
u8 pauload[0];
|
||||
};
|
||||
struct ath11k_htc_credit_report credit_report[];
|
||||
} __packed __aligned(4);
|
||||
|
||||
enum ath11k_htc_svc_gid {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/types.h>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH11K_HW_H
|
||||
|
|
|
@ -4654,6 +4654,14 @@ static int ath11k_station_disassoc(struct ath11k *ar,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static u32 ath11k_mac_max_nss(const u8 *ht_mcs_mask, const u16 *vht_mcs_mask,
|
||||
const u16 *he_mcs_mask)
|
||||
{
|
||||
return max3(ath11k_mac_max_ht_nss(ht_mcs_mask),
|
||||
ath11k_mac_max_vht_nss(vht_mcs_mask),
|
||||
ath11k_mac_max_he_nss(he_mcs_mask));
|
||||
}
|
||||
|
||||
static void ath11k_sta_rc_update_wk(struct work_struct *wk)
|
||||
{
|
||||
struct ath11k *ar;
|
||||
|
@ -4699,9 +4707,7 @@ static void ath11k_sta_rc_update_wk(struct work_struct *wk)
|
|||
mutex_lock(&ar->conf_mutex);
|
||||
|
||||
nss = max_t(u32, 1, nss);
|
||||
nss = min(nss, max(max(ath11k_mac_max_ht_nss(ht_mcs_mask),
|
||||
ath11k_mac_max_vht_nss(vht_mcs_mask)),
|
||||
ath11k_mac_max_he_nss(he_mcs_mask)));
|
||||
nss = min(nss, ath11k_mac_max_nss(ht_mcs_mask, vht_mcs_mask, he_mcs_mask));
|
||||
|
||||
if (changed & IEEE80211_RC_BW_CHANGED) {
|
||||
/* Get the peer phymode */
|
||||
|
@ -8391,9 +8397,7 @@ ath11k_mac_op_set_bitrate_mask(struct ieee80211_hw *hw,
|
|||
ath11k_warn(ar->ab,
|
||||
"could not update fixed rate settings to all peers due to mcs/nss incompatibility\n");
|
||||
nss = min_t(u32, ar->num_tx_chains,
|
||||
max(max(ath11k_mac_max_ht_nss(ht_mcs_mask),
|
||||
ath11k_mac_max_vht_nss(vht_mcs_mask)),
|
||||
ath11k_mac_max_he_nss(he_mcs_mask)));
|
||||
ath11k_mac_max_nss(ht_mcs_mask, vht_mcs_mask, he_mcs_mask));
|
||||
|
||||
/* If multiple rates across different preambles are given
|
||||
* we can reconfigure this info with all peers using PEER_ASSOC
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH11K_MAC_H
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/msi.h>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
#ifndef _ATH11K_MHI_H
|
||||
#define _ATH11K_MHI_H
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "core.h"
|
||||
|
@ -460,8 +460,6 @@ void ath11k_pcic_ext_irq_enable(struct ath11k_base *ab)
|
|||
{
|
||||
int i;
|
||||
|
||||
set_bit(ATH11K_FLAG_EXT_IRQ_ENABLED, &ab->dev_flags);
|
||||
|
||||
for (i = 0; i < ATH11K_EXT_IRQ_GRP_NUM_MAX; i++) {
|
||||
struct ath11k_ext_irq_grp *irq_grp = &ab->ext_irq_grp[i];
|
||||
|
||||
|
@ -471,6 +469,8 @@ void ath11k_pcic_ext_irq_enable(struct ath11k_base *ab)
|
|||
}
|
||||
ath11k_pcic_ext_grp_enable(irq_grp);
|
||||
}
|
||||
|
||||
set_bit(ATH11K_FLAG_EXT_IRQ_ENABLED, &ab->dev_flags);
|
||||
}
|
||||
EXPORT_SYMBOL(ath11k_pcic_ext_irq_enable);
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "core.h"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH11K_PEER_H
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/elf.h>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH11K_QMI_H
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
#include <linux/rtnetlink.h>
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH11K_REG_H
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
#ifndef ATH11K_RX_DESC_H
|
||||
#define ATH11K_RX_DESC_H
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/relay.h>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH11K_SPECTRAL_H
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/device.h>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _ATH11K_THERMAL_
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#if !defined(_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021, 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/ctype.h>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH11K_WMI_H
|
||||
|
@ -1096,25 +1096,27 @@ enum wmi_tlv_vdev_param {
|
|||
};
|
||||
|
||||
enum wmi_tlv_peer_flags {
|
||||
WMI_TLV_PEER_AUTH = 0x00000001,
|
||||
WMI_TLV_PEER_QOS = 0x00000002,
|
||||
WMI_TLV_PEER_NEED_PTK_4_WAY = 0x00000004,
|
||||
WMI_TLV_PEER_NEED_GTK_2_WAY = 0x00000010,
|
||||
WMI_TLV_PEER_APSD = 0x00000800,
|
||||
WMI_TLV_PEER_HT = 0x00001000,
|
||||
WMI_TLV_PEER_40MHZ = 0x00002000,
|
||||
WMI_TLV_PEER_STBC = 0x00008000,
|
||||
WMI_TLV_PEER_LDPC = 0x00010000,
|
||||
WMI_TLV_PEER_DYN_MIMOPS = 0x00020000,
|
||||
WMI_TLV_PEER_STATIC_MIMOPS = 0x00040000,
|
||||
WMI_TLV_PEER_SPATIAL_MUX = 0x00200000,
|
||||
WMI_TLV_PEER_VHT = 0x02000000,
|
||||
WMI_TLV_PEER_80MHZ = 0x04000000,
|
||||
WMI_TLV_PEER_PMF = 0x08000000,
|
||||
WMI_PEER_AUTH = 0x00000001,
|
||||
WMI_PEER_QOS = 0x00000002,
|
||||
WMI_PEER_NEED_PTK_4_WAY = 0x00000004,
|
||||
WMI_PEER_NEED_GTK_2_WAY = 0x00000010,
|
||||
WMI_PEER_HE = 0x00000400,
|
||||
WMI_PEER_APSD = 0x00000800,
|
||||
WMI_PEER_HT = 0x00001000,
|
||||
WMI_PEER_40MHZ = 0x00002000,
|
||||
WMI_PEER_STBC = 0x00008000,
|
||||
WMI_PEER_LDPC = 0x00010000,
|
||||
WMI_PEER_DYN_MIMOPS = 0x00020000,
|
||||
WMI_PEER_STATIC_MIMOPS = 0x00040000,
|
||||
WMI_PEER_SPATIAL_MUX = 0x00200000,
|
||||
WMI_PEER_TWT_REQ = 0x00400000,
|
||||
WMI_PEER_TWT_RESP = 0x00800000,
|
||||
WMI_PEER_VHT = 0x02000000,
|
||||
WMI_PEER_80MHZ = 0x04000000,
|
||||
WMI_PEER_PMF = 0x08000000,
|
||||
WMI_PEER_IS_P2P_CAPABLE = 0x20000000,
|
||||
WMI_PEER_160MHZ = 0x40000000,
|
||||
WMI_PEER_SAFEMODE_EN = 0x80000000,
|
||||
|
||||
};
|
||||
|
||||
/** Enum list of TLV Tags for each parameter structure type. */
|
||||
|
@ -2580,7 +2582,6 @@ struct wmi_service_available_event {
|
|||
struct ath11k_pdev_wmi {
|
||||
struct ath11k_wmi_base *wmi_ab;
|
||||
enum ath11k_htc_ep_id eid;
|
||||
const struct wmi_peer_flags_map *peer_flags;
|
||||
u32 rx_decap_mode;
|
||||
wait_queue_head_t tx_ce_desc_wq;
|
||||
};
|
||||
|
@ -4062,31 +4063,6 @@ struct wmi_unit_test_cmd {
|
|||
|
||||
#define MAX_SUPPORTED_RATES 128
|
||||
|
||||
#define WMI_PEER_AUTH 0x00000001
|
||||
#define WMI_PEER_QOS 0x00000002
|
||||
#define WMI_PEER_NEED_PTK_4_WAY 0x00000004
|
||||
#define WMI_PEER_NEED_GTK_2_WAY 0x00000010
|
||||
#define WMI_PEER_HE 0x00000400
|
||||
#define WMI_PEER_APSD 0x00000800
|
||||
#define WMI_PEER_HT 0x00001000
|
||||
#define WMI_PEER_40MHZ 0x00002000
|
||||
#define WMI_PEER_STBC 0x00008000
|
||||
#define WMI_PEER_LDPC 0x00010000
|
||||
#define WMI_PEER_DYN_MIMOPS 0x00020000
|
||||
#define WMI_PEER_STATIC_MIMOPS 0x00040000
|
||||
#define WMI_PEER_SPATIAL_MUX 0x00200000
|
||||
#define WMI_PEER_TWT_REQ 0x00400000
|
||||
#define WMI_PEER_TWT_RESP 0x00800000
|
||||
#define WMI_PEER_VHT 0x02000000
|
||||
#define WMI_PEER_80MHZ 0x04000000
|
||||
#define WMI_PEER_PMF 0x08000000
|
||||
/* TODO: Place holder for WLAN_PEER_F_PS_PRESEND_REQUIRED = 0x10000000.
|
||||
* Need to be cleaned up
|
||||
*/
|
||||
#define WMI_PEER_IS_P2P_CAPABLE 0x20000000
|
||||
#define WMI_PEER_160MHZ 0x40000000
|
||||
#define WMI_PEER_SAFEMODE_EN 0x80000000
|
||||
|
||||
struct beacon_tmpl_params {
|
||||
u8 vdev_id;
|
||||
u32 tim_ie_offset;
|
||||
|
@ -5754,7 +5730,6 @@ struct ath11k_wmi_base {
|
|||
struct completion unified_ready;
|
||||
DECLARE_BITMAP(svc_map, WMI_MAX_EXT2_SERVICE);
|
||||
wait_queue_head_t tx_credits_wq;
|
||||
const struct wmi_peer_flags_map *peer_flags;
|
||||
u32 num_mem_chunks;
|
||||
u32 rx_decap_mode;
|
||||
struct wmi_host_mem_chunk mem_chunks[WMI_MAX_MEM_REQS];
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _WOW_H_
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
config ATH12K
|
||||
tristate "Qualcomm Technologies Wi-Fi 7 support (ath12k)"
|
||||
depends on MAC80211 && HAS_DMA && PCI
|
||||
depends on CRYPTO_MICHAEL_MIC
|
||||
select CRYPTO_MICHAEL_MIC
|
||||
select QCOM_QMI_HELPERS
|
||||
select MHI_BUS
|
||||
select QRTR
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
@ -698,13 +698,15 @@ int ath12k_core_qmi_firmware_ready(struct ath12k_base *ab)
|
|||
ret = ath12k_core_rfkill_config(ab);
|
||||
if (ret && ret != -EOPNOTSUPP) {
|
||||
ath12k_err(ab, "failed to config rfkill: %d\n", ret);
|
||||
goto err_core_stop;
|
||||
goto err_core_pdev_destroy;
|
||||
}
|
||||
|
||||
mutex_unlock(&ab->core_lock);
|
||||
|
||||
return 0;
|
||||
|
||||
err_core_pdev_destroy:
|
||||
ath12k_core_pdev_destroy(ab);
|
||||
err_core_stop:
|
||||
ath12k_core_stop(ab);
|
||||
ath12k_mac_destroy(ab);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH12K_CORE_H
|
||||
|
@ -199,6 +199,8 @@ enum ath12k_dev_flags {
|
|||
ATH12K_FLAG_REGISTERED,
|
||||
ATH12K_FLAG_QMI_FAIL,
|
||||
ATH12K_FLAG_HTC_SUSPEND_COMPLETE,
|
||||
ATH12K_FLAG_CE_IRQ_ENABLED,
|
||||
ATH12K_FLAG_EXT_IRQ_ENABLED,
|
||||
};
|
||||
|
||||
enum ath12k_monitor_flags {
|
||||
|
@ -467,7 +469,6 @@ struct ath12k {
|
|||
struct ath12k_base *ab;
|
||||
struct ath12k_pdev *pdev;
|
||||
struct ieee80211_hw *hw;
|
||||
struct ieee80211_ops *ops;
|
||||
struct ath12k_wmi_pdev *wmi;
|
||||
struct ath12k_pdev_dp dp;
|
||||
u8 mac_addr[ETH_ALEN];
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "core.h"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/vmalloc.h>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <crypto/hash.h>
|
||||
|
@ -961,9 +961,7 @@ int ath12k_dp_service_srng(struct ath12k_base *ab,
|
|||
struct ath12k_dp *dp = &ab->dp;
|
||||
struct dp_rxdma_ring *rx_ring = &dp->rx_refill_buf_ring;
|
||||
|
||||
ath12k_dp_rx_bufs_replenish(ab, 0, rx_ring, 0,
|
||||
ab->hw_params->hal_params->rx_buf_rbm,
|
||||
true);
|
||||
ath12k_dp_rx_bufs_replenish(ab, rx_ring, 0);
|
||||
}
|
||||
|
||||
/* TODO: Implement handler for other interrupts */
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH12K_DP_H
|
||||
|
@ -31,7 +31,7 @@ struct dp_srng {
|
|||
u32 ring_id;
|
||||
};
|
||||
|
||||
struct dp_rxdma_ring {
|
||||
struct dp_rxdma_mon_ring {
|
||||
struct dp_srng refill_buf_ring;
|
||||
struct idr bufs_idr;
|
||||
/* Protects bufs_idr */
|
||||
|
@ -39,6 +39,11 @@ struct dp_rxdma_ring {
|
|||
int bufs_max;
|
||||
};
|
||||
|
||||
struct dp_rxdma_ring {
|
||||
struct dp_srng refill_buf_ring;
|
||||
int bufs_max;
|
||||
};
|
||||
|
||||
#define ATH12K_TX_COMPL_NEXT(x) (((x) + 1) % DP_TX_COMP_RING_SIZE)
|
||||
|
||||
struct dp_tx_ring {
|
||||
|
@ -353,8 +358,8 @@ struct ath12k_dp {
|
|||
struct dp_rxdma_ring rx_refill_buf_ring;
|
||||
struct dp_srng rx_mac_buf_ring[MAX_RXDMA_PER_PDEV];
|
||||
struct dp_srng rxdma_err_dst_ring[MAX_RXDMA_PER_PDEV];
|
||||
struct dp_rxdma_ring rxdma_mon_buf_ring;
|
||||
struct dp_rxdma_ring tx_mon_buf_ring;
|
||||
struct dp_rxdma_mon_ring rxdma_mon_buf_ring;
|
||||
struct dp_rxdma_mon_ring tx_mon_buf_ring;
|
||||
struct ath12k_reo_q_addr_lut reoq_lut;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "dp_mon.h"
|
||||
|
@ -797,7 +797,7 @@ ath12k_dp_mon_rx_parse_status_tlv(struct ath12k_base *ab,
|
|||
/* TODO: add msdu start parsing logic */
|
||||
break;
|
||||
case HAL_MON_BUF_ADDR: {
|
||||
struct dp_rxdma_ring *buf_ring = &ab->dp.rxdma_mon_buf_ring;
|
||||
struct dp_rxdma_mon_ring *buf_ring = &ab->dp.rxdma_mon_buf_ring;
|
||||
struct dp_mon_packet_info *packet_info =
|
||||
(struct dp_mon_packet_info *)tlv_data;
|
||||
int buf_id = u32_get_bits(packet_info->cookie,
|
||||
|
@ -1091,7 +1091,7 @@ static void ath12k_dp_mon_rx_deliver_msdu(struct ath12k *ar, struct napi_struct
|
|||
spin_unlock_bh(&ar->ab->base_lock);
|
||||
|
||||
ath12k_dbg(ar->ab, ATH12K_DBG_DATA,
|
||||
"rx skb %pK len %u peer %pM %u %s %s%s%s%s%s%s%s %srate_idx %u vht_nss %u freq %u band %u flag 0x%x fcs-err %i mic-err %i amsdu-more %i\n",
|
||||
"rx skb %pK len %u peer %pM %u %s %s%s%s%s%s%s%s%s %srate_idx %u vht_nss %u freq %u band %u flag 0x%x fcs-err %i mic-err %i amsdu-more %i\n",
|
||||
msdu,
|
||||
msdu->len,
|
||||
peer ? peer->addr : NULL,
|
||||
|
@ -1104,6 +1104,7 @@ static void ath12k_dp_mon_rx_deliver_msdu(struct ath12k *ar, struct napi_struct
|
|||
(status->bw == RATE_INFO_BW_40) ? "40" : "",
|
||||
(status->bw == RATE_INFO_BW_80) ? "80" : "",
|
||||
(status->bw == RATE_INFO_BW_160) ? "160" : "",
|
||||
(status->bw == RATE_INFO_BW_320) ? "320" : "",
|
||||
status->enc_flags & RX_ENC_FLAG_SHORT_GI ? "sgi " : "",
|
||||
status->rate_idx,
|
||||
status->nss,
|
||||
|
@ -1259,7 +1260,7 @@ ath12k_dp_mon_rx_parse_mon_status(struct ath12k *ar,
|
|||
}
|
||||
|
||||
int ath12k_dp_mon_buf_replenish(struct ath12k_base *ab,
|
||||
struct dp_rxdma_ring *buf_ring,
|
||||
struct dp_rxdma_mon_ring *buf_ring,
|
||||
int req_entries)
|
||||
{
|
||||
struct hal_mon_buf_ring *mon_buf;
|
||||
|
@ -1902,7 +1903,7 @@ ath12k_dp_mon_tx_parse_status_tlv(struct ath12k_base *ab,
|
|||
}
|
||||
|
||||
case HAL_MON_BUF_ADDR: {
|
||||
struct dp_rxdma_ring *buf_ring = &ab->dp.tx_mon_buf_ring;
|
||||
struct dp_rxdma_mon_ring *buf_ring = &ab->dp.tx_mon_buf_ring;
|
||||
struct dp_mon_packet_info *packet_info =
|
||||
(struct dp_mon_packet_info *)tlv_data;
|
||||
int buf_id = u32_get_bits(packet_info->cookie,
|
||||
|
@ -2067,7 +2068,7 @@ int ath12k_dp_mon_srng_process(struct ath12k *ar, int mac_id, int *budget,
|
|||
struct ath12k_skb_rxcb *rxcb;
|
||||
struct dp_srng *mon_dst_ring;
|
||||
struct hal_srng *srng;
|
||||
struct dp_rxdma_ring *buf_ring;
|
||||
struct dp_rxdma_mon_ring *buf_ring;
|
||||
u64 cookie;
|
||||
u32 ppdu_id;
|
||||
int num_buffs_reaped = 0, srng_id, buf_id;
|
||||
|
@ -2480,7 +2481,7 @@ int ath12k_dp_mon_rx_process_stats(struct ath12k *ar, int mac_id,
|
|||
struct ath12k_skb_rxcb *rxcb;
|
||||
struct dp_srng *mon_dst_ring;
|
||||
struct hal_srng *srng;
|
||||
struct dp_rxdma_ring *buf_ring;
|
||||
struct dp_rxdma_mon_ring *buf_ring;
|
||||
struct ath12k_sta *arsta = NULL;
|
||||
struct ath12k_peer *peer;
|
||||
u64 cookie;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH12K_DP_MON_H
|
||||
|
@ -80,7 +80,7 @@ ath12k_dp_mon_rx_parse_mon_status(struct ath12k *ar,
|
|||
int mac_id, struct sk_buff *skb,
|
||||
struct napi_struct *napi);
|
||||
int ath12k_dp_mon_buf_replenish(struct ath12k_base *ab,
|
||||
struct dp_rxdma_ring *buf_ring,
|
||||
struct dp_rxdma_mon_ring *buf_ring,
|
||||
int req_entries);
|
||||
int ath12k_dp_mon_srng_process(struct ath12k *ar, int mac_id,
|
||||
int *budget, enum dp_monitor_mode monitor_mode,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/ieee80211.h>
|
||||
|
@ -256,22 +256,20 @@ static int ath12k_dp_purge_mon_ring(struct ath12k_base *ab)
|
|||
}
|
||||
|
||||
/* Returns number of Rx buffers replenished */
|
||||
int ath12k_dp_rx_bufs_replenish(struct ath12k_base *ab, int mac_id,
|
||||
int ath12k_dp_rx_bufs_replenish(struct ath12k_base *ab,
|
||||
struct dp_rxdma_ring *rx_ring,
|
||||
int req_entries,
|
||||
enum hal_rx_buf_return_buf_manager mgr,
|
||||
bool hw_cc)
|
||||
int req_entries)
|
||||
{
|
||||
struct ath12k_buffer_addr *desc;
|
||||
struct hal_srng *srng;
|
||||
struct sk_buff *skb;
|
||||
int num_free;
|
||||
int num_remain;
|
||||
int buf_id;
|
||||
u32 cookie;
|
||||
dma_addr_t paddr;
|
||||
struct ath12k_dp *dp = &ab->dp;
|
||||
struct ath12k_rx_desc_info *rx_desc;
|
||||
enum hal_rx_buf_return_buf_manager mgr = ab->hw_params->hal_params->rx_buf_rbm;
|
||||
|
||||
req_entries = min(req_entries, rx_ring->bufs_max);
|
||||
|
||||
|
@ -307,42 +305,29 @@ int ath12k_dp_rx_bufs_replenish(struct ath12k_base *ab, int mac_id,
|
|||
if (dma_mapping_error(ab->dev, paddr))
|
||||
goto fail_free_skb;
|
||||
|
||||
if (hw_cc) {
|
||||
spin_lock_bh(&dp->rx_desc_lock);
|
||||
|
||||
/* Get desc from free list and store in used list
|
||||
* for cleanup purposes
|
||||
*
|
||||
* TODO: pass the removed descs rather than
|
||||
* add/read to optimize
|
||||
*/
|
||||
rx_desc = list_first_entry_or_null(&dp->rx_desc_free_list,
|
||||
struct ath12k_rx_desc_info,
|
||||
list);
|
||||
if (!rx_desc) {
|
||||
spin_unlock_bh(&dp->rx_desc_lock);
|
||||
goto fail_dma_unmap;
|
||||
}
|
||||
|
||||
rx_desc->skb = skb;
|
||||
cookie = rx_desc->cookie;
|
||||
list_del(&rx_desc->list);
|
||||
list_add_tail(&rx_desc->list, &dp->rx_desc_used_list);
|
||||
spin_lock_bh(&dp->rx_desc_lock);
|
||||
|
||||
/* Get desc from free list and store in used list
|
||||
* for cleanup purposes
|
||||
*
|
||||
* TODO: pass the removed descs rather than
|
||||
* add/read to optimize
|
||||
*/
|
||||
rx_desc = list_first_entry_or_null(&dp->rx_desc_free_list,
|
||||
struct ath12k_rx_desc_info,
|
||||
list);
|
||||
if (!rx_desc) {
|
||||
spin_unlock_bh(&dp->rx_desc_lock);
|
||||
} else {
|
||||
spin_lock_bh(&rx_ring->idr_lock);
|
||||
buf_id = idr_alloc(&rx_ring->bufs_idr, skb, 0,
|
||||
rx_ring->bufs_max * 3, GFP_ATOMIC);
|
||||
spin_unlock_bh(&rx_ring->idr_lock);
|
||||
if (buf_id < 0)
|
||||
goto fail_dma_unmap;
|
||||
cookie = u32_encode_bits(mac_id,
|
||||
DP_RXDMA_BUF_COOKIE_PDEV_ID) |
|
||||
u32_encode_bits(buf_id,
|
||||
DP_RXDMA_BUF_COOKIE_BUF_ID);
|
||||
goto fail_dma_unmap;
|
||||
}
|
||||
|
||||
rx_desc->skb = skb;
|
||||
cookie = rx_desc->cookie;
|
||||
list_del(&rx_desc->list);
|
||||
list_add_tail(&rx_desc->list, &dp->rx_desc_used_list);
|
||||
|
||||
spin_unlock_bh(&dp->rx_desc_lock);
|
||||
|
||||
desc = ath12k_hal_srng_src_get_next_entry(ab, srng);
|
||||
if (!desc)
|
||||
goto fail_buf_unassign;
|
||||
|
@ -361,17 +346,11 @@ int ath12k_dp_rx_bufs_replenish(struct ath12k_base *ab, int mac_id,
|
|||
return req_entries - num_remain;
|
||||
|
||||
fail_buf_unassign:
|
||||
if (hw_cc) {
|
||||
spin_lock_bh(&dp->rx_desc_lock);
|
||||
list_del(&rx_desc->list);
|
||||
list_add_tail(&rx_desc->list, &dp->rx_desc_free_list);
|
||||
rx_desc->skb = NULL;
|
||||
spin_unlock_bh(&dp->rx_desc_lock);
|
||||
} else {
|
||||
spin_lock_bh(&rx_ring->idr_lock);
|
||||
idr_remove(&rx_ring->bufs_idr, buf_id);
|
||||
spin_unlock_bh(&rx_ring->idr_lock);
|
||||
}
|
||||
spin_lock_bh(&dp->rx_desc_lock);
|
||||
list_del(&rx_desc->list);
|
||||
list_add_tail(&rx_desc->list, &dp->rx_desc_free_list);
|
||||
rx_desc->skb = NULL;
|
||||
spin_unlock_bh(&dp->rx_desc_lock);
|
||||
fail_dma_unmap:
|
||||
dma_unmap_single(ab->dev, paddr, skb->len + skb_tailroom(skb),
|
||||
DMA_FROM_DEVICE);
|
||||
|
@ -385,8 +364,8 @@ fail_free_skb:
|
|||
return req_entries - num_remain;
|
||||
}
|
||||
|
||||
static int ath12k_dp_rxdma_buf_ring_free(struct ath12k_base *ab,
|
||||
struct dp_rxdma_ring *rx_ring)
|
||||
static int ath12k_dp_rxdma_mon_buf_ring_free(struct ath12k_base *ab,
|
||||
struct dp_rxdma_mon_ring *rx_ring)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
int buf_id;
|
||||
|
@ -411,22 +390,17 @@ static int ath12k_dp_rxdma_buf_ring_free(struct ath12k_base *ab,
|
|||
static int ath12k_dp_rxdma_buf_free(struct ath12k_base *ab)
|
||||
{
|
||||
struct ath12k_dp *dp = &ab->dp;
|
||||
struct dp_rxdma_ring *rx_ring = &dp->rx_refill_buf_ring;
|
||||
|
||||
ath12k_dp_rxdma_buf_ring_free(ab, rx_ring);
|
||||
ath12k_dp_rxdma_mon_buf_ring_free(ab, &dp->rxdma_mon_buf_ring);
|
||||
|
||||
rx_ring = &dp->rxdma_mon_buf_ring;
|
||||
ath12k_dp_rxdma_buf_ring_free(ab, rx_ring);
|
||||
|
||||
rx_ring = &dp->tx_mon_buf_ring;
|
||||
ath12k_dp_rxdma_buf_ring_free(ab, rx_ring);
|
||||
ath12k_dp_rxdma_mon_buf_ring_free(ab, &dp->tx_mon_buf_ring);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ath12k_dp_rxdma_ring_buf_setup(struct ath12k_base *ab,
|
||||
struct dp_rxdma_ring *rx_ring,
|
||||
u32 ringtype)
|
||||
static int ath12k_dp_rxdma_mon_ring_buf_setup(struct ath12k_base *ab,
|
||||
struct dp_rxdma_mon_ring *rx_ring,
|
||||
u32 ringtype)
|
||||
{
|
||||
int num_entries;
|
||||
|
||||
|
@ -434,23 +408,31 @@ static int ath12k_dp_rxdma_ring_buf_setup(struct ath12k_base *ab,
|
|||
ath12k_hal_srng_get_entrysize(ab, ringtype);
|
||||
|
||||
rx_ring->bufs_max = num_entries;
|
||||
if ((ringtype == HAL_RXDMA_MONITOR_BUF) || (ringtype == HAL_TX_MONITOR_BUF))
|
||||
ath12k_dp_mon_buf_replenish(ab, rx_ring, num_entries);
|
||||
else
|
||||
ath12k_dp_rx_bufs_replenish(ab, 0, rx_ring, num_entries,
|
||||
ab->hw_params->hal_params->rx_buf_rbm,
|
||||
ringtype == HAL_RXDMA_BUF);
|
||||
ath12k_dp_mon_buf_replenish(ab, rx_ring, num_entries);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ath12k_dp_rxdma_ring_buf_setup(struct ath12k_base *ab,
|
||||
struct dp_rxdma_ring *rx_ring)
|
||||
{
|
||||
int num_entries;
|
||||
|
||||
num_entries = rx_ring->refill_buf_ring.size /
|
||||
ath12k_hal_srng_get_entrysize(ab, HAL_RXDMA_BUF);
|
||||
|
||||
rx_ring->bufs_max = num_entries;
|
||||
ath12k_dp_rx_bufs_replenish(ab, rx_ring, num_entries);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ath12k_dp_rxdma_buf_setup(struct ath12k_base *ab)
|
||||
{
|
||||
struct ath12k_dp *dp = &ab->dp;
|
||||
struct dp_rxdma_ring *rx_ring = &dp->rx_refill_buf_ring;
|
||||
int ret;
|
||||
|
||||
ret = ath12k_dp_rxdma_ring_buf_setup(ab, rx_ring,
|
||||
HAL_RXDMA_BUF);
|
||||
ret = ath12k_dp_rxdma_ring_buf_setup(ab, &dp->rx_refill_buf_ring);
|
||||
if (ret) {
|
||||
ath12k_warn(ab,
|
||||
"failed to setup HAL_RXDMA_BUF\n");
|
||||
|
@ -458,18 +440,18 @@ static int ath12k_dp_rxdma_buf_setup(struct ath12k_base *ab)
|
|||
}
|
||||
|
||||
if (ab->hw_params->rxdma1_enable) {
|
||||
rx_ring = &dp->rxdma_mon_buf_ring;
|
||||
ret = ath12k_dp_rxdma_ring_buf_setup(ab, rx_ring,
|
||||
HAL_RXDMA_MONITOR_BUF);
|
||||
ret = ath12k_dp_rxdma_mon_ring_buf_setup(ab,
|
||||
&dp->rxdma_mon_buf_ring,
|
||||
HAL_RXDMA_MONITOR_BUF);
|
||||
if (ret) {
|
||||
ath12k_warn(ab,
|
||||
"failed to setup HAL_RXDMA_MONITOR_BUF\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
rx_ring = &dp->tx_mon_buf_ring;
|
||||
ret = ath12k_dp_rxdma_ring_buf_setup(ab, rx_ring,
|
||||
HAL_TX_MONITOR_BUF);
|
||||
ret = ath12k_dp_rxdma_mon_ring_buf_setup(ab,
|
||||
&dp->tx_mon_buf_ring,
|
||||
HAL_TX_MONITOR_BUF);
|
||||
if (ret) {
|
||||
ath12k_warn(ab,
|
||||
"failed to setup HAL_TX_MONITOR_BUF\n");
|
||||
|
@ -1339,9 +1321,6 @@ ath12k_update_per_peer_tx_stats(struct ath12k *ar,
|
|||
u8 tid = HTT_PPDU_STATS_NON_QOS_TID;
|
||||
bool is_ampdu = false;
|
||||
|
||||
if (!usr_stats)
|
||||
return;
|
||||
|
||||
if (!(usr_stats->tlv_flags & BIT(HTT_PPDU_STATS_TAG_USR_RATE)))
|
||||
return;
|
||||
|
||||
|
@ -2438,7 +2417,7 @@ static void ath12k_dp_rx_deliver_msdu(struct ath12k *ar, struct napi_struct *nap
|
|||
spin_unlock_bh(&ab->base_lock);
|
||||
|
||||
ath12k_dbg(ab, ATH12K_DBG_DATA,
|
||||
"rx skb %pK len %u peer %pM %d %s sn %u %s%s%s%s%s%s%s%s rate_idx %u vht_nss %u freq %u band %u flag 0x%x fcs-err %i mic-err %i amsdu-more %i\n",
|
||||
"rx skb %pK len %u peer %pM %d %s sn %u %s%s%s%s%s%s%s%s%s rate_idx %u vht_nss %u freq %u band %u flag 0x%x fcs-err %i mic-err %i amsdu-more %i\n",
|
||||
msdu,
|
||||
msdu->len,
|
||||
peer ? peer->addr : NULL,
|
||||
|
@ -2452,6 +2431,7 @@ static void ath12k_dp_rx_deliver_msdu(struct ath12k *ar, struct napi_struct *nap
|
|||
(status->bw == RATE_INFO_BW_40) ? "40" : "",
|
||||
(status->bw == RATE_INFO_BW_80) ? "80" : "",
|
||||
(status->bw == RATE_INFO_BW_160) ? "160" : "",
|
||||
(status->bw == RATE_INFO_BW_320) ? "320" : "",
|
||||
status->enc_flags & RX_ENC_FLAG_SHORT_GI ? "sgi " : "",
|
||||
status->rate_idx,
|
||||
status->nss,
|
||||
|
@ -2714,9 +2694,7 @@ try_again:
|
|||
if (!total_msdu_reaped)
|
||||
goto exit;
|
||||
|
||||
/* TODO: Move to implicit BM? */
|
||||
ath12k_dp_rx_bufs_replenish(ab, 0, rx_ring, num_buffs_reaped,
|
||||
ab->hw_params->hal_params->rx_buf_rbm, true);
|
||||
ath12k_dp_rx_bufs_replenish(ab, rx_ring, num_buffs_reaped);
|
||||
|
||||
ath12k_dp_rx_process_received_packets(ab, napi, &msdu_list,
|
||||
ring_id);
|
||||
|
@ -3494,8 +3472,7 @@ exit:
|
|||
|
||||
rx_ring = &dp->rx_refill_buf_ring;
|
||||
|
||||
ath12k_dp_rx_bufs_replenish(ab, 0, rx_ring, tot_n_bufs_reaped,
|
||||
ab->hw_params->hal_params->rx_buf_rbm, true);
|
||||
ath12k_dp_rx_bufs_replenish(ab, rx_ring, tot_n_bufs_reaped);
|
||||
|
||||
return tot_n_bufs_reaped;
|
||||
}
|
||||
|
@ -3808,8 +3785,7 @@ int ath12k_dp_rx_process_wbm_err(struct ath12k_base *ab,
|
|||
if (!num_buffs_reaped)
|
||||
goto done;
|
||||
|
||||
ath12k_dp_rx_bufs_replenish(ab, 0, rx_ring, num_buffs_reaped,
|
||||
ab->hw_params->hal_params->rx_buf_rbm, true);
|
||||
ath12k_dp_rx_bufs_replenish(ab, rx_ring, num_buffs_reaped);
|
||||
|
||||
rcu_read_lock();
|
||||
for (i = 0; i < ab->num_radios; i++) {
|
||||
|
@ -4090,9 +4066,6 @@ int ath12k_dp_rx_alloc(struct ath12k_base *ab)
|
|||
struct ath12k_dp *dp = &ab->dp;
|
||||
int i, ret;
|
||||
|
||||
idr_init(&dp->rx_refill_buf_ring.bufs_idr);
|
||||
spin_lock_init(&dp->rx_refill_buf_ring.idr_lock);
|
||||
|
||||
idr_init(&dp->rxdma_mon_buf_ring.bufs_idr);
|
||||
spin_lock_init(&dp->rxdma_mon_buf_ring.idr_lock);
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
#ifndef ATH12K_DP_RX_H
|
||||
#define ATH12K_DP_RX_H
|
||||
|
@ -116,11 +116,9 @@ int ath12k_dp_rx_process_err(struct ath12k_base *ab, struct napi_struct *napi,
|
|||
int ath12k_dp_rx_process(struct ath12k_base *ab, int mac_id,
|
||||
struct napi_struct *napi,
|
||||
int budget);
|
||||
int ath12k_dp_rx_bufs_replenish(struct ath12k_base *ab, int mac_id,
|
||||
int ath12k_dp_rx_bufs_replenish(struct ath12k_base *ab,
|
||||
struct dp_rxdma_ring *rx_ring,
|
||||
int req_entries,
|
||||
enum hal_rx_buf_return_buf_manager mgr,
|
||||
bool hw_cc);
|
||||
int req_entries);
|
||||
int ath12k_dp_rx_pdev_mon_attach(struct ath12k *ar);
|
||||
int ath12k_dp_rx_peer_frag_setup(struct ath12k *ar, const u8 *peer_mac, int vdev_id);
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "core.h"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
#include <linux/dma-mapping.h>
|
||||
#include "hal_tx.h"
|
||||
|
@ -889,8 +889,8 @@ static u8 *ath12k_hw_wcn7850_rx_desc_mpdu_start_addr2(struct hal_rx_desc *desc)
|
|||
|
||||
static bool ath12k_hw_wcn7850_rx_desc_is_da_mcbc(struct hal_rx_desc *desc)
|
||||
{
|
||||
return __le16_to_cpu(desc->u.wcn7850.msdu_end.info5) &
|
||||
RX_MSDU_END_INFO5_DA_IS_MCBC;
|
||||
return __le32_to_cpu(desc->u.wcn7850.msdu_end.info13) &
|
||||
RX_MSDU_END_INFO13_MCAST_BCAST;
|
||||
}
|
||||
|
||||
static void ath12k_hw_wcn7850_rx_desc_get_dot11_hdr(struct hal_rx_desc *desc,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH12K_HAL_H
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "debug.h"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH12K_HAL_RX_H
|
||||
|
@ -61,6 +61,7 @@ enum hal_rx_bw {
|
|||
HAL_RX_BW_40MHZ,
|
||||
HAL_RX_BW_80MHZ,
|
||||
HAL_RX_BW_160MHZ,
|
||||
HAL_RX_BW_320MHZ,
|
||||
HAL_RX_BW_MAX,
|
||||
};
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef ATH12K_HIF_H
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue