#
# Broadcom Proprietary and Confidential. Copyright � 2002-2018 Broadcom.
# All Rights Reserved. The term "Broadcom" refers to Broadcom Inc. and/or
# its subsidiaries.
#
# This file contains the atom description of the FCSW service for its
# startup, fss and swd config initialization. You must understand the
# implecations before you make change following the conventions below:
#	1. add a new component into the kernel or user-space section
#	   based on its type in the alphamerical order.
#	2. if a new component is a fss-compliant, the service major
#	   version needs to be bumped up.
#	3. If any component partition version is changed, the service
#	   partition version needs to be increased as well.
#
# Each 'ATOM' has the following attributes:
#
#  TYPE	F1 F2
#	F1: [user|kernel] to indicate a user-space or kernel-space atom.
#	F2: optional, or indicate shared/max.

#  SWD	F1 F2
#	F1: SWD time window of 'I AM ALIVE period'.
#	F2: optional, 'RES' means atom restartable.
#
#  FSS	F1 F2 F3 F4 F5
#	F1: current version of component
#	F2: minimum vertion to which this component can sync up.
#	F3: distributed partition version. 0 reserved for a centralized model.
#	F4: dump stage, this field can have any value from 0 onwards. It
#	    indicates the stage at which FSS will command the component to
#	    dump its states. More than one component could be at the same
#           dump stage. A component having a dumpstage of 0, gets command
#           to dump its states before a component having dumpstage of 1.
#           A component X that depends on some other component Y in sync,
#           before it can start sync, X should have dumpstage number greater
#	F5: sync control flag, if set to 1, FSS guarantees serilization
#	    while replaying the data back to the component. This is used
#	    for Hot Code Load.
#           Currently this facility is used only for pdm. When replaying the
#           data, pdm needs to create all data structures which other
#           components use. So till fss loopback is done replaying data back
#           to pdm, no other components are delivered their respective data,
#           notably fabricd.
#
#  PATH	F1 F2...
#	F1: atom executable path (for user-space atom)
#	F2: optional arguments.
#
#
MAJORVER	27	# service major version
MINORVER_A	10	# service minor version, used as minimum ver supported as active
MINORVER_S	1	# service minor version, used as minimum ver supported as standby
PARTIVER	0	# partition version
STRIGGER	YES	# sync trigger policy

#
# started with kernel-space components
#

ATOM   diagfss[~63]
{
    TYPE    KERNEL  1
    FSS 1 1 0 1
}

ATOM   fc[~63]
{
	TYPE	KERNEL	1
	FSS	1 1 0 1
}

ATOM   rt[~63]
{
	TYPE	KERNEL	1
	FSS	1 1 0 1
}

ATOM   swc[~63]
{
	TYPE	KERNEL	1
	FSS	13 1 0 1
}

ATOM    fcoek[165,166,179,180]
{
	TYPE    KERNEL  1
	FSS     2 1 0 2
}

#
# followed by user-space components
#
ATOM   web[~63]
{
	TYPE	USER 1
	SWD	500	RES
	FSS	1 1 0 2
	PATH	/fabos/libexec/webd
}

ATOM   weblinker[~63]
{
	TYPE	USER	1
	SWD	500	RES
}

ATOM   md[~63]
{
	TYPE	USER	1
	SWD	500	RES
	FSS	2 1 0 2
	PATH	/fabos/libexec/mdd
}

ATOM    agd[161,162,169,170,173,175,176,181,183,184]
{
	TYPE	USER
	SWD	500
	FSS	2 1 0 2
	STARTAT	DS
	PATH	/fabos/libexec/agd
}

ATOM	arr[~63]
{
	TYPE	USER 1
	SWD	500	RES
	PATH	/fabos/libexec/arrd
}

# obseleted
#ATOM   as[~63]
#{
#	TYPE	USER
#	SWD	500
#	STARTAT	DS
#	PATH	/fabos/libexec/asd
#}

ATOM   cal[~63]
{
	TYPE	USER 1
	SWD     500	RES
	FSS	1 1 0 2
	PATH	/fabos/libexec/cald
}

