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