162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB */ 262306a36Sopenharmony_ci/* Copyright (c) 2015 - 2020 Intel Corporation */ 362306a36Sopenharmony_ci#ifndef IRDMA_WS_H 462306a36Sopenharmony_ci#define IRDMA_WS_H 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#include "osdep.h" 762306a36Sopenharmony_ci 862306a36Sopenharmony_cienum irdma_ws_node_type { 962306a36Sopenharmony_ci WS_NODE_TYPE_PARENT, 1062306a36Sopenharmony_ci WS_NODE_TYPE_LEAF, 1162306a36Sopenharmony_ci}; 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_cienum irdma_ws_match_type { 1462306a36Sopenharmony_ci WS_MATCH_TYPE_VSI, 1562306a36Sopenharmony_ci WS_MATCH_TYPE_TC, 1662306a36Sopenharmony_ci}; 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cistruct irdma_ws_node { 1962306a36Sopenharmony_ci struct list_head siblings; 2062306a36Sopenharmony_ci struct list_head child_list_head; 2162306a36Sopenharmony_ci struct irdma_ws_node *parent; 2262306a36Sopenharmony_ci u64 lan_qs_handle; /* opaque handle used by LAN */ 2362306a36Sopenharmony_ci u32 l2_sched_node_id; 2462306a36Sopenharmony_ci u16 index; 2562306a36Sopenharmony_ci u16 qs_handle; 2662306a36Sopenharmony_ci u16 vsi_index; 2762306a36Sopenharmony_ci u8 traffic_class; 2862306a36Sopenharmony_ci u8 user_pri; 2962306a36Sopenharmony_ci u8 rel_bw; 3062306a36Sopenharmony_ci u8 abstraction_layer; /* used for splitting a TC */ 3162306a36Sopenharmony_ci u8 prio_type; 3262306a36Sopenharmony_ci bool type_leaf:1; 3362306a36Sopenharmony_ci bool enable:1; 3462306a36Sopenharmony_ci}; 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_cistruct irdma_sc_vsi; 3762306a36Sopenharmony_ciint irdma_ws_add(struct irdma_sc_vsi *vsi, u8 user_pri); 3862306a36Sopenharmony_civoid irdma_ws_remove(struct irdma_sc_vsi *vsi, u8 user_pri); 3962306a36Sopenharmony_civoid irdma_ws_reset(struct irdma_sc_vsi *vsi); 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci#endif /* IRDMA_WS_H */ 42