/* Return value: Zero on success, otherwise non-zero. A non-zero return generally means there are no available tlabels. If this is called out of interrupt or atomic context, then it will sleep until can return a tlabel or a signal is received.  */
int hpsb_get_tlabel(struct hpsb_packet *packet)
/* Return value: Zero on success, otherwise non-zero. A non-zero return generally means there are no available tlabels. If this is called out of interrupt or atomic context, then it will sleep until can return a tlabel or a signal is received.  */
int hpsb_get_tlabel(struct hpsb_packet *packet)
{
	if (irqs_disabled() || in_atomic())
		return hpsb_get_tlabel_atomic(packet);
	return wait_event_interruptible(tlabel_wq,
					!hpsb_get_tlabel_atomic(packet));
}