mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

Introduce per-flow stats accounting to the flowtable hw offload in the airoha_eth driver. Flow stats are split in the PPE and NPU modules: - PPE: accounts for high 32bit of per-flow stats - NPU: accounts for low 32bit of per-flow stats FLOW_CLS_STATS can be enabled or disabled at compile time. Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/20250516-airoha-en7581-flowstats-v2-2-06d5fbf28984@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
36 lines
939 B
C
36 lines
939 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2025 AIROHA Inc
|
|
* Author: Lorenzo Bianconi <lorenzo@kernel.org>
|
|
*/
|
|
|
|
#define NPU_NUM_CORES 8
|
|
|
|
struct airoha_npu {
|
|
struct device *dev;
|
|
struct regmap *regmap;
|
|
|
|
struct airoha_npu_core {
|
|
struct airoha_npu *npu;
|
|
/* protect concurrent npu memory accesses */
|
|
spinlock_t lock;
|
|
struct work_struct wdt_work;
|
|
} cores[NPU_NUM_CORES];
|
|
|
|
struct airoha_foe_stats __iomem *stats;
|
|
|
|
struct {
|
|
int (*ppe_init)(struct airoha_npu *npu);
|
|
int (*ppe_deinit)(struct airoha_npu *npu);
|
|
int (*ppe_flush_sram_entries)(struct airoha_npu *npu,
|
|
dma_addr_t foe_addr,
|
|
int sram_num_entries);
|
|
int (*ppe_foe_commit_entry)(struct airoha_npu *npu,
|
|
dma_addr_t foe_addr,
|
|
u32 entry_size, u32 hash,
|
|
bool ppe2);
|
|
} ops;
|
|
};
|
|
|
|
struct airoha_npu *airoha_npu_get(struct device *dev, dma_addr_t *stats_addr);
|
|
void airoha_npu_put(struct airoha_npu *npu);
|