1/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
2/* Copyright (c) 2015 - 2020 Intel Corporation */
3#ifndef IRDMA_WS_H
4#define IRDMA_WS_H
5
6#include "osdep.h"
7
8enum irdma_ws_node_type {
9	WS_NODE_TYPE_PARENT,
10	WS_NODE_TYPE_LEAF,
11};
12
13enum irdma_ws_match_type {
14	WS_MATCH_TYPE_VSI,
15	WS_MATCH_TYPE_TC,
16};
17
18struct irdma_ws_node {
19	struct list_head siblings;
20	struct list_head child_list_head;
21	struct irdma_ws_node *parent;
22	u64 lan_qs_handle; /* opaque handle used by LAN */
23	u32 l2_sched_node_id;
24	u16 index;
25	u16 qs_handle;
26	u16 vsi_index;
27	u8 traffic_class;
28	u8 user_pri;
29	u8 rel_bw;
30	u8 abstraction_layer; /* used for splitting a TC */
31	u8 prio_type;
32	bool type_leaf:1;
33	bool enable:1;
34};
35
36struct irdma_sc_vsi;
37int irdma_ws_add(struct irdma_sc_vsi *vsi, u8 user_pri);
38void irdma_ws_remove(struct irdma_sc_vsi *vsi, u8 user_pri);
39void irdma_ws_reset(struct irdma_sc_vsi *vsi);
40
41#endif /* IRDMA_WS_H */
42