* [PATCH net 1/4] net: ipa: reg: include <linux/bug.h>
2023-03-14 20:38 [PATCH net 0/4] net: ipa: minor bug fixes Alex Elder
@ 2023-03-14 20:38 ` Alex Elder
2023-03-14 20:38 ` [PATCH net 2/4] net: ipa: add two missing declarations Alex Elder
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Alex Elder @ 2023-03-14 20:38 UTC (permalink / raw)
To: davem, edumazet, kuba, pabeni
Cc: caleb.connolly, mka, evgreen, andersson, quic_cpratapa,
quic_avuyyuru, quic_jponduru, quic_subashab, elder, netdev,
linux-arm-msm, linux-kernel
When "reg.h" got created, it included calls to WARN() and WARN_ON().
Those macros are defined via <linux/bug.h>. In addition, it uses
is_power_of_2(), which is defined in <linux/log2.h>. Include those
files so IPA "reg.h" has access to all definitions it requires.
Meanwhile, <linux/bits.h> is included but nothing defined therein
is required directly in "reg.h", so get rid of that.
Fixes: a476ec164a50 ("net: ipa: start generalizing "ipa_reg"")
Signed-off-by: Alex Elder <elder@linaro.org>
---
drivers/net/ipa/reg.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ipa/reg.h b/drivers/net/ipa/reg.h
index 57b457f39b6e2..2ee07eebca677 100644
--- a/drivers/net/ipa/reg.h
+++ b/drivers/net/ipa/reg.h
@@ -6,7 +6,8 @@
#define _REG_H_
#include <linux/types.h>
-#include <linux/bits.h>
+#include <linux/log2.h>
+#include <linux/bug.h>
/**
* struct reg - A register descriptor
--
2.34.1
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH net 2/4] net: ipa: add two missing declarations
2023-03-14 20:38 [PATCH net 0/4] net: ipa: minor bug fixes Alex Elder
2023-03-14 20:38 ` [PATCH net 1/4] net: ipa: reg: include <linux/bug.h> Alex Elder
@ 2023-03-14 20:38 ` Alex Elder
2023-03-14 20:38 ` [PATCH net 3/4] net: ipa: kill FILT_ROUT_CACHE_CFG IPA register Alex Elder
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Alex Elder @ 2023-03-14 20:38 UTC (permalink / raw)
To: davem, edumazet, kuba, pabeni
Cc: caleb.connolly, mka, evgreen, andersson, quic_cpratapa,
quic_avuyyuru, quic_jponduru, quic_subashab, elder, netdev,
linux-arm-msm, linux-kernel
When gsi_reg_init() got added, its declaration was added to
"gsi_reg.h" without declaring the two struct pointer types it uses.
Add these struct declarations to "gsi_reg.h".
Fixes: e68cef8906ea ("net: ipa: introduce gsi_reg_init()")
Signed-off-by: Alex Elder <elder@linaro.org>
---
drivers/net/ipa/gsi_reg.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/ipa/gsi_reg.h b/drivers/net/ipa/gsi_reg.h
index f62f0a5c653d1..48fde65fa2e8a 100644
--- a/drivers/net/ipa/gsi_reg.h
+++ b/drivers/net/ipa/gsi_reg.h
@@ -10,6 +10,10 @@
#include <linux/bits.h>
+struct platform_device;
+
+struct gsi;
+
/**
* DOC: GSI Registers
*
--
2.34.1
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH net 3/4] net: ipa: kill FILT_ROUT_CACHE_CFG IPA register
2023-03-14 20:38 [PATCH net 0/4] net: ipa: minor bug fixes Alex Elder
2023-03-14 20:38 ` [PATCH net 1/4] net: ipa: reg: include <linux/bug.h> Alex Elder
2023-03-14 20:38 ` [PATCH net 2/4] net: ipa: add two missing declarations Alex Elder
@ 2023-03-14 20:38 ` Alex Elder
2023-03-14 20:38 ` [PATCH net 4/4] net: ipa: fix some register validity checks Alex Elder
2023-03-14 21:23 ` [PATCH net 0/4] net: ipa: minor bug fixes Alex Elder
4 siblings, 0 replies; 6+ messages in thread
From: Alex Elder @ 2023-03-14 20:38 UTC (permalink / raw)
To: davem, edumazet, kuba, pabeni
Cc: caleb.connolly, mka, evgreen, andersson, quic_cpratapa,
quic_avuyyuru, quic_jponduru, quic_subashab, elder, netdev,
linux-arm-msm, linux-kernel
A recent commit defined a few IPA registers used for IPA v5.0+.
One of those was a mistake. Although the filter and router caches
get *flushed* using a single register, they use distinct registers
(ENDP_FILTER_CACHE_CFG and ENDP_ROUTER_CACHE_CFG) for configuration.
And although there *exists* a FILT_ROUT_CACHE_CFG register, it is
not needed in upstream code. So get rid of definitions related to
FILT_ROUT_CACHE_CFG, because they are not needed.
Fixes: de101ca79f97 ("net: ipa: define IPA v5.0+ registers")
Signed-off-by: Alex Elder <elder@linaro.org>
---
drivers/net/ipa/ipa_reg.c | 4 ++--
drivers/net/ipa/ipa_reg.h | 9 ---------
2 files changed, 2 insertions(+), 11 deletions(-)
diff --git a/drivers/net/ipa/ipa_reg.c b/drivers/net/ipa/ipa_reg.c
index 735fa65916097..463a31dfa9f47 100644
--- a/drivers/net/ipa/ipa_reg.c
+++ b/drivers/net/ipa/ipa_reg.c
@@ -39,7 +39,8 @@ static bool ipa_reg_id_valid(struct ipa *ipa, enum ipa_reg_id reg_id)
return version <= IPA_VERSION_3_1;
case ENDP_FILTER_ROUTER_HSH_CFG:
- return version != IPA_VERSION_4_2;
+ return version < IPA_VERSION_5_0 &&
+ version != IPA_VERSION_4_2;
case IRQ_SUSPEND_EN:
case IRQ_SUSPEND_CLR:
@@ -52,7 +53,6 @@ static bool ipa_reg_id_valid(struct ipa *ipa, enum ipa_reg_id reg_id)
case QSB_MAX_WRITES:
case QSB_MAX_READS:
case FILT_ROUT_HASH_EN:
- case FILT_ROUT_CACHE_CFG:
case FILT_ROUT_HASH_FLUSH:
case FILT_ROUT_CACHE_FLUSH:
case STATE_AGGR_ACTIVE:
diff --git a/drivers/net/ipa/ipa_reg.h b/drivers/net/ipa/ipa_reg.h
index 28aa1351dd488..ff2be8be0f683 100644
--- a/drivers/net/ipa/ipa_reg.h
+++ b/drivers/net/ipa/ipa_reg.h
@@ -61,7 +61,6 @@ enum ipa_reg_id {
QSB_MAX_WRITES,
QSB_MAX_READS,
FILT_ROUT_HASH_EN, /* Not IPA v5.0+ */
- FILT_ROUT_CACHE_CFG, /* IPA v5.0+ */
FILT_ROUT_HASH_FLUSH, /* Not IPA v5.0+ */
FILT_ROUT_CACHE_FLUSH, /* IPA v5.0+ */
STATE_AGGR_ACTIVE,
@@ -206,14 +205,6 @@ enum ipa_reg_qsb_max_reads_field_id {
GEN_QMB_1_MAX_READS_BEATS, /* IPA v4.0+ */
};
-/* FILT_ROUT_CACHE_CFG register */
-enum ipa_reg_filt_rout_cache_cfg_field_id {
- ROUTER_CACHE_EN,
- FILTER_CACHE_EN,
- LOW_PRI_HASH_HIT_DISABLE,
- LRU_EVICTION_THRESHOLD,
-};
-
/* FILT_ROUT_HASH_EN and FILT_ROUT_HASH_FLUSH registers */
enum ipa_reg_filt_rout_hash_field_id {
IPV6_ROUTER_HASH,
--
2.34.1
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH net 4/4] net: ipa: fix some register validity checks
2023-03-14 20:38 [PATCH net 0/4] net: ipa: minor bug fixes Alex Elder
` (2 preceding siblings ...)
2023-03-14 20:38 ` [PATCH net 3/4] net: ipa: kill FILT_ROUT_CACHE_CFG IPA register Alex Elder
@ 2023-03-14 20:38 ` Alex Elder
2023-03-14 21:23 ` [PATCH net 0/4] net: ipa: minor bug fixes Alex Elder
4 siblings, 0 replies; 6+ messages in thread
From: Alex Elder @ 2023-03-14 20:38 UTC (permalink / raw)
To: davem, edumazet, kuba, pabeni
Cc: caleb.connolly, mka, evgreen, andersson, quic_cpratapa,
quic_avuyyuru, quic_jponduru, quic_subashab, elder, netdev,
linux-arm-msm, linux-kernel
A recent commit defined HW_PARAM_4 as a GSI register ID but did not
add it to gsi_reg_id_valid() to indicate it's valid (for IPA v5.0+).
Add version checks for the HW_PARAM_2 and INTER_EE IRQ GSI registers
there as well.
IPA v5.0 supports up to 8 source and destination resource groups.
Update the validity check (and the comments where the register IDs
are defined) to reflect that. Similarly update comments and
validity checks for the hash/cache-related registers.
Note that this patch fixes an omission and constrains things
further, but these don't technically represent bugs.
Fixes: f651334e1ef5 ("net: ipa: add HW_PARAM_4 GSI register")
Signed-off-by: Alex Elder <elder@linaro.org>
---
drivers/net/ipa/gsi_reg.c | 9 ++++++++-
drivers/net/ipa/ipa_reg.c | 24 ++++++++++++++++--------
drivers/net/ipa/ipa_reg.h | 12 ++++++------
3 files changed, 30 insertions(+), 15 deletions(-)
diff --git a/drivers/net/ipa/gsi_reg.c b/drivers/net/ipa/gsi_reg.c
index 1412b67304c8e..1651fbad4bd54 100644
--- a/drivers/net/ipa/gsi_reg.c
+++ b/drivers/net/ipa/gsi_reg.c
@@ -15,6 +15,14 @@ static bool gsi_reg_id_valid(struct gsi *gsi, enum gsi_reg_id reg_id)
switch (reg_id) {
case INTER_EE_SRC_CH_IRQ_MSK:
case INTER_EE_SRC_EV_CH_IRQ_MSK:
+ return gsi->version >= IPA_VERSION_3_5;
+
+ case HW_PARAM_2:
+ return gsi->version >= IPA_VERSION_3_5_1;
+
+ case HW_PARAM_4:
+ return gsi->version >= IPA_VERSION_5_0;
+
case CH_C_CNTXT_0:
case CH_C_CNTXT_1:
case CH_C_CNTXT_2:
@@ -43,7 +51,6 @@ static bool gsi_reg_id_valid(struct gsi *gsi, enum gsi_reg_id reg_id)
case CH_CMD:
case EV_CH_CMD:
case GENERIC_CMD:
- case HW_PARAM_2:
case CNTXT_TYPE_IRQ:
case CNTXT_TYPE_IRQ_MSK:
case CNTXT_SRC_CH_IRQ:
diff --git a/drivers/net/ipa/ipa_reg.c b/drivers/net/ipa/ipa_reg.c
index 463a31dfa9f47..3f475428ddddb 100644
--- a/drivers/net/ipa/ipa_reg.c
+++ b/drivers/net/ipa/ipa_reg.c
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0
/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
- * Copyright (C) 2019-2022 Linaro Ltd.
+ * Copyright (C) 2019-2023 Linaro Ltd.
*/
#include <linux/io.h>
@@ -15,6 +15,17 @@ static bool ipa_reg_id_valid(struct ipa *ipa, enum ipa_reg_id reg_id)
enum ipa_version version = ipa->version;
switch (reg_id) {
+ case FILT_ROUT_HASH_EN:
+ return version == IPA_VERSION_4_2;
+
+ case FILT_ROUT_HASH_FLUSH:
+ return version < IPA_VERSION_5_0 && version != IPA_VERSION_4_2;
+
+ case FILT_ROUT_CACHE_FLUSH:
+ case ENDP_FILTER_CACHE_CFG:
+ case ENDP_ROUTER_CACHE_CFG:
+ return version >= IPA_VERSION_5_0;
+
case IPA_BCR:
case COUNTER_CFG:
return version < IPA_VERSION_4_5;
@@ -32,11 +43,13 @@ static bool ipa_reg_id_valid(struct ipa *ipa, enum ipa_reg_id reg_id)
case SRC_RSRC_GRP_45_RSRC_TYPE:
case DST_RSRC_GRP_45_RSRC_TYPE:
return version <= IPA_VERSION_3_1 ||
- version == IPA_VERSION_4_5;
+ version == IPA_VERSION_4_5 ||
+ version == IPA_VERSION_5_0;
case SRC_RSRC_GRP_67_RSRC_TYPE:
case DST_RSRC_GRP_67_RSRC_TYPE:
- return version <= IPA_VERSION_3_1;
+ return version <= IPA_VERSION_3_1 ||
+ version == IPA_VERSION_5_0;
case ENDP_FILTER_ROUTER_HSH_CFG:
return version < IPA_VERSION_5_0 &&
@@ -52,9 +65,6 @@ static bool ipa_reg_id_valid(struct ipa *ipa, enum ipa_reg_id reg_id)
case SHARED_MEM_SIZE:
case QSB_MAX_WRITES:
case QSB_MAX_READS:
- case FILT_ROUT_HASH_EN:
- case FILT_ROUT_HASH_FLUSH:
- case FILT_ROUT_CACHE_FLUSH:
case STATE_AGGR_ACTIVE:
case LOCAL_PKT_PROC_CNTXT:
case AGGR_FORCE_CLOSE:
@@ -76,8 +86,6 @@ static bool ipa_reg_id_valid(struct ipa *ipa, enum ipa_reg_id reg_id)
case ENDP_INIT_RSRC_GRP:
case ENDP_INIT_SEQ:
case ENDP_STATUS:
- case ENDP_FILTER_CACHE_CFG:
- case ENDP_ROUTER_CACHE_CFG:
case IPA_IRQ_STTS:
case IPA_IRQ_EN:
case IPA_IRQ_CLR:
diff --git a/drivers/net/ipa/ipa_reg.h b/drivers/net/ipa/ipa_reg.h
index ff2be8be0f683..7dd65d39333dd 100644
--- a/drivers/net/ipa/ipa_reg.h
+++ b/drivers/net/ipa/ipa_reg.h
@@ -60,8 +60,8 @@ enum ipa_reg_id {
SHARED_MEM_SIZE,
QSB_MAX_WRITES,
QSB_MAX_READS,
- FILT_ROUT_HASH_EN, /* Not IPA v5.0+ */
- FILT_ROUT_HASH_FLUSH, /* Not IPA v5.0+ */
+ FILT_ROUT_HASH_EN, /* IPA v4.2 */
+ FILT_ROUT_HASH_FLUSH, /* Not IPA v4.2 nor IPA v5.0+ */
FILT_ROUT_CACHE_FLUSH, /* IPA v5.0+ */
STATE_AGGR_ACTIVE,
IPA_BCR, /* Not IPA v4.5+ */
@@ -76,12 +76,12 @@ enum ipa_reg_id {
TIMERS_PULSE_GRAN_CFG, /* IPA v4.5+ */
SRC_RSRC_GRP_01_RSRC_TYPE,
SRC_RSRC_GRP_23_RSRC_TYPE,
- SRC_RSRC_GRP_45_RSRC_TYPE, /* Not IPA v3.5+, IPA v4.5 */
- SRC_RSRC_GRP_67_RSRC_TYPE, /* Not IPA v3.5+ */
+ SRC_RSRC_GRP_45_RSRC_TYPE, /* Not IPA v3.5+; IPA v4.5, IPA v5.0 */
+ SRC_RSRC_GRP_67_RSRC_TYPE, /* Not IPA v3.5+; IPA v5.0 */
DST_RSRC_GRP_01_RSRC_TYPE,
DST_RSRC_GRP_23_RSRC_TYPE,
- DST_RSRC_GRP_45_RSRC_TYPE, /* Not IPA v3.5+, IPA v4.5 */
- DST_RSRC_GRP_67_RSRC_TYPE, /* Not IPA v3.5+ */
+ DST_RSRC_GRP_45_RSRC_TYPE, /* Not IPA v3.5+; IPA v4.5, IPA v5.0 */
+ DST_RSRC_GRP_67_RSRC_TYPE, /* Not IPA v3.5+; IPA v5.0 */
ENDP_INIT_CTRL, /* Not IPA v4.2+ for TX, not IPA v4.0+ for RX */
ENDP_INIT_CFG,
ENDP_INIT_NAT, /* TX only */
--
2.34.1
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH net 0/4] net: ipa: minor bug fixes
2023-03-14 20:38 [PATCH net 0/4] net: ipa: minor bug fixes Alex Elder
` (3 preceding siblings ...)
2023-03-14 20:38 ` [PATCH net 4/4] net: ipa: fix some register validity checks Alex Elder
@ 2023-03-14 21:23 ` Alex Elder
4 siblings, 0 replies; 6+ messages in thread
From: Alex Elder @ 2023-03-14 21:23 UTC (permalink / raw)
To: davem, edumazet, kuba, pabeni
Cc: caleb.connolly, mka, evgreen, andersson, quic_cpratapa,
quic_avuyyuru, quic_jponduru, quic_subashab, elder, netdev,
linux-arm-msm, linux-kernel
On 3/14/23 3:38 PM, Alex Elder wrote:
> The four patches in this series fix some errors, though none of them
> cause any compile or runtime problems.
>
> The first changes the files included by "drivers/net/ipa/reg.h" to
> ensure everything it requires is included with the file. It also
> stops unnecessarily including another file. The prerequisites are
> apparently satisfied other ways, currently.
>
> The second adds two struct declarations to "gsi_reg.h", to ensure
> they're declared before they're used later in the file. Again, it
> seems these declarations are currently resolved wherever this file
> is included.
>
> The third removes register definitions that were added for IPA v5.0
> that are not needed. And the last updates some validity checks for
> IPA v5.0 registers. No IPA v5.0 platforms are yet supported, so the
> issues resolved here were never harmful.
Sorry, it seems I used the wrong hashes in some
of my "Fixes" tags. I will post v2 of this series
tomorrow.
-Alex
> -Alex
>
> Alex Elder (4):
> net: ipa: reg: include <linux/bug.h>
> net: ipa: add two missing declarations
> net: ipa: kill FILT_ROUT_CACHE_CFG IPA register
> net: ipa: fix some register validity checks
>
> drivers/net/ipa/gsi_reg.c | 9 ++++++++-
> drivers/net/ipa/gsi_reg.h | 4 ++++
> drivers/net/ipa/ipa_reg.c | 28 ++++++++++++++++++----------
> drivers/net/ipa/ipa_reg.h | 21 ++++++---------------
> drivers/net/ipa/reg.h | 3 ++-
> 5 files changed, 38 insertions(+), 27 deletions(-)
>
^ permalink raw reply [flat|nested] 6+ messages in thread