ATOM	esm[148,171,165,166,178,179,180]
{
	TYPE	USER 1
	SWD		500
	FSS		1 1 0 1
	PATH	/fabos/libexec/esmd
}

ATOM   ess[~63]
{
	TYPE	USER 1
	SWD	500
	FSS	5 1 0 2
	PATH	/fabos/libexec/essd
}

ATOM   evm[~63]
{
	TYPE	USER 1
	SWD	500
	FSS	1 1 0 2
	PATH	/fabos/libexec/evmd
}

ATOM   fabric[~63]
{
	TYPE	USER 1
	SWD	500
	FSS	10 2 0 2
	PATH	/fabos/libexec/fabricd
}

ATOM   fcp[~63]
{
	TYPE	USER 1
	SWD	500
	FSS	3 1 0 2
	PATH	/fabos/libexec/fcpd
}

ATOM   fdmi[~63]
{
	TYPE	USER 1
	SWD     500
	FSS	7 1 0 2
	PATH	/fabos/libexec/fdmid
}

ATOM   ficu[~63]
{
	TYPE	USER 1
	SWD     500
	FSS	5 1 0 2
	PATH	/fabos/libexec/ficud
}

ATOM   fspf[~63]
{
	TYPE	USER 1
	SWD	500
	FSS	9 1 0 2
	PATH	/fabos/libexec/fspfd
}

# ATOM   fw[~63]
# {
# 	TYPE	USER 1
#	SWD	1000
#	FSS	2 1 0 2
#	PATH	/fabos/libexec/fwd
# }

ATOM   rcs[~63]
{
	TYPE    USER 1
	SWD	500
	FSS	4 1 0 2
	PATH    /fabos/libexec/rcsd
}

#ATOM   isnsc[165,166,179,180]
#{
#	TYPE	USER
#	SWD     500
#	FSS	1 1 0 2
#	STARTAT	DS
#	PATH	/fabos/libexec/isnscd
#}

ATOM   iswitch[161,162,165,166,173,178,179,180,181,183,184]
{
	TYPE	USER 1
	SWD     500
	FSS	17 1 0 2
	PATH	/fabos/libexec/iswitchd
}

# USF_FCSW

ATOM   nsm[165,166,178,179,180]
{
	TYPE	USER 1
	SWD	500
	FSS	1 1 0 1
	PATH 	/fabos/libexec/nsm
}

#ATOM   imi[165,166,169,170,172,173,184]
#{
#   	TYPE    USER
#   	SWD	500
#	FSS	1 1 0 1
#	STARTAT	DS
#	PATH 	/fabos/libexec/imi -f /etc/fabos/cee.conf
#}

ATOM   lacp[165,166,178,179,180]
{
   	TYPE    USER 1
   	SWD	500
	FSS	1 1 0 1
	PATH 	/fabos/libexec/lacpd
}

ATOM   onm[165,166,178,179,180]
{
   	TYPE    USER 1
   	SWD	500
	FSS	1 1 0 1
	PATH 	/fabos/libexec/onmd
}

ATOM   qos[165,166,179,180]
{
        TYPE    USER 1
        SWD     500
        FSS     1 1 0 1
        PATH    /fabos/libexec/qosd
}

ATOM   fcoe[165,166,179,180]
{
   	TYPE    USER 1
   	SWD	500
	FSS	2 1 0 2
    PATH    /fabos/libexec/fcoed
}

ATOM   lfm[161,162,165,166,169,170,171,173,178,179,180,181,183,184]
{
	TYPE	USER 1
	SWD     500
	FSS	1 1 0 2
}

ATOM   pfm[173,179,180,181,183,184]
{
	TYPE	USER 1
	SWD     500
	FSS	1 1 0 2
}

# If you want to add a new service which is both a chassis and fcsw service
# like lfm, fcoe, you also need to update the function
# smi_match_cid() in /sys/dev/hasm/hasm_smi.c


ATOM   ms[~63]
{
	TYPE	USER 1
	SWD	500
	FSS	9 1 0 2
	PATH	/fabos/libexec/msd
}

