/* SPDX-License-Identifier: GPL-2.0
 *
 * Copyright (c) 2019 Facebook
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of version 2 of the GNU General Public
 * License as published by the Free Software Foundation.
 *
 * Include file for Host Bandwidth Management (HBM) programs
 */
struct hbm_vqueue {
	struct bpf_spin_lock lock;
	/* 4 byte hole */
	unsigned long long lasttime;	/* In ns */
	int credit;			/* In bytes */
	unsigned int rate;		/* In bytes per NS << 20 */
};

struct hbm_queue_stats {
	unsigned long rate;		/* in Mbps*/
	unsigned long stats:1,		/* get HBM stats (marked, dropped,..) */
		loopback:1,		/* also limit flows using loopback */
		no_cn:1;		/* do not use cn flags */
	unsigned long long pkts_marked;
	unsigned long long bytes_marked;
	unsigned long long pkts_dropped;
	unsigned long long bytes_dropped;
	unsigned long long pkts_total;
	unsigned long long bytes_total;
	unsigned long long firstPacketTime;
	unsigned long long lastPacketTime;
	unsigned long long pkts_ecn_ce;
	unsigned long long returnValCount[4];
	unsigned long long sum_cwnd;
	unsigned long long sum_rtt;
	unsigned long long sum_cwnd_cnt;
	long long sum_credit;
};
