/* Strictly speaking, for a somewhat constant set of clients where each client gets a constant bandwidth and is just enabled or disabled (somewhat dynamically), no action is necessary here to avoid starvation for non-zero-allocation clients, as the allocated slots will just be unused. However, handing out those unused slots to active clients avoids needless latency if the "fixed scheme" would give unclaimed slots to an eager low-index client.  */
void crisv32_arbiter_deallocate_bandwidth(int client, int region)
/* Strictly speaking, for a somewhat constant set of clients where each client gets a constant bandwidth and is just enabled or disabled (somewhat dynamically), no action is necessary here to avoid starvation for non-zero-allocation clients, as the allocated slots will just be unused. However, handing out those unused slots to active clients avoids needless latency if the "fixed scheme" would give unclaimed slots to an eager low-index client.  */
void crisv32_arbiter_deallocate_bandwidth(int client, int region)
{
	int i;
	int total_assigned = 0;
	requested_slots[region][client] = 0;
	active_clients[region][client] = 0;
	for (i = 0; i < NBR_OF_CLIENTS; i++)
		total_assigned += requested_slots[region][i];
	crisv32_arbiter_config(region, NBR_OF_SLOTS - total_assigned);
}