c869993e79c1eafbec61a56bf6cea848fe754c71xy/*
c869993e79c1eafbec61a56bf6cea848fe754c71xy * CDDL HEADER START
c869993e79c1eafbec61a56bf6cea848fe754c71xy *
c869993e79c1eafbec61a56bf6cea848fe754c71xy * Copyright(c) 2007-2008 Intel Corporation. All rights reserved.
c869993e79c1eafbec61a56bf6cea848fe754c71xy * The contents of this file are subject to the terms of the
c869993e79c1eafbec61a56bf6cea848fe754c71xy * Common Development and Distribution License (the "License").
c869993e79c1eafbec61a56bf6cea848fe754c71xy * You may not use this file except in compliance with the License.
c869993e79c1eafbec61a56bf6cea848fe754c71xy *
c869993e79c1eafbec61a56bf6cea848fe754c71xy * You can obtain a copy of the license at:
c869993e79c1eafbec61a56bf6cea848fe754c71xy * http://www.opensolaris.org/os/licensing.
c869993e79c1eafbec61a56bf6cea848fe754c71xy * See the License for the specific language governing permissions
c869993e79c1eafbec61a56bf6cea848fe754c71xy * and limitations under the License.
c869993e79c1eafbec61a56bf6cea848fe754c71xy *
c869993e79c1eafbec61a56bf6cea848fe754c71xy * When using or redistributing this file, you may do so under the
c869993e79c1eafbec61a56bf6cea848fe754c71xy * License only. No other modification of this header is permitted.
c869993e79c1eafbec61a56bf6cea848fe754c71xy *
c869993e79c1eafbec61a56bf6cea848fe754c71xy * If applicable, add the following below this CDDL HEADER, with the
c869993e79c1eafbec61a56bf6cea848fe754c71xy * fields enclosed by brackets "[]" replaced with your own identifying
c869993e79c1eafbec61a56bf6cea848fe754c71xy * information: Portions Copyright [yyyy] [name of copyright owner]
c869993e79c1eafbec61a56bf6cea848fe754c71xy *
c869993e79c1eafbec61a56bf6cea848fe754c71xy * CDDL HEADER END
c869993e79c1eafbec61a56bf6cea848fe754c71xy */
c869993e79c1eafbec61a56bf6cea848fe754c71xy
c869993e79c1eafbec61a56bf6cea848fe754c71xy/*
c869993e79c1eafbec61a56bf6cea848fe754c71xy * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
c869993e79c1eafbec61a56bf6cea848fe754c71xy * Use is subject to license terms of the CDDL.
c869993e79c1eafbec61a56bf6cea848fe754c71xy */
c869993e79c1eafbec61a56bf6cea848fe754c71xy
c869993e79c1eafbec61a56bf6cea848fe754c71xy#include "igb_sw.h"
c869993e79c1eafbec61a56bf6cea848fe754c71xy
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov#define LOG_BUF_LEN 1024
c869993e79c1eafbec61a56bf6cea848fe754c71xy
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankovextern int igb_debug;
c869993e79c1eafbec61a56bf6cea848fe754c71xy
c869993e79c1eafbec61a56bf6cea848fe754c71xyvoid
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankovigb_log(void *arg, igb_debug_t level, const char *fmt, ...)
c869993e79c1eafbec61a56bf6cea848fe754c71xy{
c869993e79c1eafbec61a56bf6cea848fe754c71xy igb_t *igbp = (igb_t *)arg;
c869993e79c1eafbec61a56bf6cea848fe754c71xy char buf[LOG_BUF_LEN];
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov int celevel;
c869993e79c1eafbec61a56bf6cea848fe754c71xy va_list ap;
c869993e79c1eafbec61a56bf6cea848fe754c71xy
c869993e79c1eafbec61a56bf6cea848fe754c71xy va_start(ap, fmt);
c869993e79c1eafbec61a56bf6cea848fe754c71xy (void) vsnprintf(buf, sizeof (buf), fmt, ap);
c869993e79c1eafbec61a56bf6cea848fe754c71xy va_end(ap);
c869993e79c1eafbec61a56bf6cea848fe754c71xy
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov DTRACE_PROBE2(igb__log, igb_t *, igbp, const char *, buf);
c869993e79c1eafbec61a56bf6cea848fe754c71xy
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov if (level > igb_debug)
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov return;
c869993e79c1eafbec61a56bf6cea848fe754c71xy
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov switch (level) {
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov case IGB_LOG_ERROR:
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov celevel = CE_WARN;
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov break;
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov case IGB_LOG_INFO:
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov celevel = CE_NOTE;
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov break;
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov case IGB_LOG_TRACE:
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov celevel = CE_CONT;
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov break;
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov default:
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov celevel = CE_IGNORE;
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov }
c869993e79c1eafbec61a56bf6cea848fe754c71xy
c869993e79c1eafbec61a56bf6cea848fe754c71xy if (igbp != NULL)
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov dev_err(igbp->dip, celevel, "!%s", buf);
c869993e79c1eafbec61a56bf6cea848fe754c71xy else
fa4e188e8e6bc718b1a096b3d1dc046952a69304Yuri Pankov cmn_err(celevel, "!%s", buf);
c869993e79c1eafbec61a56bf6cea848fe754c71xy}