diff usr/src/uts/common/io/cxgbe/common/common.c @ 14029:11aad50aea32

3701 Chelsio Terminator 4 NIC driver for illumos Reviewed by: Robert Mustacchi <rm@joyent.com> Approved by: Dan McDonald <danmcd@nexenta.com>
author Gireesh Nagabhushana <gireesh@chelsio.com>
date Thu, 23 May 2013 09:51:05 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/uts/common/io/cxgbe/common/common.c	Thu May 23 09:51:05 2013 -0400
@@ -0,0 +1,98 @@
+/*
+ * This file and its contents are supplied under the terms of the
+ * Common Development and Distribution License ("CDDL"), version 1.0.
+ * You may only use this file in accordance with the terms of version
+ * 1.0 of the CDDL.
+ *
+ * A full copy of the text of the CDDL should have accompanied this
+ * source. A copy of the CDDL is also available via the Internet at
+ * http://www.illumos.org/license/CDDL.
+ */
+
+/*
+ * This file is part of the Chelsio T4 Ethernet driver.
+ *
+ * Copyright (C) 2005-2013 Chelsio Communications.  All rights reserved.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the LICENSE file included in this
+ * release for licensing terms and conditions.
+ */
+
+#include "common.h"
+
+int
+is_offload(const struct adapter *adap)
+{
+	return (adap->params.offload);
+}
+
+unsigned int
+core_ticks_per_usec(const struct adapter *adap)
+{
+	return (adap->params.vpd.cclk / 1000);
+}
+
+int
+t4_wr_mbox(struct adapter *adap, int mbox, const void *cmd, int size, void *rpl)
+{
+	return (t4_wr_mbox_meat(adap, mbox, cmd, size, rpl, true));
+}
+
+unsigned int
+us_to_core_ticks(const struct adapter *adap, unsigned int us)
+{
+	return ((us * adap->params.vpd.cclk) / 1000);
+}
+
+unsigned int
+core_ticks_to_us(const struct adapter *adapter, unsigned int ticks)
+{
+	/* add Core Clock / 2 to round ticks to nearest uS */
+	return ((ticks * 1000 + adapter->params.vpd.cclk/2) /
+	    adapter->params.vpd.cclk);
+}
+
+unsigned int
+dack_ticks_to_usec(const struct adapter *adap, unsigned int ticks)
+{
+	return ((ticks << adap->params.tp.dack_re) / core_ticks_per_usec(adap));
+}
+
+int
+is_bypass(const adapter_t *adap)
+{
+	return (adap->params.bypass);
+}
+
+int
+is_bypass_device(int device)
+{
+	/* TODO - this should be set based upon device capabilities */
+	switch (device) {
+#ifdef CONFIG_CHELSIO_BYPASS
+	case 0x440b:
+	case 0x440c:
+		return (1);
+#endif
+
+	default:
+		return (0);
+	}
+}
+
+int
+t4_wait_op_done(struct adapter *adapter, int reg, u32 mask, int polarity,
+    int attempts, int delay)
+{
+	return (t4_wait_op_done_val(adapter, reg, mask, polarity, attempts,
+	    delay, NULL));
+}
+
+int
+t4_wr_mbox_ns(struct adapter *adap, int mbox, const void *cmd, int size,
+    void *rpl)
+{
+	return (t4_wr_mbox_meat(adap, mbox, cmd, size, rpl, false));
+}