[ixp1200] spread code over multiple microengines (using the ACE model)

Abhijeet Joglekar abhijeet at cs.utah.edu
Mon Mar 15 14:23:24 EST 2004


Tim,

I am attaching some earlier emails on this list exchanged last year about
adding new MicroACE types to SDK 2.0. There might be better/cleaner
ways, but this could be a start. See if it helps.

-- abhijeet

*******
>From abhijeet at cs.utah.edu Mon Mar 15 12:18:19 2004
Date: Tue, 13 May 2003 22:55:27 -0600 (MDT)
From: Abhijeet Joglekar <abhijeet at cs.utah.edu>
Reply-To: ixp1200 at CS.Princeton.EDU
To: ixp1200 List <ixp1200 at CS.Princeton.EDU>
Subject: Re: [ixp1200] running multiple microengines

Hi Andrew,

You would have to modify the ixconfig application,
to support new file types, new MicroAce types and also
minor changes in the resource manager to ensure that
dispatch loop vars and other ring variables are patched
in the extra microengines which you enable.

Files to look at
	* ixconfig/ixconfig.h (adding new file types etc)
	* ixconfig/microcode.c
	   [SetupMicrocode() function. Check out
		case RM_UCODE_OTHER:
	   You will have to add code here to call the RM to set
	   up the new uof files which u want to download]

	* resource_manager/driver/dispatch.c ring.c

and maybe other related files. Once you start making changes,
you will be able to figure out which other places to look at.

Below is some code snippet that I added in ixconfig.h/microcode.c/
ixsys.config. This should get you started.

***************
ixconfig.h
----------
/*Added this for MicroAces whose MEB's do not
  run in ingress or egress pipelines
 */
#define RUNS_AS_PROCESSING_BLOCK 0x2

/*new microace type, like l2, l3 etc */
#define MICROACE_TYPE_SHAPER   8

enum fileType {
	...
	..
	.
	PROCESS_SHAPER_FILE,
	MAX_NUM_FILE_TYPES
}

microcode.c
------------
case RM_UCODE_OTHER:
	RmUengSetUofFile(meNum, filelist[PROCESS_SHAPER_FILE].pUcodeName,
	RM_UCODE_OTHER, filelist[PROCESS_SHAPER_FILE].pFileName);
	shaperMeMask |= (1 << meNum)

ixsys.config
------------
/* 6 here is enum value for PROCESS_SHAPER_FILE */
file 6 ./ShaperEM.uof
/* 2 is for RUNS_AS_PROCESSING_BLOCK, 8 is for MICROACE_TYPE_SHAPER */
microace Shaper ./shaper_ace none 2 8
***************

Basically, go through the source code of ixconfig app, follow each
call to RM and you should be able to figure out which places
to modify.

-- abhijeet


On Tue, 13 May 2003, Andrew Putra Jauri wrote:

> Hi,
>
> Does anyone know how to run more than 2
> microengines on the IXP1200 card? I'm using
> the enp-2505 IXP1200 card with 4 10/100 mb ports.
> The count tutorial and the l3fwdr program from
> Intel use 2 microengines, 1 for ingress and the
> count/l3fwdr ACE and the other one for the egress.
> Perhaps someone has already tried this before,
> please give me some hints. Thanks in advance.
>
>
> Andrew Jauri
> College of Engineering and Computer Science
> Portland State University
>

*******


On Mon, 15 Mar 2004, Tim Stevens wrote:

> Hi all,
>
> Can anyone on this list provide me some details on how to spread code over
> several microengines (e.g. one ingress ACE on ME1, one L3 component on ME2,
> one egress component on ME3)? Until now, we have done everything on 2
> microengines (when using the microACE framework, as presented in the
> tutorial), but distributing the load over more MEs seems more appropriate
> in the future.
> The configuration file (ixsys.config) requires one chooses between ingress
> or egress for each ace, but this is not suitable for the L3 component on
> ME2 (previous paragraph). Any ideas?
>
> Any help would be greatly appreciated!
>
> Kind regards,
>
> Tim
>
> _______________________________________________
> ixp1200 mailing list
> ixp1200 at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/ixp1200
>


More information about the ixp1200 mailing list