Skip to content

Commit 6337b14

Browse files
Alex Elderdavem330
authored andcommitted
net: ipa: use ipa_table_mem() in ipa_table_reset_add()
Similar to the previous commit, pass flags rather than a memory region ID to ipa_table_reset_add(), and there use ipa_table_mem() to look up the memory region affected based on those flags. Currently all eight of these table memory regions are assumed to exist, because they all have canaries within them. Stop assuming that will always be the case, and in ipa_table_reset_add() allow these memory regions to be non-existent. Signed-off-by: Alex Elder <elder@linaro.org> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 5cb7689 commit 6337b14

File tree

1 file changed

+15
-16
lines changed

1 file changed

+15
-16
lines changed

drivers/net/ipa/ipa_table.c

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -200,16 +200,17 @@ static dma_addr_t ipa_table_addr(struct ipa *ipa, bool filter_mask, u16 count)
200200
}
201201

202202
static void ipa_table_reset_add(struct gsi_trans *trans, bool filter,
203-
u16 first, u16 count, enum ipa_mem_id mem_id)
203+
bool hashed, bool ipv6, u16 first, u16 count)
204204
{
205205
struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi);
206-
const struct ipa_mem *mem = ipa_mem_find(ipa, mem_id);
206+
const struct ipa_mem *mem;
207207
dma_addr_t addr;
208208
u32 offset;
209209
u16 size;
210210

211-
/* Nothing to do if the table memory region is empty */
212-
if (!mem->size)
211+
/* Nothing to do if the memory region is doesn't exist or is empty */
212+
mem = ipa_table_mem(ipa, filter, hashed, ipv6);
213+
if (!mem || !mem->size)
213214
return;
214215

215216
if (filter)
@@ -227,7 +228,7 @@ static void ipa_table_reset_add(struct gsi_trans *trans, bool filter,
227228
* for the IPv4 and IPv6 non-hashed and hashed filter tables.
228229
*/
229230
static int
230-
ipa_filter_reset_table(struct ipa *ipa, enum ipa_mem_id mem_id, bool modem)
231+
ipa_filter_reset_table(struct ipa *ipa, bool hashed, bool ipv6, bool modem)
231232
{
232233
u32 ep_mask = ipa->filter_map;
233234
u32 count = hweight32(ep_mask);
@@ -253,7 +254,7 @@ ipa_filter_reset_table(struct ipa *ipa, enum ipa_mem_id mem_id, bool modem)
253254
if (endpoint->ee_id != ee_id)
254255
continue;
255256

256-
ipa_table_reset_add(trans, true, endpoint_id, 1, mem_id);
257+
ipa_table_reset_add(trans, true, hashed, ipv6, endpoint_id, 1);
257258
}
258259

259260
gsi_trans_commit_wait(trans);
@@ -269,18 +270,18 @@ static int ipa_filter_reset(struct ipa *ipa, bool modem)
269270
{
270271
int ret;
271272

272-
ret = ipa_filter_reset_table(ipa, IPA_MEM_V4_FILTER, modem);
273+
ret = ipa_filter_reset_table(ipa, false, false, modem);
273274
if (ret)
274275
return ret;
275276

276-
ret = ipa_filter_reset_table(ipa, IPA_MEM_V4_FILTER_HASHED, modem);
277+
ret = ipa_filter_reset_table(ipa, true, false, modem);
277278
if (ret)
278279
return ret;
279280

280-
ret = ipa_filter_reset_table(ipa, IPA_MEM_V6_FILTER, modem);
281+
ret = ipa_filter_reset_table(ipa, false, true, modem);
281282
if (ret)
282283
return ret;
283-
ret = ipa_filter_reset_table(ipa, IPA_MEM_V6_FILTER_HASHED, modem);
284+
ret = ipa_filter_reset_table(ipa, true, true, modem);
284285

285286
return ret;
286287
}
@@ -312,13 +313,11 @@ static int ipa_route_reset(struct ipa *ipa, bool modem)
312313
count = ipa->route_count - modem_route_count;
313314
}
314315

315-
ipa_table_reset_add(trans, false, first, count, IPA_MEM_V4_ROUTE);
316-
ipa_table_reset_add(trans, false, first, count,
317-
IPA_MEM_V4_ROUTE_HASHED);
316+
ipa_table_reset_add(trans, false, false, false, first, count);
317+
ipa_table_reset_add(trans, false, true, false, first, count);
318318

319-
ipa_table_reset_add(trans, false, first, count, IPA_MEM_V6_ROUTE);
320-
ipa_table_reset_add(trans, false, first, count,
321-
IPA_MEM_V6_ROUTE_HASHED);
319+
ipa_table_reset_add(trans, false, false, true, first, count);
320+
ipa_table_reset_add(trans, false, true, true, first, count);
322321

323322
gsi_trans_commit_wait(trans);
324323

0 commit comments

Comments
 (0)