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 8 enum irdma_ws_node_type { 9 WS_NODE_TYPE_PARENT, 10 WS_NODE_TYPE_LEAF, 11 }; 12 13 enum irdma_ws_match_type { 14 WS_MATCH_TYPE_VSI, 15 WS_MATCH_TYPE_TC, 16 }; 17 18 struct 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 36 struct irdma_sc_vsi; 37 enum irdma_status_code irdma_ws_add(struct irdma_sc_vsi *vsi, u8 user_pri); 38 void irdma_ws_remove(struct irdma_sc_vsi *vsi, u8 user_pri); 39 void irdma_ws_reset(struct irdma_sc_vsi *vsi); 40 41 #endif /* IRDMA_WS_H */ 42