X-MimeOLE: Produced By Microsoft Exchange V6.5
Received: by onstor-exch02.onstor.net 
	id <01C76A7B.9AC7D22B@onstor-exch02.onstor.net>; Mon, 19 Mar 2007 16:09:11 -0700
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----_=_NextPart_001_01C76A7B.9AC7D22B"
Content-class: urn:content-classes:message
Subject: topics for Tuesday's Cougar meeting
Date: Mon, 19 Mar 2007 16:09:11 -0700
Message-ID: <BB375AF679D4A34E9CA8DFA650E2B04E018A6948@onstor-exch02.onstor.net>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: topics for Tuesday's Cougar meeting
Thread-Index: Acdqe5q4n1eLftUrR+yQZQPhr5F1Gw==
From: "Jeff Miller" <jeff.miller@onstor.com>
To: "dl-Cougar" <dl-Cougar@onstor.com>

This is a multi-part message in MIME format.

------_=_NextPart_001_01C76A7B.9AC7D22B
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

 All,
I have a couple of topics for Tuesday's Cougar meeting.

Coordination between PROM development and non-PROM development
-  There seems to be two branches: diag_cg and cougar.
-  Who is going to make changes in common files?
-  How to manage this?  When to merge?

Product/processor compile and runtime conditionals.  My working notes
for this are below.

Thanks,
Jeff




Start on code reorganization needed for phase one first, then do changes
for new hardware.  This order because the code reorganization can be
tested to a large extent on Bobcat and Cheetah (it should still work).
The changes for new hardware cannot be tested until the hardware is
available and the development is easier if the hardware is available.


All code is compiled for a particular product, either Cheetah or Bobcat.
Cougar will be a third and later there will be more.


We need to use macros for hardware/configuration characteristics instead
of model or product that happens to have that characteristic.  The
number of fibre channel or ethernet ports should be determined at run
time.  Later we may need to have the type determined at run time and
allow for more than one type in one system.  Expansion card interfaces
might be different from base interfaces.

As much as possible we need use a common interface to map HW to higher
level code, keep HW specific in one file or set of files.


These some of the macros and functions used for determining product and
processor:
SIBYTE SB1250 SIBYTE_BC NFX_MOD_NFP NFX_MOD_FCNIM NFX_MOD_FCNIM_BC
FCNIM_BC FCNIM BOBCAT isFC isOldFC isSSC isOldSSC isTXRX isCheetah
isSSCmgmt isTXRX isFP NFX_SMP SSC SSC_MGMT NFX_MOD_SSC AGILE_HARDWARE


* What do the macros/functions mean? Are some redundant?
We need to be real clear on what the macros mean and what might be
needed in the future (for Cougar and beyond) before making changes.  Are
SIBYTE, SB1250, NFX_MOD_NFP, NFX_SMP, synonyms or do they mean different
things but happen to all be defined or all undefined?  We need to use
'#ifdef(CHEETAH)' not '#ifndef(BOBCAT)'


SIBYTE SB1250 NFX_MOD_NFP are defined on BC and CH TXRX and FP. are they
all the same?

NFX_MOD_FCNIM_BC FCNIM_BC are defined for BC FC - are they the same?

NFX_MOD_FCNIM FCNIM defined only for Cheetah FC - are they the same?

SIBYTE_BC defined for BOBCAT TXRX and FP

isFC - R9000: uses cupid=3D1, R7000: c0(16) bits 21-22=3D1, if =
LINUX_TEST
use NFX_MOD_FCNIM, else return 0

isSSC  - R9000: uses cupid=3D1, R7000: c0(16) bits 21-22=3D1, if =
LINUX_TEST
use NFX_MOD_SSC, else return 0

isCheetah - tests bit at phys addr 0x10020008 if SYBYTE, else returns 0.
means ch txrx or fp

isSSCmgmt - only depends on SSC_MGMT

isTXRX isFP - these are effectively the same as the #defines=20

isOldSSC - Returns 0 if R9000 reads CP(16) 0x300000 bits - Impl returns
1 if bits 20-21 =3D 2

isOldFC() need to change to be 0 if not cheetah FC. uses GPP_FC_REV_MASK
bit in GPP_VALUE. Returns 0 if R9000
change to macro in code/sm-hw/hw-api.h
=20


