diff options
author | Alex Elder <elder@linaro.org> | 2022-10-25 14:51:42 -0500 |
---|---|---|
committer | Paolo Abeni <pabeni@redhat.com> | 2022-10-27 13:38:13 +0200 |
commit | 8defab8bdfb1d0dc4e4e3c687cfde33b596896f7 (patch) | |
tree | 85c48dbef4b39839cc5f0fc1af63ca4c52b37cfe /drivers/net/ipa/ipa_table.c | |
parent | 0439e6743c5c77520e91bf52a0d16da586214753 (diff) |
net: ipa: don't assume 8 modem routing table entries
Currently all platforms are assumed allot 8 routing table entries
for use by the modem. Instead, add a new configuration data entry
that defines the number of modem routing table entries, and record
that in the IPA structure.
Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'drivers/net/ipa/ipa_table.c')
-rw-r--r-- | drivers/net/ipa/ipa_table.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/drivers/net/ipa/ipa_table.c b/drivers/net/ipa/ipa_table.c index 23d3f081ac8e..c9ab6a3fabbc 100644 --- a/drivers/net/ipa/ipa_table.c +++ b/drivers/net/ipa/ipa_table.c @@ -129,9 +129,6 @@ static void ipa_table_validate_build(void) * assumes that it can be written using a pointer to __le64. */ BUILD_BUG_ON(IPA_ZERO_RULE_SIZE != sizeof(__le64)); - - /* The modem must be allotted at least one route table entry */ - BUILD_BUG_ON(!IPA_ROUTE_MODEM_COUNT); } static const struct ipa_mem * @@ -281,6 +278,7 @@ static int ipa_filter_reset(struct ipa *ipa, bool modem) * */ static int ipa_route_reset(struct ipa *ipa, bool modem) { + u32 modem_route_count = ipa->modem_route_count; struct gsi_trans *trans; u16 first; u16 count; @@ -295,10 +293,10 @@ static int ipa_route_reset(struct ipa *ipa, bool modem) if (modem) { first = 0; - count = IPA_ROUTE_MODEM_COUNT; + count = modem_route_count; } else { - first = IPA_ROUTE_MODEM_COUNT; - count = ipa->route_count - IPA_ROUTE_MODEM_COUNT; + first = modem_route_count; + count = ipa->route_count - modem_route_count; } ipa_table_reset_add(trans, false, first, count, IPA_MEM_V4_ROUTE); @@ -511,9 +509,9 @@ static void ipa_filter_config(struct ipa *ipa, bool modem) } } -static bool ipa_route_id_modem(u32 route_id) +static bool ipa_route_id_modem(struct ipa *ipa, u32 route_id) { - return route_id < IPA_ROUTE_MODEM_COUNT; + return route_id < ipa->modem_route_count; } /** @@ -549,7 +547,7 @@ static void ipa_route_config(struct ipa *ipa, bool modem) return; for (route_id = 0; route_id < ipa->route_count; route_id++) - if (ipa_route_id_modem(route_id) == modem) + if (ipa_route_id_modem(ipa, route_id) == modem) ipa_route_tuple_zero(ipa, route_id); } @@ -565,10 +563,9 @@ void ipa_table_config(struct ipa *ipa) /* Verify the sizes of all IPA table filter or routing table memory regions * are valid. If valid, this records the size of the routing table. */ -bool ipa_table_mem_valid(struct ipa *ipa, bool modem_route_count) +bool ipa_table_mem_valid(struct ipa *ipa, bool filter) { bool hash_support = ipa_table_hash_support(ipa); - bool filter = !modem_route_count; const struct ipa_mem *mem_hashed; const struct ipa_mem *mem_ipv4; const struct ipa_mem *mem_ipv6; @@ -611,7 +608,7 @@ bool ipa_table_mem_valid(struct ipa *ipa, bool modem_route_count) /* Routing tables must be able to hold all modem entries, * plus at least one entry for the AP. */ - if (count < modem_route_count + 1) + if (count < ipa->modem_route_count + 1) return false; } |