]> git.ipfire.org Git - thirdparty/linux.git/blame - drivers/net/ethernet/pensando/ionic/ionic_rx_filter.h
Merge tag 'drm/tegra/for-5.7-fixes' of git://anongit.freedesktop.org/tegra/linux...
[thirdparty/linux.git] / drivers / net / ethernet / pensando / ionic / ionic_rx_filter.h
CommitLineData
c1e329eb
SN
1/* SPDX-License-Identifier: GPL-2.0 */
2/* Copyright(c) 2017 - 2019 Pensando Systems, Inc */
3
4#ifndef _IONIC_RX_FILTER_H_
5#define _IONIC_RX_FILTER_H_
6
7#define IONIC_RXQ_INDEX_ANY (0xFFFF)
8struct ionic_rx_filter {
9 u32 flow_id;
10 u32 filter_id;
11 u16 rxq_index;
12 struct ionic_rx_filter_add_cmd cmd;
13 struct hlist_node by_hash;
14 struct hlist_node by_id;
15};
16
17#define IONIC_RX_FILTER_HASH_BITS 10
18#define IONIC_RX_FILTER_HLISTS BIT(IONIC_RX_FILTER_HASH_BITS)
19#define IONIC_RX_FILTER_HLISTS_MASK (IONIC_RX_FILTER_HLISTS - 1)
20struct ionic_rx_filters {
21 spinlock_t lock; /* filter list lock */
22 struct hlist_head by_hash[IONIC_RX_FILTER_HLISTS]; /* by skb hash */
23 struct hlist_head by_id[IONIC_RX_FILTER_HLISTS]; /* by filter_id */
24};
25
26void ionic_rx_filter_free(struct ionic_lif *lif, struct ionic_rx_filter *f);
7e4d4759 27void ionic_rx_filter_replay(struct ionic_lif *lif);
c1e329eb
SN
28int ionic_rx_filters_init(struct ionic_lif *lif);
29void ionic_rx_filters_deinit(struct ionic_lif *lif);
30int ionic_rx_filter_save(struct ionic_lif *lif, u32 flow_id, u16 rxq_index,
31 u32 hash, struct ionic_admin_ctx *ctx);
32struct ionic_rx_filter *ionic_rx_filter_by_vlan(struct ionic_lif *lif, u16 vid);
33struct ionic_rx_filter *ionic_rx_filter_by_addr(struct ionic_lif *lif, const u8 *addr);
34
35#endif /* _IONIC_RX_FILTER_H_ */