162306a36Sopenharmony_ci/* Broadcom NetXtreme-C/E network driver.
262306a36Sopenharmony_ci *
362306a36Sopenharmony_ci * Copyright (c) 2014-2016 Broadcom Corporation
462306a36Sopenharmony_ci * Copyright (c) 2016-2018 Broadcom Limited
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * This program is free software; you can redistribute it and/or modify
762306a36Sopenharmony_ci * it under the terms of the GNU General Public License as published by
862306a36Sopenharmony_ci * the Free Software Foundation.
962306a36Sopenharmony_ci */
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#ifndef BNXT_DCB_H
1262306a36Sopenharmony_ci#define BNXT_DCB_H
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#include <net/dcbnl.h>
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_cistruct bnxt_dcb {
1762306a36Sopenharmony_ci	u8			max_tc;
1862306a36Sopenharmony_ci	struct ieee_pfc		*ieee_pfc;
1962306a36Sopenharmony_ci	struct ieee_ets		*ieee_ets;
2062306a36Sopenharmony_ci	u8			dcbx_cap;
2162306a36Sopenharmony_ci	u8			default_pri;
2262306a36Sopenharmony_ci};
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_cistruct bnxt_cos2bw_cfg {
2562306a36Sopenharmony_ci	u8			pad[3];
2662306a36Sopenharmony_ci	struct_group_attr(cfg, __packed,
2762306a36Sopenharmony_ci		u8		queue_id;
2862306a36Sopenharmony_ci		__le32		min_bw;
2962306a36Sopenharmony_ci		__le32		max_bw;
3062306a36Sopenharmony_ci		u8		tsa;
3162306a36Sopenharmony_ci		u8		pri_lvl;
3262306a36Sopenharmony_ci		u8		bw_weight;
3362306a36Sopenharmony_ci	);
3462306a36Sopenharmony_ci/* for min_bw / max_bw */
3562306a36Sopenharmony_ci#define BW_VALUE_UNIT_PERCENT1_100		(0x1UL << 29)
3662306a36Sopenharmony_ci	u8			unused;
3762306a36Sopenharmony_ci};
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_cistruct bnxt_dscp2pri_entry {
4062306a36Sopenharmony_ci	u8	dscp;
4162306a36Sopenharmony_ci	u8	mask;
4262306a36Sopenharmony_ci	u8	pri;
4362306a36Sopenharmony_ci};
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci#define BNXT_LLQ(q_profile)	\
4662306a36Sopenharmony_ci	((q_profile) ==		\
4762306a36Sopenharmony_ci	 QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSLESS_ROCE)
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci#define BNXT_CNPQ(q_profile)	\
5062306a36Sopenharmony_ci	((q_profile) ==		\
5162306a36Sopenharmony_ci	 QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSY_ROCE_CNP)
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci#define HWRM_STRUCT_DATA_SUBTYPE_HOST_OPERATIONAL	0x0300
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_civoid bnxt_dcb_init(struct bnxt *bp);
5662306a36Sopenharmony_civoid bnxt_dcb_free(struct bnxt *bp);
5762306a36Sopenharmony_ci#endif
58