xref: /dpdk/drivers/net/sfc/sfc_filter.h (revision 98d26ef7b839e43b0cdbdee216c7caca6b76f8f8)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  *
3  * Copyright(c) 2019-2021 Xilinx, Inc.
4  * Copyright(c) 2017-2019 Solarflare Communications Inc.
5  *
6  * This software was jointly developed between OKTET Labs (under contract
7  * for Solarflare) and Solarflare Communications, Inc.
8  */
9 
10 #ifndef _SFC_FILTER_H
11 #define _SFC_FILTER_H
12 
13 #include "efx.h"
14 
15 #include "sfc_flow.h"
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 struct sfc_filter {
22 	/** Number of elements in match_supported array */
23 	size_t				supported_match_num;
24 	/** Driver cache of supported filter match masks */
25 	uint32_t			*supported_match;
26 	/**
27 	 * Supports any of ip_proto, remote host or local host
28 	 * filters. This flag is used for filter match exceptions
29 	 */
30 	boolean_t			supports_ip_proto_or_addr_filter;
31 	/**
32 	 * Supports any of remote port or local port filters.
33 	 * This flag is used for filter match exceptions
34 	 */
35 	boolean_t			supports_rem_or_local_port_filter;
36 };
37 
38 struct sfc_adapter;
39 
40 int sfc_filter_attach(struct sfc_adapter *sa);
41 void sfc_filter_detach(struct sfc_adapter *sa);
42 
43 boolean_t sfc_filter_is_match_supported(struct sfc_adapter *sa, uint32_t match);
44 
45 #ifdef __cplusplus
46 }
47 #endif
48 #endif /* _SFC_FILTER_H */
49