SOURCES (LINUX_2_6): linux-2.6-sk98lin-8.36.1.3.patch (NEW) - new ...
baggins
baggins at pld-linux.org
Wed Sep 20 18:54:24 CEST 2006
Author: baggins Date: Wed Sep 20 16:54:24 2006 GMT
Module: SOURCES Tag: LINUX_2_6
---- Log message:
- new version
---- Files affected:
SOURCES:
linux-2.6-sk98lin-8.36.1.3.patch (NONE -> 1.1.2.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/linux-2.6-sk98lin-8.36.1.3.patch
diff -u /dev/null SOURCES/linux-2.6-sk98lin-8.36.1.3.patch:1.1.2.1
--- /dev/null Wed Sep 20 18:54:24 2006
+++ SOURCES/linux-2.6-sk98lin-8.36.1.3.patch Wed Sep 20 18:54:19 2006
@@ -0,0 +1,55079 @@
+diff -ruN linux/drivers/net/sk98lin/Makefile linux-new/drivers/net/sk98lin/Makefile
+--- linux/drivers/net/sk98lin/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-new/drivers/net/sk98lin/Makefile 2006-09-20 18:51:45.255756750 +0200
+@@ -0,0 +1,142 @@
++#******************************************************************************
++#
++# Name: skge.c
++# Project: GEnesis, PCI Gigabit Ethernet Adapter
++# Version: $Revision$
++# Date: $Date$
++# Purpose: The main driver source module
++#
++#******************************************************************************
++
++#******************************************************************************
++#
++# (C)Copyright 1998-2002 SysKonnect GmbH.
++# (C)Copyright 2002-2005 Marvell.
++#
++# Makefile for Marvell Yukon chipset and SysKonnect Gigabit Ethernet
++# Server Adapter driver. (Kernel 2.6)
++#
++# Author: Mirko Lindner (mlindner at syskonnect.de)
++# Ralph Roesler (rroesler at syskonnect.de)
++#
++# Address all question to: linux at syskonnect.de
++#
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2 of the License, or
++# (at your option) any later version.
++#
++# The information in this file is provided "AS IS" without warranty.
++#
++#******************************************************************************
++
++#******************************************************************************
++#
++# History:
++#
++# $Log$
++# Revision 1.1.2.1 2006/09/20 16:54:19 baggins
++# - new version
++#
++# Revision 1.9.2.1 2005/04/11 09:01:18 mlindner
++# Fix: Copyright year changed
++#
++# Revision 1.9 2004/07/13 15:54:50 rroesler
++# Add: file skethtool.c
++# Fix: corrected header regarding copyright
++# Fix: minor typos corrected
++#
++# Revision 1.8 2004/06/08 08:39:38 mlindner
++# Fix: Add CONFIG_SK98LIN_ZEROCOPY as default
++#
++# Revision 1.7 2004/06/03 16:06:56 mlindner
++# Fix: Added compile flag SK_DIAG_SUPPORT
++#
++# Revision 1.6 2004/06/02 08:02:59 mlindner
++# Add: Changed header information and inserted a GPL statement
++#
++#
++#******************************************************************************
++
++
++#
++# Standalone driver params
++# SKPARAM += -DSK_KERNEL_24
++# SKPARAM += -DSK_KERNEL_24_26
++# SKPARAM += -DSK_KERNEL_26
++# SKPARAM += -DSK_KERNEL_22_24
++
++obj-$(CONFIG_SK98LIN) += sk98lin.o
++sk98lin-objs := \
++ skge.o \
++ sky2.o \
++ skethtool.o \
++ sky2le.o \
++ skdim.o \
++ skaddr.o \
++ skgehwt.o \
++ skgeinit.o \
++ skgepnmi.o \
++ skgesirq.o \
++ sktwsi.o \
++ sklm80.o \
++ skqueue.o \
++ skrlmt.o \
++ sktimer.o \
++ skvpd.o \
++ skxmac2.o \
++ skproc.o \
++ skcsum.o
++
++# DBGDEF = \
++# -DDEBUG
++
++ifdef DEBUG
++DBGDEF += \
++-DSK_DEBUG_CHKMOD=0x00000000L \
++-DSK_DEBUG_CHKCAT=0x00000000L
++endif
++
++
++# **** possible debug modules for SK_DEBUG_CHKMOD *****************
++# SK_DBGMOD_MERR 0x00000001L /* general module error indication */
++# SK_DBGMOD_HWM 0x00000002L /* Hardware init module */
++# SK_DBGMOD_RLMT 0x00000004L /* RLMT module */
++# SK_DBGMOD_VPD 0x00000008L /* VPD module */
++# SK_DBGMOD_I2C 0x00000010L /* I2C module */
++# SK_DBGMOD_PNMI 0x00000020L /* PNMI module */
++# SK_DBGMOD_CSUM 0x00000040L /* CSUM module */
++# SK_DBGMOD_ADDR 0x00000080L /* ADDR module */
++# SK_DBGMOD_DRV 0x00010000L /* DRV module */
++
++# **** possible debug categories for SK_DEBUG_CHKCAT **************
++# *** common modules ***
++# SK_DBGCAT_INIT 0x00000001L module/driver initialization
++# SK_DBGCAT_CTRL 0x00000002L controlling: add/rmv MCA/MAC and other controls (IOCTL)
++# SK_DBGCAT_ERR 0x00000004L error handling paths
++# SK_DBGCAT_TX 0x00000008L transmit path
++# SK_DBGCAT_RX 0x00000010L receive path
++# SK_DBGCAT_IRQ 0x00000020L general IRQ handling
++# SK_DBGCAT_QUEUE 0x00000040L any queue management
++# SK_DBGCAT_DUMP 0x00000080L large data output e.g. hex dump
++# SK_DBGCAT_FATAL 0x00000100L large data output e.g. hex dump
++
++# *** driver (file skge.c) ***
++# SK_DBGCAT_DRV_ENTRY 0x00010000 entry points
++# SK_DBGCAT_DRV_??? 0x00020000 not used
++# SK_DBGCAT_DRV_MCA 0x00040000 multicast
++# SK_DBGCAT_DRV_TX_PROGRESS 0x00080000 tx path
++# SK_DBGCAT_DRV_RX_PROGRESS 0x00100000 rx path
++# SK_DBGCAT_DRV_PROGRESS 0x00200000 general runtime
++# SK_DBGCAT_DRV_??? 0x00400000 not used
++# SK_DBGCAT_DRV_PROM 0x00800000 promiscuous mode
++# SK_DBGCAT_DRV_TX_FRAME 0x01000000 display tx frames
++# SK_DBGCAT_DRV_ERROR 0x02000000 error conditions
++# SK_DBGCAT_DRV_INT_SRC 0x04000000 interrupts sources
++# SK_DBGCAT_DRV_EVENT 0x08000000 driver events
++
++EXTRA_CFLAGS += -Idrivers/net/sk98lin -DSK_USE_CSUM -DSK_DIAG_SUPPORT \
++ -DGENESIS -DYUKON -DYUK2 -DCONFIG_SK98LIN_ZEROCOPY \
++ $(DBGDEF) $(SKPARAM)
++
++clean:
++ rm -f core *.o *.a *.s
++
++
+diff -ruN linux/drivers/net/sk98lin/h/lm80.h linux-new/drivers/net/sk98lin/h/lm80.h
+--- linux/drivers/net/sk98lin/h/lm80.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-new/drivers/net/sk98lin/h/lm80.h 2006-07-28 14:13:54.000000000 +0200
+@@ -0,0 +1,181 @@
++/******************************************************************************
++ *
++ * Name: lm80.h
++ * Project: Gigabit Ethernet Adapters, Common Modules
++ * Version: $Revision$
++ * Date: $Date$
++ * Purpose: Contains all defines for the LM80 Chip
++ * (National Semiconductor).
++ *
++ ******************************************************************************/
++
++/******************************************************************************
++ *
++ * LICENSE:
++ * (C)Copyright 1998-2002 SysKonnect.
++ * (C)Copyright 2002-2003 Marvell.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * The information in this file is provided "AS IS" without warranty.
++ * /LICENSE
++ *
++ ******************************************************************************/
++
++#ifndef __INC_LM80_H
++#define __INC_LM80_H
++
++#ifdef __cplusplus
++extern "C" {
++#endif /* __cplusplus */
++
++/* defines ********************************************************************/
++
++/*
++ * LM80 register definition
++ *
++ * All registers are 8 bit wide
++ */
++#define LM80_CFG 0x00 /* Configuration Register */
++#define LM80_ISRC_1 0x01 /* Interrupt Status Register 1 */
++#define LM80_ISRC_2 0x02 /* Interrupt Status Register 2 */
++#define LM80_IMSK_1 0x03 /* Interrupt Mask Register 1 */
++#define LM80_IMSK_2 0x04 /* Interrupt Mask Register 2 */
++#define LM80_FAN_CTRL 0x05 /* Fan Devisor/RST#/OS# Register */
++#define LM80_TEMP_CTRL 0x06 /* OS# Config, Temp Res. Reg */
++ /* 0x07 - 0x1f reserved */
++ /* current values */
++#define LM80_VT0_IN 0x20 /* current Voltage 0 value */
++#define LM80_VT1_IN 0x21 /* current Voltage 1 value */
++#define LM80_VT2_IN 0x22 /* current Voltage 2 value */
++#define LM80_VT3_IN 0x23 /* current Voltage 3 value */
++#define LM80_VT4_IN 0x24 /* current Voltage 4 value */
++#define LM80_VT5_IN 0x25 /* current Voltage 5 value */
++#define LM80_VT6_IN 0x26 /* current Voltage 6 value */
++#define LM80_TEMP_IN 0x27 /* current Temperature value */
++#define LM80_FAN1_IN 0x28 /* current Fan 1 count */
++#define LM80_FAN2_IN 0x29 /* current Fan 2 count */
++ /* limit values */
++#define LM80_VT0_HIGH_LIM 0x2a /* high limit val for Voltage 0 */
++#define LM80_VT0_LOW_LIM 0x2b /* low limit val for Voltage 0 */
++#define LM80_VT1_HIGH_LIM 0x2c /* high limit val for Voltage 1 */
++#define LM80_VT1_LOW_LIM 0x2d /* low limit val for Voltage 1 */
++#define LM80_VT2_HIGH_LIM 0x2e /* high limit val for Voltage 2 */
++#define LM80_VT2_LOW_LIM 0x2f /* low limit val for Voltage 2 */
++#define LM80_VT3_HIGH_LIM 0x30 /* high limit val for Voltage 3 */
++#define LM80_VT3_LOW_LIM 0x31 /* low limit val for Voltage 3 */
++#define LM80_VT4_HIGH_LIM 0x32 /* high limit val for Voltage 4 */
++#define LM80_VT4_LOW_LIM 0x33 /* low limit val for Voltage 4 */
++#define LM80_VT5_HIGH_LIM 0x34 /* high limit val for Voltage 5 */
++#define LM80_VT5_LOW_LIM 0x35 /* low limit val for Voltage 5 */
++#define LM80_VT6_HIGH_LIM 0x36 /* high limit val for Voltage 6 */
++#define LM80_VT6_LOW_LIM 0x37 /* low limit val for Voltage 6 */
++#define LM80_THOT_LIM_UP 0x38 /* hot temperature limit (high) */
++#define LM80_THOT_LIM_LO 0x39 /* hot temperature limit (low) */
++#define LM80_TOS_LIM_UP 0x3a /* OS temperature limit (high) */
++#define LM80_TOS_LIM_LO 0x3b /* OS temperature limit (low) */
++#define LM80_FAN1_COUNT_LIM 0x3c /* Fan 1 count limit (high) */
++#define LM80_FAN2_COUNT_LIM 0x3d /* Fan 2 count limit (low) */
++ /* 0x3e - 0x3f reserved */
++
++/*
++ * LM80 bit definitions
++ */
++
++/* LM80_CFG Configuration Register */
++#define LM80_CFG_START (1<<0) /* start monitoring operation */
++#define LM80_CFG_INT_ENA (1<<1) /* enables the INT# Interrupt output */
++#define LM80_CFG_INT_POL (1<<2) /* INT# pol: 0 act low, 1 act high */
++#define LM80_CFG_INT_CLR (1<<3) /* disables INT#/RST_OUT#/OS# outputs */
++#define LM80_CFG_RESET (1<<4) /* signals a reset */
++#define LM80_CFG_CHASS_CLR (1<<5) /* clears Chassis Intrusion (CI) pin */
++#define LM80_CFG_GPO (1<<6) /* drives the GPO# pin */
++#define LM80_CFG_INIT (1<<7) /* restore power on defaults */
++
++/* LM80_ISRC_1 Interrupt Status Register 1 */
++/* LM80_IMSK_1 Interrupt Mask Register 1 */
++#define LM80_IS_VT0 (1<<0) /* limit exceeded for Voltage 0 */
++#define LM80_IS_VT1 (1<<1) /* limit exceeded for Voltage 1 */
++#define LM80_IS_VT2 (1<<2) /* limit exceeded for Voltage 2 */
++#define LM80_IS_VT3 (1<<3) /* limit exceeded for Voltage 3 */
++#define LM80_IS_VT4 (1<<4) /* limit exceeded for Voltage 4 */
++#define LM80_IS_VT5 (1<<5) /* limit exceeded for Voltage 5 */
++#define LM80_IS_VT6 (1<<6) /* limit exceeded for Voltage 6 */
++#define LM80_IS_INT_IN (1<<7) /* state of INT_IN# */
++
++/* LM80_ISRC_2 Interrupt Status Register 2 */
++/* LM80_IMSK_2 Interrupt Mask Register 2 */
++#define LM80_IS_TEMP (1<<0) /* HOT temperature limit exceeded */
++#define LM80_IS_BTI (1<<1) /* state of BTI# pin */
++#define LM80_IS_FAN1 (1<<2) /* count limit exceeded for Fan 1 */
++#define LM80_IS_FAN2 (1<<3) /* count limit exceeded for Fan 2 */
++#define LM80_IS_CI (1<<4) /* Chassis Intrusion occured */
++#define LM80_IS_OS (1<<5) /* OS temperature limit exceeded */
++ /* bit 6 and 7 are reserved in LM80_ISRC_2 */
++#define LM80_IS_HT_IRQ_MD (1<<6) /* Hot temperature interrupt mode */
++#define LM80_IS_OT_IRQ_MD (1<<7) /* OS temperature interrupt mode */
++
++/* LM80_FAN_CTRL Fan Devisor/RST#/OS# Register */
++#define LM80_FAN1_MD_SEL (1<<0) /* Fan 1 mode select */
++#define LM80_FAN2_MD_SEL (1<<1) /* Fan 2 mode select */
++#define LM80_FAN1_PRM_CTL (3<<2) /* Fan 1 speed control */
++#define LM80_FAN2_PRM_CTL (3<<4) /* Fan 2 speed control */
++#define LM80_FAN_OS_ENA (1<<6) /* enable OS mode on RST_OUT#/OS# pins*/
++#define LM80_FAN_RST_ENA (1<<7) /* sets RST_OUT#/OS# pins in RST mode */
++
++/* LM80_TEMP_CTRL OS# Config, Temp Res. Reg */
++#define LM80_TEMP_OS_STAT (1<<0) /* mirrors the state of RST_OUT#/OS# */
++#define LM80_TEMP_OS_POL (1<<1) /* select OS# polarity */
++#define LM80_TEMP_OS_MODE (1<<2) /* selects Interrupt mode */
++#define LM80_TEMP_RES (1<<3) /* selects 9 or 11 bit temp resulution*/
++#define LM80_TEMP_LSB (0xf<<4)/* 4 LSBs of 11 bit temp data */
++#define LM80_TEMP_LSB_9 (1<<7) /* LSB of 9 bit temperature data */
++
++ /* 0x07 - 0x1f reserved */
++/* LM80_VT0_IN current Voltage 0 value */
++/* LM80_VT1_IN current Voltage 1 value */
++/* LM80_VT2_IN current Voltage 2 value */
++/* LM80_VT3_IN current Voltage 3 value */
++/* LM80_VT4_IN current Voltage 4 value */
++/* LM80_VT5_IN current Voltage 5 value */
++/* LM80_VT6_IN current Voltage 6 value */
++/* LM80_TEMP_IN current temperature value */
++/* LM80_FAN1_IN current Fan 1 count */
++/* LM80_FAN2_IN current Fan 2 count */
++/* LM80_VT0_HIGH_LIM high limit val for Voltage 0 */
++/* LM80_VT0_LOW_LIM low limit val for Voltage 0 */
++/* LM80_VT1_HIGH_LIM high limit val for Voltage 1 */
++/* LM80_VT1_LOW_LIM low limit val for Voltage 1 */
++/* LM80_VT2_HIGH_LIM high limit val for Voltage 2 */
++/* LM80_VT2_LOW_LIM low limit val for Voltage 2 */
++/* LM80_VT3_HIGH_LIM high limit val for Voltage 3 */
++/* LM80_VT3_LOW_LIM low limit val for Voltage 3 */
++/* LM80_VT4_HIGH_LIM high limit val for Voltage 4 */
++/* LM80_VT4_LOW_LIM low limit val for Voltage 4 */
++/* LM80_VT5_HIGH_LIM high limit val for Voltage 5 */
++/* LM80_VT5_LOW_LIM low limit val for Voltage 5 */
++/* LM80_VT6_HIGH_LIM high limit val for Voltage 6 */
++/* LM80_VT6_LOW_LIM low limit val for Voltage 6 */
++/* LM80_THOT_LIM_UP hot temperature limit (high) */
++/* LM80_THOT_LIM_LO hot temperature limit (low) */
++/* LM80_TOS_LIM_UP OS temperature limit (high) */
++/* LM80_TOS_LIM_LO OS temperature limit (low) */
++/* LM80_FAN1_COUNT_LIM Fan 1 count limit (high) */
++/* LM80_FAN2_COUNT_LIM Fan 2 count limit (low) */
++ /* 0x3e - 0x3f reserved */
++
++#define LM80_ADDR 0x28 /* LM80 default addr */
++
++/* typedefs *******************************************************************/
++
++
++/* function prototypes ********************************************************/
++
++#ifdef __cplusplus
++}
++#endif /* __cplusplus */
++
++#endif /* __INC_LM80_H */
+diff -ruN linux/drivers/net/sk98lin/h/skaddr.h linux-new/drivers/net/sk98lin/h/skaddr.h
+--- linux/drivers/net/sk98lin/h/skaddr.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-new/drivers/net/sk98lin/h/skaddr.h 2006-07-28 14:13:54.000000000 +0200
+@@ -0,0 +1,341 @@
++/******************************************************************************
++ *
++ * Name: skaddr.h
++ * Project: Gigabit Ethernet Adapters, ADDR-Modul
++ * Version: $Revision$
++ * Date: $Date$
++ * Purpose: Header file for Address Management (MC, UC, Prom).
++ *
++ ******************************************************************************/
++
++/******************************************************************************
++ *
++ * LICENSE:
++ * (C)Copyright 1998-2002 SysKonnect GmbH.
++ * (C)Copyright 2002-2003 Marvell.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * The information in this file is provided "AS IS" without warranty.
++ * /LICENSE
++ *
++ ******************************************************************************/
++
++/******************************************************************************
++ *
++ * Description:
++ *
++ * This module is intended to manage multicast addresses and promiscuous mode
++ * on GEnesis adapters.
++ *
++ * Include File Hierarchy:
++ *
++ * "skdrv1st.h"
++ * ...
++ * "sktypes.h"
++ * "skqueue.h"
++ * "skaddr.h"
++ * ...
++ * "skdrv2nd.h"
++ *
++ ******************************************************************************/
++
++#ifndef __INC_SKADDR_H
++#define __INC_SKADDR_H
++
++#ifdef __cplusplus
++extern "C" {
++#endif /* cplusplus */
++
++/* defines ********************************************************************/
++
++#define SK_MAC_ADDR_LEN 6 /* Length of MAC address. */
++#define SK_MAX_ADDRS 14 /* #Addrs for exact match. */
++
++/* ----- Common return values ----- */
++
++#define SK_ADDR_SUCCESS 0 /* Function returned successfully. */
++#define SK_ADDR_ILLEGAL_PORT 100 /* Port number too high. */
++#define SK_ADDR_TOO_EARLY 101 /* Function called too early. */
++
++/* ----- Clear/Add flag bits ----- */
++
++#define SK_ADDR_PERMANENT 1 /* RLMT Address */
++
++/* ----- Additional Clear flag bits ----- */
++
++#define SK_MC_SW_ONLY 2 /* Do not update HW when clearing. */
++
++/* ----- Override flag bits ----- */
++
++#define SK_ADDR_LOGICAL_ADDRESS 0
++#define SK_ADDR_VIRTUAL_ADDRESS (SK_ADDR_LOGICAL_ADDRESS) /* old */
++#define SK_ADDR_PHYSICAL_ADDRESS 1
++#define SK_ADDR_CLEAR_LOGICAL 2
++#define SK_ADDR_SET_LOGICAL 4
++
++/* ----- Override return values ----- */
++
++#define SK_ADDR_OVERRIDE_SUCCESS (SK_ADDR_SUCCESS)
++#define SK_ADDR_DUPLICATE_ADDRESS 1
++#define SK_ADDR_MULTICAST_ADDRESS 2
++
++/* ----- Partitioning of excact match table ----- */
++
++#define SK_ADDR_EXACT_MATCHES 16 /* #Exact match entries. */
++
++#define SK_ADDR_FIRST_MATCH_RLMT 1
++#define SK_ADDR_LAST_MATCH_RLMT 2
++#define SK_ADDR_FIRST_MATCH_DRV 3
++#define SK_ADDR_LAST_MATCH_DRV (SK_ADDR_EXACT_MATCHES - 1)
++
++/* ----- SkAddrMcAdd/SkAddrMcUpdate return values ----- */
++
++#define SK_MC_FILTERING_EXACT 0 /* Exact filtering. */
++#define SK_MC_FILTERING_INEXACT 1 /* Inexact filtering. */
++
++/* ----- Additional SkAddrMcAdd return values ----- */
++
++#define SK_MC_ILLEGAL_ADDRESS 2 /* Illegal address. */
++#define SK_MC_ILLEGAL_PORT 3 /* Illegal port (not the active one). */
++#define SK_MC_RLMT_OVERFLOW 4 /* Too many RLMT mc addresses. */
++
++/* Promiscuous mode bits ----- */
++
++#define SK_PROM_MODE_NONE 0 /* Normal receive. */
++#define SK_PROM_MODE_LLC 1 /* Receive all LLC frames. */
++#define SK_PROM_MODE_ALL_MC 2 /* Receive all multicast frames. */
++/* #define SK_PROM_MODE_NON_LLC 4 */ /* Receive all non-LLC frames. */
++
++/* Macros */
++
++#ifdef OLD_STUFF
++#ifndef SK_ADDR_EQUAL
++/*
++ * "&" instead of "&&" allows better optimization on IA-64.
++ * The replacement is safe here, as all bytes exist.
++ */
++#ifndef SK_ADDR_DWORD_COMPARE
++#define SK_ADDR_EQUAL(A1,A2) ( \
++ (((SK_U8 *)(A1))[5] == ((SK_U8 *)(A2))[5]) & \
++ (((SK_U8 *)(A1))[4] == ((SK_U8 *)(A2))[4]) & \
++ (((SK_U8 *)(A1))[3] == ((SK_U8 *)(A2))[3]) & \
++ (((SK_U8 *)(A1))[2] == ((SK_U8 *)(A2))[2]) & \
++ (((SK_U8 *)(A1))[1] == ((SK_U8 *)(A2))[1]) & \
++ (((SK_U8 *)(A1))[0] == ((SK_U8 *)(A2))[0]))
++#else /* SK_ADDR_DWORD_COMPARE */
++#define SK_ADDR_EQUAL(A1,A2) ( \
++ (*(SK_U32 *)&(((SK_U8 *)(A1))[2]) == *(SK_U32 *)&(((SK_U8 *)(A2))[2])) & \
++ (*(SK_U32 *)&(((SK_U8 *)(A1))[0]) == *(SK_U32 *)&(((SK_U8 *)(A2))[0])))
++#endif /* SK_ADDR_DWORD_COMPARE */
++#endif /* SK_ADDR_EQUAL */
++#endif /* 0 */
++
++#ifndef SK_ADDR_EQUAL
++#ifndef SK_ADDR_DWORD_COMPARE
++#define SK_ADDR_EQUAL(A1,A2) ( \
++ (((SK_U8 SK_FAR *)(A1))[5] == ((SK_U8 SK_FAR *)(A2))[5]) & \
++ (((SK_U8 SK_FAR *)(A1))[4] == ((SK_U8 SK_FAR *)(A2))[4]) & \
++ (((SK_U8 SK_FAR *)(A1))[3] == ((SK_U8 SK_FAR *)(A2))[3]) & \
++ (((SK_U8 SK_FAR *)(A1))[2] == ((SK_U8 SK_FAR *)(A2))[2]) & \
++ (((SK_U8 SK_FAR *)(A1))[1] == ((SK_U8 SK_FAR *)(A2))[1]) & \
++ (((SK_U8 SK_FAR *)(A1))[0] == ((SK_U8 SK_FAR *)(A2))[0]))
++#else /* SK_ADDR_DWORD_COMPARE */
++#define SK_ADDR_EQUAL(A1,A2) ( \
++ (*(SK_U16 SK_FAR *)&(((SK_U8 SK_FAR *)(A1))[4]) == \
++ *(SK_U16 SK_FAR *)&(((SK_U8 SK_FAR *)(A2))[4])) && \
++ (*(SK_U32 SK_FAR *)&(((SK_U8 SK_FAR *)(A1))[0]) == \
++ *(SK_U32 SK_FAR *)&(((SK_U8 SK_FAR *)(A2))[0])))
++#endif /* SK_ADDR_DWORD_COMPARE */
++#endif /* SK_ADDR_EQUAL */
++
++/* typedefs *******************************************************************/
++
++typedef struct s_MacAddr {
++ SK_U8 a[SK_MAC_ADDR_LEN];
++} SK_MAC_ADDR;
++
++
++/* SK_FILTER is used to ensure alignment of the filter. */
++typedef union s_InexactFilter {
++ SK_U8 Bytes[8];
++ SK_U64 Val; /* Dummy entry for alignment only. */
++} SK_FILTER64;
++
++
++typedef struct s_AddrNet SK_ADDR_NET;
++
++
++typedef struct s_AddrPort {
++
++/* ----- Public part (read-only) ----- */
++
++ SK_MAC_ADDR CurrentMacAddress; /* Current physical MAC Address. */
++ SK_MAC_ADDR PermanentMacAddress; /* Permanent physical MAC Address. */
++ int PromMode; /* Promiscuous Mode. */
++
++/* ----- Private part ----- */
++
++ SK_MAC_ADDR PreviousMacAddress; /* Prev. phys. MAC Address. */
++ SK_BOOL CurrentMacAddressSet; /* CurrentMacAddress is set. */
++ SK_U8 Align01;
++
++ SK_U32 FirstExactMatchRlmt;
++ SK_U32 NextExactMatchRlmt;
++ SK_U32 FirstExactMatchDrv;
++ SK_U32 NextExactMatchDrv;
++ SK_MAC_ADDR Exact[SK_ADDR_EXACT_MATCHES];
++ SK_FILTER64 InexactFilter; /* For 64-bit hash register. */
++ SK_FILTER64 InexactRlmtFilter; /* For 64-bit hash register. */
++ SK_FILTER64 InexactDrvFilter; /* For 64-bit hash register. */
++} SK_ADDR_PORT;
++
++
++struct s_AddrNet {
++/* ----- Public part (read-only) ----- */
++
++ SK_MAC_ADDR CurrentMacAddress; /* Logical MAC Address. */
++ SK_MAC_ADDR PermanentMacAddress; /* Logical MAC Address. */
++
++/* ----- Private part ----- */
++
++ SK_U32 ActivePort; /* View of module ADDR. */
++ SK_BOOL CurrentMacAddressSet; /* CurrentMacAddress is set. */
++ SK_U8 Align01;
++ SK_U16 Align02;
++};
++
++
++typedef struct s_Addr {
++
++/* ----- Public part (read-only) ----- */
++
++ SK_ADDR_NET Net[SK_MAX_NETS];
++ SK_ADDR_PORT Port[SK_MAX_MACS];
++
++/* ----- Private part ----- */
++} SK_ADDR;
++
++/* function prototypes ********************************************************/
++
++#ifndef SK_KR_PROTO
++
++/* Functions provided by SkAddr */
++
++/* ANSI/C++ compliant function prototypes */
++
++extern int SkAddrInit(
++ SK_AC *pAC,
++ SK_IOC IoC,
++ int Level);
++
++extern int SkAddrMcClear(
++ SK_AC *pAC,
++ SK_IOC IoC,
++ SK_U32 PortNumber,
++ int Flags);
++
++extern int SkAddrXmacMcClear(
++ SK_AC *pAC,
++ SK_IOC IoC,
++ SK_U32 PortNumber,
++ int Flags);
++
++extern int SkAddrGmacMcClear(
++ SK_AC *pAC,
++ SK_IOC IoC,
++ SK_U32 PortNumber,
++ int Flags);
++
++extern int SkAddrMcAdd(
<<Diff was trimmed, longer than 597 lines>>
More information about the pld-cvs-commit
mailing list