drivers/soc/qcom/llcc-qcom.c | 56 ++++++++++++++++++++++++++++++++------ include/linux/soc/qcom/llcc-qcom.h | 4 +++ 2 files changed, 52 insertions(+), 8 deletions(-)
Update the IPQ5424 LLCC slice configuration table to give the PPE
and Wi-Fi datapaths dedicated slices.
Assign slice IDs 1 and 5 to the PPE RX descriptor and RX fill use cases,
slice IDs 6 and 7 to the Wi-Fi radios connected over PCIe, and slice ID
2 to the CPU subsystem. Adjust the corresponding capacities, priorities,
and way masks for these consumers.
These slice assignments are based on recommendations from the
performance team, following throughput measurements on IPQ5424.
Having the dedicated slice configuration for each of these use cases
helps to improve the networking throughput by more than 1 Gbps.
Rename the usecase IDs for slice IDs 1 and 2 because LLCC_CPUSS and
LLCC_VIDSC0 do not describe the actual users of those slices.
Assisted-by: LLM
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com>
---
Changes in v3:
- Add more context to the commit message
- Pick up the R-b tag
- Link to v2: https://patch.msgid.link/20260811-ipq5424_llcc_updates-v2-1-1e4350585671@oss.qualcomm.com
Changes in v2:
- Updated the commit message decribing why the change is needed.
- Link to v1: https://patch.msgid.link/20260807-ipq5424_llcc_updates-v1-1-1f56362ff687@oss.qualcomm.com
To: Bjorn Andersson <andersson@kernel.org>
To: Konrad Dybcio <konradybcio@kernel.org>
Cc: linux-arm-msm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
drivers/soc/qcom/llcc-qcom.c | 56 ++++++++++++++++++++++++++++++++------
include/linux/soc/qcom/llcc-qcom.h | 4 +++
2 files changed, 52 insertions(+), 8 deletions(-)
diff --git a/drivers/soc/qcom/llcc-qcom.c b/drivers/soc/qcom/llcc-qcom.c
index 733999867bbf..d60431ace50f 100644
--- a/drivers/soc/qcom/llcc-qcom.c
+++ b/drivers/soc/qcom/llcc-qcom.c
@@ -626,11 +626,11 @@ static const struct llcc_slice_config glymur_data[] = {
static const struct llcc_slice_config ipq5424_data[] = {
{
- .usecase_id = LLCC_CPUSS,
+ .usecase_id = LLCC_PPE_RXDESC,
.slice_id = 1,
- .max_cap = 768,
- .priority = 1,
- .bonus_ways = 0xFFFF,
+ .max_cap = 128,
+ .priority = 3,
+ .bonus_ways = 0x0FFF,
.retain_on_pc = true,
.activate_on_init = true,
.write_scid_cacheable_en = true,
@@ -642,12 +642,52 @@ static const struct llcc_slice_config ipq5424_data[] = {
.vict_prio = true,
},
{
- .usecase_id = LLCC_VIDSC0,
+ .usecase_id = LLCC_CPUSS,
.slice_id = 2,
- .max_cap = 256,
- .priority = 2,
+ .max_cap = 768,
+ .priority = 1,
.fixed_size = true,
- .bonus_ways = 0xF000,
+ .bonus_ways = 0x0FFF,
+ .retain_on_pc = true,
+ .activate_on_init = true,
+ .write_scid_cacheable_en = true,
+ .stale_en = true,
+ .stale_cap_en = true,
+ },
+ {
+ .usecase_id = LLCC_PPE_RXFILL,
+ .slice_id = 5,
+ .max_cap = 128,
+ .priority = 3,
+ .bonus_ways = 0x0FFF,
+ .retain_on_pc = true,
+ .activate_on_init = true,
+ .write_scid_cacheable_en = true,
+ .stale_en = true,
+ .stale_cap_en = true,
+ .alloc_oneway_en = true,
+ .ovcap_en = true,
+ .ovcap_prio = true,
+ .vict_prio = true,
+ },
+ {
+ .usecase_id = LLCC_WLAN_5G,
+ .slice_id = 6,
+ .max_cap = 128,
+ .priority = 3,
+ .bonus_ways = 0xC000,
+ .retain_on_pc = true,
+ .activate_on_init = true,
+ .write_scid_cacheable_en = true,
+ .stale_en = true,
+ .stale_cap_en = true,
+ },
+ {
+ .usecase_id = LLCC_WLAN_6G,
+ .slice_id = 7,
+ .max_cap = 128,
+ .priority = 3,
+ .bonus_ways = 0x3000,
.retain_on_pc = true,
.activate_on_init = true,
.write_scid_cacheable_en = true,
diff --git a/include/linux/soc/qcom/llcc-qcom.h b/include/linux/soc/qcom/llcc-qcom.h
index f3ed63e475ab..1ccc429401e8 100644
--- a/include/linux/soc/qcom/llcc-qcom.h
+++ b/include/linux/soc/qcom/llcc-qcom.h
@@ -86,6 +86,10 @@
#define LLCC_CPUSS_HEU 94
#define LLCC_PCIE_TCU 97
#define LLCC_MDM_PNG_FIXED 100
+#define LLCC_PPE_RXDESC 101
+#define LLCC_PPE_RXFILL 102
+#define LLCC_WLAN_5G 103
+#define LLCC_WLAN_6G 104
/**
* struct llcc_slice_desc - Cache slice descriptor
---
base-commit: 6a746cd265aed59107ebdaa9ce039bb832922969
change-id: 20260806-ipq5424_llcc_updates-f9851d6db886
Best regards,
--
Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com>
On Wed, 19 Aug 2026 21:53:27 +0530, Kathiravan Thirumoorthy wrote:
> Update the IPQ5424 LLCC slice configuration table to give the PPE
> and Wi-Fi datapaths dedicated slices.
>
> Assign slice IDs 1 and 5 to the PPE RX descriptor and RX fill use cases,
> slice IDs 6 and 7 to the Wi-Fi radios connected over PCIe, and slice ID
> 2 to the CPU subsystem. Adjust the corresponding capacities, priorities,
> and way masks for these consumers.
>
> [...]
Applied, thanks!
[1/1] soc: qcom: llcc: Update the SCT table for IPQ5424
commit: 57bf822e3c692e1f204d3d8674967344e7e05549
Best regards,
--
Bjorn Andersson <andersson@kernel.org>
On 8/19/26 6:23 PM, Kathiravan Thirumoorthy wrote: > Update the IPQ5424 LLCC slice configuration table to give the PPE > and Wi-Fi datapaths dedicated slices. > > Assign slice IDs 1 and 5 to the PPE RX descriptor and RX fill use cases, > slice IDs 6 and 7 to the Wi-Fi radios connected over PCIe, and slice ID > 2 to the CPU subsystem. Adjust the corresponding capacities, priorities, > and way masks for these consumers. > > These slice assignments are based on recommendations from the > performance team, following throughput measurements on IPQ5424. > Having the dedicated slice configuration for each of these use cases > helps to improve the networking throughput by more than 1 Gbps. > > Rename the usecase IDs for slice IDs 1 and 2 because LLCC_CPUSS and > LLCC_VIDSC0 do not describe the actual users of those slices. > > Assisted-by: LLM > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> > Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com> > --- Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Konrad
© 2016 - 2026 Red Hat, Inc.