* The functions should be replaced using compile time macros
isFC, isOldFC, isSSC, isOldSSC, isTXRX, isCheetah, isSSCmgmt  are
functions - should be compile time.

isTXRX() and isFP() are ok, #define to 0 or 1, only on txrx and fp
isSSCmgmt is ok but still a call, uses #ifdef SSC_MGMT
isFC() and isSSC() use core ID - need to replace with macro


BOBCAT is used for several things, not only the product.
BOBCAT is defined for all BOBCAT code

BOBCAT is used to mean ISP2312 rather than ISP2310
BOBCAT is used to indicate 2 FC ports rather than 4
BOBCAT is used to indicate 2 ports per FC chip rather than 1
BOBCAT is used to mean single board
BOBCAT is used for sizing shared memory and other HW and memory
allocation differences



A grep of the source files finds:
337 total occurences of SIBYTE in 80 files
82 total occurences of SB1250 in 34 files
103 total occurences of SIBYTE_BC in 23 files
46 total occurences of NFX_MOD_NFP in 24 files
35 total occurences of NFX_MOD_FCNIM in 17 files
13 total occurences of NFX_MOD_FCNIM_BC in 11 files
249 total occurences of FCNIM_BC in 114 files
406 total occurences of FCNIM in 109 files
288 total occurences of BOBCAT in 60 files
99 total occurences of isFC in 41 files
9 total occurences of isOldFC in 6 files
64 total occurences of isSSC in 27 files
4 total occurences of isOldSSC in 4 files
151 total occurences of isTXRX in 47 files
132 total occurences of isCheetah in 24 files
10 total occurences of isSSCmgmt in 7 files
151 total occurences of isTXRX in 47 files
125 total occurences of isFP in 38 files
209 total occurences of NFX_SMP in 62 files
now totals for all
1890 total occurences of SIBYTE SB1250 SIBYTE_BC NFX_MOD_NFP
NFX_MOD_FCNIM NFX_MOD_FCNIM_BC FCNIM_BC FCNIM BOBCAT isFC isOldFC isSSC
isOldSSC isTXRX isCheetah isSSCmgmt isTXRX isFP NFX_SMP in 336 total
files

Also 199 total occurences of LINUX_TEST in 72 files
348 total occurences of SSC
49 total occurences of SSC_MGMT
2 total occurences of NFX_MOD_SSC
133 total occurences of AGILE_HARDWARE in 59 files

Much of the above is in code that obviously changes for Cougar, where a
piece of hardware is replaced by another or just removed.  Much is not
so obvious and will need a close look.




* Areas that might be overlooked.
Slot/cpu concept - how is a function (say FC/scsi) mapped to a slot/cpu
sm-chassis - hardware differences, slot/cpu, model differences, BOBCAT
used to mean single board
Makefile defines/ifdef macro organization
Integration with prom code
dvt/diag impacts
Code changes to support more and varied numbers of FC and ETH ports.
SEEP differences
nfxsh
snmp
kpi/stats
sm-backplane
many places where the wrong macro is used e.g. !COUGAR to mean Cheetah.
network transmit dma to local buffer
Need to be clear about what HW setup is done in prom and what needs to
be done later.
Find relevant hard coded numbers and replace with macro or code.



* Some details of macro usage.
BOBCAT:
./sm-bmc12500-eth  hardware differences - Some data alignment offsets -
128vs168, 160 for cheetah.  Offset so data starts on 256 byte boundary.
Cheetah is 160 instead of 168 for 8 byte LMUX header.
./sm-bmc12500-eth/bmc12500-eth-mii.c PHY init=20
./sm-bmc12500-eth/bmc12500-eth-rx.c alignment offsets

./sm-chassis hardware differences, slot/cpu, model differences, BOBCAT
used to mean single board
bobcat files: cm-util-bc.c   cm-util-bc.c

./sm-eee/eee-dvt.c, eee-test.c, eee-test.h - test setup differences

./sm-dp-proxy/dp-proxy.h lmux related? BC1250_USE_PF never defined?

