// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (C) 2025 Intel Corporation */

#include <linux/module.h>
#include <linux/net/intel/libie/adminq.h>

static const char * const libie_aq_str_arr[] = {
#define LIBIE_AQ_STR(x)					\
	[LIBIE_AQ_RC_##x]	= "LIBIE_AQ_RC" #x
	LIBIE_AQ_STR(OK),
	LIBIE_AQ_STR(EPERM),
	LIBIE_AQ_STR(ENOENT),
	LIBIE_AQ_STR(ESRCH),
	LIBIE_AQ_STR(EIO),
	LIBIE_AQ_STR(EAGAIN),
	LIBIE_AQ_STR(ENOMEM),
	LIBIE_AQ_STR(EACCES),
	LIBIE_AQ_STR(EBUSY),
	LIBIE_AQ_STR(EEXIST),
	LIBIE_AQ_STR(EINVAL),
	LIBIE_AQ_STR(ENOSPC),
	LIBIE_AQ_STR(ENOSYS),
	LIBIE_AQ_STR(EMODE),
	LIBIE_AQ_STR(ENOSEC),
	LIBIE_AQ_STR(EBADSIG),
	LIBIE_AQ_STR(ESVN),
	LIBIE_AQ_STR(EBADMAN),
	LIBIE_AQ_STR(EBADBUF),
#undef LIBIE_AQ_STR
	"LIBIE_AQ_RC_UNKNOWN",
};

#define __LIBIE_AQ_STR_NUM (ARRAY_SIZE(libie_aq_str_arr) - 1)

/**
 * libie_aq_str - get error string based on aq error
 * @err: admin queue error type
 *
 * Return: error string for passed error code
 */
const char *libie_aq_str(enum libie_aq_err err)
{
	if (err >= ARRAY_SIZE(libie_aq_str_arr) ||
	    !libie_aq_str_arr[err])
		err = __LIBIE_AQ_STR_NUM;

	return libie_aq_str_arr[err];
}
EXPORT_SYMBOL_NS_GPL(libie_aq_str, "LIBIE_ADMINQ");

MODULE_DESCRIPTION("Intel(R) Ethernet common library - adminq helpers");
MODULE_LICENSE("GPL");
