/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright (C) 2003-2005 Chelsio Communications. All rights reserved.
*/
#pragma ident "%Z%%M% %I% %E% SMI" /* ch_mac.c */
#include "gmac.h"
#include "regs.h"
#include "fpga_defs.h"
/* Chelsio's MAC statistics. */
struct mac_statistics {
/* Transmit */
/* Receive */
};
static int static_aPorts[] = {
};
struct _cmac_instance {
};
{
/* ASIC */
/*EMPTY*/
/* We don't use the on chip MAC for ASIC products. */
} else {
/* FPGA */
/* Set parent gmac interrupt. */
}
return (0);
}
{
/* ASIC */
/*EMPTY*/
/* We don't use the on chip MAC for ASIC products. */
} else {
/* FPGA */
/* Set parent gmac interrupt. */
}
return (0);
}
{
/* ASIC */
/*EMPTY*/
/* We don't use the on chip MAC for ASIC products. */
} else {
/* FPGA */
/* Set parent gmac interrupt. */
}
return (0);
}
{
return (0);
}
{
data32 | F_MAC_RESET);
do {
MAC_REG_CSR(idx));
if (mac_in_reset)
DELAY_US(1);
} while (mac_in_reset && --time_out);
if (mac_in_reset) {
CH_ERR("%s: MAC %d reset timed out\n",
return (2);
}
return (0);
}
{
return (0);
}
int fc)
{
switch (speed) {
case SPEED_10:
case SPEED_100:
break;
case SPEED_1000:
break;
}
if (duplex >= 0)
if (fc >= 0) {
}
return (0);
}
{
if (which & MAC_DIRECTION_RX)
val |= F_MAC_RX_ENABLE;
if (which & MAC_DIRECTION_TX)
val |= F_MAC_TX_ENABLE;
return (0);
}
{
if (which & MAC_DIRECTION_RX)
val &= ~F_MAC_RX_ENABLE;
if (which & MAC_DIRECTION_TX)
val &= ~F_MAC_TX_ENABLE;
return (0);
}
int
{
return (0);
}
int
{
return (0);
}
{
if (mtu > 9600)
return (-EINVAL);
return (0);
}
/* ARGSUSED */
int flag)
{
/* XXX convert stats */
}
{
}
#ifdef C99_NOT_SUPPORTED
NULL,
NULL,
NULL,
NULL,
};
#else
.destroy = mac_destroy,
.enable = mac_enable,
.disable = mac_disable,
.set_mtu = mac_set_mtu,
};
#endif
{
if (index >= 4)
return (NULL);
if (!mac)
return (NULL);
/* Initialize the random backoff seed. */
/* Check to see if the mac address needs to be set manually. */
/*
* Add a default MAC address if we can't read one.
*/
0x43FFFFFF - index);
0x0007);
}
return (mac);
}
0,
};