./sm-jmptbl/jmptbl.S:   JMPTBL_VAR(10, gethostid_unused) ??

./sm-pci/pci-init.c
#if defined(NFP_TXRX) && defined(BOBCAT) /* Setup the 16MB PCI access
window at the beginning of the shared memory.

./sm-prom-upgrade/upgrade-app.c
#ifndef BOBCAT /* don't do upgrade if upgrade_prom environment flag is
off

./sm-sanm-agent/sanm-agent-util.c FC related - BOBCAT has only two FC
ports.

./sm-scsi/scsi.c FC related - BOBCAT has only two FC ports.
./sm-scsi/scsi-msg.c FC ports
./sm-scsi/scsi-tape-cmds.c FC ports
./sm-scsi/scsi-ui.c FC ports

Why are 2312s not just handled as two devices?

./sm-sdm/sdm-api.h FC ports - SDM_PORT_MAX 2 or 4=20
./sm-sdm/sdm-msg.c slot/cpu - NFX_FCNIM_CPUID0
./sm-sdm/storage.c FC ports

./sm-seep/env.c=20
./sm-seep/seep-api.c=20
./sm-seep/seep.h=20
./sm-seep/seep-ui.c
autolink environment variables
seep differences - different layout, access

./sm-serio.bsd/gt64240.h
./sm-serio.bsd/gt64240-sdma.c
./sm-serio.bsd/gt64240-uart.c
UART, DMA - gt64240 not on cougar

./sm-stats/stats-fp.c - BOBCAT used to mean not cheetah or garfield
Hard coded number of ethernet ports:
stats_fpLsiStats_t              fpLsiStats[4];  // 4 ports
and in stats_resetCounters and in statsTimerProc: 'if (statsStep > 3)'

./sm-sys-dvt/dvt-api.h
BOBCAT has additional statistics

./sm-ui/cmdtable.c
gt64xxx-mii, bmc12500 functions

./ssc-crashsave/crashsave.c
check_ssc_crashdump - crashdump location

./ssc-ndmp/ndmp-config.c
cpu_id =3D NFX_SSC_UNIX for BOBCAT, else must be cheetah - cpu_id =3D
NFX_SSC_MGMT


./ssc-nfxsh/cmd_flash.c - List of files to copy for "copy all" command
./ssc-nfxsh/cmd_help.c - help files, ifndef BOBCAT means cheetah HW
./ssc-nfxsh/cmd_port.c - FC ports, For Bobcat, set the autolinkenable
variable in the SEEP from SSC, if bobcat check for only 2 eth ports
./ssc-nfxsh/cmd_rcon.c - if not bobcat, rcon ports sp2 and sp3
./ssc-nfxsh/cmd_scsi.c - number of FC ports
./ssc-nfxsh/cmd_stats.c - #ifndef BOBCAT then SSC mgmt, dp83820, fp_lsi,
bcm5600, gt64240mii exist
./ssc-nfxsh/cmd_sysdvt.c - #ifndef BOBCAT then SSC mgmt, backplane
exists
./ssc-nfxsh/cmd_system.c - #ifndef BOBCAT means cheetah
./ssc-nfxsh/cmd_upgrade.c - cpu numbering differences, if not bobcat
then cheetah
./ssc-sys-dvt/dvt-helper.h -  dvt_test_stats differences
./ssc-sys-dvt/ssc-sys-dvt.c
BOBCAT used for # of FC ports - many hard coded eth/fc numbers
char msgBuff[8192];    // Max possible MTU


These seem to be to only affected subdirectories:
./sm-bsd-snmpd/agent/mibgroup/agile.h:BOBCAT means not cheetah
./sm-bsd-snmpd/agent/mibgroup/mib_module_includes.h:BOBCAT  means not
cheetah
./sm-bsd-snmpd/agent/mibgroup/mib_module_inits.h:BOBCAT means not
cheetah
./sm-fs/dump/traverse.c:BOBCAT means not cheetah
./sm-icu-common/unicode/icu_wrappers.h:FCNIM_BC=20
./sm-icu-common/unicode/platform.h:FCNIM_BC
./sm-icu-common/unicode/platform.h:FCNIM_BC
./sm-icu-common/unicode/platform.h:FCNIM_BC
./sm-icu-common/unicode/platform.h:FCNIM_BC
./sm-icu-common/unicode/putil.h:FCNIM_BC
./sm-icu-common/unicode/umachine.h:FCNIM_BC
./sm-icu-common/unicode/utf.h:FCNIM_BC

