| |
| Switch driver in DSDT Release version 3.0D |
| ============================================ |
| |
| Table of Content: |
| ----------------- |
| 1) Release History |
| 2) Source Code Organization |
| 3) General Introduction |
| 4) HOW TO - Build qdDrv.o for vxWorks |
| 5) HOW TO - Build qdDrv.lib for WinCE |
| 6) HOW TO - Build qdDrv.o for Linux |
| 7) HOW TO - Use phy driver (madDrv) in qdDrv.o |
| 8) HOW TO - select features in msApiSelect.h |
| 9) HOW TO - Build kinds of driver |
| 10) Changes - DSDT 3.0B change list |
| |
| |
| 1) Release History |
| ------------------ |
| DSDT_3.0D/switch - Jan 10. 2011. |
| 0. update phy. |
| DSDT_3.0c/switch - Dec 10. 2010. |
| 0. Added new PTP and TAI feature of 88E6352. |
| 1. Added msApiSelect.h to allow Customer to select DSDT functions. |
| 3. Moved port mapping functions into Dev structure, which is selected by Customer. |
| DSDT_3.0B/switch - Nov 16. 2010. |
| 0. Added 88E6352 family. |
| 1. Added semaphore for Remote management access. |
| 2. Fixed bugs for 88ECxxx. |
| 3. Added port mapping functions into system config. |
| DSDT_3.0A/switch - Aug 18. 2010. |
| 0. Fixed 6152/6155 port vector. |
| 1. Fixed warning problems for long to short. |
| 2. Fixed API gatuGetViolation DB Number error. |
| DSDT_3.0/switch - May 26. 2010. |
| 0. based on DSDT2.8a. |
| 1. Support Marvell F2R (Remote management) function. |
| 2. Added device group 1 to extend device number. |
| 3. Added to support 88EC0xx. |
| 4. Added to use Marvell Phy driver (madDrv). |
| 5. Changed name form DSDT* to DSDT*/switch. The name QD is kept to indicate DSDT switch driver. |
| 6. Added to support 88EC0XX and 88E6250 group. |
| DSDT2.8a.zip - Jan. 2009. Fixed problem. |
| 1. Deleted to support 6095 family for Ingress Rate Limit withFlow control. |
| 2. Deleted unused definition in GT_QPRI_TBL_ENTRY. |
| DSDT2.8.zip - Nov. 2008. added support for 88E6351 family (88E6351, 88E6175, 88E6124) |
| 1. New APIs are added to support new devices. |
| |
| DSDT2.7a.zip - March. 2008. |
| 1. Fixed known bugs. |
| 2. Enhanced some of the APIs. |
| |
| DSDT2.7.zip - May. 2007. added support for 88E6165 family (88E6123, 88E6125, 88E6140, 88E6161) |
| 1. New APIs are added to support new devices. |
| 2. Bug fix |
| GT_PIRL2_DATA structure includes GT_PIRL_COUNT_MODE enum type, |
| which should be GT_PIRL2_COUNT_MODE. |
| 88E6083 support Static Management frame. |
| gprtSetForwardUnknown deals with wrong bit. |
| 3. Removed Diag program that make user confused with missing files. |
| |
| DSDT2.6b.zip - Jan. 2007. |
| 1. Bug Fixes |
| 2. PIRL Rate Limiting Parameter update |
| |
| DSDT2.6a.zip - Nov. 2006. added support for 88E6045. |
| |
| DSDT2.6.zip - Jul. 2006. added support for 88E6097, 88E6096, 88E6046, 88E6047, and 88E6085. |
| 1. New APIs are added to support new devices. |
| 2. Bug fixes those were in 2.6 preliminary release. |
| |
| DSDT2.6pre.zip - Apr. 2006. added preliminary support for 88E6097. |
| 1. New features are added. |
| 2. Some parameters in the existing APIs are modified to support extended feature. |
| |
| DSDT2.5b.zip - Jan. 2006. |
| 1. added gtDelay function after disabling PPU |
| Since delay function is system/OS dependent, it is required that DSDT user |
| fill up the gtDelay function based its platform parameters. |
| gtDelay function is located in src\msApi\gtUtils.c |
| 2. Unused GT_STATUS definitions are removed. |
| |
| DSDT2.5a.zip - Jan. 2006, added support for 88E6122 and 88E6121 and new feature that bypasses |
| initial device setup, and bug fixes in the previous release. |
| 1. Bypass initial configuration when loading driver. |
| 2. Bug fixes: |
| 1) synchronization issues. |
| 2) port vector of 0xFF was treated as an invalid vector. |
| |
| DSDT2.5.zip - Nov. 2005, added support for 88E6065, 88E6035, 88E6055, 88E6061, and 88E6031, |
| and bug fixes in the previous release. |
| 1. New APIs are added to support new devices. |
| 2. Bug fixes: |
| 1) gfdbGetAtuEntryNext API returns GT_NO_SUCH when Entry's MAC is Broadcast address. |
| 2) entryState in GT_ATU_ENTRY follows the definition. |
| 3) gsysSetTrunkMaskTable API does not overwrite HashTrunk value anymore. |
| 4) 10/100 FastEthernet Phy Reset occurs along with Speed, Duplex modification. |
| |
| |
| DSDT2.4a.zip - Oct. 2005, added support for 88E6131 and a bug fix. |
| 1. gprtPortPowerDown(gtPhyCtrl.c) didn't work due to reset - reset is not called after PowerDown bit change. |
| |
| DSDT2.4.zip - Aug. 2005, bug fixes and modifications |
| 1. gprtSetPktGenEnable(gtPhyCtrl.c) didn't work with Serdes Device - resolved. |
| 2. gprtSetPortAutoMode(gtPhyCtrl.c) dropped 1000Mbps Half duplex mode - resolved. |
| 3. gprtGetPhyLinkStatus(gtPhyCtrl.c) returned LinkOn when there is no phy connected - resolved. |
| 4. gprtSetPortDuplexMode(gtPhyCtrl.c) reset 1000M Speed - resolved. |
| 5. gfdbSetAtuSize(gtBrgFdb.c), now, returns GT_NOT_SUPPORT if ATU size of the device |
| is not configurable. |
| 6. gprtSetPortLoopback(gtPhyCtrl.c) treats Fast Ethernet Phy and Gigabit Ethernet Phy |
| differently. |
| 7. GT_GET_SERDES_PORT, now, does the error checking. |
| 8. IS_CONFIGURABLE_PHY reads PHY ID and returns the ID |
| |
| DSDT2.4pre.zip - July. 2005, added support for 88E6108 |
| 1. New features are added. |
| 2. Arguments in gprtSetPause and gprtSetPortSpeed are modified to support |
| 1000M Phys. |
| 3. Driver functions are added to support Marvell Alask Phys and to be |
| expanded easily for the future Phys. |
| |
| DSDT2.3c.zip - May. 2005, |
| 1. New features in Rev1 or Rev2 of 88E6095 are added |
| 2. gfdbGetAgingTimeout, and gfdbGetLearnEnable are added |
| 3. Bug fixes in grcSetEgressRate and grcSetPri0Rate |
| 4. Resetting TrunkID, when gprtSetTrunkPort is called to disable Trunk, is applied |
| only to Rev0 of 88E6095 and 88E6185 |
| |
| DSDT2.3b.zip - Mar. 2005, |
| 1. gstpSetMode function does not modify Port State any more, since STP module |
| sets the port state. gstpSetMode sets the switch so that it can receive |
| BPDU packets. |
| 2. gtLoadDriver clears Rsvd2Cpu and Rsvd2CpuEn bits. |
| 3. TrunkID will be reset when gprtSetTrunkPort is called to disable Trunk. |
| 4. "Check PPU Status in order to verify PPU disabled" is applied to gtVct.c |
| |
| DSDT2.3a.zip - Jan. 2005, added support for 88E6152, 88E6155, 88E6182, and 88E6092 |
| devices, removed non-existing devices, and bug fix in 2.3 release. |
| Fix : |
| Check PPU Status in order to verify PPU disabled. |
| |
| DSDT2.3.zip - Nov. 2004, support for 88E6185 and bug fixes in 2.3 preliminary release. |
| Fixes : |
| 1) Provide some delay after disabling PPU. |
| 2) VCT runs after disabling PPU. |
| |
| DSDT2.3pre.zip - Nov. 2004, added preliminary support for 88E6185. |
| |
| DSDT2.2a.zip - Nov. 2004, added semaphore support for MII Access with multi address mode. |
| |
| DSDT2.2.zip - Oct. 2004, support for 88E6095 and bug fixes in 2.2 preliminary release. |
| |
| DSDT2.2pre.zip - Sep. 2004, added preliminary support for 88E6095 and work-around for VCT |
| based on VCT Application Note. |
| |
| DSDT2.1a.zip - Apr. 2004, support 88E6093 and bug fixes. |
| Device Driver Package name has been changed from QDDriver to DSDT(Datacom |
| Same Driver Technology). |
| Bug Fixes : |
| 1) DBNum was not correctly handled while getting entry from VTU Table. |
| 2) Member Tag in VTU entry was not defined correctly for 88E6183 family. |
| 3) Correction of 88E6183 RMON Counter Structure and Enum. |
| 4) ATU Interrupt Handling routine |
| |
| qdDriver2.1-pre.zip - Apr. 2004, added preliminary support for 88E6093 and bug fixes. |
| Bug Fixes : |
| 1) DBNum was not incorrectly handled while getting entry from |
| VTU Table. |
| 2) Member Tag in VTU entry was not defined correctly for 88E6183 family. |
| |
| qdDriver2.0a.zip - Dec. 2003, provides functions, which can read/write |
| Switch Port Registers and Switch Global Registers: |
| gprtGetSwitchReg, |
| gprtSetSwitchReg, |
| gprtGetGlobalReg, and |
| gprtSetGlobalReg |
| |
| qdDriver2.0.zip - July. 2003, supports Multi Address Mode for upcoming device. |
| AUTO_SCAN_MODE, MANUAL_MODE, and MULTI_ADDR_MODE are added |
| to find a QD Family device. |
| Supports Sapphire (10 port Gigabit switch). |
| |
| qdDriver1.4a.zip - Apr. 2003, bug fixes. |
| Bug fixes on portVec in GT_ATU_ENTRY structure, which supported only |
| total of 8 ports (defined as GT_U8). It's now defined as GT_U32. |
| utils.c and testApi.c in Diag directory also modified to support |
| the switch with more than 8 ports. |
| |
| qdDriver1.4.zip - Apr. 2003, added support for Ocatne (6083). |
| Removed NO-OPs, which created when DBG_PRINT is undefined. |
| Bug fixes on gprtSetIGMPSnoop and gprtGetIGMPSnoop functions, |
| and GT_PRI0_RATE enum type. |
| |
| qdDriver1.3h.zip - Feb. 2003, added support for Extended Cable Status, |
| such as Impediance mismatch, Pair Skew, Pair Swap and Pair Polarity. |
| Bug fixes on FFox-EG and FFox-XP device ID. |
| |
| qdDriver1.3g.zip - Dec. 2002, added preliminary support for Octane (6083) |
| |
| qdDriver1.3.zip - Oct. 2002, added support for ClipperShip (6063) |
| This driver works with all released devices, including |
| 6051, 6052, 6021, and 6063 |
| |
| qdDriver1.2.zip - Aug. 2002, added support for FullSail (6021) |
| |
| qdDriver1.1.zip - June, 2002 OS independent QuarterDeck Driver Release |
| Based on 1.0 release, but removed OS dependency. The driver |
| is designed to work with any OS without code changes. |
| |
| qdDriver1.0.zip - Feb. 2002, Initial QuaterDeck Driver Release |
| Based on vxWorks OS, support 6051/6052 |
| |
| |
| 2) Source Code Organization |
| -------------------------- |
| 2.1) src |
| Switch Driver Suite Source Code. |
| |
| 2.2) Include directory |
| Switch Driver Suite Header files and Prototype files |
| |
| 2.3) Library |
| Object files for Switch driver Suite |
| |
| 2.4) Sample |
| Sample Code that shows how to use MSAPIs, e.g., init Switch driver, setup VLAN for Home Gateway, etc. |
| |
| 2.5) Tools |
| Building related files |
| |
| 2.6) mad |
| Marvell Phy Driver (madDrv). See mad/README.txt for more detail. |
| |
| |
| * The Switch Driver Suite Source Code is OS independent, and fully supported by Marvell. |
| * The Sample Codes are tested under vxworks and Linux, and is provided for reference only. |
| |
| |
| 3) General Introduction |
| ----------------------- |
| |
| The Switch driver suite is standalone program, which is independent of both OS and Platform. |
| As such, applications of MSAPIs need to register platform specific functions. |
| This is done by calling qdLoadDriver function. This function returns a pointer (*dev), |
| which contains the device and platform information. It will then be used for each MSAPI call. |
| |
| msApiInit.c file in Diag directory and Sample\Initialization directory demonstrate |
| how you can register those functions. |
| |
| msApiInit.c |
| qdStart is the main function to initialize Switch Driver and does the |
| followings: |
| a) register the platform specific functions. |
| 1.1 and 1.2 below are required. |
| 1.3 to 1.4 are for F2R(Remote management), it is selected |
| by flag GT_RMGMT_ACCESS in IncludemsApiDefs.h. |
| 1.5 to 1.8 are optional. |
| 1.1) readMii - BSP specific MII read function |
| 1.2) writeMii - BSP specific MII write function |
| 1.3) hwAccessMod - BSP supported function mode |
| 1.4) hwAccess - BSP specific hardware access function |
| 1.5) semCreate - OS specific semaphore create function. |
| 1.6) semDelete - OS specific semaphore delete function. |
| 1.7) semTake - OS specific semaphore take function. |
| 1.8) semGive - OS specific semaphore give function. |
| |
| Notes) The given example will use DB-88E6218 BSP as an example. |
| |
| b) Initialize BSP provided routine (if required). |
| |
| c) Calls qdLoadDriver routine. |
| 1.1) Input (GT_SYS_CONFIG) - CPU Port Number (Board Specific) and Port Mode |
| (either 1 for Forwarding mode or 0 for Hardware default mode) |
| 1.2) Output (GT_QD_DEV) - Contains all device (Switch) and platform specific info. |
| It will be used for all API calls. |
| |
| d) Calls sysEnable (for future use.) |
| |
| |
| 4) HOW TO - Build qdDrv.o for vxWorks |
| ------------------------------------- |
| |
| 1. Extract the given ZIP file into c:\DSDT_3.x\switch directory |
| You may change the directory name to your choice, and change the environment variable below accordingly. |
| 2. Edit setenv.bat file in c:\DSDT_3.x\switch\tools |
| 3. Modify the following variables according to your setup. |
| set DSDT_USER_BASE=C:\DSDT_3.x\switch |
| set DSDT_PROJ_NAME=qdDrv |
| set DSDT_USE_MAD=FALSE or TRUE |
| set WIND_BASE=C:\Tornado |
| set TARGETCPU=MIPS ;ARM for ARM Cpu |
| set WIND_HOST_TYPE=x86-win32 |
| 4. run "setenv" |
| 5. Change directory to c:\DSDT_3.x\switch\src |
| 6. run "make" |
| 7. qdDrv.o and qdDrv.map will be created in c:\DSDT_3.x\switch\Library. |
| |
| |
| 5) HOW TO - Build qdDrv.lib for WinCE |
| ------------------------------------- |
| |
| 1. Extract the given ZIP file into c:\DSDT_3.x\switch directory(directory can be changed) |
| 2. Edit setenv.bat file in c:\DSDT_3.x\switch\tools |
| 3. Modify the following variables according to your setup. |
| set DSDT_USER_BASE=C:\DSDT_3.x\switch |
| set DSDT_PROJ_NAME=qdDrv |
| set DSDT_USE_MAD=FALSE or TRUE |
| set TARGETCPU=x86 ;MIPSIV for MIPS IV |
| set WCEROOT=C:\WINCE400 |
| |
| 4. run "setenv WINCE" |
| 5. Change directory to c:\DSDT_3.x\switch\src |
| 6. run "make" |
| 7. qdDrv.lib will be created in c:\DSDT_3.x\switch\Library. |
| |
| |
| 6) HOW TO - Build qdDrv.o for Linux |
| ----------------------------------- |
| |
| 1. Extract the given ZIP file into $HOME/DSDT_3.x/switch directory(directory can be changed) |
| ` in Linux system (verified with Fedore 8.x) |
| 2. Edit setenv file in $HOME/DSDT_3.x/switch/tools |
| 3. Modify the following variables according to your setup. |
| declare -x DSDT_USER_BASE=$HOME/DSDT_3.x/switch |
| declare -x DSDT_PROJ_NAME=qdDrv |
| declare -x DSDT_USE_MAD=FALSE or TRUE |
| 4. run "source setenv" |
| 5. Change directory to $HOME/DSDT_3.x/switch/src |
| 6. run "make" |
| 7. qdDrv.o and qdDrv.map will be created in $HOME/DSDT_3.x/switch/Library. |
| |
| 7) HOW TO - Use Phy driver in qdDrv.o |
| ------------------------------------- |
| |
| The Phy driver(MAD) supports Marvell Phy products. It includes the phys in switch chips. |
| From DSDT 3.0A, the Switch driver added function to merge MAD driver |
| to replace original Phy regarded functions. This is an option. |
| There is no any difference from original phy APIs of Switch, when it uses MAD APIs. |
| For old chips, it is selectible to use ether original Phy API function or call MAD functions. The selection is setting global variable <DSDT_USE_MAD> as TRUE or FALSE. |
| Run <make DSDT_USE_MAD=TRUE> to build switch driver with MAD APIs. |
| |
| 8) HOW TO - select features in msApiSelect.h |
| ----------------------------------- |
| |
| Customer can ignore the selections. The default selections are <undef> for all. |
| |
| From DSDT_3.0D, DSDT addes file <msApiSelect.h> in DSDT*.*/Include. |
| The file allows customer to select self features. |
| Now selections are: |
| GT_PORT_MAP_IN_DEV: To use port mapping functions in Dev configuration. |
| GT_RMGMT_ACCESS: DSDT uses RMGMT to replace SMI. |
| GT_USE_MAD: the phy APIs of switch use Mad driver(DSDT/phy). |
| |
| If customer wants to use the selection, |
| 1. Addes a Micro definition <CHECK_API_SELECT> in customers build enviroment. |
| For example, in <makefile>, addes <CFLAGS += -DCHECK_API_SELECT>. |
| 2. In file <Include/msApiSelect>, set correct selections. |
| 3. Re-build DSDT/switch. |
| |
| |
| 9) HOW TO - build driver |
| ----------------------------------- |
| |
| Change directory to $HOME/DSDT_3.x/ |
| <make switch>: to build switch driver image only. |
| <make phy>: to build phy driver image only. |
| <make>: to build switch and phy driver images, and switch driver does not use MAD APIs. |
| <make DSDT_USE_MAD=TRUE>: to build switch and phy driver images, and switch driver uses MAD APIs. |
| |
| 10) CHANGES |
| ----------- |
| 1. Supports Marvell F2R (RMGMT) function. |
| Added one BSP provided function and one BSP function configuration selection |
| in Device configuration. The new BSP function is HwAccess. It is a read/write integration function, |
| like Marvell's F2R(RMGMT) access function. |
| The variable HwAccessMode is configuration selection parameter. It indicates |
| to use SMI or F2R function in BSP. |
| The F2R support can be selected by flag <GT_RMGMT_ACCESS> in Include/msApiDefs.h. |
| Thw flag GT_RMGMT_ACCESS is useful to compatible backwards. |
| Customer, who do not provider <HwAccess function>, still can set to use GT_RMGMT_ACCESS. |
| The DSDT switch driver include function to allow customer use Read/Write functions only. |
| 2. Added device group 1 to meet extended requirement of Marvell SOHO switch products. |
| 3. Added to support new chips 88EC0xx and 6250. |
| 4. Merged Marvell Phy Driver (MAD). |
| The qdDriver can use Phy driver to replace the Phy part of the qdDriver. |
| It is selected by flag GT_USE_MAD in Include/msApiDefs.inc. Or it can be set in Makefile. |
| 5. Added 88E6352 family. Added to support Tcam,WoL/WoF. |
| 6. Added a new semaphore for Remote management access. |
| 7. Added port mapping functions into system config. |
| 8. Sdded <msApiSelect.h> to allow customer to select self features. |
| Customer can set: USE_MAD, PORT_MAP_IN_DEV, USE_RMGMT... |
| |