Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
f9a8dd7f81
@ -0,0 +1,58 @@
|
||||
From f812e2a9f85d6bea78957ccb5197e4491316848b Mon Sep 17 00:00:00 2001
|
||||
From: Cai Huoqing <cai.huoqing@linux.dev>
|
||||
Date: Thu, 23 Mar 2023 19:26:09 +0800
|
||||
Subject: [PATCH] wifi: ath11k: Remove redundant pci_clear_master
|
||||
|
||||
Remove pci_clear_master to simplify the code,
|
||||
the bus-mastering is also cleared in do_pci_disable_device,
|
||||
like this:
|
||||
./drivers/pci/pci.c:2197
|
||||
static void do_pci_disable_device(struct pci_dev *dev)
|
||||
{
|
||||
u16 pci_command;
|
||||
|
||||
pci_read_config_word(dev, PCI_COMMAND, &pci_command);
|
||||
if (pci_command & PCI_COMMAND_MASTER) {
|
||||
pci_command &= ~PCI_COMMAND_MASTER;
|
||||
pci_write_config_word(dev, PCI_COMMAND, pci_command);
|
||||
}
|
||||
|
||||
pcibios_disable_device(dev);
|
||||
}.
|
||||
And dev->is_busmaster is set to 0 in pci_disable_device.
|
||||
|
||||
Signed-off-by: Cai Huoqing <cai.huoqing@linux.dev>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230323112613.7550-1-cai.huoqing@linux.dev
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/pci.c | 5 +----
|
||||
1 file changed, 1 insertion(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/pci.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/pci.c
|
||||
@@ -540,7 +540,7 @@ static int ath11k_pci_claim(struct ath11
|
||||
if (!ab->mem) {
|
||||
ath11k_err(ab, "failed to map pci bar %d\n", ATH11K_PCI_BAR_NUM);
|
||||
ret = -EIO;
|
||||
- goto clear_master;
|
||||
+ goto release_region;
|
||||
}
|
||||
|
||||
ab->mem_ce = ab->mem;
|
||||
@@ -548,8 +548,6 @@ static int ath11k_pci_claim(struct ath11
|
||||
ath11k_dbg(ab, ATH11K_DBG_BOOT, "boot pci_mem 0x%pK\n", ab->mem);
|
||||
return 0;
|
||||
|
||||
-clear_master:
|
||||
- pci_clear_master(pdev);
|
||||
release_region:
|
||||
pci_release_region(pdev, ATH11K_PCI_BAR_NUM);
|
||||
disable_device:
|
||||
@@ -565,7 +563,6 @@ static void ath11k_pci_free_region(struc
|
||||
|
||||
pci_iounmap(pci_dev, ab->mem);
|
||||
ab->mem = NULL;
|
||||
- pci_clear_master(pci_dev);
|
||||
pci_release_region(pci_dev, ATH11K_PCI_BAR_NUM);
|
||||
if (pci_is_enabled(pci_dev))
|
||||
pci_disable_device(pci_dev);
|
||||
@ -0,0 +1,36 @@
|
||||
From 5c690db63b45c6c4c4932b13173af71df369dba5 Mon Sep 17 00:00:00 2001
|
||||
From: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
Date: Tue, 28 Mar 2023 12:41:50 +0530
|
||||
Subject: [PATCH] wifi: ath11k: Disable Spectral scan upon removing interface
|
||||
|
||||
Host might receive spectral events during interface
|
||||
down sequence and this might create below errors.
|
||||
|
||||
failed to handle dma buf release event -22
|
||||
failed to handle dma buf release event -22
|
||||
|
||||
Fix this by disabling spectral config during remove interface.
|
||||
|
||||
Tested-on: IPQ5018 hw1.0 AHB WLAN.HK.2.6.0.1-00861-QCAHKSWPL_SILICONZ-1
|
||||
|
||||
Signed-off-by: Tamizh Chelvam Raja <quic_tamizhr@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230328071150.29645-1-quic_tamizhr@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/mac.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -6685,6 +6685,11 @@ static void ath11k_mac_op_remove_interfa
|
||||
ath11k_dbg(ab, ATH11K_DBG_MAC, "mac remove interface (vdev %d)\n",
|
||||
arvif->vdev_id);
|
||||
|
||||
+ ret = ath11k_spectral_vif_stop(arvif);
|
||||
+ if (ret)
|
||||
+ ath11k_warn(ab, "failed to stop spectral for vdev %i: %d\n",
|
||||
+ arvif->vdev_id, ret);
|
||||
+
|
||||
if (arvif->vdev_type == WMI_VDEV_TYPE_STA)
|
||||
ath11k_mac_11d_scan_stop(ar);
|
||||
|
||||
@ -0,0 +1,29 @@
|
||||
From abf57d84973ce1abcb67504ac0df8aea1fe09a76 Mon Sep 17 00:00:00 2001
|
||||
From: Youghandhar Chintala <quic_youghand@quicinc.com>
|
||||
Date: Tue, 28 Mar 2023 17:04:55 +0530
|
||||
Subject: [PATCH] wifi: ath11k: enable SAR support on WCN6750
|
||||
|
||||
Currently, SAR is enabled only on WCN6855, enable this for WCN6750 too. This
|
||||
functionality gets triggered, when the user space application calls
|
||||
NL80211_CMD_SET_SAR_SPECS.
|
||||
|
||||
Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.1.0.1-00887-QCAMSLSWPLZ-1
|
||||
|
||||
Signed-off-by: Youghandhar Chintala <quic_youghand@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230328113455.11252-1-quic_youghand@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/core.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
||||
@@ -593,7 +593,7 @@ static const struct ath11k_hw_params ath
|
||||
.current_cc_support = true,
|
||||
.dbr_debug_support = false,
|
||||
.global_reset = false,
|
||||
- .bios_sar_capa = NULL,
|
||||
+ .bios_sar_capa = &ath11k_hw_sar_capa_wcn6855,
|
||||
.m3_fw_support = false,
|
||||
.fixed_bdf_addr = false,
|
||||
.fixed_mem_region = false,
|
||||
@ -0,0 +1,36 @@
|
||||
From 06c58473969239e00d76b683edd511952060ca56 Mon Sep 17 00:00:00 2001
|
||||
From: Takashi Iwai <tiwai@suse.de>
|
||||
Date: Thu, 30 Mar 2023 16:37:18 +0200
|
||||
Subject: [PATCH] wifi: ath11k: pci: Add more MODULE_FIRMWARE() entries
|
||||
|
||||
As there are a few more models supported by the driver, let's add the
|
||||
missing MODULE_FIRMWARE() entries for them. The lack of them resulted
|
||||
in the missing device enablement on some systems, such as the
|
||||
installation image of openSUSE.
|
||||
|
||||
While we are at it, use the wildcard instead of listing each firmware
|
||||
files individually for each.
|
||||
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
Reviewed-by: Simon Horman <simon.horman@corigine.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230330143718.19511-1-tiwai@suse.de
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/pci.c | 9 +++++----
|
||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/pci.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/pci.c
|
||||
@@ -1036,7 +1036,8 @@ module_exit(ath11k_pci_exit);
|
||||
MODULE_DESCRIPTION("Driver support for Qualcomm Technologies 802.11ax WLAN PCIe devices");
|
||||
MODULE_LICENSE("Dual BSD/GPL");
|
||||
|
||||
-/* QCA639x 2.0 firmware files */
|
||||
-MODULE_FIRMWARE(ATH11K_FW_DIR "/QCA6390/hw2.0/" ATH11K_BOARD_API2_FILE);
|
||||
-MODULE_FIRMWARE(ATH11K_FW_DIR "/QCA6390/hw2.0/" ATH11K_AMSS_FILE);
|
||||
-MODULE_FIRMWARE(ATH11K_FW_DIR "/QCA6390/hw2.0/" ATH11K_M3_FILE);
|
||||
+/* firmware files */
|
||||
+MODULE_FIRMWARE(ATH11K_FW_DIR "/QCA6390/hw2.0/*");
|
||||
+MODULE_FIRMWARE(ATH11K_FW_DIR "/QCN9074/hw1.0/*");
|
||||
+MODULE_FIRMWARE(ATH11K_FW_DIR "/WCN6855/hw2.0/*");
|
||||
+MODULE_FIRMWARE(ATH11K_FW_DIR "/WCN6855/hw2.1/*");
|
||||
@ -0,0 +1,34 @@
|
||||
From a87a9110ac0dcbfd9458b6665c141fa1c16a669d Mon Sep 17 00:00:00 2001
|
||||
From: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Date: Wed, 5 Apr 2023 12:04:25 +0300
|
||||
Subject: [PATCH] wifi: ath11k: print a warning when crypto_alloc_shash() fails
|
||||
|
||||
Christoph reported that ath11k failed to initialise when michael_mic.ko
|
||||
module was not installed. To make it easier to notice that case print a
|
||||
warning when crypto_alloc_shash() fails.
|
||||
|
||||
Compile tested only.
|
||||
|
||||
Reported-by: Christoph Hellwig <hch@lst.de>
|
||||
Link: https://lore.kernel.org/all/20221130133016.GC3055@lst.de/
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230405090425.1351-1-kvalo@kernel.org
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/dp_rx.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
@@ -3106,8 +3106,11 @@ int ath11k_peer_rx_frag_setup(struct ath
|
||||
int i;
|
||||
|
||||
tfm = crypto_alloc_shash("michael_mic", 0, 0);
|
||||
- if (IS_ERR(tfm))
|
||||
+ if (IS_ERR(tfm)) {
|
||||
+ ath11k_warn(ab, "failed to allocate michael_mic shash: %ld\n",
|
||||
+ PTR_ERR(tfm));
|
||||
return PTR_ERR(tfm);
|
||||
+ }
|
||||
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
|
||||
@ -0,0 +1,104 @@
|
||||
From a06bfb3c9f69f303692cdae87bc0899d2ae8b2a6 Mon Sep 17 00:00:00 2001
|
||||
From: Harshitha Prem <quic_hprem@quicinc.com>
|
||||
Date: Tue, 4 Apr 2023 00:11:54 +0530
|
||||
Subject: [PATCH] wifi: ath11k: Ignore frags from uninitialized peer in dp.
|
||||
|
||||
When max virtual ap interfaces are configured in all the bands with
|
||||
ACS and hostapd restart is done every 60s, a crash is observed at
|
||||
random times.
|
||||
In this certain scenario, a fragmented packet is received for
|
||||
self peer, for which rx_tid and rx_frags are not initialized in
|
||||
datapath. While handling this fragment, crash is observed as the
|
||||
rx_frag list is uninitialised and when we walk in
|
||||
ath11k_dp_rx_h_sort_frags, skb null leads to exception.
|
||||
|
||||
To address this, before processing received fragments we check
|
||||
dp_setup_done flag is set to ensure that peer has completed its
|
||||
dp peer setup for fragment queue, else ignore processing the
|
||||
fragments.
|
||||
|
||||
Call trace:
|
||||
ath11k_dp_process_rx_err+0x550/0x1084 [ath11k]
|
||||
ath11k_dp_service_srng+0x70/0x370 [ath11k]
|
||||
0xffffffc009693a04
|
||||
__napi_poll+0x30/0xa4
|
||||
net_rx_action+0x118/0x270
|
||||
__do_softirq+0x10c/0x244
|
||||
irq_exit+0x64/0xb4
|
||||
__handle_domain_irq+0x88/0xac
|
||||
gic_handle_irq+0x74/0xbc
|
||||
el1_irq+0xf0/0x1c0
|
||||
arch_cpu_idle+0x10/0x18
|
||||
do_idle+0x104/0x248
|
||||
cpu_startup_entry+0x20/0x64
|
||||
rest_init+0xd0/0xdc
|
||||
arch_call_rest_init+0xc/0x14
|
||||
start_kernel+0x480/0x4b8
|
||||
Code: f9400281 f94066a2 91405021 b94a0023 (f9406401)
|
||||
|
||||
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
||||
|
||||
Signed-off-by: Harshitha Prem <quic_hprem@quicinc.com>
|
||||
Signed-off-by: Nagarajan Maran <quic_nmaran@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230403184155.8670-2-quic_nmaran@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/dp.c | 4 +++-
|
||||
drivers/net/wireless/ath/ath11k/dp_rx.c | 8 ++++++++
|
||||
drivers/net/wireless/ath/ath11k/peer.h | 1 +
|
||||
3 files changed, 12 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp.c
|
||||
@@ -36,6 +36,7 @@ void ath11k_dp_peer_cleanup(struct ath11
|
||||
}
|
||||
|
||||
ath11k_peer_rx_tid_cleanup(ar, peer);
|
||||
+ peer->dp_setup_done = false;
|
||||
crypto_free_shash(peer->tfm_mmic);
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
}
|
||||
@@ -72,7 +73,8 @@ int ath11k_dp_peer_setup(struct ath11k *
|
||||
ret = ath11k_peer_rx_frag_setup(ar, addr, vdev_id);
|
||||
if (ret) {
|
||||
ath11k_warn(ab, "failed to setup rx defrag context\n");
|
||||
- return ret;
|
||||
+ tid--;
|
||||
+ goto peer_clean;
|
||||
}
|
||||
|
||||
/* TODO: Setup other peer specific resource used in data path */
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
@@ -3130,6 +3130,7 @@ int ath11k_peer_rx_frag_setup(struct ath
|
||||
}
|
||||
|
||||
peer->tfm_mmic = tfm;
|
||||
+ peer->dp_setup_done = true;
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
|
||||
return 0;
|
||||
@@ -3575,6 +3576,13 @@ static int ath11k_dp_rx_frag_h_mpdu(stru
|
||||
ret = -ENOENT;
|
||||
goto out_unlock;
|
||||
}
|
||||
+ if (!peer->dp_setup_done) {
|
||||
+ ath11k_warn(ab, "The peer %pM [%d] has uninitialized datapath\n",
|
||||
+ peer->addr, peer_id);
|
||||
+ ret = -ENOENT;
|
||||
+ goto out_unlock;
|
||||
+ }
|
||||
+
|
||||
rx_tid = &peer->rx_tid[tid];
|
||||
|
||||
if ((!skb_queue_empty(&rx_tid->rx_frags) && seqno != rx_tid->cur_sn) ||
|
||||
--- a/drivers/net/wireless/ath/ath11k/peer.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/peer.h
|
||||
@@ -35,6 +35,7 @@ struct ath11k_peer {
|
||||
u16 sec_type;
|
||||
u16 sec_type_grp;
|
||||
bool is_authorized;
|
||||
+ bool dp_setup_done;
|
||||
};
|
||||
|
||||
void ath11k_peer_unmap_event(struct ath11k_base *ab, u16 peer_id);
|
||||
@ -0,0 +1,29 @@
|
||||
From 41e02bf4ae32cf2ac47b08b4caaa9c1a032e4ce7 Mon Sep 17 00:00:00 2001
|
||||
From: Harshitha Prem <quic_hprem@quicinc.com>
|
||||
Date: Tue, 4 Apr 2023 00:11:55 +0530
|
||||
Subject: [PATCH] wifi: ath11k: fix undefined behavior with __fls in dp
|
||||
|
||||
"__fls" would have an undefined behavior if the argument is passed
|
||||
as "0". Hence, added changes to handle the same.
|
||||
|
||||
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
||||
|
||||
Signed-off-by: Harshitha Prem <quic_hprem@quicinc.com>
|
||||
Signed-off-by: Nagarajan Maran <quic_nmaran@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230403184155.8670-3-quic_nmaran@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/dp_rx.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
@@ -3598,7 +3598,7 @@ static int ath11k_dp_rx_frag_h_mpdu(stru
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
- if (frag_no > __fls(rx_tid->rx_frag_bitmap))
|
||||
+ if (!rx_tid->rx_frag_bitmap || (frag_no > __fls(rx_tid->rx_frag_bitmap)))
|
||||
__skb_queue_tail(&rx_tid->rx_frags, msdu);
|
||||
else
|
||||
ath11k_dp_rx_h_sort_frags(ar, &rx_tid->rx_frags, msdu);
|
||||
@ -0,0 +1,144 @@
|
||||
From 93a91f40c25c3d0e61f8540a7accf105090f9995 Mon Sep 17 00:00:00 2001
|
||||
From: Harshitha Prem <quic_hprem@quicinc.com>
|
||||
Date: Mon, 17 Apr 2023 13:35:00 +0300
|
||||
Subject: [PATCH] wifi: ath11k: fix double free of peer rx_tid during reo cmd
|
||||
failure
|
||||
|
||||
Peer rx_tid is locally copied thrice during peer_rx_tid_cleanup to
|
||||
send REO_CMD_UPDATE_RX_QUEUE followed by REO_CMD_FLUSH_CACHE to flush
|
||||
all aged REO descriptors from HW cache.
|
||||
|
||||
When sending REO_CMD_FLUSH_CACHE fails, we do dma unmap of already
|
||||
mapped rx_tid->vaddr and free it. This is not checked during
|
||||
reo_cmd_list_cleanup() and dp_reo_cmd_free() before trying to free and
|
||||
unmap again.
|
||||
|
||||
Fix this by setting rx_tid->vaddr NULL in rx tid delete and also
|
||||
wherever freeing it to check in reo_cmd_list_cleanup() and
|
||||
reo_cmd_free() before trying to free again.
|
||||
|
||||
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
||||
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
||||
|
||||
Signed-off-by: Sathishkumar Muruganandam <quic_murugana@quicinc.com>
|
||||
Signed-off-by: Harshitha Prem <quic_hprem@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230403182420.23375-2-quic_hprem@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/dp_rx.c | 43 ++++++++++++++++++-------
|
||||
1 file changed, 31 insertions(+), 12 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
@@ -668,13 +668,18 @@ void ath11k_dp_reo_cmd_list_cleanup(stru
|
||||
struct ath11k_dp *dp = &ab->dp;
|
||||
struct dp_reo_cmd *cmd, *tmp;
|
||||
struct dp_reo_cache_flush_elem *cmd_cache, *tmp_cache;
|
||||
+ struct dp_rx_tid *rx_tid;
|
||||
|
||||
spin_lock_bh(&dp->reo_cmd_lock);
|
||||
list_for_each_entry_safe(cmd, tmp, &dp->reo_cmd_list, list) {
|
||||
list_del(&cmd->list);
|
||||
- dma_unmap_single(ab->dev, cmd->data.paddr,
|
||||
- cmd->data.size, DMA_BIDIRECTIONAL);
|
||||
- kfree(cmd->data.vaddr);
|
||||
+ rx_tid = &cmd->data;
|
||||
+ if (rx_tid->vaddr) {
|
||||
+ dma_unmap_single(ab->dev, rx_tid->paddr,
|
||||
+ rx_tid->size, DMA_BIDIRECTIONAL);
|
||||
+ kfree(rx_tid->vaddr);
|
||||
+ rx_tid->vaddr = NULL;
|
||||
+ }
|
||||
kfree(cmd);
|
||||
}
|
||||
|
||||
@@ -682,9 +687,13 @@ void ath11k_dp_reo_cmd_list_cleanup(stru
|
||||
&dp->reo_cmd_cache_flush_list, list) {
|
||||
list_del(&cmd_cache->list);
|
||||
dp->reo_cmd_cache_flush_count--;
|
||||
- dma_unmap_single(ab->dev, cmd_cache->data.paddr,
|
||||
- cmd_cache->data.size, DMA_BIDIRECTIONAL);
|
||||
- kfree(cmd_cache->data.vaddr);
|
||||
+ rx_tid = &cmd_cache->data;
|
||||
+ if (rx_tid->vaddr) {
|
||||
+ dma_unmap_single(ab->dev, rx_tid->paddr,
|
||||
+ rx_tid->size, DMA_BIDIRECTIONAL);
|
||||
+ kfree(rx_tid->vaddr);
|
||||
+ rx_tid->vaddr = NULL;
|
||||
+ }
|
||||
kfree(cmd_cache);
|
||||
}
|
||||
spin_unlock_bh(&dp->reo_cmd_lock);
|
||||
@@ -698,10 +707,12 @@ static void ath11k_dp_reo_cmd_free(struc
|
||||
if (status != HAL_REO_CMD_SUCCESS)
|
||||
ath11k_warn(dp->ab, "failed to flush rx tid hw desc, tid %d status %d\n",
|
||||
rx_tid->tid, status);
|
||||
-
|
||||
- dma_unmap_single(dp->ab->dev, rx_tid->paddr, rx_tid->size,
|
||||
- DMA_BIDIRECTIONAL);
|
||||
- kfree(rx_tid->vaddr);
|
||||
+ if (rx_tid->vaddr) {
|
||||
+ dma_unmap_single(dp->ab->dev, rx_tid->paddr, rx_tid->size,
|
||||
+ DMA_BIDIRECTIONAL);
|
||||
+ kfree(rx_tid->vaddr);
|
||||
+ rx_tid->vaddr = NULL;
|
||||
+ }
|
||||
}
|
||||
|
||||
static void ath11k_dp_reo_cache_flush(struct ath11k_base *ab,
|
||||
@@ -740,6 +751,7 @@ static void ath11k_dp_reo_cache_flush(st
|
||||
dma_unmap_single(ab->dev, rx_tid->paddr, rx_tid->size,
|
||||
DMA_BIDIRECTIONAL);
|
||||
kfree(rx_tid->vaddr);
|
||||
+ rx_tid->vaddr = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -792,6 +804,7 @@ free_desc:
|
||||
dma_unmap_single(ab->dev, rx_tid->paddr, rx_tid->size,
|
||||
DMA_BIDIRECTIONAL);
|
||||
kfree(rx_tid->vaddr);
|
||||
+ rx_tid->vaddr = NULL;
|
||||
}
|
||||
|
||||
void ath11k_peer_rx_tid_delete(struct ath11k *ar,
|
||||
@@ -804,6 +817,8 @@ void ath11k_peer_rx_tid_delete(struct at
|
||||
if (!rx_tid->active)
|
||||
return;
|
||||
|
||||
+ rx_tid->active = false;
|
||||
+
|
||||
cmd.flag = HAL_REO_CMD_FLG_NEED_STATUS;
|
||||
cmd.addr_lo = lower_32_bits(rx_tid->paddr);
|
||||
cmd.addr_hi = upper_32_bits(rx_tid->paddr);
|
||||
@@ -818,9 +833,11 @@ void ath11k_peer_rx_tid_delete(struct at
|
||||
dma_unmap_single(ar->ab->dev, rx_tid->paddr, rx_tid->size,
|
||||
DMA_BIDIRECTIONAL);
|
||||
kfree(rx_tid->vaddr);
|
||||
+ rx_tid->vaddr = NULL;
|
||||
}
|
||||
|
||||
- rx_tid->active = false;
|
||||
+ rx_tid->paddr = 0;
|
||||
+ rx_tid->size = 0;
|
||||
}
|
||||
|
||||
static int ath11k_dp_rx_link_desc_return(struct ath11k_base *ab,
|
||||
@@ -967,6 +984,7 @@ static void ath11k_dp_rx_tid_mem_free(st
|
||||
dma_unmap_single(ab->dev, rx_tid->paddr, rx_tid->size,
|
||||
DMA_BIDIRECTIONAL);
|
||||
kfree(rx_tid->vaddr);
|
||||
+ rx_tid->vaddr = NULL;
|
||||
|
||||
rx_tid->active = false;
|
||||
|
||||
@@ -1067,7 +1085,8 @@ int ath11k_peer_rx_tid_setup(struct ath1
|
||||
return ret;
|
||||
|
||||
err_mem_free:
|
||||
- kfree(vaddr);
|
||||
+ kfree(rx_tid->vaddr);
|
||||
+ rx_tid->vaddr = NULL;
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
From a8ae833657a45746debde85c38bb7f070d344026 Mon Sep 17 00:00:00 2001
|
||||
From: Harshitha Prem <quic_hprem@quicinc.com>
|
||||
Date: Mon, 17 Apr 2023 13:35:01 +0300
|
||||
Subject: [PATCH] wifi: ath11k: Prevent REO cmd failures
|
||||
|
||||
Prevent REO cmd failures causing double free by increasing REO cmd
|
||||
ring size and moving REO status ring mask to IRQ group 3 from group
|
||||
0 to separate from tx completion ring on IRQ group 0 which may delay
|
||||
reo status processing.
|
||||
|
||||
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
||||
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
||||
|
||||
Signed-off-by: Sathishkumar Muruganandam <quic_murugana@quicinc.com>
|
||||
Signed-off-by: Harshitha Prem <quic_hprem@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230403182420.23375-3-quic_hprem@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/dp.h | 2 +-
|
||||
drivers/net/wireless/ath/ath11k/hw.c | 1 +
|
||||
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp.h
|
||||
@@ -214,7 +214,7 @@ struct ath11k_pdev_dp {
|
||||
#define DP_REO_REINJECT_RING_SIZE 32
|
||||
#define DP_RX_RELEASE_RING_SIZE 1024
|
||||
#define DP_REO_EXCEPTION_RING_SIZE 128
|
||||
-#define DP_REO_CMD_RING_SIZE 128
|
||||
+#define DP_REO_CMD_RING_SIZE 256
|
||||
#define DP_REO_STATUS_RING_SIZE 2048
|
||||
#define DP_RXDMA_BUF_RING_SIZE 4096
|
||||
#define DP_RXDMA_REFILL_RING_SIZE 2048
|
||||
--- a/drivers/net/wireless/ath/ath11k/hw.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/hw.c
|
||||
@@ -1233,6 +1233,7 @@ const struct ath11k_hw_ring_mask ath11k_
|
||||
ATH11K_RX_WBM_REL_RING_MASK_0,
|
||||
},
|
||||
.reo_status = {
|
||||
+ 0, 0, 0,
|
||||
ATH11K_REO_STATUS_RING_MASK_0,
|
||||
},
|
||||
.rxdma2host = {
|
||||
@ -0,0 +1,74 @@
|
||||
From 20487cc3ff36bbfa9505f0a078ba98f09abfc717 Mon Sep 17 00:00:00 2001
|
||||
From: Harshitha Prem <quic_hprem@quicinc.com>
|
||||
Date: Mon, 17 Apr 2023 13:35:01 +0300
|
||||
Subject: [PATCH] wifi: ath11k: add peer mac information in failure cases
|
||||
|
||||
During reo command failure, the peer mac detail for which the reo
|
||||
command was not successful is unknown. Hence, to improve the
|
||||
debuggability, add the peer mac information in the failure cases
|
||||
which would be useful during multi client cases.
|
||||
|
||||
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
||||
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
||||
|
||||
Signed-off-by: Sathishkumar Muruganandam <quic_murugana@quicinc.com>
|
||||
Signed-off-by: Harshitha Prem <quic_hprem@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230403182420.23375-4-quic_hprem@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/dp_rx.c | 16 ++++++++++------
|
||||
1 file changed, 10 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
@@ -1009,7 +1009,8 @@ int ath11k_peer_rx_tid_setup(struct ath1
|
||||
|
||||
peer = ath11k_peer_find(ab, vdev_id, peer_mac);
|
||||
if (!peer) {
|
||||
- ath11k_warn(ab, "failed to find the peer to set up rx tid\n");
|
||||
+ ath11k_warn(ab, "failed to find the peer %pM to set up rx tid\n",
|
||||
+ peer_mac);
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
return -ENOENT;
|
||||
}
|
||||
@@ -1022,7 +1023,8 @@ int ath11k_peer_rx_tid_setup(struct ath1
|
||||
ba_win_sz, ssn, true);
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
if (ret) {
|
||||
- ath11k_warn(ab, "failed to update reo for rx tid %d\n", tid);
|
||||
+ ath11k_warn(ab, "failed to update reo for peer %pM rx tid %d\n: %d",
|
||||
+ peer_mac, tid, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1030,8 +1032,8 @@ int ath11k_peer_rx_tid_setup(struct ath1
|
||||
peer_mac, paddr,
|
||||
tid, 1, ba_win_sz);
|
||||
if (ret)
|
||||
- ath11k_warn(ab, "failed to send wmi command to update rx reorder queue, tid :%d (%d)\n",
|
||||
- tid, ret);
|
||||
+ ath11k_warn(ab, "failed to send wmi rx reorder queue for peer %pM tid %d: %d\n",
|
||||
+ peer_mac, tid, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1064,6 +1066,8 @@ int ath11k_peer_rx_tid_setup(struct ath1
|
||||
ret = dma_mapping_error(ab->dev, paddr);
|
||||
if (ret) {
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
+ ath11k_warn(ab, "failed to setup dma map for peer %pM rx tid %d: %d\n",
|
||||
+ peer_mac, tid, ret);
|
||||
goto err_mem_free;
|
||||
}
|
||||
|
||||
@@ -1077,8 +1081,8 @@ int ath11k_peer_rx_tid_setup(struct ath1
|
||||
ret = ath11k_wmi_peer_rx_reorder_queue_setup(ar, vdev_id, peer_mac,
|
||||
paddr, tid, 1, ba_win_sz);
|
||||
if (ret) {
|
||||
- ath11k_warn(ar->ab, "failed to setup rx reorder queue, tid :%d (%d)\n",
|
||||
- tid, ret);
|
||||
+ ath11k_warn(ar->ab, "failed to setup rx reorder queue for peer %pM tid %d: %d\n",
|
||||
+ peer_mac, tid, ret);
|
||||
ath11k_dp_rx_tid_mem_free(ab, peer_mac, vdev_id, tid);
|
||||
}
|
||||
|
||||
@ -0,0 +1,119 @@
|
||||
From 6257c702264c44d74c6b71f0c62a7665da2dc356 Mon Sep 17 00:00:00 2001
|
||||
From: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
|
||||
Date: Mon, 17 Apr 2023 13:35:02 +0300
|
||||
Subject: [PATCH] wifi: ath11k: fix tx status reporting in encap offload mode
|
||||
|
||||
ieee80211_tx_status() treats packets in 802.11 frame format and
|
||||
tries to extract sta address from packet header. When tx encap
|
||||
offload is enabled, this becomes invalid operation. Hence, switch
|
||||
to using ieee80211_tx_status_ext() after filling in station
|
||||
address for handling both 802.11 and 802.3 frames.
|
||||
|
||||
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
||||
|
||||
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230403195738.25367-2-quic_pradeepc@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/dp.h | 4 +++
|
||||
drivers/net/wireless/ath/ath11k/dp_tx.c | 33 ++++++++++++++++++++++++-
|
||||
drivers/net/wireless/ath/ath11k/dp_tx.h | 1 +
|
||||
3 files changed, 37 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp.h
|
||||
@@ -303,12 +303,16 @@ struct ath11k_dp {
|
||||
|
||||
#define HTT_TX_WBM_COMP_STATUS_OFFSET 8
|
||||
|
||||
+#define HTT_INVALID_PEER_ID 0xffff
|
||||
+
|
||||
/* HTT tx completion is overlaid in wbm_release_ring */
|
||||
#define HTT_TX_WBM_COMP_INFO0_STATUS GENMASK(12, 9)
|
||||
#define HTT_TX_WBM_COMP_INFO0_REINJECT_REASON GENMASK(16, 13)
|
||||
#define HTT_TX_WBM_COMP_INFO0_REINJECT_REASON GENMASK(16, 13)
|
||||
|
||||
#define HTT_TX_WBM_COMP_INFO1_ACK_RSSI GENMASK(31, 24)
|
||||
+#define HTT_TX_WBM_COMP_INFO2_SW_PEER_ID GENMASK(15, 0)
|
||||
+#define HTT_TX_WBM_COMP_INFO2_VALID BIT(21)
|
||||
|
||||
struct htt_tx_wbm_completion {
|
||||
u32 info0;
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -316,10 +316,12 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
struct dp_tx_ring *tx_ring,
|
||||
struct ath11k_dp_htt_wbm_tx_status *ts)
|
||||
{
|
||||
+ struct ieee80211_tx_status status = { 0 };
|
||||
struct sk_buff *msdu;
|
||||
struct ieee80211_tx_info *info;
|
||||
struct ath11k_skb_cb *skb_cb;
|
||||
struct ath11k *ar;
|
||||
+ struct ath11k_peer *peer;
|
||||
|
||||
spin_lock(&tx_ring->tx_idr_lock);
|
||||
msdu = idr_remove(&tx_ring->txbuf_idr, ts->msdu_id);
|
||||
@@ -341,6 +343,11 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
|
||||
dma_unmap_single(ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
|
||||
|
||||
+ if (!skb_cb->vif) {
|
||||
+ dev_kfree_skb_any(msdu);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
memset(&info->status, 0, sizeof(info->status));
|
||||
|
||||
if (ts->acked) {
|
||||
@@ -355,7 +362,23 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
}
|
||||
}
|
||||
|
||||
- ieee80211_tx_status(ar->hw, msdu);
|
||||
+ spin_lock_bh(&ab->base_lock);
|
||||
+ peer = ath11k_peer_find_by_id(ab, ts->peer_id);
|
||||
+ if (!peer || !peer->sta) {
|
||||
+ ath11k_dbg(ab, ATH11K_DBG_DATA,
|
||||
+ "dp_tx: failed to find the peer with peer_id %d\n",
|
||||
+ ts->peer_id);
|
||||
+ spin_unlock_bh(&ab->base_lock);
|
||||
+ dev_kfree_skb_any(msdu);
|
||||
+ return;
|
||||
+ }
|
||||
+ spin_unlock_bh(&ab->base_lock);
|
||||
+
|
||||
+ status.sta = peer->sta;
|
||||
+ status.info = info;
|
||||
+ status.skb = msdu;
|
||||
+
|
||||
+ ieee80211_tx_status_ext(ar->hw, &status);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -379,7 +402,15 @@ ath11k_dp_tx_process_htt_tx_complete(str
|
||||
ts.msdu_id = msdu_id;
|
||||
ts.ack_rssi = FIELD_GET(HTT_TX_WBM_COMP_INFO1_ACK_RSSI,
|
||||
status_desc->info1);
|
||||
+
|
||||
+ if (FIELD_GET(HTT_TX_WBM_COMP_INFO2_VALID, status_desc->info2))
|
||||
+ ts.peer_id = FIELD_GET(HTT_TX_WBM_COMP_INFO2_SW_PEER_ID,
|
||||
+ status_desc->info2);
|
||||
+ else
|
||||
+ ts.peer_id = HTT_INVALID_PEER_ID;
|
||||
+
|
||||
ath11k_dp_tx_htt_tx_complete_buf(ab, tx_ring, &ts);
|
||||
+
|
||||
break;
|
||||
case HAL_WBM_REL_HTT_TX_COMP_STATUS_REINJ:
|
||||
case HAL_WBM_REL_HTT_TX_COMP_STATUS_INSPECT:
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.h
|
||||
@@ -13,6 +13,7 @@ struct ath11k_dp_htt_wbm_tx_status {
|
||||
u32 msdu_id;
|
||||
bool acked;
|
||||
int ack_rssi;
|
||||
+ u16 peer_id;
|
||||
};
|
||||
|
||||
void ath11k_dp_tx_update_txcompl(struct ath11k *ar, struct hal_tx_status *ts);
|
||||
@ -0,0 +1,49 @@
|
||||
From 2f0c9ac8362da09c80f1cd422ef7fd6fa9b252b9 Mon Sep 17 00:00:00 2001
|
||||
From: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
|
||||
Date: Mon, 17 Apr 2023 13:35:02 +0300
|
||||
Subject: [PATCH] wifi: ath11k: Fix incorrect update of radiotap fields
|
||||
|
||||
Fix incorrect update of ppdu stats causing incorrect radiotap
|
||||
fields.
|
||||
|
||||
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
||||
|
||||
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230403195738.25367-3-quic_pradeepc@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/hal_rx.c | 4 ++--
|
||||
drivers/net/wireless/ath/ath11k/hal_rx.h | 2 +-
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/hal_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/hal_rx.c
|
||||
@@ -1029,7 +1029,7 @@ ath11k_hal_rx_parse_mon_status_tlv(struc
|
||||
info1 = __le32_to_cpu(vht_sig->info1);
|
||||
|
||||
ppdu_info->ldpc = FIELD_GET(HAL_RX_VHT_SIG_A_INFO_INFO1_SU_MU_CODING,
|
||||
- info0);
|
||||
+ info1);
|
||||
ppdu_info->mcs = FIELD_GET(HAL_RX_VHT_SIG_A_INFO_INFO1_MCS,
|
||||
info1);
|
||||
gi_setting = FIELD_GET(HAL_RX_VHT_SIG_A_INFO_INFO1_GI_SETTING,
|
||||
@@ -1452,7 +1452,7 @@ ath11k_hal_rx_parse_mon_status_tlv(struc
|
||||
* PHYRX_OTHER_RECEIVE_INFO TLV.
|
||||
*/
|
||||
ppdu_info->rssi_comb =
|
||||
- FIELD_GET(HAL_RX_PHYRX_RSSI_LEGACY_INFO_INFO1_RSSI_COMB,
|
||||
+ FIELD_GET(HAL_RX_PHYRX_RSSI_LEGACY_INFO_INFO0_RSSI_COMB,
|
||||
__le32_to_cpu(rssi->info0));
|
||||
|
||||
if (db2dbm) {
|
||||
--- a/drivers/net/wireless/ath/ath11k/hal_rx.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/hal_rx.h
|
||||
@@ -385,7 +385,7 @@ struct hal_rx_he_sig_b2_ofdma_info {
|
||||
__le32 info0;
|
||||
} __packed;
|
||||
|
||||
-#define HAL_RX_PHYRX_RSSI_LEGACY_INFO_INFO1_RSSI_COMB GENMASK(15, 8)
|
||||
+#define HAL_RX_PHYRX_RSSI_LEGACY_INFO_INFO0_RSSI_COMB GENMASK(15, 8)
|
||||
|
||||
#define HAL_RX_PHYRX_RSSI_PREAMBLE_PRI20 GENMASK(7, 0)
|
||||
|
||||
@ -0,0 +1,70 @@
|
||||
From f9fff67d2d7ca6fa8066132003a3deef654c55b1 Mon Sep 17 00:00:00 2001
|
||||
From: Nagarajan Maran <quic_nmaran@quicinc.com>
|
||||
Date: Mon, 17 Apr 2023 13:35:02 +0300
|
||||
Subject: [PATCH] wifi: ath11k: Fix SKB corruption in REO destination ring
|
||||
|
||||
While running traffics for a long time, randomly an RX descriptor
|
||||
filled with value "0" from REO destination ring is received.
|
||||
This descriptor which is invalid causes the wrong SKB (SKB stored in
|
||||
the IDR lookup with buffer id "0") to be fetched which in turn
|
||||
causes SKB memory corruption issue and the same leads to crash
|
||||
after some time.
|
||||
|
||||
Changed the start id for idr allocation to "1" and the buffer id "0"
|
||||
is reserved for error validation. Introduced Sanity check to validate
|
||||
the descriptor, before processing the SKB.
|
||||
|
||||
Crash Signature :
|
||||
|
||||
Unable to handle kernel paging request at virtual address 3f004900
|
||||
PC points to "b15_dma_inv_range+0x30/0x50"
|
||||
LR points to "dma_cache_maint_page+0x8c/0x128".
|
||||
The Backtrace obtained is as follows:
|
||||
[<8031716c>] (b15_dma_inv_range) from [<80313a4c>] (dma_cache_maint_page+0x8c/0x128)
|
||||
[<80313a4c>] (dma_cache_maint_page) from [<80313b90>] (__dma_page_dev_to_cpu+0x28/0xcc)
|
||||
[<80313b90>] (__dma_page_dev_to_cpu) from [<7fb5dd68>] (ath11k_dp_process_rx+0x1e8/0x4a4 [ath11k])
|
||||
[<7fb5dd68>] (ath11k_dp_process_rx [ath11k]) from [<7fb53c20>] (ath11k_dp_service_srng+0xb0/0x2ac [ath11k])
|
||||
[<7fb53c20>] (ath11k_dp_service_srng [ath11k]) from [<7f67bba4>] (ath11k_pci_ext_grp_napi_poll+0x1c/0x78 [ath11k_pci])
|
||||
[<7f67bba4>] (ath11k_pci_ext_grp_napi_poll [ath11k_pci]) from [<807d5cf4>] (__napi_poll+0x28/0xb8)
|
||||
[<807d5cf4>] (__napi_poll) from [<807d5f28>] (net_rx_action+0xf0/0x280)
|
||||
[<807d5f28>] (net_rx_action) from [<80302148>] (__do_softirq+0xd0/0x280)
|
||||
[<80302148>] (__do_softirq) from [<80320408>] (irq_exit+0x74/0xd4)
|
||||
[<80320408>] (irq_exit) from [<803638a4>] (__handle_domain_irq+0x90/0xb4)
|
||||
[<803638a4>] (__handle_domain_irq) from [<805bedec>] (gic_handle_irq+0x58/0x90)
|
||||
[<805bedec>] (gic_handle_irq) from [<80301a78>] (__irq_svc+0x58/0x8c)
|
||||
|
||||
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
||||
|
||||
Signed-off-by: Nagarajan Maran <quic_nmaran@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230403191533.28114-1-quic_nmaran@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/dp_rx.c | 9 ++++++---
|
||||
1 file changed, 6 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
@@ -389,10 +389,10 @@ int ath11k_dp_rxbufs_replenish(struct at
|
||||
goto fail_free_skb;
|
||||
|
||||
spin_lock_bh(&rx_ring->idr_lock);
|
||||
- buf_id = idr_alloc(&rx_ring->bufs_idr, skb, 0,
|
||||
- rx_ring->bufs_max * 3, GFP_ATOMIC);
|
||||
+ buf_id = idr_alloc(&rx_ring->bufs_idr, skb, 1,
|
||||
+ (rx_ring->bufs_max * 3) + 1, GFP_ATOMIC);
|
||||
spin_unlock_bh(&rx_ring->idr_lock);
|
||||
- if (buf_id < 0)
|
||||
+ if (buf_id <= 0)
|
||||
goto fail_dma_unmap;
|
||||
|
||||
desc = ath11k_hal_srng_src_get_next_entry(ab, srng);
|
||||
@@ -2665,6 +2665,9 @@ try_again:
|
||||
cookie);
|
||||
mac_id = FIELD_GET(DP_RXDMA_BUF_COOKIE_PDEV_ID, cookie);
|
||||
|
||||
+ if (unlikely(buf_id == 0))
|
||||
+ continue;
|
||||
+
|
||||
ar = ab->pdevs[mac_id].ar;
|
||||
rx_ring = &ar->dp.rx_refill_buf_ring;
|
||||
spin_lock_bh(&rx_ring->idr_lock);
|
||||
@ -0,0 +1,49 @@
|
||||
From b100722a777f6455d913666a376f81342b2cb995 Mon Sep 17 00:00:00 2001
|
||||
From: Muna Sinada <quic_msinada@quicinc.com>
|
||||
Date: Mon, 17 Apr 2023 13:22:27 -0700
|
||||
Subject: [PATCH] wifi: ath11k: Remove disabling of 80+80 and 160 MHz
|
||||
|
||||
This is a regression fix for 80+80 and 160 MHz support bits being
|
||||
cleared, therefore not adverised. Remove disable of 80+80 and 160 MHz
|
||||
capability flags and assign valid center frequency 2 similar to
|
||||
VHT80_80.
|
||||
|
||||
Fixes: 38dfe775d0ab ("wifi: ath11k: push MU-MIMO params from hostapd to hardware")
|
||||
Reported-by: Robert Marko <robert.marko@sartura.hr>
|
||||
Tested-by: Robert Marko <robert.marko@sartura.hr> # IPQ8074 WLAN.HK.2.9.0.1-01385-QCAHKSWPL_SILICONZ-1
|
||||
Link: https://bugzilla.kernel.org/show_bug.cgi?id=217299
|
||||
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
|
||||
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
|
||||
Signed-off-by: Muna Sinada <quic_msinada@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/1681762947-13882-1-git-send-email-quic_msinada@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/mac.c | 4 ----
|
||||
drivers/net/wireless/ath/ath11k/wmi.c | 3 ++-
|
||||
2 files changed, 2 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -5585,10 +5585,6 @@ static int ath11k_mac_copy_he_cap(struct
|
||||
|
||||
he_cap_elem->mac_cap_info[1] &=
|
||||
IEEE80211_HE_MAC_CAP1_TF_MAC_PAD_DUR_MASK;
|
||||
- he_cap_elem->phy_cap_info[0] &=
|
||||
- ~IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_160MHZ_IN_5G;
|
||||
- he_cap_elem->phy_cap_info[0] &=
|
||||
- ~IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_80PLUS80_MHZ_IN_5G;
|
||||
|
||||
he_cap_elem->phy_cap_info[5] &=
|
||||
~IEEE80211_HE_PHY_CAP5_BEAMFORMEE_NUM_SND_DIM_UNDER_80MHZ_MASK;
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
@@ -871,7 +871,8 @@ static void ath11k_wmi_put_wmi_channel(s
|
||||
|
||||
chan->band_center_freq2 = arg->channel.band_center_freq1;
|
||||
|
||||
- } else if (arg->channel.mode == MODE_11AC_VHT80_80) {
|
||||
+ } else if ((arg->channel.mode == MODE_11AC_VHT80_80) ||
|
||||
+ (arg->channel.mode == MODE_11AX_HE80_80)) {
|
||||
chan->band_center_freq2 = arg->channel.band_center_freq2;
|
||||
} else {
|
||||
chan->band_center_freq2 = 0;
|
||||
@ -0,0 +1,61 @@
|
||||
From e2ceb1de2f83aafd8003f0b72dfd4b7441e97d14 Mon Sep 17 00:00:00 2001
|
||||
From: Maxime Bizon <mbizon@freebox.fr>
|
||||
Date: Fri, 21 Apr 2023 16:54:45 +0200
|
||||
Subject: [PATCH] wifi: ath11k: fix registration of 6Ghz-only phy without the
|
||||
full channel range
|
||||
|
||||
Because of what seems to be a typo, a 6Ghz-only phy for which the BDF
|
||||
does not allow the 7115Mhz channel will fail to register:
|
||||
|
||||
WARNING: CPU: 2 PID: 106 at net/wireless/core.c:907 wiphy_register+0x914/0x954
|
||||
Modules linked in: ath11k_pci sbsa_gwdt
|
||||
CPU: 2 PID: 106 Comm: kworker/u8:5 Not tainted 6.3.0-rc7-next-20230418-00549-g1e096a17625a-dirty #9
|
||||
Hardware name: Freebox V7R Board (DT)
|
||||
Workqueue: ath11k_qmi_driver_event ath11k_qmi_driver_event_work
|
||||
pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
|
||||
pc : wiphy_register+0x914/0x954
|
||||
lr : ieee80211_register_hw+0x67c/0xc10
|
||||
sp : ffffff800b123aa0
|
||||
x29: ffffff800b123aa0 x28: 0000000000000000 x27: 0000000000000000
|
||||
x26: 0000000000000000 x25: 0000000000000006 x24: ffffffc008d51418
|
||||
x23: ffffffc008cb0838 x22: ffffff80176c2460 x21: 0000000000000168
|
||||
x20: ffffff80176c0000 x19: ffffff80176c03e0 x18: 0000000000000014
|
||||
x17: 00000000cbef338c x16: 00000000d2a26f21 x15: 00000000ad6bb85f
|
||||
x14: 0000000000000020 x13: 0000000000000020 x12: 00000000ffffffbd
|
||||
x11: 0000000000000208 x10: 00000000fffffdf7 x9 : ffffffc009394718
|
||||
x8 : ffffff80176c0528 x7 : 000000007fffffff x6 : 0000000000000006
|
||||
x5 : 0000000000000005 x4 : ffffff800b304284 x3 : ffffff800b304284
|
||||
x2 : ffffff800b304d98 x1 : 0000000000000000 x0 : 0000000000000000
|
||||
Call trace:
|
||||
wiphy_register+0x914/0x954
|
||||
ieee80211_register_hw+0x67c/0xc10
|
||||
ath11k_mac_register+0x7c4/0xe10
|
||||
ath11k_core_qmi_firmware_ready+0x1f4/0x570
|
||||
ath11k_qmi_driver_event_work+0x198/0x590
|
||||
process_one_work+0x1b8/0x328
|
||||
worker_thread+0x6c/0x414
|
||||
kthread+0x100/0x104
|
||||
ret_from_fork+0x10/0x20
|
||||
---[ end trace 0000000000000000 ]---
|
||||
ath11k_pci 0002:01:00.0: ieee80211 registration failed: -22
|
||||
ath11k_pci 0002:01:00.0: failed register the radio with mac80211: -22
|
||||
ath11k_pci 0002:01:00.0: failed to create pdev core: -22
|
||||
|
||||
Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230421145445.2612280-1-mbizon@freebox.fr
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/mac.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -8892,7 +8892,7 @@ static int ath11k_mac_setup_channels_rat
|
||||
}
|
||||
|
||||
if (supported_bands & WMI_HOST_WLAN_5G_CAP) {
|
||||
- if (reg_cap->high_5ghz_chan >= ATH11K_MAX_6G_FREQ) {
|
||||
+ if (reg_cap->high_5ghz_chan >= ATH11K_MIN_6G_FREQ) {
|
||||
channels = kmemdup(ath11k_6ghz_channels,
|
||||
sizeof(ath11k_6ghz_channels), GFP_KERNEL);
|
||||
if (!channels) {
|
||||
@ -1,130 +0,0 @@
|
||||
From patchwork Mon Apr 17 20:22:27 2023
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Patchwork-Submitter: Muna Sinada <quic_msinada@quicinc.com>
|
||||
X-Patchwork-Id: 13214540
|
||||
X-Patchwork-Delegate: kvalo@adurom.com
|
||||
Return-Path: <linux-wireless-owner@vger.kernel.org>
|
||||
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
|
||||
aws-us-west-2-korg-lkml-1.web.codeaurora.org
|
||||
Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
|
||||
by smtp.lore.kernel.org (Postfix) with ESMTP id 8C359C77B76
|
||||
for <linux-wireless@archiver.kernel.org>;
|
||||
Mon, 17 Apr 2023 20:26:40 +0000 (UTC)
|
||||
Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
|
||||
id S230070AbjDQU0j (ORCPT
|
||||
<rfc822;linux-wireless@archiver.kernel.org>);
|
||||
Mon, 17 Apr 2023 16:26:39 -0400
|
||||
Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53306 "EHLO
|
||||
lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
|
||||
with ESMTP id S229914AbjDQU0h (ORCPT
|
||||
<rfc822;linux-wireless@vger.kernel.org>);
|
||||
Mon, 17 Apr 2023 16:26:37 -0400
|
||||
Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com
|
||||
[205.220.180.131])
|
||||
by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 67CE24C33
|
||||
for <linux-wireless@vger.kernel.org>;
|
||||
Mon, 17 Apr 2023 13:26:24 -0700 (PDT)
|
||||
Received: from pps.filterd (m0279873.ppops.net [127.0.0.1])
|
||||
by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id
|
||||
33HIsf5q010173;
|
||||
Mon, 17 Apr 2023 20:22:47 GMT
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com;
|
||||
h=from : to : cc :
|
||||
subject : date : message-id : mime-version : content-type; s=qcppdkim1;
|
||||
bh=FGtbeAR6pG0KxyEKVLIRzkq1RXlKfaVfRT1iixzMcII=;
|
||||
b=jSdZBeFj4RAdCiUPrL/F9n+ufnpxT1pJNfZuA0tfEnUf54SCGUuHT5LtRdojYVh31YSS
|
||||
aAGDRFvl7tIKqq/c6h4tm7SDdlhWF+MU3sH1YJNrwDeMAUZD+RnviJjo+GfgnEtp9+z7
|
||||
PA75vGkpKiuMh6M8QFYB+/XxrJmx/XJBNESfMdAjBuMXnQf4S2yJ/IMwSxPkYKMU3lC6
|
||||
DNnUAcgC/8wawYt8T1d8gKWq5CgWls4i1quveZghsbGUuL01i7SRXdKVianDJJsHEa0G
|
||||
/brUp6LMMeJUgEI8wBfFAtcknzN0ADMVEqsJr+AHvQXnb1iHZyafl6BAeupXNS+Yi+fJ sw==
|
||||
Received: from nalasppmta05.qualcomm.com (Global_NAT1.qualcomm.com
|
||||
[129.46.96.20])
|
||||
by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3q171gh1hb-1
|
||||
(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256
|
||||
verify=NOT);
|
||||
Mon, 17 Apr 2023 20:22:47 +0000
|
||||
Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com
|
||||
[10.47.209.196])
|
||||
by NALASPPMTA05.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id
|
||||
33HKMjHs007640
|
||||
(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256
|
||||
verify=NOT);
|
||||
Mon, 17 Apr 2023 20:22:46 GMT
|
||||
Received: from msinada-linux.qualcomm.com (10.80.80.8) by
|
||||
nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server
|
||||
(version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
|
||||
15.2.986.42; Mon, 17 Apr 2023 13:22:44 -0700
|
||||
From: Muna Sinada <quic_msinada@quicinc.com>
|
||||
To: <ath11k@lists.infradead.org>
|
||||
CC: <linux-wireless@vger.kernel.org>,
|
||||
Muna Sinada <quic_msinada@quicinc.com>,
|
||||
P Praneesh <quic_ppranees@quicinc.com>
|
||||
Subject: [PATCH] wifi: ath11k: Remove disabling of 80+80 and 160 MHz
|
||||
Date: Mon, 17 Apr 2023 13:22:27 -0700
|
||||
Message-ID: <1681762947-13882-1-git-send-email-quic_msinada@quicinc.com>
|
||||
X-Mailer: git-send-email 2.7.4
|
||||
MIME-Version: 1.0
|
||||
X-Originating-IP: [10.80.80.8]
|
||||
X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To
|
||||
nalasex01a.na.qualcomm.com (10.47.209.196)
|
||||
X-QCInternal: smtphost
|
||||
X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800
|
||||
signatures=585085
|
||||
X-Proofpoint-GUID: wqGG1zw0KpXNYk_yFYb16HwLWt9V-6o4
|
||||
X-Proofpoint-ORIG-GUID: wqGG1zw0KpXNYk_yFYb16HwLWt9V-6o4
|
||||
X-Proofpoint-Virus-Version: vendor=baseguard
|
||||
engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22
|
||||
definitions=2023-04-17_13,2023-04-17_01,2023-02-09_01
|
||||
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
|
||||
priorityscore=1501 mlxscore=0
|
||||
mlxlogscore=796 suspectscore=0 impostorscore=0 bulkscore=0 spamscore=0
|
||||
clxscore=1015 phishscore=0 lowpriorityscore=0 malwarescore=0 adultscore=0
|
||||
classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000
|
||||
definitions=main-2304170181
|
||||
Precedence: bulk
|
||||
List-ID: <linux-wireless.vger.kernel.org>
|
||||
X-Mailing-List: linux-wireless@vger.kernel.org
|
||||
|
||||
This is a regression fix for 80+80 and 160 MHz support bits being
|
||||
cleared, therefore not adverised. Remove disable of 80+80 and 160 MHz
|
||||
capability flags and assign valid center frequency 2 similar to
|
||||
VHT80_80.
|
||||
|
||||
Fixes: 38dfe775d0ab ("wifi: ath11k: push MU-MIMO params from hostapd to hardware")
|
||||
Reported-by: Robert Marko <robert.marko@sartura.hr>
|
||||
Link: https://bugzilla.kernel.org/show_bug.cgi?id=217299
|
||||
Co-developed-by: P Praneesh <quic_ppranees@quicinc.com>
|
||||
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
|
||||
Signed-off-by: Muna Sinada <quic_msinada@quicinc.com>
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/mac.c | 4 ----
|
||||
drivers/net/wireless/ath/ath11k/wmi.c | 3 ++-
|
||||
2 files changed, 2 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -5585,10 +5585,6 @@ static int ath11k_mac_copy_he_cap(struct
|
||||
|
||||
he_cap_elem->mac_cap_info[1] &=
|
||||
IEEE80211_HE_MAC_CAP1_TF_MAC_PAD_DUR_MASK;
|
||||
- he_cap_elem->phy_cap_info[0] &=
|
||||
- ~IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_160MHZ_IN_5G;
|
||||
- he_cap_elem->phy_cap_info[0] &=
|
||||
- ~IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_80PLUS80_MHZ_IN_5G;
|
||||
|
||||
he_cap_elem->phy_cap_info[5] &=
|
||||
~IEEE80211_HE_PHY_CAP5_BEAMFORMEE_NUM_SND_DIM_UNDER_80MHZ_MASK;
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
@@ -871,7 +871,8 @@ static void ath11k_wmi_put_wmi_channel(s
|
||||
|
||||
chan->band_center_freq2 = arg->channel.band_center_freq1;
|
||||
|
||||
- } else if (arg->channel.mode == MODE_11AC_VHT80_80) {
|
||||
+ } else if ((arg->channel.mode == MODE_11AC_VHT80_80) ||
|
||||
+ (arg->channel.mode == MODE_11AX_HE80_80)) {
|
||||
chan->band_center_freq2 = arg->channel.band_center_freq2;
|
||||
} else {
|
||||
chan->band_center_freq2 = 0;
|
||||
@ -15,9 +15,9 @@ PKG_LICENSE_FILES:=
|
||||
|
||||
PKG_SOURCE_URL:=https://github.com/kaloz/mwlwifi
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2023-03-11
|
||||
PKG_SOURCE_VERSION:=c916ac13376d1b0801f3f787277fa47ce6b694eb
|
||||
PKG_MIRROR_HASH:=b95001b60fe5c28f08be5a52b65276d99877be57e567ad7afab95860f6aff57d
|
||||
PKG_SOURCE_DATE:=2023-04-29
|
||||
PKG_SOURCE_VERSION:=6a436714d2ea0d0adf39fc4d7d45e6a17fcc9371
|
||||
PKG_MIRROR_HASH:=dcc320a8f859b732ff65c7ded0b5199a625bfba05a775a6bed15ed3c10cb2748
|
||||
|
||||
PKG_MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
||||
@ -3,79 +3,25 @@
|
||||
// Copyright (c) 2021, 2022 Lech Perczak
|
||||
// Copyright (c) 2022 David Bauer <mail@david-bauer.net>
|
||||
|
||||
#include "qca956x.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include "qca9563_zte_mf28x.dtsi"
|
||||
|
||||
/ {
|
||||
model = "ZTE MF281";
|
||||
compatible = "zte,mf281", "qca,qca9563";
|
||||
|
||||
aliases {
|
||||
led-boot = &led_debug;
|
||||
led-failsafe = &led_debug;
|
||||
led-running = &led_debug;
|
||||
led-upgrade = &led_debug;
|
||||
label-mac-device = ð0;
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&enable_wlan_led_gpio>;
|
||||
};
|
||||
};
|
||||
|
||||
/* Hidden SMD LED below signal strength LEDs.
|
||||
* Visible through slits underside of the case.
|
||||
*/
|
||||
led_debug: debug {
|
||||
&led_debug {
|
||||
label = "green:debug";
|
||||
gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
|
||||
default-state = "on";
|
||||
};
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
reset {
|
||||
label = "reset";
|
||||
linux,code = <KEY_RESTART>;
|
||||
gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
|
||||
wps {
|
||||
label = "wps";
|
||||
linux,code = <KEY_WPS_BUTTON>;
|
||||
gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
};
|
||||
|
||||
/* This GPIO is used to reset whole board _including_ the modem */
|
||||
gpio-restart {
|
||||
compatible = "gpio-restart";
|
||||
gpios = <&gpio 5 GPIO_ACTIVE_HIGH>;
|
||||
active-delay = <3000>;
|
||||
inactive-delay = <1000>;
|
||||
};
|
||||
};
|
||||
|
||||
&spi {
|
||||
status = "okay";
|
||||
|
||||
flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <25000000>;
|
||||
|
||||
&boot_flash {
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "u-boot";
|
||||
reg = <0x0 0xa0000>;
|
||||
@ -90,16 +36,8 @@
|
||||
};
|
||||
};
|
||||
|
||||
flash@1 {
|
||||
compatible = "spi-nand";
|
||||
reg = <1>;
|
||||
spi-max-frequency = <25000000>;
|
||||
|
||||
&system_flash {
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "fota-flag";
|
||||
reg = <0x000000 0xa0000>;
|
||||
@ -206,44 +144,17 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&mdio0 {
|
||||
status = "okay";
|
||||
|
||||
phy0: ethernet-phy@0 {
|
||||
reg = <0>;
|
||||
phy-mode = "sgmii";
|
||||
|
||||
qca,ar8327-initvals = <
|
||||
0x04 0x00080080 /* PORT0 PAD MODE CTRL */
|
||||
0x7c 0x0000007e /* PORT0_STATUS */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
ð0 {
|
||||
status = "okay";
|
||||
|
||||
phy-mode = "sgmii";
|
||||
phy-handle = <&phy0>;
|
||||
|
||||
nvmem-cells = <&macaddr_mac_0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
|
||||
wifi@0,0 {
|
||||
compatible = "qcom,ath10k";
|
||||
reg = <0x0 0 0 0 0>;
|
||||
|
||||
&wifi_ath10k {
|
||||
nvmem-cells = <&macaddr_mac_0>, <&cal_caldata_5000>;
|
||||
nvmem-cell-names = "mac-address", "pre-calibration";
|
||||
mac-address-increment = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
&pinmux {
|
||||
enable_wlan_led_gpio: pinmux_wlan_led_gpio {
|
||||
@ -252,24 +163,6 @@
|
||||
};
|
||||
|
||||
&wmac {
|
||||
status = "okay";
|
||||
|
||||
nvmem-cells = <&macaddr_mac_0>, <&cal_caldata_1000>;
|
||||
nvmem-cell-names = "mac-address", "calibration";
|
||||
};
|
||||
|
||||
&usb_phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_phy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
129
target/linux/ath79/dts/qca9563_zte_mf282.dts
Normal file
129
target/linux/ath79/dts/qca9563_zte_mf282.dts
Normal file
@ -0,0 +1,129 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
// Copyright (c) 2021 Cezary Jackiewicz
|
||||
// Copyright (c) 2021, 2022 Lech Perczak
|
||||
// Copyright (c) 2022 David Bauer <mail@david-bauer.net>
|
||||
// Copyright (c) 2023 Andreas Böhler <dev@aboehler.at>
|
||||
|
||||
#include "qca9563_zte_mf28x.dtsi"
|
||||
|
||||
/ {
|
||||
model = "ZTE MF282";
|
||||
compatible = "zte,mf282", "qca,qca9563";
|
||||
|
||||
ubi-concat {
|
||||
compatible = "mtd-concat";
|
||||
devices = <&ubiconcat0 &ubiconcat1>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
reg = <0x0 0x7440000>;
|
||||
label = "ubi";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&led_debug {
|
||||
label = "blue:debug";
|
||||
color = <LED_COLOR_ID_BLUE>;
|
||||
};
|
||||
|
||||
&boot_flash {
|
||||
partitions {
|
||||
partition@0 {
|
||||
label = "u-boot";
|
||||
reg = <0x0 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@80000 {
|
||||
label = "u-boot-env";
|
||||
reg = <0x80000 0x20000>;
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&system_flash {
|
||||
partitions {
|
||||
partition@0 {
|
||||
label = "fota-flag";
|
||||
reg = <0x000000 0x140000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@140000 {
|
||||
label = "caldata";
|
||||
reg = <0x140000 0x140000>;
|
||||
read-only;
|
||||
|
||||
compatible = "nvmem-cells";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
cal_caldata_1000: cal@1000 {
|
||||
reg = <0x1000 0x440>;
|
||||
};
|
||||
|
||||
cal_caldata_5000: cal@5000 {
|
||||
reg = <0x5000 0x844>;
|
||||
};
|
||||
};
|
||||
|
||||
partition@280000 {
|
||||
label = "mac";
|
||||
reg = <0x280000 0x140000>;
|
||||
read-only;
|
||||
|
||||
compatible = "nvmem-cells";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
macaddr_mac_0: macaddr@0 {
|
||||
reg = <0x0 0x6>;
|
||||
};
|
||||
};
|
||||
|
||||
/* This encompasses stock cfg-param, oops, web partitions,
|
||||
* which can be overwritten safely
|
||||
*/
|
||||
ubiconcat0: partition@3c0000 {
|
||||
label = "ubiconcat0";
|
||||
reg = <0x3c0000 0xf40000>;
|
||||
};
|
||||
|
||||
/* Kernel MTD size is increased to 8MB from stock 3MB */
|
||||
partition@1300000 {
|
||||
label = "kernel";
|
||||
reg = <0x1300000 0x800000>;
|
||||
};
|
||||
|
||||
/* This encompasses stock rootfs, data, fota partitions,
|
||||
* which can be overwritten safely
|
||||
*/
|
||||
ubiconcat1: partition@1b00000 {
|
||||
label = "ubiconcat1";
|
||||
reg = <0x1b00000 0x6500000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
ð0 {
|
||||
nvmem-cells = <&macaddr_mac_0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
&wifi_ath10k {
|
||||
nvmem-cells = <&macaddr_mac_0>, <&cal_caldata_5000>;
|
||||
nvmem-cell-names = "mac-address", "calibration";
|
||||
mac-address-increment = <1>;
|
||||
};
|
||||
|
||||
&wmac {
|
||||
nvmem-cells = <&macaddr_mac_0>, <&cal_caldata_1000>;
|
||||
nvmem-cell-names = "mac-address", "calibration";
|
||||
};
|
||||
@ -1,36 +1,13 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
// Copyright (c) 2021 Cezary Jackiewicz
|
||||
// Copyright (c) 2021, 2022 Lech Perczak
|
||||
#include "qca956x.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include "qca9563_zte_mf28x.dtsi"
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
led-boot = &led_debug;
|
||||
led-failsafe = &led_debug;
|
||||
led-running = &led_debug;
|
||||
led-upgrade = &led_debug;
|
||||
label-mac-device = ð0;
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&enable_wlan_led_gpio>;
|
||||
|
||||
/* Hidden SMD LED below signal strength LEDs.
|
||||
* Visible through slits underside of the case,
|
||||
* and slightly through the case below signal state LEDs
|
||||
*/
|
||||
led_debug: led-0 {
|
||||
function = LED_FUNCTION_DEBUG;
|
||||
gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
|
||||
default-state = "on";
|
||||
};
|
||||
|
||||
led-1 {
|
||||
function = LED_FUNCTION_WLAN;
|
||||
color = <LED_COLOR_ID_BLUE>;
|
||||
@ -40,22 +17,6 @@
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
reset {
|
||||
label = "reset";
|
||||
linux,code = <KEY_RESTART>;
|
||||
gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
|
||||
wps {
|
||||
label = "wps";
|
||||
linux,code = <KEY_WPS_BUTTON>;
|
||||
gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
|
||||
wifi {
|
||||
label = "wifi";
|
||||
linux,code = <KEY_RFKILL>;
|
||||
@ -63,72 +24,6 @@
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
};
|
||||
|
||||
/* This GPIO is used to reset whole board _including_ the modem */
|
||||
gpio-restart {
|
||||
compatible = "gpio-restart";
|
||||
gpios = <&gpio 5 GPIO_ACTIVE_HIGH>;
|
||||
active-delay = <3000>;
|
||||
inactive-delay = <1000>;
|
||||
};
|
||||
};
|
||||
|
||||
&spi {
|
||||
status = "okay";
|
||||
|
||||
boot_flash: flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <25000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
system_flash: flash@1 {
|
||||
compatible = "spi-nand";
|
||||
reg = <1>;
|
||||
spi-max-frequency = <25000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&mdio0 {
|
||||
status = "okay";
|
||||
|
||||
phy0: ethernet-phy@0 {
|
||||
reg = <0>;
|
||||
phy-mode = "sgmii";
|
||||
|
||||
qca,ar8327-initvals = <
|
||||
0x04 0x00080080 /* PORT0 PAD MODE CTRL */
|
||||
0x7c 0x0000007e /* PORT0_STATUS */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
ð0 {
|
||||
status = "okay";
|
||||
|
||||
phy-mode = "sgmii";
|
||||
phy-handle = <&phy0>;
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
|
||||
wifi_ath10k: wifi@0,0 {
|
||||
compatible = "qcom,ath10k";
|
||||
reg = <0x0 0 0 0 0>;
|
||||
};
|
||||
};
|
||||
|
||||
&pinmux {
|
||||
@ -136,23 +31,3 @@
|
||||
pinctrl-single,bits = <0x10 0x0 0xff000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&wmac {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_phy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
136
target/linux/ath79/dts/qca9563_zte_mf28x.dtsi
Normal file
136
target/linux/ath79/dts/qca9563_zte_mf28x.dtsi
Normal file
@ -0,0 +1,136 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
// Copyright (c) 2021 Cezary Jackiewicz
|
||||
// Copyright (c) 2021, 2022 Lech Perczak
|
||||
#include "qca956x.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
led-boot = &led_debug;
|
||||
led-failsafe = &led_debug;
|
||||
led-running = &led_debug;
|
||||
led-upgrade = &led_debug;
|
||||
label-mac-device = ð0;
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
/* Hidden SMD LED below signal strength LEDs.
|
||||
* Visible through slits underside of the case,
|
||||
* and slightly through the case below signal state LEDs
|
||||
*/
|
||||
led_debug: led-0 {
|
||||
function = LED_FUNCTION_DEBUG;
|
||||
gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
|
||||
default-state = "on";
|
||||
};
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
reset {
|
||||
label = "reset";
|
||||
linux,code = <KEY_RESTART>;
|
||||
gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
|
||||
wps {
|
||||
label = "wps";
|
||||
linux,code = <KEY_WPS_BUTTON>;
|
||||
gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
};
|
||||
|
||||
/* This GPIO is used to reset whole board _including_ the modem */
|
||||
gpio-restart {
|
||||
compatible = "gpio-restart";
|
||||
gpios = <&gpio 5 GPIO_ACTIVE_HIGH>;
|
||||
active-delay = <3000>;
|
||||
inactive-delay = <1000>;
|
||||
};
|
||||
};
|
||||
|
||||
&spi {
|
||||
status = "okay";
|
||||
|
||||
boot_flash: flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <25000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
system_flash: flash@1 {
|
||||
compatible = "spi-nand";
|
||||
reg = <1>;
|
||||
spi-max-frequency = <25000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&mdio0 {
|
||||
status = "okay";
|
||||
|
||||
phy0: ethernet-phy@0 {
|
||||
reg = <0>;
|
||||
phy-mode = "sgmii";
|
||||
|
||||
qca,ar8327-initvals = <
|
||||
0x04 0x00080080 /* PORT0 PAD MODE CTRL */
|
||||
0x7c 0x0000007e /* PORT0_STATUS */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
ð0 {
|
||||
status = "okay";
|
||||
|
||||
phy-mode = "sgmii";
|
||||
phy-handle = <&phy0>;
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
|
||||
wifi_ath10k: wifi@0,0 {
|
||||
compatible = "qcom,ath10k";
|
||||
reg = <0x0 0 0 0 0>;
|
||||
};
|
||||
};
|
||||
|
||||
&wmac {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_phy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb1 {
|
||||
status = "okay";
|
||||
};
|
||||
@ -390,6 +390,14 @@ define Device/zte_mf281
|
||||
endef
|
||||
TARGET_DEVICES += zte_mf281
|
||||
|
||||
define Device/zte_mf282
|
||||
$(Device/zte_mf28x_common)
|
||||
DEVICE_MODEL := MF282
|
||||
DEVICE_PACKAGES += ath10k-firmware-qca988x-ct kmod-usb-net-qmi-wwan \
|
||||
kmod-usb-serial-option uqmi
|
||||
endef
|
||||
TARGET_DEVICES += zte_mf282
|
||||
|
||||
define Device/zte_mf286
|
||||
$(Device/zte_mf28x_common)
|
||||
DEVICE_MODEL := MF286
|
||||
|
||||
@ -66,6 +66,10 @@ ath79_setup_interfaces()
|
||||
ucidef_add_switch "switch0" \
|
||||
"0@eth0" "5:lan"
|
||||
;;
|
||||
zte,mf282)
|
||||
ucidef_set_interface_lan "eth0"
|
||||
ucidef_set_interface "wan" device "/dev/cdc-wdm0" protocol "qmi"
|
||||
;;
|
||||
zte,mf286|\
|
||||
zte,mf286a|\
|
||||
zte,mf286r)
|
||||
|
||||
@ -0,0 +1,348 @@
|
||||
From f07788079f515ca4a681c5f595bdad19cfbd7b1d Mon Sep 17 00:00:00 2001
|
||||
From: Arnd Bergmann <arnd@arndb.de>
|
||||
Date: Sat, 3 Dec 2022 11:54:25 +0100
|
||||
Subject: [PATCH] ata: ahci: fix enum constants for gcc-13
|
||||
|
||||
gcc-13 slightly changes the type of constant expressions that are defined
|
||||
in an enum, which triggers a compile time sanity check in libata:
|
||||
|
||||
linux/drivers/ata/libahci.c: In function 'ahci_led_store':
|
||||
linux/include/linux/compiler_types.h:357:45: error: call to '__compiletime_assert_302' declared with attribute error: BUILD_BUG_ON failed: sizeof(_s) > sizeof(long)
|
||||
357 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
|
||||
|
||||
The new behavior is that sizeof() returns the same value for the
|
||||
constant as it does for the enum type, which is generally more sensible
|
||||
and consistent.
|
||||
|
||||
The problem in libata is that it contains a single enum definition for
|
||||
lots of unrelated constants, some of which are large positive (unsigned)
|
||||
integers like 0xffffffff, while others like (1<<31) are interpreted as
|
||||
negative integers, and this forces the enum type to become 64 bit wide
|
||||
even though most constants would still fit into a signed 32-bit 'int'.
|
||||
|
||||
Fix this by changing the entire enum definition to use BIT(x) in place
|
||||
of (1<<x), which results in all values being seen as 'unsigned' and
|
||||
fitting into an unsigned 32-bit type.
|
||||
|
||||
Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107917
|
||||
Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107405
|
||||
Reported-by: Luis Machado <luis.machado@arm.com>
|
||||
Cc: linux-ide@vger.kernel.org
|
||||
Cc: Damien Le Moal <damien.lemoal@opensource.wdc.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Cc: Randy Dunlap <rdunlap@infradead.org>
|
||||
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
|
||||
Tested-by: Luis Machado <luis.machado@arm.com>
|
||||
Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
|
||||
---
|
||||
drivers/ata/ahci.h | 245 +++++++++++++++++++++++----------------------
|
||||
1 file changed, 123 insertions(+), 122 deletions(-)
|
||||
|
||||
--- a/drivers/ata/ahci.h
|
||||
+++ b/drivers/ata/ahci.h
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <linux/libata.h>
|
||||
#include <linux/phy/phy.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
+#include <linux/bits.h>
|
||||
|
||||
/* Enclosure Management Control */
|
||||
#define EM_CTRL_MSG_TYPE 0x000f0000
|
||||
@@ -54,12 +55,12 @@ enum {
|
||||
AHCI_PORT_PRIV_FBS_DMA_SZ = AHCI_CMD_SLOT_SZ +
|
||||
AHCI_CMD_TBL_AR_SZ +
|
||||
(AHCI_RX_FIS_SZ * 16),
|
||||
- AHCI_IRQ_ON_SG = (1 << 31),
|
||||
- AHCI_CMD_ATAPI = (1 << 5),
|
||||
- AHCI_CMD_WRITE = (1 << 6),
|
||||
- AHCI_CMD_PREFETCH = (1 << 7),
|
||||
- AHCI_CMD_RESET = (1 << 8),
|
||||
- AHCI_CMD_CLR_BUSY = (1 << 10),
|
||||
+ AHCI_IRQ_ON_SG = BIT(31),
|
||||
+ AHCI_CMD_ATAPI = BIT(5),
|
||||
+ AHCI_CMD_WRITE = BIT(6),
|
||||
+ AHCI_CMD_PREFETCH = BIT(7),
|
||||
+ AHCI_CMD_RESET = BIT(8),
|
||||
+ AHCI_CMD_CLR_BUSY = BIT(10),
|
||||
|
||||
RX_FIS_PIO_SETUP = 0x20, /* offset of PIO Setup FIS data */
|
||||
RX_FIS_D2H_REG = 0x40, /* offset of D2H Register FIS data */
|
||||
@@ -77,37 +78,37 @@ enum {
|
||||
HOST_CAP2 = 0x24, /* host capabilities, extended */
|
||||
|
||||
/* HOST_CTL bits */
|
||||
- HOST_RESET = (1 << 0), /* reset controller; self-clear */
|
||||
- HOST_IRQ_EN = (1 << 1), /* global IRQ enable */
|
||||
- HOST_MRSM = (1 << 2), /* MSI Revert to Single Message */
|
||||
- HOST_AHCI_EN = (1 << 31), /* AHCI enabled */
|
||||
+ HOST_RESET = BIT(0), /* reset controller; self-clear */
|
||||
+ HOST_IRQ_EN = BIT(1), /* global IRQ enable */
|
||||
+ HOST_MRSM = BIT(2), /* MSI Revert to Single Message */
|
||||
+ HOST_AHCI_EN = BIT(31), /* AHCI enabled */
|
||||
|
||||
/* HOST_CAP bits */
|
||||
- HOST_CAP_SXS = (1 << 5), /* Supports External SATA */
|
||||
- HOST_CAP_EMS = (1 << 6), /* Enclosure Management support */
|
||||
- HOST_CAP_CCC = (1 << 7), /* Command Completion Coalescing */
|
||||
- HOST_CAP_PART = (1 << 13), /* Partial state capable */
|
||||
- HOST_CAP_SSC = (1 << 14), /* Slumber state capable */
|
||||
- HOST_CAP_PIO_MULTI = (1 << 15), /* PIO multiple DRQ support */
|
||||
- HOST_CAP_FBS = (1 << 16), /* FIS-based switching support */
|
||||
- HOST_CAP_PMP = (1 << 17), /* Port Multiplier support */
|
||||
- HOST_CAP_ONLY = (1 << 18), /* Supports AHCI mode only */
|
||||
- HOST_CAP_CLO = (1 << 24), /* Command List Override support */
|
||||
- HOST_CAP_LED = (1 << 25), /* Supports activity LED */
|
||||
- HOST_CAP_ALPM = (1 << 26), /* Aggressive Link PM support */
|
||||
- HOST_CAP_SSS = (1 << 27), /* Staggered Spin-up */
|
||||
- HOST_CAP_MPS = (1 << 28), /* Mechanical presence switch */
|
||||
- HOST_CAP_SNTF = (1 << 29), /* SNotification register */
|
||||
- HOST_CAP_NCQ = (1 << 30), /* Native Command Queueing */
|
||||
- HOST_CAP_64 = (1 << 31), /* PCI DAC (64-bit DMA) support */
|
||||
+ HOST_CAP_SXS = BIT(5), /* Supports External SATA */
|
||||
+ HOST_CAP_EMS = BIT(6), /* Enclosure Management support */
|
||||
+ HOST_CAP_CCC = BIT(7), /* Command Completion Coalescing */
|
||||
+ HOST_CAP_PART = BIT(13), /* Partial state capable */
|
||||
+ HOST_CAP_SSC = BIT(14), /* Slumber state capable */
|
||||
+ HOST_CAP_PIO_MULTI = BIT(15), /* PIO multiple DRQ support */
|
||||
+ HOST_CAP_FBS = BIT(16), /* FIS-based switching support */
|
||||
+ HOST_CAP_PMP = BIT(17), /* Port Multiplier support */
|
||||
+ HOST_CAP_ONLY = BIT(18), /* Supports AHCI mode only */
|
||||
+ HOST_CAP_CLO = BIT(24), /* Command List Override support */
|
||||
+ HOST_CAP_LED = BIT(25), /* Supports activity LED */
|
||||
+ HOST_CAP_ALPM = BIT(26), /* Aggressive Link PM support */
|
||||
+ HOST_CAP_SSS = BIT(27), /* Staggered Spin-up */
|
||||
+ HOST_CAP_MPS = BIT(28), /* Mechanical presence switch */
|
||||
+ HOST_CAP_SNTF = BIT(29), /* SNotification register */
|
||||
+ HOST_CAP_NCQ = BIT(30), /* Native Command Queueing */
|
||||
+ HOST_CAP_64 = BIT(31), /* PCI DAC (64-bit DMA) support */
|
||||
|
||||
/* HOST_CAP2 bits */
|
||||
- HOST_CAP2_BOH = (1 << 0), /* BIOS/OS handoff supported */
|
||||
- HOST_CAP2_NVMHCI = (1 << 1), /* NVMHCI supported */
|
||||
- HOST_CAP2_APST = (1 << 2), /* Automatic partial to slumber */
|
||||
- HOST_CAP2_SDS = (1 << 3), /* Support device sleep */
|
||||
- HOST_CAP2_SADM = (1 << 4), /* Support aggressive DevSlp */
|
||||
- HOST_CAP2_DESO = (1 << 5), /* DevSlp from slumber only */
|
||||
+ HOST_CAP2_BOH = BIT(0), /* BIOS/OS handoff supported */
|
||||
+ HOST_CAP2_NVMHCI = BIT(1), /* NVMHCI supported */
|
||||
+ HOST_CAP2_APST = BIT(2), /* Automatic partial to slumber */
|
||||
+ HOST_CAP2_SDS = BIT(3), /* Support device sleep */
|
||||
+ HOST_CAP2_SADM = BIT(4), /* Support aggressive DevSlp */
|
||||
+ HOST_CAP2_DESO = BIT(5), /* DevSlp from slumber only */
|
||||
|
||||
/* registers for each SATA port */
|
||||
PORT_LST_ADDR = 0x00, /* command list DMA addr */
|
||||
@@ -129,24 +130,24 @@ enum {
|
||||
PORT_DEVSLP = 0x44, /* device sleep */
|
||||
|
||||
/* PORT_IRQ_{STAT,MASK} bits */
|
||||
- PORT_IRQ_COLD_PRES = (1 << 31), /* cold presence detect */
|
||||
- PORT_IRQ_TF_ERR = (1 << 30), /* task file error */
|
||||
- PORT_IRQ_HBUS_ERR = (1 << 29), /* host bus fatal error */
|
||||
- PORT_IRQ_HBUS_DATA_ERR = (1 << 28), /* host bus data error */
|
||||
- PORT_IRQ_IF_ERR = (1 << 27), /* interface fatal error */
|
||||
- PORT_IRQ_IF_NONFATAL = (1 << 26), /* interface non-fatal error */
|
||||
- PORT_IRQ_OVERFLOW = (1 << 24), /* xfer exhausted available S/G */
|
||||
- PORT_IRQ_BAD_PMP = (1 << 23), /* incorrect port multiplier */
|
||||
-
|
||||
- PORT_IRQ_PHYRDY = (1 << 22), /* PhyRdy changed */
|
||||
- PORT_IRQ_DEV_ILCK = (1 << 7), /* device interlock */
|
||||
- PORT_IRQ_CONNECT = (1 << 6), /* port connect change status */
|
||||
- PORT_IRQ_SG_DONE = (1 << 5), /* descriptor processed */
|
||||
- PORT_IRQ_UNK_FIS = (1 << 4), /* unknown FIS rx'd */
|
||||
- PORT_IRQ_SDB_FIS = (1 << 3), /* Set Device Bits FIS rx'd */
|
||||
- PORT_IRQ_DMAS_FIS = (1 << 2), /* DMA Setup FIS rx'd */
|
||||
- PORT_IRQ_PIOS_FIS = (1 << 1), /* PIO Setup FIS rx'd */
|
||||
- PORT_IRQ_D2H_REG_FIS = (1 << 0), /* D2H Register FIS rx'd */
|
||||
+ PORT_IRQ_COLD_PRES = BIT(31), /* cold presence detect */
|
||||
+ PORT_IRQ_TF_ERR = BIT(30), /* task file error */
|
||||
+ PORT_IRQ_HBUS_ERR = BIT(29), /* host bus fatal error */
|
||||
+ PORT_IRQ_HBUS_DATA_ERR = BIT(28), /* host bus data error */
|
||||
+ PORT_IRQ_IF_ERR = BIT(27), /* interface fatal error */
|
||||
+ PORT_IRQ_IF_NONFATAL = BIT(26), /* interface non-fatal error */
|
||||
+ PORT_IRQ_OVERFLOW = BIT(24), /* xfer exhausted available S/G */
|
||||
+ PORT_IRQ_BAD_PMP = BIT(23), /* incorrect port multiplier */
|
||||
+
|
||||
+ PORT_IRQ_PHYRDY = BIT(22), /* PhyRdy changed */
|
||||
+ PORT_IRQ_DEV_ILCK = BIT(7), /* device interlock */
|
||||
+ PORT_IRQ_CONNECT = BIT(6), /* port connect change status */
|
||||
+ PORT_IRQ_SG_DONE = BIT(5), /* descriptor processed */
|
||||
+ PORT_IRQ_UNK_FIS = BIT(4), /* unknown FIS rx'd */
|
||||
+ PORT_IRQ_SDB_FIS = BIT(3), /* Set Device Bits FIS rx'd */
|
||||
+ PORT_IRQ_DMAS_FIS = BIT(2), /* DMA Setup FIS rx'd */
|
||||
+ PORT_IRQ_PIOS_FIS = BIT(1), /* PIO Setup FIS rx'd */
|
||||
+ PORT_IRQ_D2H_REG_FIS = BIT(0), /* D2H Register FIS rx'd */
|
||||
|
||||
PORT_IRQ_FREEZE = PORT_IRQ_HBUS_ERR |
|
||||
PORT_IRQ_IF_ERR |
|
||||
@@ -162,34 +163,34 @@ enum {
|
||||
PORT_IRQ_PIOS_FIS | PORT_IRQ_D2H_REG_FIS,
|
||||
|
||||
/* PORT_CMD bits */
|
||||
- PORT_CMD_ASP = (1 << 27), /* Aggressive Slumber/Partial */
|
||||
- PORT_CMD_ALPE = (1 << 26), /* Aggressive Link PM enable */
|
||||
- PORT_CMD_ATAPI = (1 << 24), /* Device is ATAPI */
|
||||
- PORT_CMD_FBSCP = (1 << 22), /* FBS Capable Port */
|
||||
- PORT_CMD_ESP = (1 << 21), /* External Sata Port */
|
||||
- PORT_CMD_HPCP = (1 << 18), /* HotPlug Capable Port */
|
||||
- PORT_CMD_PMP = (1 << 17), /* PMP attached */
|
||||
- PORT_CMD_LIST_ON = (1 << 15), /* cmd list DMA engine running */
|
||||
- PORT_CMD_FIS_ON = (1 << 14), /* FIS DMA engine running */
|
||||
- PORT_CMD_FIS_RX = (1 << 4), /* Enable FIS receive DMA engine */
|
||||
- PORT_CMD_CLO = (1 << 3), /* Command list override */
|
||||
- PORT_CMD_POWER_ON = (1 << 2), /* Power up device */
|
||||
- PORT_CMD_SPIN_UP = (1 << 1), /* Spin up device */
|
||||
- PORT_CMD_START = (1 << 0), /* Enable port DMA engine */
|
||||
-
|
||||
- PORT_CMD_ICC_MASK = (0xf << 28), /* i/f ICC state mask */
|
||||
- PORT_CMD_ICC_ACTIVE = (0x1 << 28), /* Put i/f in active state */
|
||||
- PORT_CMD_ICC_PARTIAL = (0x2 << 28), /* Put i/f in partial state */
|
||||
- PORT_CMD_ICC_SLUMBER = (0x6 << 28), /* Put i/f in slumber state */
|
||||
+ PORT_CMD_ASP = BIT(27), /* Aggressive Slumber/Partial */
|
||||
+ PORT_CMD_ALPE = BIT(26), /* Aggressive Link PM enable */
|
||||
+ PORT_CMD_ATAPI = BIT(24), /* Device is ATAPI */
|
||||
+ PORT_CMD_FBSCP = BIT(22), /* FBS Capable Port */
|
||||
+ PORT_CMD_ESP = BIT(21), /* External Sata Port */
|
||||
+ PORT_CMD_HPCP = BIT(18), /* HotPlug Capable Port */
|
||||
+ PORT_CMD_PMP = BIT(17), /* PMP attached */
|
||||
+ PORT_CMD_LIST_ON = BIT(15), /* cmd list DMA engine running */
|
||||
+ PORT_CMD_FIS_ON = BIT(14), /* FIS DMA engine running */
|
||||
+ PORT_CMD_FIS_RX = BIT(4), /* Enable FIS receive DMA engine */
|
||||
+ PORT_CMD_CLO = BIT(3), /* Command list override */
|
||||
+ PORT_CMD_POWER_ON = BIT(2), /* Power up device */
|
||||
+ PORT_CMD_SPIN_UP = BIT(1), /* Spin up device */
|
||||
+ PORT_CMD_START = BIT(0), /* Enable port DMA engine */
|
||||
+
|
||||
+ PORT_CMD_ICC_MASK = (0xfu << 28), /* i/f ICC state mask */
|
||||
+ PORT_CMD_ICC_ACTIVE = (0x1u << 28), /* Put i/f in active state */
|
||||
+ PORT_CMD_ICC_PARTIAL = (0x2u << 28), /* Put i/f in partial state */
|
||||
+ PORT_CMD_ICC_SLUMBER = (0x6u << 28), /* Put i/f in slumber state */
|
||||
|
||||
/* PORT_FBS bits */
|
||||
PORT_FBS_DWE_OFFSET = 16, /* FBS device with error offset */
|
||||
PORT_FBS_ADO_OFFSET = 12, /* FBS active dev optimization offset */
|
||||
PORT_FBS_DEV_OFFSET = 8, /* FBS device to issue offset */
|
||||
PORT_FBS_DEV_MASK = (0xf << PORT_FBS_DEV_OFFSET), /* FBS.DEV */
|
||||
- PORT_FBS_SDE = (1 << 2), /* FBS single device error */
|
||||
- PORT_FBS_DEC = (1 << 1), /* FBS device error clear */
|
||||
- PORT_FBS_EN = (1 << 0), /* Enable FBS */
|
||||
+ PORT_FBS_SDE = BIT(2), /* FBS single device error */
|
||||
+ PORT_FBS_DEC = BIT(1), /* FBS device error clear */
|
||||
+ PORT_FBS_EN = BIT(0), /* Enable FBS */
|
||||
|
||||
/* PORT_DEVSLP bits */
|
||||
PORT_DEVSLP_DM_OFFSET = 25, /* DITO multiplier offset */
|
||||
@@ -197,50 +198,50 @@ enum {
|
||||
PORT_DEVSLP_DITO_OFFSET = 15, /* DITO offset */
|
||||
PORT_DEVSLP_MDAT_OFFSET = 10, /* Minimum assertion time */
|
||||
PORT_DEVSLP_DETO_OFFSET = 2, /* DevSlp exit timeout */
|
||||
- PORT_DEVSLP_DSP = (1 << 1), /* DevSlp present */
|
||||
- PORT_DEVSLP_ADSE = (1 << 0), /* Aggressive DevSlp enable */
|
||||
+ PORT_DEVSLP_DSP = BIT(1), /* DevSlp present */
|
||||
+ PORT_DEVSLP_ADSE = BIT(0), /* Aggressive DevSlp enable */
|
||||
|
||||
/* hpriv->flags bits */
|
||||
|
||||
#define AHCI_HFLAGS(flags) .private_data = (void *)(flags)
|
||||
|
||||
- AHCI_HFLAG_NO_NCQ = (1 << 0),
|
||||
- AHCI_HFLAG_IGN_IRQ_IF_ERR = (1 << 1), /* ignore IRQ_IF_ERR */
|
||||
- AHCI_HFLAG_IGN_SERR_INTERNAL = (1 << 2), /* ignore SERR_INTERNAL */
|
||||
- AHCI_HFLAG_32BIT_ONLY = (1 << 3), /* force 32bit */
|
||||
- AHCI_HFLAG_MV_PATA = (1 << 4), /* PATA port */
|
||||
- AHCI_HFLAG_NO_MSI = (1 << 5), /* no PCI MSI */
|
||||
- AHCI_HFLAG_NO_PMP = (1 << 6), /* no PMP */
|
||||
- AHCI_HFLAG_SECT255 = (1 << 8), /* max 255 sectors */
|
||||
- AHCI_HFLAG_YES_NCQ = (1 << 9), /* force NCQ cap on */
|
||||
- AHCI_HFLAG_NO_SUSPEND = (1 << 10), /* don't suspend */
|
||||
- AHCI_HFLAG_SRST_TOUT_IS_OFFLINE = (1 << 11), /* treat SRST timeout as
|
||||
+ AHCI_HFLAG_NO_NCQ = BIT(0),
|
||||
+ AHCI_HFLAG_IGN_IRQ_IF_ERR = BIT(1), /* ignore IRQ_IF_ERR */
|
||||
+ AHCI_HFLAG_IGN_SERR_INTERNAL = BIT(2), /* ignore SERR_INTERNAL */
|
||||
+ AHCI_HFLAG_32BIT_ONLY = BIT(3), /* force 32bit */
|
||||
+ AHCI_HFLAG_MV_PATA = BIT(4), /* PATA port */
|
||||
+ AHCI_HFLAG_NO_MSI = BIT(5), /* no PCI MSI */
|
||||
+ AHCI_HFLAG_NO_PMP = BIT(6), /* no PMP */
|
||||
+ AHCI_HFLAG_SECT255 = BIT(8), /* max 255 sectors */
|
||||
+ AHCI_HFLAG_YES_NCQ = BIT(9), /* force NCQ cap on */
|
||||
+ AHCI_HFLAG_NO_SUSPEND = BIT(10), /* don't suspend */
|
||||
+ AHCI_HFLAG_SRST_TOUT_IS_OFFLINE = BIT(11), /* treat SRST timeout as
|
||||
link offline */
|
||||
- AHCI_HFLAG_NO_SNTF = (1 << 12), /* no sntf */
|
||||
- AHCI_HFLAG_NO_FPDMA_AA = (1 << 13), /* no FPDMA AA */
|
||||
- AHCI_HFLAG_YES_FBS = (1 << 14), /* force FBS cap on */
|
||||
- AHCI_HFLAG_DELAY_ENGINE = (1 << 15), /* do not start engine on
|
||||
+ AHCI_HFLAG_NO_SNTF = BIT(12), /* no sntf */
|
||||
+ AHCI_HFLAG_NO_FPDMA_AA = BIT(13), /* no FPDMA AA */
|
||||
+ AHCI_HFLAG_YES_FBS = BIT(14), /* force FBS cap on */
|
||||
+ AHCI_HFLAG_DELAY_ENGINE = BIT(15), /* do not start engine on
|
||||
port start (wait until
|
||||
error-handling stage) */
|
||||
- AHCI_HFLAG_NO_DEVSLP = (1 << 17), /* no device sleep */
|
||||
- AHCI_HFLAG_NO_FBS = (1 << 18), /* no FBS */
|
||||
+ AHCI_HFLAG_NO_DEVSLP = BIT(17), /* no device sleep */
|
||||
+ AHCI_HFLAG_NO_FBS = BIT(18), /* no FBS */
|
||||
|
||||
#ifdef CONFIG_PCI_MSI
|
||||
- AHCI_HFLAG_MULTI_MSI = (1 << 20), /* per-port MSI(-X) */
|
||||
+ AHCI_HFLAG_MULTI_MSI = BIT(20), /* per-port MSI(-X) */
|
||||
#else
|
||||
/* compile out MSI infrastructure */
|
||||
AHCI_HFLAG_MULTI_MSI = 0,
|
||||
#endif
|
||||
- AHCI_HFLAG_WAKE_BEFORE_STOP = (1 << 22), /* wake before DMA stop */
|
||||
- AHCI_HFLAG_YES_ALPM = (1 << 23), /* force ALPM cap on */
|
||||
- AHCI_HFLAG_NO_WRITE_TO_RO = (1 << 24), /* don't write to read
|
||||
+ AHCI_HFLAG_WAKE_BEFORE_STOP = BIT(22), /* wake before DMA stop */
|
||||
+ AHCI_HFLAG_YES_ALPM = BIT(23), /* force ALPM cap on */
|
||||
+ AHCI_HFLAG_NO_WRITE_TO_RO = BIT(24), /* don't write to read
|
||||
only registers */
|
||||
- AHCI_HFLAG_IS_MOBILE = (1 << 25), /* mobile chipset, use
|
||||
+ AHCI_HFLAG_IS_MOBILE = BIT(25), /* mobile chipset, use
|
||||
SATA_MOBILE_LPM_POLICY
|
||||
as default lpm_policy */
|
||||
- AHCI_HFLAG_SUSPEND_PHYS = (1 << 26), /* handle PHYs during
|
||||
+ AHCI_HFLAG_SUSPEND_PHYS = BIT(26), /* handle PHYs during
|
||||
suspend/resume */
|
||||
- AHCI_HFLAG_NO_SXS = (1 << 28), /* SXS not supported */
|
||||
+ AHCI_HFLAG_NO_SXS = BIT(28), /* SXS not supported */
|
||||
|
||||
/* ap->flags bits */
|
||||
|
||||
@@ -256,22 +257,22 @@ enum {
|
||||
EM_MAX_RETRY = 5,
|
||||
|
||||
/* em_ctl bits */
|
||||
- EM_CTL_RST = (1 << 9), /* Reset */
|
||||
- EM_CTL_TM = (1 << 8), /* Transmit Message */
|
||||
- EM_CTL_MR = (1 << 0), /* Message Received */
|
||||
- EM_CTL_ALHD = (1 << 26), /* Activity LED */
|
||||
- EM_CTL_XMT = (1 << 25), /* Transmit Only */
|
||||
- EM_CTL_SMB = (1 << 24), /* Single Message Buffer */
|
||||
- EM_CTL_SGPIO = (1 << 19), /* SGPIO messages supported */
|
||||
- EM_CTL_SES = (1 << 18), /* SES-2 messages supported */
|
||||
- EM_CTL_SAFTE = (1 << 17), /* SAF-TE messages supported */
|
||||
- EM_CTL_LED = (1 << 16), /* LED messages supported */
|
||||
+ EM_CTL_RST = BIT(9), /* Reset */
|
||||
+ EM_CTL_TM = BIT(8), /* Transmit Message */
|
||||
+ EM_CTL_MR = BIT(0), /* Message Received */
|
||||
+ EM_CTL_ALHD = BIT(26), /* Activity LED */
|
||||
+ EM_CTL_XMT = BIT(25), /* Transmit Only */
|
||||
+ EM_CTL_SMB = BIT(24), /* Single Message Buffer */
|
||||
+ EM_CTL_SGPIO = BIT(19), /* SGPIO messages supported */
|
||||
+ EM_CTL_SES = BIT(18), /* SES-2 messages supported */
|
||||
+ EM_CTL_SAFTE = BIT(17), /* SAF-TE messages supported */
|
||||
+ EM_CTL_LED = BIT(16), /* LED messages supported */
|
||||
|
||||
/* em message type */
|
||||
- EM_MSG_TYPE_LED = (1 << 0), /* LED */
|
||||
- EM_MSG_TYPE_SAFTE = (1 << 1), /* SAF-TE */
|
||||
- EM_MSG_TYPE_SES2 = (1 << 2), /* SES-2 */
|
||||
- EM_MSG_TYPE_SGPIO = (1 << 3), /* SGPIO */
|
||||
+ EM_MSG_TYPE_LED = BIT(0), /* LED */
|
||||
+ EM_MSG_TYPE_SAFTE = BIT(1), /* SAF-TE */
|
||||
+ EM_MSG_TYPE_SES2 = BIT(2), /* SES-2 */
|
||||
+ EM_MSG_TYPE_SGPIO = BIT(3), /* SGPIO */
|
||||
};
|
||||
|
||||
struct ahci_cmd_hdr {
|
||||
@ -1220,14 +1220,9 @@ CONFIG_CRYPTO_PCRYPT=y
|
||||
# CONFIG_CRYPTO_POLY1305_MIPS is not set
|
||||
# CONFIG_CRYPTO_POLY1305_NEON is not set
|
||||
# CONFIG_CRYPTO_POLY1305_X86_64 is not set
|
||||
# CONFIG_CRYPTO_RMD128 is not set
|
||||
# CONFIG_CRYPTO_RMD160 is not set
|
||||
# CONFIG_CRYPTO_RMD256 is not set
|
||||
# CONFIG_CRYPTO_RMD320 is not set
|
||||
# CONFIG_CRYPTO_RNG is not set
|
||||
# CONFIG_CRYPTO_RSA is not set
|
||||
# CONFIG_CRYPTO_SALSA20 is not set
|
||||
# CONFIG_CRYPTO_SALSA20_586 is not set
|
||||
# CONFIG_CRYPTO_SEED is not set
|
||||
# CONFIG_CRYPTO_SEQIV is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
@ -1260,7 +1255,6 @@ CONFIG_CRYPTO_SKCIPHER2=y
|
||||
# CONFIG_CRYPTO_STREEBOG is not set
|
||||
# CONFIG_CRYPTO_TEA is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
# CONFIG_CRYPTO_TGR192 is not set
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
# CONFIG_CRYPTO_TWOFISH_586 is not set
|
||||
# CONFIG_CRYPTO_TWOFISH_COMMON is not set
|
||||
@ -1860,7 +1854,6 @@ CONFIG_ELFCORE=y
|
||||
# CONFIG_EMAC_ROCKCHIP is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_EM_TIMER_STI is not set
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
CONFIG_ENABLE_WARN_DEPRECATED=y
|
||||
# CONFIG_ENA_ETHERNET is not set
|
||||
# CONFIG_ENC28J60 is not set
|
||||
@ -4966,7 +4959,6 @@ CONFIG_RANDOM_TRUST_BOOTLOADER=y
|
||||
CONFIG_RANDOM_TRUST_CPU=y
|
||||
# CONFIG_RAPIDIO is not set
|
||||
# CONFIG_RAS is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
# CONFIG_RBTREE_TEST is not set
|
||||
# CONFIG_RCU_BOOST is not set
|
||||
CONFIG_RCU_CPU_STALL_TIMEOUT=60
|
||||
|
||||
@ -6,8 +6,8 @@
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
/ {
|
||||
compatible = "asus,rt-ac57u", "mediatek,mt7621-soc";
|
||||
model = "ASUS RT-AC57U";
|
||||
compatible = "asus,rt-ac57u-v1", "mediatek,mt7621-soc";
|
||||
model = "ASUS RT-AC57U v1";
|
||||
|
||||
aliases {
|
||||
led-boot = &led_power;
|
||||
@ -286,17 +286,19 @@ define Device/asus_rp-ac87
|
||||
endef
|
||||
TARGET_DEVICES += asus_rp-ac87
|
||||
|
||||
define Device/asus_rt-ac57u
|
||||
define Device/asus_rt-ac57u-v1
|
||||
$(Device/dsa-migration)
|
||||
DEVICE_VENDOR := ASUS
|
||||
DEVICE_MODEL := RT-AC57U
|
||||
DEVICE_VARIANT := v1
|
||||
DEVICE_ALT0_VENDOR := ASUS
|
||||
DEVICE_ALT0_MODEL := RT-AC1200GU
|
||||
IMAGE_SIZE := 16064k
|
||||
DEVICE_PACKAGES := kmod-mt7603 kmod-mt76x2 kmod-usb3 \
|
||||
kmod-usb-ledtrig-usbport
|
||||
SUPPORTED_DEVICES += asus,rt-ac57u
|
||||
endef
|
||||
TARGET_DEVICES += asus_rt-ac57u
|
||||
TARGET_DEVICES += asus_rt-ac57u-v1
|
||||
|
||||
define Device/asus_rt-ac65p
|
||||
$(Device/dsa-migration)
|
||||
|
||||
@ -1,11 +1,10 @@
|
||||
From 9bac1c20b8f39f2e0e342b087add5093b94feaed Mon Sep 17 00:00:00 2001
|
||||
From: INAGAKI Hiroshi <musashino.open@gmail.com>
|
||||
Date: Wed, 5 May 2021 22:05:39 +0900
|
||||
Subject: realtek: backport gpio-realtek-otto driver from 5.13 to 5.10
|
||||
Subject: realtek: fix gpio-realtek-otto driver dependency
|
||||
|
||||
This patch backports "gpio-realtek-otto" driver to Kernel 5.10.
|
||||
"MACH_REALTEK_RTL" is used as a platform name in upstream, but "RTL838X"
|
||||
is used in OpenWrt, so update the dependency by the additional patch.
|
||||
is used in OpenWrt, so fix the dependency by renaming it.
|
||||
|
||||
Submitted-by: INAGAKI Hiroshi <musashino.open@gmail.com>
|
||||
---
|
||||
|
||||
@ -11,6 +11,9 @@ choice
|
||||
|
||||
config GCC_USE_VERSION_12
|
||||
bool "gcc 12.x"
|
||||
|
||||
config GCC_USE_VERSION_13
|
||||
bool "gcc 13.x"
|
||||
endchoice
|
||||
|
||||
config GCC_USE_GRAPHITE
|
||||
|
||||
@ -2,7 +2,12 @@ config GCC_VERSION_11
|
||||
default y if GCC_USE_VERSION_11
|
||||
bool
|
||||
|
||||
config GCC_VERSION_13
|
||||
default y if GCC_USE_VERSION_13
|
||||
bool
|
||||
|
||||
config GCC_VERSION
|
||||
string
|
||||
default "11.3.0" if GCC_VERSION_11
|
||||
default "13.1.0" if GCC_VERSION_13
|
||||
default "12.2.0"
|
||||
|
||||
@ -37,6 +37,10 @@ ifeq ($(PKG_VERSION),12.2.0)
|
||||
PKG_HASH:=e549cf9cf3594a00e27b6589d4322d70e0720cdd213f39beb4181e06926230ff
|
||||
endif
|
||||
|
||||
ifeq ($(PKG_VERSION),13.1.0)
|
||||
PKG_HASH:=61d684f0aa5e76ac6585ad8898a2427aade8979ed5e7f85492286c4dfc13ee86
|
||||
endif
|
||||
|
||||
PATCH_DIR=../patches-$(GCC_MAJOR_VERSION).x
|
||||
|
||||
BUGURL=http://bugs.openwrt.org/
|
||||
@ -187,10 +191,10 @@ define Host/SetToolchainInfo
|
||||
endef
|
||||
|
||||
|
||||
ifeq ($(GCC_MAJOR_VERSION),12)
|
||||
GCC_VERSION_FILE:=gcc/genversion.cc
|
||||
else
|
||||
ifeq ($(GCC_MAJOR_VERSION),11)
|
||||
GCC_VERSION_FILE:=gcc/version.c
|
||||
else
|
||||
GCC_VERSION_FILE:=gcc/genversion.cc
|
||||
endif
|
||||
|
||||
ifneq ($(GCC_PREPARE),)
|
||||
|
||||
@ -0,0 +1,69 @@
|
||||
From bb406a6aea336966681927a27f54ee89c4fd4ea1 Mon Sep 17 00:00:00 2001
|
||||
From: Richard Biener <rguenther@suse.de>
|
||||
Date: Mon, 24 Apr 2023 13:31:07 +0200
|
||||
Subject: [PATCH] rtl-optimization/109585 - alias analysis typo
|
||||
|
||||
When r10-514-gc6b84edb6110dd2b4fb improved access path analysis
|
||||
it introduced a typo that triggers when there's an access to a
|
||||
trailing array in the first access path leading to false
|
||||
disambiguation.
|
||||
|
||||
PR rtl-optimization/109585
|
||||
* tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
|
||||
|
||||
* gcc.dg/torture/pr109585.c: New testcase.
|
||||
|
||||
(cherry picked from commit 6d4bd27a60447c7505cb4783e675e98a191a8904)
|
||||
---
|
||||
gcc/testsuite/gcc.dg/torture/pr109585.c | 33 +++++++++++++++++++++++++
|
||||
gcc/tree-ssa-alias.cc | 2 +-
|
||||
2 files changed, 34 insertions(+), 1 deletion(-)
|
||||
create mode 100644 gcc/testsuite/gcc.dg/torture/pr109585.c
|
||||
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gcc.dg/torture/pr109585.c
|
||||
@@ -0,0 +1,33 @@
|
||||
+/* { dg-do run } */
|
||||
+
|
||||
+#include <stdlib.h>
|
||||
+
|
||||
+struct P {
|
||||
+ long v;
|
||||
+ struct P *n;
|
||||
+};
|
||||
+
|
||||
+struct F {
|
||||
+ long x;
|
||||
+ struct P fam[];
|
||||
+};
|
||||
+
|
||||
+int __attribute__((noipa))
|
||||
+f(struct F *f, int i)
|
||||
+{
|
||||
+ struct P *p = f->fam;
|
||||
+ asm("" : "+r"(f): "r"(p));
|
||||
+ p->v = 0;
|
||||
+ p->n = 0;
|
||||
+ return f->fam->n != 0;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+main()
|
||||
+{
|
||||
+ struct F *m = malloc (sizeof (long) + 2 * sizeof (struct P));
|
||||
+ m->fam[0].n = &m->fam[1];
|
||||
+ if (f (m, 0))
|
||||
+ abort ();
|
||||
+ return 0;
|
||||
+}
|
||||
--- a/gcc/tree-ssa-alias.cc
|
||||
+++ b/gcc/tree-ssa-alias.cc
|
||||
@@ -1330,7 +1330,7 @@ aliasing_component_refs_p (tree ref1,
|
||||
/* If we didn't find a common base, try the other way around. */
|
||||
if (cmp_outer <= 0
|
||||
|| (end_struct_ref1
|
||||
- && compare_type_sizes (TREE_TYPE (end_struct_ref1), type1) <= 0))
|
||||
+ && compare_type_sizes (TREE_TYPE (end_struct_ref1), type2) <= 0))
|
||||
{
|
||||
int res = aliasing_component_refs_walk (ref2, type2, base2,
|
||||
offset2, max_size2,
|
||||
24
toolchain/gcc/patches-13.x/002-case_insensitive.patch
Normal file
24
toolchain/gcc/patches-13.x/002-case_insensitive.patch
Normal file
@ -0,0 +1,24 @@
|
||||
commit 81cc26c706b2bc8c8c1eb1a322e5c5157900836e
|
||||
Author: Felix Fietkau <nbd@openwrt.org>
|
||||
Date: Sun Oct 19 21:45:51 2014 +0000
|
||||
|
||||
gcc: do not assume that the Mac OS X filesystem is case insensitive
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
|
||||
SVN-Revision: 42973
|
||||
|
||||
--- a/include/filenames.h
|
||||
+++ b/include/filenames.h
|
||||
@@ -44,11 +44,6 @@ extern "C" {
|
||||
# define IS_DIR_SEPARATOR(c) IS_DOS_DIR_SEPARATOR (c)
|
||||
# define IS_ABSOLUTE_PATH(f) IS_DOS_ABSOLUTE_PATH (f)
|
||||
#else /* not DOSish */
|
||||
-# if defined(__APPLE__)
|
||||
-# ifndef HAVE_CASE_INSENSITIVE_FILE_SYSTEM
|
||||
-# define HAVE_CASE_INSENSITIVE_FILE_SYSTEM 1
|
||||
-# endif
|
||||
-# endif /* __APPLE__ */
|
||||
# define HAS_DRIVE_SPEC(f) (0)
|
||||
# define IS_DIR_SEPARATOR(c) IS_UNIX_DIR_SEPARATOR (c)
|
||||
# define IS_ABSOLUTE_PATH(f) IS_UNIX_ABSOLUTE_PATH (f)
|
||||
35
toolchain/gcc/patches-13.x/010-documentation.patch
Normal file
35
toolchain/gcc/patches-13.x/010-documentation.patch
Normal file
@ -0,0 +1,35 @@
|
||||
commit 098bd91f5eae625c7d2ee621e10930fc4434e5e2
|
||||
Author: Luka Perkov <luka@openwrt.org>
|
||||
Date: Tue Feb 26 16:16:33 2013 +0000
|
||||
|
||||
gcc: don't build documentation
|
||||
|
||||
This closes #13039.
|
||||
|
||||
Signed-off-by: Luka Perkov <luka@openwrt.org>
|
||||
|
||||
SVN-Revision: 35807
|
||||
|
||||
--- a/gcc/Makefile.in
|
||||
+++ b/gcc/Makefile.in
|
||||
@@ -3397,18 +3397,10 @@ doc/gcc.info: $(TEXI_GCC_FILES)
|
||||
doc/gccint.info: $(TEXI_GCCINT_FILES)
|
||||
doc/cppinternals.info: $(TEXI_CPPINT_FILES)
|
||||
|
||||
-doc/%.info: %.texi
|
||||
- if [ x$(BUILD_INFO) = xinfo ]; then \
|
||||
- $(MAKEINFO) $(MAKEINFOFLAGS) -I . -I $(gcc_docdir) \
|
||||
- -I $(gcc_docdir)/include -o $@ $<; \
|
||||
- fi
|
||||
+doc/%.info:
|
||||
|
||||
# Duplicate entry to handle renaming of gccinstall.info
|
||||
-doc/gccinstall.info: $(TEXI_GCCINSTALL_FILES)
|
||||
- if [ x$(BUILD_INFO) = xinfo ]; then \
|
||||
- $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \
|
||||
- -I $(gcc_docdir)/include -o $@ $<; \
|
||||
- fi
|
||||
+doc/gccinstall.info:
|
||||
|
||||
doc/cpp.dvi: $(TEXI_CPP_FILES)
|
||||
doc/gcc.dvi: $(TEXI_GCC_FILES)
|
||||
20
toolchain/gcc/patches-13.x/110-Fix-MIPS-PR-84790.patch
Normal file
20
toolchain/gcc/patches-13.x/110-Fix-MIPS-PR-84790.patch
Normal file
@ -0,0 +1,20 @@
|
||||
Fix https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84790.
|
||||
MIPS16 functions have a static assembler prologue which clobbers
|
||||
registers v0 and v1. Add these register clobbers to function call
|
||||
instructions.
|
||||
|
||||
--- a/gcc/config/mips/mips.cc
|
||||
+++ b/gcc/config/mips/mips.cc
|
||||
@@ -3134,6 +3134,12 @@ mips_emit_call_insn (rtx pattern, rtx or
|
||||
emit_insn (gen_update_got_version ());
|
||||
}
|
||||
|
||||
+ if (TARGET_MIPS16 && TARGET_USE_GOT)
|
||||
+ {
|
||||
+ clobber_reg (&CALL_INSN_FUNCTION_USAGE (insn), MIPS16_PIC_TEMP);
|
||||
+ clobber_reg (&CALL_INSN_FUNCTION_USAGE (insn), MIPS_PROLOGUE_TEMP (word_mode));
|
||||
+ }
|
||||
+
|
||||
if (TARGET_MIPS16
|
||||
&& TARGET_EXPLICIT_RELOCS
|
||||
&& TARGET_CALL_CLOBBERED_GP)
|
||||
13
toolchain/gcc/patches-13.x/230-musl_libssp.patch
Normal file
13
toolchain/gcc/patches-13.x/230-musl_libssp.patch
Normal file
@ -0,0 +1,13 @@
|
||||
--- a/gcc/gcc.cc
|
||||
+++ b/gcc/gcc.cc
|
||||
@@ -972,7 +972,9 @@ proper position among the other output f
|
||||
#endif
|
||||
|
||||
#ifndef LINK_SSP_SPEC
|
||||
-#ifdef TARGET_LIBC_PROVIDES_SSP
|
||||
+#if DEFAULT_LIBC == LIBC_MUSL
|
||||
+#define LINK_SSP_SPEC "-lssp_nonshared"
|
||||
+#elif defined(TARGET_LIBC_PROVIDES_SSP)
|
||||
#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
|
||||
"|fstack-protector-strong|fstack-protector-explicit:}"
|
||||
#else
|
||||
@ -0,0 +1,21 @@
|
||||
commit ecf7671b769fe96f7b5134be442089f8bdba55d2
|
||||
Author: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Thu Aug 4 20:29:45 2016 +0200
|
||||
|
||||
gcc: add a patch to generate better code with Os on mips
|
||||
|
||||
Also happens to reduce compressed code size a bit
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/gcc/config/mips/mips.cc
|
||||
+++ b/gcc/config/mips/mips.cc
|
||||
@@ -20213,7 +20213,7 @@ mips_option_override (void)
|
||||
flag_pcc_struct_return = 0;
|
||||
|
||||
/* Decide which rtx_costs structure to use. */
|
||||
- if (optimize_size)
|
||||
+ if (0 && optimize_size)
|
||||
mips_cost = &mips_rtx_cost_optimize_size;
|
||||
else
|
||||
mips_cost = &mips_rtx_cost_data[mips_tune];
|
||||
33
toolchain/gcc/patches-13.x/810-arm-softfloat-libgcc.patch
Normal file
33
toolchain/gcc/patches-13.x/810-arm-softfloat-libgcc.patch
Normal file
@ -0,0 +1,33 @@
|
||||
commit 8570c4be394cff7282f332f97da2ff569a927ddb
|
||||
Author: Imre Kaloz <kaloz@openwrt.org>
|
||||
Date: Wed Feb 2 20:06:12 2011 +0000
|
||||
|
||||
fixup arm soft-float symbols
|
||||
|
||||
SVN-Revision: 25325
|
||||
|
||||
--- a/libgcc/config/arm/t-linux
|
||||
+++ b/libgcc/config/arm/t-linux
|
||||
@@ -1,6 +1,10 @@
|
||||
LIB1ASMSRC = arm/lib1funcs.S
|
||||
LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \
|
||||
- _ctzsi2 _arm_addsubdf3 _arm_addsubsf3
|
||||
+ _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 \
|
||||
+ _arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \
|
||||
+ _arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \
|
||||
+ _arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \
|
||||
+ _arm_fixsfsi _arm_fixunssfsi
|
||||
|
||||
# Just for these, we omit the frame pointer since it makes such a big
|
||||
# difference.
|
||||
--- a/gcc/config/arm/linux-elf.h
|
||||
+++ b/gcc/config/arm/linux-elf.h
|
||||
@@ -58,8 +58,6 @@
|
||||
%{shared:-lc} \
|
||||
%{!shared:%{profile:-lc_p}%{!profile:-lc}}"
|
||||
|
||||
-#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
|
||||
-
|
||||
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
|
||||
|
||||
#define LINUX_TARGET_LINK_SPEC "%{h*} \
|
||||
44
toolchain/gcc/patches-13.x/820-libgcc_pic.patch
Normal file
44
toolchain/gcc/patches-13.x/820-libgcc_pic.patch
Normal file
@ -0,0 +1,44 @@
|
||||
commit c96312958c0621e72c9b32da5bc224ffe2161384
|
||||
Author: Felix Fietkau <nbd@openwrt.org>
|
||||
Date: Mon Oct 19 23:26:09 2009 +0000
|
||||
|
||||
gcc: create a proper libgcc_pic.a static library for relinking (4.3.3+ for now, backport will follow)
|
||||
|
||||
SVN-Revision: 18086
|
||||
|
||||
--- a/libgcc/Makefile.in
|
||||
+++ b/libgcc/Makefile.in
|
||||
@@ -933,11 +933,12 @@ $(libgcov-driver-objects): %$(objext): $
|
||||
|
||||
# Static libraries.
|
||||
libgcc.a: $(libgcc-objects)
|
||||
+libgcc_pic.a: $(libgcc-s-objects)
|
||||
libgcov.a: $(libgcov-objects)
|
||||
libunwind.a: $(libunwind-objects)
|
||||
libgcc_eh.a: $(libgcc-eh-objects)
|
||||
|
||||
-libgcc.a libgcov.a libunwind.a libgcc_eh.a:
|
||||
+libgcc.a libgcov.a libunwind.a libgcc_eh.a libgcc_pic.a:
|
||||
-rm -f $@
|
||||
|
||||
objects="$(objects)"; \
|
||||
@@ -961,7 +962,7 @@ all: libunwind.a
|
||||
endif
|
||||
|
||||
ifeq ($(enable_shared),yes)
|
||||
-all: libgcc_eh.a libgcc_s$(SHLIB_EXT)
|
||||
+all: libgcc_eh.a libgcc_pic.a libgcc_s$(SHLIB_EXT)
|
||||
ifneq ($(LIBUNWIND),)
|
||||
all: libunwind$(SHLIB_EXT)
|
||||
libgcc_s$(SHLIB_EXT): libunwind$(SHLIB_EXT)
|
||||
@@ -1167,6 +1168,10 @@ install-shared:
|
||||
chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_eh.a
|
||||
$(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_eh.a
|
||||
|
||||
+ $(INSTALL_DATA) libgcc_pic.a $(mapfile) $(DESTDIR)$(inst_libdir)/
|
||||
+ chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_pic.a
|
||||
+ $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_pic.a
|
||||
+
|
||||
$(subst @multilib_dir@,$(MULTIDIR),$(subst \
|
||||
@shlib_base_name@,libgcc_s,$(subst \
|
||||
@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(SHLIB_INSTALL))))
|
||||
@ -0,0 +1,28 @@
|
||||
commit 7edc8ca5456d9743dd0075eb3cc5b04f4f24c8cc
|
||||
Author: Imre Kaloz <kaloz@openwrt.org>
|
||||
Date: Wed Feb 2 19:34:36 2011 +0000
|
||||
|
||||
add armv4 fixup patches
|
||||
|
||||
SVN-Revision: 25322
|
||||
|
||||
|
||||
--- a/gcc/config/arm/linux-eabi.h
|
||||
+++ b/gcc/config/arm/linux-eabi.h
|
||||
@@ -88,10 +88,15 @@
|
||||
#define MUSL_DYNAMIC_LINKER \
|
||||
"/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}%{mfdpic:-fdpic}.so.1"
|
||||
|
||||
+/* For armv4 we pass --fix-v4bx to linker to support EABI */
|
||||
+#undef TARGET_FIX_V4BX_SPEC
|
||||
+#define TARGET_FIX_V4BX_SPEC " %{mcpu=arm8|mcpu=arm810|mcpu=strongarm*"\
|
||||
+ "|march=armv4|mcpu=fa526|mcpu=fa626:--fix-v4bx}"
|
||||
+
|
||||
/* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
|
||||
use the GNU/Linux version, not the generic BPABI version. */
|
||||
#undef LINK_SPEC
|
||||
-#define LINK_SPEC EABI_LINK_SPEC \
|
||||
+#define LINK_SPEC EABI_LINK_SPEC TARGET_FIX_V4BX_SPEC \
|
||||
LINUX_OR_ANDROID_LD (LINUX_TARGET_LINK_SPEC, \
|
||||
LINUX_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC)
|
||||
|
||||
54
toolchain/gcc/patches-13.x/850-use_shared_libgcc.patch
Normal file
54
toolchain/gcc/patches-13.x/850-use_shared_libgcc.patch
Normal file
@ -0,0 +1,54 @@
|
||||
commit dcfc40358b5a3cae7320c17f8d1cebd5ad5540cd
|
||||
Author: Felix Fietkau <nbd@openwrt.org>
|
||||
Date: Sun Feb 12 20:25:47 2012 +0000
|
||||
|
||||
gcc 4.6: port over the missing patch 850-use_shared_libgcc.patch to prevent libgcc crap from leaking into every single binary
|
||||
|
||||
SVN-Revision: 30486
|
||||
--- a/gcc/config/arm/linux-eabi.h
|
||||
+++ b/gcc/config/arm/linux-eabi.h
|
||||
@@ -129,10 +129,6 @@
|
||||
"%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}} " \
|
||||
LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
|
||||
|
||||
-/* Use the default LIBGCC_SPEC, not the version in linux-elf.h, as we
|
||||
- do not use -lfloat. */
|
||||
-#undef LIBGCC_SPEC
|
||||
-
|
||||
/* Clear the instruction cache from `beg' to `end'. This is
|
||||
implemented in lib1funcs.S, so ensure an error if this definition
|
||||
is used. */
|
||||
--- a/gcc/config/linux.h
|
||||
+++ b/gcc/config/linux.h
|
||||
@@ -58,6 +58,10 @@ see the files COPYING3 and COPYING.RUNTI
|
||||
builtin_assert ("system=posix"); \
|
||||
} while (0)
|
||||
|
||||
+#ifndef LIBGCC_SPEC
|
||||
+#define LIBGCC_SPEC "%{static|static-libgcc:-lgcc}%{!static:%{!static-libgcc:-lgcc_s}}"
|
||||
+#endif
|
||||
+
|
||||
/* Determine which dynamic linker to use depending on whether GLIBC or
|
||||
uClibc or Bionic or musl is the default C library and whether
|
||||
-muclibc or -mglibc or -mbionic or -mmusl has been passed to change
|
||||
--- a/libgcc/mkmap-symver.awk
|
||||
+++ b/libgcc/mkmap-symver.awk
|
||||
@@ -136,5 +136,5 @@ function output(lib) {
|
||||
else if (inherit[lib])
|
||||
printf("} %s;\n", inherit[lib]);
|
||||
else
|
||||
- printf ("\n local:\n\t*;\n};\n");
|
||||
+ printf ("\n\t*;\n};\n");
|
||||
}
|
||||
--- a/gcc/config/rs6000/linux.h
|
||||
+++ b/gcc/config/rs6000/linux.h
|
||||
@@ -67,6 +67,9 @@
|
||||
#undef CPP_OS_DEFAULT_SPEC
|
||||
#define CPP_OS_DEFAULT_SPEC "%(cpp_os_linux)"
|
||||
|
||||
+#undef LIBGCC_SPEC
|
||||
+#define LIBGCC_SPEC "%{!static:%{!static-libgcc:-lgcc_s}} -lgcc"
|
||||
+
|
||||
#undef LINK_SHLIB_SPEC
|
||||
#define LINK_SHLIB_SPEC "%{shared:-shared} %{!shared: %{static:-static}} \
|
||||
%{static-pie:-static -pie --no-dynamic-linker -z text}"
|
||||
22
toolchain/gcc/patches-13.x/851-libgcc_no_compat.patch
Normal file
22
toolchain/gcc/patches-13.x/851-libgcc_no_compat.patch
Normal file
@ -0,0 +1,22 @@
|
||||
commit 64661de100da1ec1061ef3e5e400285dce115e6b
|
||||
Author: Felix Fietkau <nbd@openwrt.org>
|
||||
Date: Sun May 10 13:16:35 2015 +0000
|
||||
|
||||
gcc: add some size optimization patches
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
|
||||
SVN-Revision: 45664
|
||||
|
||||
--- a/libgcc/config/t-libunwind
|
||||
+++ b/libgcc/config/t-libunwind
|
||||
@@ -2,8 +2,7 @@
|
||||
|
||||
HOST_LIBGCC2_CFLAGS += -DUSE_GAS_SYMVER
|
||||
|
||||
-LIB2ADDEH = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c \
|
||||
- $(srcdir)/unwind-compat.c $(srcdir)/unwind-dw2-fde-compat.c
|
||||
+LIB2ADDEH = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
|
||||
LIB2ADDEHSTATIC = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
|
||||
|
||||
# Override the default value from t-slibgcc-elf-ver and mention -lunwind
|
||||
11
toolchain/gcc/patches-13.x/870-ppc_no_crtsavres.patch
Normal file
11
toolchain/gcc/patches-13.x/870-ppc_no_crtsavres.patch
Normal file
@ -0,0 +1,11 @@
|
||||
--- a/gcc/config/rs6000/rs6000-logue.cc
|
||||
+++ b/gcc/config/rs6000/rs6000-logue.cc
|
||||
@@ -344,7 +344,7 @@ rs6000_savres_strategy (rs6000_stack_t *
|
||||
/* Define cutoff for using out-of-line functions to save registers. */
|
||||
if (DEFAULT_ABI == ABI_V4 || TARGET_ELF)
|
||||
{
|
||||
- if (!optimize_size)
|
||||
+ if (1)
|
||||
{
|
||||
strategy |= SAVE_INLINE_FPRS | REST_INLINE_FPRS;
|
||||
strategy |= SAVE_INLINE_GPRS | REST_INLINE_GPRS;
|
||||
11
toolchain/gcc/patches-13.x/881-no_tm_section.patch
Normal file
11
toolchain/gcc/patches-13.x/881-no_tm_section.patch
Normal file
@ -0,0 +1,11 @@
|
||||
--- a/libgcc/crtstuff.c
|
||||
+++ b/libgcc/crtstuff.c
|
||||
@@ -152,7 +152,7 @@ call_ ## FUNC (void) \
|
||||
#endif
|
||||
|
||||
#if !defined(USE_TM_CLONE_REGISTRY) && defined(OBJECT_FORMAT_ELF)
|
||||
-# define USE_TM_CLONE_REGISTRY 1
|
||||
+# define USE_TM_CLONE_REGISTRY 0
|
||||
#elif !defined(USE_TM_CLONE_REGISTRY)
|
||||
# define USE_TM_CLONE_REGISTRY 0
|
||||
#endif
|
||||
9
toolchain/gcc/patches-13.x/900-bad-mips16-crt.patch
Normal file
9
toolchain/gcc/patches-13.x/900-bad-mips16-crt.patch
Normal file
@ -0,0 +1,9 @@
|
||||
--- a/libgcc/config/mips/t-mips16
|
||||
+++ b/libgcc/config/mips/t-mips16
|
||||
@@ -43,3 +43,6 @@ SYNC_CFLAGS = -mno-mips16
|
||||
|
||||
# Version these symbols if building libgcc.so.
|
||||
SHLIB_MAPFILES += $(srcdir)/config/mips/libgcc-mips16.ver
|
||||
+
|
||||
+CRTSTUFF_T_CFLAGS += -mno-mips16
|
||||
+CRTSTUFF_T_CFLAGS_S += -mno-mips16
|
||||
146
toolchain/gcc/patches-13.x/910-mbsd_multi.patch
Normal file
146
toolchain/gcc/patches-13.x/910-mbsd_multi.patch
Normal file
@ -0,0 +1,146 @@
|
||||
commit 99368862e44740ff4fd33760893f04e14f9dbdf1
|
||||
Author: Felix Fietkau <nbd@openwrt.org>
|
||||
Date: Tue Jul 31 00:52:27 2007 +0000
|
||||
|
||||
Port the mbsd_multi patch from freewrt, which adds -fhonour-copts. This will emit warnings in packages that don't use our target cflags properly
|
||||
|
||||
SVN-Revision: 8256
|
||||
|
||||
This patch brings over a feature from MirBSD:
|
||||
* -fhonour-copts
|
||||
If this option is not given, it's warned (depending
|
||||
on environment variables). This is to catch errors
|
||||
of misbuilt packages which override CFLAGS themselves.
|
||||
|
||||
This patch was authored by Thorsten Glaser <tg at mirbsd.de>
|
||||
with copyright assignment to the FSF in effect.
|
||||
|
||||
--- a/gcc/c-family/c-opts.cc
|
||||
+++ b/gcc/c-family/c-opts.cc
|
||||
@@ -104,6 +104,9 @@ static size_t include_cursor;
|
||||
/* Whether any standard preincluded header has been preincluded. */
|
||||
static bool done_preinclude;
|
||||
|
||||
+/* Check if a port honours COPTS. */
|
||||
+static int honour_copts = 0;
|
||||
+
|
||||
static void handle_OPT_d (const char *);
|
||||
static void set_std_cxx98 (int);
|
||||
static void set_std_cxx11 (int);
|
||||
@@ -475,6 +478,12 @@ c_common_handle_option (size_t scode, co
|
||||
flag_no_builtin = !value;
|
||||
break;
|
||||
|
||||
+ case OPT_fhonour_copts:
|
||||
+ if (c_language == clk_c) {
|
||||
+ honour_copts++;
|
||||
+ }
|
||||
+ break;
|
||||
+
|
||||
case OPT_fconstant_string_class_:
|
||||
constant_string_class_name = arg;
|
||||
break;
|
||||
@@ -1228,6 +1237,47 @@ c_common_init (void)
|
||||
return false;
|
||||
}
|
||||
|
||||
+ if (c_language == clk_c) {
|
||||
+ char *ev = getenv ("GCC_HONOUR_COPTS");
|
||||
+ int evv;
|
||||
+ if (ev == NULL)
|
||||
+ evv = -1;
|
||||
+ else if ((*ev == '0') || (*ev == '\0'))
|
||||
+ evv = 0;
|
||||
+ else if (*ev == '1')
|
||||
+ evv = 1;
|
||||
+ else if (*ev == '2')
|
||||
+ evv = 2;
|
||||
+ else if (*ev == 's')
|
||||
+ evv = -1;
|
||||
+ else {
|
||||
+ warning (0, "unknown GCC_HONOUR_COPTS value, assuming 1");
|
||||
+ evv = 1; /* maybe depend this on something like MIRBSD_NATIVE? */
|
||||
+ }
|
||||
+ if (evv == 1) {
|
||||
+ if (honour_copts == 0) {
|
||||
+ error ("someone does not honour COPTS at all in lenient mode");
|
||||
+ return false;
|
||||
+ } else if (honour_copts != 1) {
|
||||
+ warning (0, "someone does not honour COPTS correctly, passed %d times",
|
||||
+ honour_copts);
|
||||
+ }
|
||||
+ } else if (evv == 2) {
|
||||
+ if (honour_copts == 0) {
|
||||
+ error ("someone does not honour COPTS at all in strict mode");
|
||||
+ return false;
|
||||
+ } else if (honour_copts != 1) {
|
||||
+ error ("someone does not honour COPTS correctly, passed %d times",
|
||||
+ honour_copts);
|
||||
+ return false;
|
||||
+ }
|
||||
+ } else if (evv == 0) {
|
||||
+ if (honour_copts != 1)
|
||||
+ inform (UNKNOWN_LOCATION, "someone does not honour COPTS correctly, passed %d times",
|
||||
+ honour_copts);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
return true;
|
||||
}
|
||||
|
||||
--- a/gcc/c-family/c.opt
|
||||
+++ b/gcc/c-family/c.opt
|
||||
@@ -1837,6 +1837,9 @@ C++ ObjC++ Optimization Alias(fexception
|
||||
fhonor-std
|
||||
C++ ObjC++ WarnRemoved
|
||||
|
||||
+fhonour-copts
|
||||
+C ObjC C++ ObjC++ RejectNegative
|
||||
+
|
||||
fhosted
|
||||
C ObjC
|
||||
Assume normal C execution environment.
|
||||
--- a/gcc/common.opt
|
||||
+++ b/gcc/common.opt
|
||||
@@ -1801,6 +1801,9 @@ fharden-conditional-branches
|
||||
Common Var(flag_harden_conditional_branches) Optimization
|
||||
Harden conditional branches by checking reversed conditions.
|
||||
|
||||
+fhonour-copts
|
||||
+Common RejectNegative
|
||||
+
|
||||
; Nonzero means ignore `#ident' directives. 0 means handle them.
|
||||
; Generate position-independent code for executables if possible
|
||||
; On SVR4 targets, it also controls whether or not to emit a
|
||||
--- a/gcc/doc/invoke.texi
|
||||
+++ b/gcc/doc/invoke.texi
|
||||
@@ -10061,6 +10061,17 @@ This option is only supported for C and
|
||||
@option{-Wall} and by @option{-Wpedantic}, which can be disabled with
|
||||
@option{-Wno-pointer-sign}.
|
||||
|
||||
+@item -fhonour-copts
|
||||
+@opindex fhonour-copts
|
||||
+If @env{GCC_HONOUR_COPTS} is set to 1, abort if this option is not
|
||||
+given at least once, and warn if it is given more than once.
|
||||
+If @env{GCC_HONOUR_COPTS} is set to 2, abort if this option is not
|
||||
+given exactly once.
|
||||
+If @env{GCC_HONOUR_COPTS} is set to 0 or unset, warn if this option
|
||||
+is not given exactly once.
|
||||
+The warning is quelled if @env{GCC_HONOUR_COPTS} is set to @samp{s}.
|
||||
+This flag and environment variable only affect the C language.
|
||||
+
|
||||
@opindex Wstack-protector
|
||||
@opindex Wno-stack-protector
|
||||
@item -Wstack-protector
|
||||
--- a/gcc/opts.cc
|
||||
+++ b/gcc/opts.cc
|
||||
@@ -2767,6 +2767,9 @@ common_handle_option (struct gcc_options
|
||||
add_comma_separated_to_vector (&opts->x_flag_ignored_attributes, arg);
|
||||
break;
|
||||
|
||||
+ case OPT_fhonour_copts:
|
||||
+ break;
|
||||
+
|
||||
case OPT_Werror:
|
||||
dc->warning_as_error_requested = value;
|
||||
break;
|
||||
22
toolchain/gcc/patches-13.x/920-specs_nonfatal_getenv.patch
Normal file
22
toolchain/gcc/patches-13.x/920-specs_nonfatal_getenv.patch
Normal file
@ -0,0 +1,22 @@
|
||||
Author: Jo-Philipp Wich <jow@openwrt.org>
|
||||
Date: Sat Apr 21 03:02:39 2012 +0000
|
||||
|
||||
gcc: add patch to make the getenv() spec function nonfatal if requested environment variable is unset
|
||||
|
||||
SVN-Revision: 31390
|
||||
|
||||
--- a/gcc/gcc.cc
|
||||
+++ b/gcc/gcc.cc
|
||||
@@ -10174,8 +10174,10 @@ getenv_spec_function (int argc, const ch
|
||||
}
|
||||
|
||||
if (!value)
|
||||
- fatal_error (input_location,
|
||||
- "environment variable %qs not defined", varname);
|
||||
+ {
|
||||
+ warning (input_location, "environment variable %qs not defined", varname);
|
||||
+ value = "";
|
||||
+ }
|
||||
|
||||
/* We have to escape every character of the environment variable so
|
||||
they are not interpreted as active spec characters. A
|
||||
@ -0,0 +1,67 @@
|
||||
From dda6b050cd74a352670787a294596a9c56c21327 Mon Sep 17 00:00:00 2001
|
||||
From: Yousong Zhou <yszhou4tech@gmail.com>
|
||||
Date: Fri, 4 May 2018 18:20:53 +0800
|
||||
Subject: [PATCH] gotools: fix compilation when making cross compiler
|
||||
|
||||
libgo is "the runtime support library for the Go programming language.
|
||||
This library is intended for use with the Go frontend."
|
||||
|
||||
gccgo will link target files with libgo.so which depends on libgcc_s.so.1, but
|
||||
the linker will complain that it cannot find it. That's because shared libgcc
|
||||
is not present in the install directory yet. libgo.so was made without problem
|
||||
because gcc will emit -lgcc_s when compiled with -shared option. When gotools
|
||||
were being made, it was supplied with -static-libgcc thus no link option was
|
||||
provided. Check LIBGO in gcc/go/gcc-spec.c for how gccgo make a builtin spec
|
||||
for linking with libgo.so
|
||||
|
||||
- GccgoCrossCompilation, https://github.com/golang/go/wiki/GccgoCrossCompilation
|
||||
- Cross-building instructions, http://www.eglibc.org/archives/patches/msg00078.html
|
||||
|
||||
When 3-pass GCC compilation is used, shared libgcc runtime libraries will be
|
||||
available after gcc pass2 completed and will meet the gotools link requirement
|
||||
at gcc pass3
|
||||
---
|
||||
gotools/Makefile.am | 4 +++-
|
||||
gotools/Makefile.in | 4 +++-
|
||||
2 files changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/gotools/Makefile.am
|
||||
+++ b/gotools/Makefile.am
|
||||
@@ -26,6 +26,7 @@ PWD_COMMAND = $${PWDCMD-pwd}
|
||||
STAMP = echo timestamp >
|
||||
|
||||
libgodir = ../$(target_noncanonical)/libgo
|
||||
+libgccdir = ../$(target_noncanonical)/libgcc
|
||||
LIBGODEP = $(libgodir)/libgo.la
|
||||
|
||||
LIBGOTOOL = $(libgodir)/libgotool.a
|
||||
@@ -41,7 +42,8 @@ GOCFLAGS = $(CFLAGS_FOR_TARGET)
|
||||
GOCOMPILE = $(GOCOMPILER) $(GOCFLAGS)
|
||||
|
||||
AM_GOCFLAGS = -I $(libgodir)
|
||||
-AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs
|
||||
+AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs \
|
||||
+ -L $(libgccdir) -L $(libgccdir)/.libs -lgcc_s
|
||||
GOLINK = $(GOCOMPILER) $(GOCFLAGS) $(AM_GOCFLAGS) $(LDFLAGS) $(AM_LDFLAGS) -o $@
|
||||
|
||||
libgosrcdir = $(srcdir)/../libgo/go
|
||||
--- a/gotools/Makefile.in
|
||||
+++ b/gotools/Makefile.in
|
||||
@@ -337,6 +337,7 @@ mkinstalldirs = $(SHELL) $(toplevel_srcd
|
||||
PWD_COMMAND = $${PWDCMD-pwd}
|
||||
STAMP = echo timestamp >
|
||||
libgodir = ../$(target_noncanonical)/libgo
|
||||
+libgccdir = ../$(target_noncanonical)/libgcc
|
||||
LIBGODEP = $(libgodir)/libgo.la
|
||||
LIBGOTOOL = $(libgodir)/libgotool.a
|
||||
@NATIVE_FALSE@GOCOMPILER = $(GOC)
|
||||
@@ -346,7 +347,8 @@ LIBGOTOOL = $(libgodir)/libgotool.a
|
||||
GOCFLAGS = $(CFLAGS_FOR_TARGET)
|
||||
GOCOMPILE = $(GOCOMPILER) $(GOCFLAGS)
|
||||
AM_GOCFLAGS = -I $(libgodir)
|
||||
-AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs
|
||||
+AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs \
|
||||
+ -L $(libgccdir) -L $(libgccdir)/.libs -lgcc_s
|
||||
GOLINK = $(GOCOMPILER) $(GOCFLAGS) $(AM_GOCFLAGS) $(LDFLAGS) $(AM_LDFLAGS) -o $@
|
||||
libgosrcdir = $(srcdir)/../libgo/go
|
||||
cmdsrcdir = $(libgosrcdir)/cmd
|
||||
@ -0,0 +1,45 @@
|
||||
commit 9c6e71079b46ad5433165feaa2001450f2017b56
|
||||
Author: Przemysław Buczkowski <prem@prem.moe>
|
||||
Date: Mon Aug 16 13:16:21 2021 +0100
|
||||
|
||||
GCC: Patch for Apple Silicon compatibility
|
||||
|
||||
This patch fixes a linker error occuring when compiling
|
||||
the cross-compiler on macOS and ARM64 architecture.
|
||||
|
||||
Adapted from:
|
||||
https://github.com/richfelker/musl-cross-make/issues/116#issuecomment-823612404
|
||||
|
||||
Change-Id: Ia3ee98a163bbb62689f42e2da83a5ef36beb0913
|
||||
Reviewed-on: https://review.haiku-os.org/c/buildtools/+/4329
|
||||
Reviewed-by: John Scipione <jscipione@gmail.com>
|
||||
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
|
||||
|
||||
--- a/gcc/config/aarch64/aarch64.h
|
||||
+++ b/gcc/config/aarch64/aarch64.h
|
||||
@@ -1185,7 +1185,7 @@ extern enum aarch64_code_model aarch64_c
|
||||
|
||||
/* Extra specs when building a native AArch64-hosted compiler.
|
||||
Option rewriting rules based on host system. */
|
||||
-#if defined(__aarch64__)
|
||||
+#if defined(__aarch64__) && ! defined(__APPLE__)
|
||||
extern const char *host_detect_local_cpu (int argc, const char **argv);
|
||||
#define HAVE_LOCAL_CPU_DETECT
|
||||
# define EXTRA_SPEC_FUNCTIONS \
|
||||
--- a/gcc/config/host-darwin.cc
|
||||
+++ b/gcc/config/host-darwin.cc
|
||||
@@ -23,6 +23,8 @@
|
||||
#include "options.h"
|
||||
#include "diagnostic-core.h"
|
||||
#include "config/host-darwin.h"
|
||||
+#include "hosthooks.h"
|
||||
+#include "hosthooks-def.h"
|
||||
#include <errno.h>
|
||||
|
||||
/* For Darwin (macOS only) platforms, without ASLR (PIE) enabled on the
|
||||
@@ -181,3 +183,5 @@ darwin_gt_pch_use_address (void *&addr,
|
||||
|
||||
return 1;
|
||||
}
|
||||
+
|
||||
+const struct host_hooks host_hooks = HOST_HOOKS_INITIALIZER;
|
||||
@ -7,12 +7,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=xz
|
||||
PKG_VERSION:=5.4.2
|
||||
PKG_VERSION:=5.4.3
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=@SF/lzmautils \
|
||||
http://tukaani.org/xz
|
||||
PKG_HASH:=aa49909cbd9028c4666a35fa4975f9a6203ed98154fbb8223ee43ef9ceee97c3
|
||||
PKG_HASH:=9243a04598d7a70c1f567a0143a255581ac5c64b140fd55fd5cbc1e00b0e6f90
|
||||
PKG_CPE_ID:=cpe:/a:tukaani:xz
|
||||
|
||||
HOST_BUILD_PARALLEL:=1
|
||||
|
||||
Loading…
Reference in New Issue
Block a user