Other HW defines
code/sm-bsd-api/bsdintf-api.c:49:#if defined(SIBYTE) >>> include
bmc12500-eth-api.h
code/sm-bsd-api/bsd-stats.c:57:#if defined(SIBYTE) >>> include
bmc12500-eth-api.h
code/sm-bsd-net/vstack_vlink.c >>> include bmc12500-eth-api.h
code/sm-cache/cache-sibyte.c >>> skip file if not SIBYTE
code/sm-cifs/win-compat.h:84:#ifdef SIBYTE >>> delete - #else case is
the same
code/sm-dcache/dcache-tx.c >>>  #include "../sm-malloc/malloc-api.h" --
move to header file
code/sm-dcache/dcache-util.c >>>  #include "../sm-malloc/malloc-api.h"
-- move to header file
code/sm-dp-proxy/dp-proxy.c:477:    if (isCheetah())  >>> if LMUX add 4
code/sm-eee/eee-debug.c >>> display
code/sm-eee/eee-desc.c >>> buffer pool mgmt will get confusing if FC and
FP are combined
code/sm-eee/eee-fwd.c >>> cpu number assumptions - this will get
complicated
code/sm-eee/eee.h >>> mem sizing, #cpus
code/sm-eee/eee-init.c >>> eee.mgmt_size_buf
code/sm-ispfc/ispfc_scsi.c >>> FCNIM_BC used to select sense buffer
allocation=20
code/sm-rmc/rmc_api.c >>> need to look at this - rmc_cleanup_edesc: #if
defined(FCNIM) || defined(SSC_MGMT)
code/sm-serio.bsd/serio-api.c >>> using SIBYTE to select UART init
function or channel#
code/sm-spinlock/spinlock-inlines.h >>> all skipped if not SIBYTE
code/sm-stats/kpi-api.c >>> skips all code if FCNIM_BC or not
NFP_FP/NFP_TXRX (just take out FCNIM_BC test)
code/sm-stats/stats.c >>> skips some code if FCNIM_BC or not
NFP_FP/NFP_TXRX (just take out FCNIM_BC test)
code/sm-stats/stats-fc_bc.c >>> only for FCNIM_BC
code/sm-stats/stats-fc.c >>> only for FCNIM (cheetah)

SIBYTE_BC|NFX_MOD_FCNIM_BC|FCNIM_BC|NFP_TXRX_BC
./sm-backplane/bp_init_fc.c hardware init - need code for each HW type
./sm-backplane/bp_init_txrx.c - need code for each HW type
./sm-backplane/bp_ui.c - varies for each HW


nfx-tree/Makefile - not bc means cheetah

SIBYTE used to mean not ssc or fc