ATOM   ns[~63]
{
	TYPE	USER 1
	SWD	500
	FSS	13 1 0 2
	PATH	/fabos/libexec/nsd
}

ATOM   pdm[~63]
{
	TYPE	USER 1
	SWD	500
	FSS	8 1 0 1 2		# sync flag 2: serial
	PATH	/fabos/libexec/pdmd
}

ATOM   cfs[179,180,181]
{
	TYPE	USER 1
	SWD     500	RES
	FSS     1 1 0 2
}

ATOM   ps[~63]
{
	TYPE	USER 1
	SWD	500
	FSS	5 1 0 2
	PATH	/fabos/libexec/psd
}

ATOM   scp[178]
{
	TYPE	USER
	SWD	500
	FSS	1 1 0 2
	STARTAT	DS
	PATH	/fabos/libexec/scpd
}

ATOM   sec[~63]
{
	TYPE	USER 1
	SWD	500
	FSS	5 1 0 2
	PATH	/fabos/libexec/secd
}

ATOM   auth[~63]
{
	TYPE	USER 1
	SWD	500
	FSS	4 1 0 2
	PATH	/fabos/libexec/authd
}

ATOM   snmp[~63]
{
	TYPE	USER 1
	SWD     500	RES
	FSS	1 1 0 2
	PATH	/fabos/libexec/snmpd
}
ATOM traf[~63,171]
{
	TYPE    USER 1
	SWD     500 RES
	FSS     1 1 0 2
	PATH    /fabos/libexec/trafd
}

ATOM   ts[~63]
{
	TYPE	USER 1
	SWD	500
	FSS	1 1 0 2
	PATH	/fabos/libexec/tsd
}

ATOM   xyz[63]
{
	TYPE	USER 1
	SWD	500
	FSS	1 1 0 2
	PATH	/fabos/libexec/xyzd
}

ATOM   zone[~63]
{
	TYPE	USER 1
	SWD	500
	FSS	14 1 0 2
	PATH	/fabos/libexec/zoned
}

ATOM   vs[~63]
{
	TYPE	USER 1
	SWD	500
	FSS	1 1 0 2
	PATH	/fabos/libexec/vsd
}

ATOM   np[~63]
{
	TYPE	USER 1
	SWD	500	RES
	FSS	1 1 0 2
	PATH	/fabos/libexec/npd
}

ATOM   bsldc[~63]
{
        TYPE    USER 1
        SWD     500     RES
        FSS     1 1 0 2
        PATH    /fabos/libexec/bsldcd
}

ATOM   nps[~63]
{
	TYPE	USER 1
	SWD	500	RES
	FSS	1 1 0 2
	PATH	/fabos/libexec/npsd
}

ATOM   sysrm
{
	TYPE	USER 1
	SWD	500	RES
	PATH	/fabos/libexec/sysrmd
}

# Fred is part of both fcsw & chassis
ATOM   fred[175]
{
	TYPE	USER	1
}

ATOM   appsrvr[~63]
{
	TYPE	USER 1
	SWD	500
	FSS	1 1 0 2
	PATH	/fabos/libexec/appsrvrd
}

ATOM   uci[165,166,178,179,180]
{
    TYPE    USER 1
    SWD 500
    FSS 1 1 0 2
    PATH    /fabos/libexec/ucid
}

ATOM   usl[165,166,178,179,180]
{
	TYPE    USER 1
	SWD 500
	FSS 1 1 0 2
	PATH    /fabos/libexec/usld
}

ATOM   ufcs[~63]
{
	TYPE	USER 1
	SWD	500
	FSS	1 1 0 2
	PATH	/fabos/libexec/ufcsd
}

ATOM   ftc[~63]
{
	TYPE	USER 1
	SWD	500
	FSS	1 1 0 2
	PATH	/fabos/libexec/ftcd
}

#ATOM   l3d[~63]
#{
#	TYPE	USER 1
#	SWD     500
#	FSS	1 1 0 2
#	PATH	/fabos/libexec/l3d
#}