------_=_NextPart_001_01C76A7B.9AC7D22B
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
6.5.7652.24">
<TITLE>topics for Tuesday&#8217;s Cougar meeting</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial"></FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us">&nbsp;<FONT SIZE=3D2 =
FACE=3D"Arial">All,</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">I =
have a couple of topics for Tuesday</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">&#8217;</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">s Cougar =
meeting.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">Coordination between PROM development and non-PROM =
development</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">-&nbsp; There seems to be two branches: diag_cg and =
cougar.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">-&nbsp; Who is going to make changes in common =
files?</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">-&nbsp; How to manage this?&nbsp; When to =
merge?</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">Product/processor compile and runtime conditionals.&nbsp; =
My working note</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">s</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial"> for this are below.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">Thanks,</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">Jeff</FONT></SPAN></P>
<BR>
<BR>
<BR>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Start =
on code reorganization needed for phase one first, then do changes for =
new hardware.&nbsp; T</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">his order because =
t</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT =
SIZE=3D2 FACE=3D"Arial">he code</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"> <FONT SIZE=3D2 =
FACE=3D"Arial">re</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">organiz</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">a</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">tion can be tested to a =
large extent on Bobcat and Cheetah (it should still work).&nbsp; The =
changes for new hardware cannot be tested until the hardware is =
available and the development is easier if the hardware is =
available</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN><SPAN =
LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">.</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"></SPAN></P>
<BR>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">All =
code is compiled for a particular product, either Cheetah or Bobcat. =
Cougar will be a third and later there will be more.</FONT></SPAN></P>
<BR>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">We =
need to use macros for hardware/configuration characteristics instead of =
model or product that happens to have that characteristic.&nbsp; The =
number of fibre channel or ethernet ports should be determined at run =
time.&nbsp; Later we may need to have the type determined at run time =
and allow for more than one type in one system.&nbsp; Expansion card =
interfaces might be different from base interfaces.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">As =
much as possible we need use a common interface to map HW to higher =
level code, keep HW specific in one file or set of =
files.</FONT></SPAN></P>
<BR>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">These =
some of the macros and functions used for determining product and =
processor:</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">SIBYTE SB1250 SIBYTE_BC NFX_MOD_NFP NFX_MOD_FCNIM =
NFX_MOD_FCNIM_BC FCNIM_BC FCNIM BOBCAT isFC isOldFC isSSC isOldSSC =
isTXRX isCheetah isSSCmgmt isTXRX isFP NFX_SMP SSC SSC_MGMT NFX_MOD_SSC =
AGILE_HARDWARE</FONT></SPAN></P>
<BR>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">* =
What do the macros/functions mean? Are some redundant?</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">We =
need to be real clear on what the macros mean and what might be needed =
in the future (for Cougar and beyond) before making changes.&nbsp; Are =
SIBYTE, SB1250, NFX_MOD_NFP, NFX_SMP, synonyms or do they mean different =
things but happen to all be defined or all undefined?&nbsp; We need to =
use '#ifdef(CHEETAH)' not '#ifndef(BOBCAT)'</FONT></SPAN></P>
<BR>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">SIBYTE SB1250 NFX_MOD_NFP are defined on BC and CH TXRX =
and FP. are they all the same?</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">NFX_MOD_FCNIM_BC FCNIM_BC are defined for BC FC - are =
they the same?</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">NFX_MOD_FCNIM FCNIM defined only for Cheetah FC - are =
they the same?</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">SIBYTE_BC defined for BOBCAT TXRX and =
FP</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">isFC =
- R9000: uses cupid=3D1, R7000: c0(16) bits 21-22=3D1, if LINUX_TEST use =
NFX_MOD_FCNIM, else return 0</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">isSSC&nbsp; - R9000: uses cupid=3D1, R7000: c0(16) bits =
21-22=3D1, if LINUX_TEST use NFX_MOD_SSC, else return =
0</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">isCheetah - tests bit at phys addr 0x10020008 if SYBYTE, =
else returns 0. means ch txrx or fp</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">isSSCmgmt - only depends on SSC_MGMT</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">isTXRX isFP - these are effectively the same as the =
#defines </FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">isOldSSC - Returns 0 if R9000 reads CP(16) 0x300000 bits =
- Impl returns 1 if bits 20-21 =3D 2</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">isOldFC() need to change to be 0 if not cheetah FC. uses =
GPP_FC_REV_MASK bit in GPP_VALUE. Returns 0 if R9000</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">change to macro in code/sm-hw/hw-api.h</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">&nbsp;</FONT></SPAN></P>
<BR>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">* The =
functions should be replaced using compile time macros</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">isFC, =
isOldFC, isSSC, isOldSSC, isTXRX, isCheetah, isSSCmgmt&nbsp; are =
functions - should be compile time.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">isTXRX() and isFP() are ok, #define to 0 or 1, only on =
txrx and fp</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">isSSCmgmt is ok but still a call, uses #ifdef =
SSC_MGMT</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">isFC() and isSSC() use core ID - need to replace with =
macro</FONT></SPAN></P>
<BR>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">BOBCAT is used for several things, not only the =
product.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">BOBCAT is defined for all BOBCAT code</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">BOBCAT is used to mean ISP2312 rather than =
ISP2310</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">BOBCAT is used to indicate 2 FC ports rather than =
4</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">BOBCAT is used to indicate 2 ports per FC chip rather =
than 1</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">BOBCAT is used to mean single board</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">BOBCAT is used for sizing shared memory and other HW and =
memory allocation differences</FONT></SPAN></P>
<BR>
<BR>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">A =
grep of the source files finds:</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">337 =
total occurences of SIBYTE in 80 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">82 =
total occurences of SB1250 in 34 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">103 =
total occurences of SIBYTE_BC in 23 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">46 =
total occurences of NFX_MOD_NFP in 24 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">35 =
total occurences of NFX_MOD_FCNIM in 17 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">13 =
total occurences of NFX_MOD_FCNIM_BC in 11 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">249 =
total occurences of FCNIM_BC in 114 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">406 =
total occurences of FCNIM in 109 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">288 =
total occurences of BOBCAT in 60 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">99 =
total occurences of isFC in 41 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">9 =
total occurences of isOldFC in 6 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">64 =
total occurences of isSSC in 27 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">4 =
total occurences of isOldSSC in 4 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">151 =
total occurences of isTXRX in 47 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">132 =
total occurences of isCheetah in 24 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">10 =
total occurences of isSSCmgmt in 7 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">151 =
total occurences of isTXRX in 47 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">125 =
total occurences of isFP in 38 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">209 =
total occurences of NFX_SMP in 62 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">now =
totals for all</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">1890 =
total occurences of SIBYTE SB1250 SIBYTE_BC NFX_MOD_NFP NFX_MOD_FCNIM =
NFX_MOD_FCNIM_BC FCNIM_BC FCNIM BOBCAT isFC isOldFC isSSC isOldSSC =
isTXRX isCheetah isSSCmgmt isTXRX isFP NFX_SMP in 336 total =
files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Also =
199 total occurences of LINUX_TEST in 72 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">348 =
total occurences of SSC</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">49 =
total occurences of SSC_MGMT</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">2 =
total occurences of NFX_MOD_SSC</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">133 =
total occurences of AGILE_HARDWARE in 59 files</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Much =
of the above is in code that obviously changes for Cougar, where a piece =
of hardware is replaced by another or just removed.&nbsp; Much is not so =
obvious and will need a close look.</FONT></SPAN></P>
<BR>
<BR>
<BR>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">* =
Areas that might be overlooked.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">Slot/cpu concept - how is a function (say FC/scsi) mapped =
to a slot/cpu</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">sm-chassis - hardware differences, slot/cpu, model =
differences, BOBCAT used to mean single board</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">Makefile defines/ifdef macro =
organization</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">Integration with prom code</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">dvt/diag impacts</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Code =
changes to support more and varied numbers of FC and ETH =
ports.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">SEEP =
differences</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">nfxsh</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">snmp</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">kpi/stats</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">sm-backplane</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">many =
places where the wrong macro is used e.g. !COUGAR to mean =
Cheetah.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">network transmit dma to local buffer</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Need =
to be clear about what HW setup is done in prom and what needs to be =
done later.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Find =
relevant hard coded numbers and replace with macro or =
code.</FONT></SPAN></P>
<BR>
<BR>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">* =
Some details of macro usage.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">BOBCAT:</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-bmc12500-eth&nbsp; hardware differences - Some data =
alignment offsets - 128vs168, 160 for cheetah.&nbsp; Offset so data =
starts on 256 byte boundary. Cheetah is 160 instead of 168 for 8 byte =
LMUX header.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-bmc12500-eth/bmc12500-eth-mii.c PHY init =
</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-bmc12500-eth/bmc12500-eth-rx.c alignment =
offsets</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-chassis hardware differences, slot/cpu, model =
differences, BOBCAT used to mean single board</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">bobcat files: cm-util-bc.c&nbsp;&nbsp; =
cm-util-bc.c</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-eee/eee-dvt.c, eee-test.c, eee-test.h - test setup =
differences</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-dp-proxy/dp-proxy.h lmux related? BC1250_USE_PF =
never defined?</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-jmptbl/jmptbl.S:&nbsp;&nbsp; JMPTBL_VAR(10, =
gethostid_unused) ??</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-pci/pci-init.c</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">#if =
defined(NFP_TXRX) &amp;&amp; defined(BOBCAT) /* Setup the 16MB PCI =
access window at the beginning of the shared memory.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-prom-upgrade/upgrade-app.c</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">#ifndef BOBCAT /* don't do upgrade if upgrade_prom =
environment flag is off</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-sanm-agent/sanm-agent-util.c FC related - BOBCAT has =
only two FC ports.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-scsi/scsi.c FC related - BOBCAT has only two FC =
ports.</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-scsi/scsi-msg.c FC ports</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-scsi/scsi-tape-cmds.c FC ports</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-scsi/scsi-ui.c FC ports</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Why =
are 2312s not just handled as two devices?</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-sdm/sdm-api.h FC ports - SDM_PORT_MAX 2 or 4 =
</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-sdm/sdm-msg.c slot/cpu - =
NFX_FCNIM_CPUID0</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-sdm/storage.c FC ports</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-seep/env.c </FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-seep/seep-api.c </FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-seep/seep.h </FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-seep/seep-ui.c</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">autolink environment variables</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">seep =
differences - different layout, access</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-serio.bsd/gt64240.h</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-serio.bsd/gt64240-sdma.c</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-serio.bsd/gt64240-uart.c</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">UART, =
DMA - gt64240 not on cougar</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-stats/stats-fp.c - BOBCAT used to mean not cheetah =
or garfield</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Hard =
coded number of ethernet ports:</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">stats_fpLsiStats_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fpLsiStats[4];&nbsp; // 4 =
ports</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">and =
in stats_resetCounters and in statsTimerProc: 'if (statsStep &gt; =
3)'</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-sys-dvt/dvt-api.h</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">BOBCAT has additional statistics</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-ui/cmdtable.c</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">gt64xxx-mii, bmc12500 functions</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./ssc-crashsave/crashsave.c</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">check_ssc_crashdump - crashdump =
location</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./ssc-ndmp/ndmp-config.c</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">cpu_id =3D NFX_SSC_UNIX for BOBCAT, else must be cheetah =
- cpu_id =3D NFX_SSC_MGMT</FONT></SPAN></P>
<BR>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./ssc-nfxsh/cmd_flash.c - List of files to copy for =
&quot;copy all&quot; command</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./ssc-nfxsh/cmd_help.c - help files, ifndef BOBCAT means =
cheetah HW</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./ssc-nfxsh/cmd_port.c - FC ports, For Bobcat, set the =
autolinkenable variable in the SEEP from SSC, if bobcat check for only 2 =
eth ports</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./ssc-nfxsh/cmd_rcon.c - if not bobcat, rcon ports sp2 =
and sp3</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./ssc-nfxsh/cmd_scsi.c - number of FC =
ports</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./ssc-nfxsh/cmd_stats.c - #ifndef BOBCAT then SSC mgmt, =
dp83820, fp_lsi, bcm5600, gt64240mii exist</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./ssc-nfxsh/cmd_sysdvt.c - #ifndef BOBCAT then SSC mgmt, =
backplane exists</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./ssc-nfxsh/cmd_system.c - #ifndef BOBCAT means =
cheetah</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./ssc-nfxsh/cmd_upgrade.c - cpu numbering differences, if =
not bobcat then cheetah</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./ssc-sys-dvt/dvt-helper.h -&nbsp; dvt_test_stats =
differences</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./ssc-sys-dvt/ssc-sys-dvt.c</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">BOBCAT used for # of FC ports - many hard coded eth/fc =
numbers</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">char =
msgBuff[8192];&nbsp;&nbsp;&nbsp; // Max possible MTU</FONT></SPAN></P>
<BR>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">These =
seem to be to only affected subdirectories:</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-bsd-snmpd/agent/mibgroup/agile.h:BOBCAT means not =
cheetah</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-bsd-snmpd/agent/mibgroup/mib_module_includes.h:BOBCAT=
&nbsp; means not cheetah</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-bsd-snmpd/agent/mibgroup/mib_module_inits.h:BOBCAT =
means not cheetah</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-fs/dump/traverse.c:BOBCAT means not =
cheetah</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-icu-common/unicode/icu_wrappers.h:FCNIM_BC =
</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-icu-common/unicode/platform.h:FCNIM_BC</FONT></SPAN><=
/P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-icu-common/unicode/platform.h:FCNIM_BC</FONT></SPAN><=
/P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-icu-common/unicode/platform.h:FCNIM_BC</FONT></SPAN><=
/P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-icu-common/unicode/platform.h:FCNIM_BC</FONT></SPAN><=
/P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-icu-common/unicode/putil.h:FCNIM_BC</FONT></SPAN></P>=


<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-icu-common/unicode/umachine.h:FCNIM_BC</FONT></SPAN><=
/P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-icu-common/unicode/utf.h:FCNIM_BC</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Other =
HW defines</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-bsd-api/bsdintf-api.c:49:#if defined(SIBYTE) =
&gt;&gt;&gt; include bmc12500-eth-api.h</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-bsd-api/bsd-stats.c:57:#if defined(SIBYTE) =
&gt;&gt;&gt; include bmc12500-eth-api.h</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-bsd-net/vstack_vlink.c &gt;&gt;&gt; include =
bmc12500-eth-api.h</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-cache/cache-sibyte.c &gt;&gt;&gt; skip file if =
not SIBYTE</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-cifs/win-compat.h:84:#ifdef SIBYTE &gt;&gt;&gt; =
delete - #else case is the same</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-dcache/dcache-tx.c &gt;&gt;&gt;&nbsp; #include =
&quot;../sm-malloc/malloc-api.h&quot; -- move to header =
file</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-dcache/dcache-util.c &gt;&gt;&gt;&nbsp; #include =
&quot;../sm-malloc/malloc-api.h&quot; -- move to header =
file</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-dp-proxy/dp-proxy.c:477:&nbsp;&nbsp;&nbsp; if =
(isCheetah())&nbsp; &gt;&gt;&gt; if LMUX add 4</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-eee/eee-debug.c &gt;&gt;&gt; =
display</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-eee/eee-desc.c &gt;&gt;&gt; buffer pool mgmt will =
get confusing if FC and FP are combined</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-eee/eee-fwd.c &gt;&gt;&gt; cpu number assumptions =
- this will get complicated</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-eee/eee.h &gt;&gt;&gt; mem sizing, =
#cpus</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-eee/eee-init.c &gt;&gt;&gt; =
eee.mgmt_size_buf</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-ispfc/ispfc_scsi.c &gt;&gt;&gt; FCNIM_BC used to =
select sense buffer allocation </FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-rmc/rmc_api.c &gt;&gt;&gt; need to look at this - =
rmc_cleanup_edesc: #if defined(FCNIM) || =
defined(SSC_MGMT)</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-serio.bsd/serio-api.c &gt;&gt;&gt; using SIBYTE =
to select UART init function or channel#</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-spinlock/spinlock-inlines.h &gt;&gt;&gt; all =
skipped if not SIBYTE</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-stats/kpi-api.c &gt;&gt;&gt; skips all code if =
FCNIM_BC or not NFP_FP/NFP_TXRX (just take out FCNIM_BC =
test)</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-stats/stats.c &gt;&gt;&gt; skips some code if =
FCNIM_BC or not NFP_FP/NFP_TXRX (just take out FCNIM_BC =
test)</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-stats/stats-fc_bc.c &gt;&gt;&gt; only for =
FCNIM_BC</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">code/sm-stats/stats-fc.c &gt;&gt;&gt; only for FCNIM =
(cheetah)</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">SIBYTE_BC|NFX_MOD_FCNIM_BC|FCNIM_BC|NFP_TXRX_BC</FONT></SP=
AN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-backplane/bp_init_fc.c hardware init - need code for =
each HW type</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-backplane/bp_init_txrx.c - need code for each HW =
type</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">./sm-backplane/bp_ui.c - varies for each =
HW</FONT></SPAN></P>
<BR>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">nfx-tree/Makefile - not bc means =
cheetah</FONT></SPAN></P>

<P ALIGN=3DLEFT><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
FACE=3D"Arial">SIBYTE used to mean not ssc or fc</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN><SPAN LANG=3D"en-us"></SPAN></P>

</BODY>
</HTML>
------_=_NextPart_001_01C76A7B.9AC7D22B--
