[ixp1200] The microACE "tutorial"

Øyvind Hvamstadøyvind Hvamstad oyvindh at ifi.uio.no
Tue Jul 8 04:45:54 EDT 2003


On Sat, 2003-06-21 at 19:41, Abhijeet Joglekar wrote:
> Hi,

Hi

> Did you get this running yet? You seem to be mixing up the "workbench"
> and "non-workbench" mode. If you are running with mode=0, you need
> the SlowIngressCount.uof and SlowEgressRR.uof files in your bin/arm-be
> directory. This is because the ixconfig app loads the microcode with
> the help of RM and uclo in the non-wkbench mode. You can build them from
> the command line on your windows machine using
> src/microace/ucbuild/Makefile.win

No, I'm still not able to run, but with your help, I am now able to load
all the files needed.

What happens now, is that when configuring all four ports (0-3), I get
invalid port 2 and when just running the first 0, I get the error below.
My configuration is attached, I'm really at a loss here. Does the
gigadrv work on the enp-2505?

lsmod tells me:

<lsmod>
rmdrvr                 47704   0
octmac                 14068   0 (unused)
giga_drv                9128   0 (unused)
ue                     72124   1 [rmdrvr]
ixasl                 249568  15 [rmdrvr octmac ue]
pciDgNet-arm            2668   1
pciDg-arm               7544   0 [pciDgNet-arm]
</lsmod>

<error>
<serial>
Start module gigadrv
device id is 1
rmdrvr: Programming FBI ...
rmdrvr: Setting up 1-2 Mac mode
rmdrvr: Setting up 64 bit bidirectional mode
ingressAce: memory violation at pc=0x02027ce8, lr=0x400a6af8 (bad
address=0x000)
</serial>

And from the telnet session:
<telnet>
[root at frodo arm-be]$./ixstart ixsys_count_8_1.config
ConfigureFBusInterface: ENP has 64Bit IXbus.
ConfigureFBusInterface: ENP has 64Bit IXbus.
ixconfig: Initialized Resource Manager
ixconfig: ix_task_init successful
ixconfig: Created OSSL thread
ixconfig: ix_res_open_sync successful
ixconfig: ix_ns_open_sync successful
ixconfig: Starting micro aces
ixconfig: Starting microace ifaceInput
ifaceInput: IX-ACE Initialization Failed
Wed Dec 31 20:01:32 1969
ingress_ace.cpp, line 161: init : Couldn't open device /dev/if0.
</telnet>
</error>

> For mode=1, you can build and download the single Count_8_1Gig.uof
> from the workbench.

Ok, thanks this was not very clear in the README

> See if this works.
> 
> -- abhijeet
Øyvind
-------------- next part --------------
# **********************************************************************
#
#   Sample file for the ixconfig application
#
#   It is run at boot time  and specifies 
#  
#   - the interfaces that are to be started at system boot time
#   - the micro aces that are to be started at system boot time
#   - the regular aces that are to be started at system boot time
#   - bind configuration 
#   - Shell commands to be run 
#
#   For each microace or ace it also lets us specify another 
#   configuration file that can be used to configure that ace
#
#
# **********************************************************************
#
# First we specify the interfaces we want 
#
# For the SI board 
# 	--	0-15 are fast ethernet ports. 16 and 17 are gigabit ports
#
# <port number> <ip addr> <broadcast> <netmask> <mac address> <flags>
#
# Values for flags are 
#
#	0x0     Unicast 
#	0x1	Promiscous Mode
# 	0x2	All Multicast packets are allowed
#	0x3     Multicast packets in set only
#

interface 0 10.1.0.1 10.1.0.255 255.255.255.0 00:01:02:03:04:05 1
interface 1 10.2.0.1 10.2.0.255 255.255.255.0 00:01:02:03:04:06 1
interface 2 10.3.0.1 10.3.0.255 255.255.255.0 00:01:02:03:04:07 1
interface 3 10.4.0.1 10.4.0.255 255.255.255.0 00:01:02:03:04:08 1
#interface 4 10.5.0.1 10.5.0.255 255.255.255.0 00:01:02:03:04:09 1
#interface 5 10.6.0.1 10.6.0.255 255.255.255.0 00:01:02:03:04:10 1
#interface 6 10.7.0.1 10.7.0.255 255.255.255.0 00:01:02:03:04:11 1
#interface 7 10.8.0.1 10.8.0.255 255.255.255.0 00:01:02:03:04:12 1
#interface 8 10.9.0.1 10.9.0.255 255.255.255.0 00:01:02:03:04:13 1
#interface 9 10.10.0.1 10.10.0.255 255.255.255.0 00:01:02:03:04:14 1
#interface 10 10.11.0.1 10.11.0.255 255.255.255.0 00:01:02:03:04:15 1
#interface 11 10.12.0.1 10.12.0.255 255.255.255.0 00:01:02:03:04:16 1
#interface 12 10.13.0.1 10.13.0.255 255.255.255.0 00:01:02:03:04:17 1
#interface 13 10.14.0.1 10.14.0.255 255.255.255.0 00:01:02:03:04:18 1
#interface 14 10.15.0.1 10.15.0.255 255.255.255.0 00:01:02:03:04:19 1
#interface 15 10.16.0.1 10.16.0.255 255.255.255.0 00:01:02:03:04:20 1
#interface 16 10.17.0.1 10.17.0.255 255.255.255.0 00:01:02:03:04:21 1
#interface 17 10.18.0.1 10.18.0.255 255.255.255.0 00:01:02:03:04:22 1

# *********************************************************************
# Specify if we will be debugging with the workbench and downloading
# code via it 
#
# mode <mode>
#
# Values for mode are 
#
#	0x0	No workbench. 
#	0x1	Download and debug via workbench

mode 0
#mode 1


# *********************************************************************
# Next specify the Microcode files (UOF Files)
#
# <fileType> <fileName>
#
# Values for fileType are
#
#	0x0	Slow Ingress File	
#	0x1	Slow Egress File
#	0x2	Fast Ingress File for Port 1
#	0x3	Fast Ingress File for Port 2
#	0x4	Fast Egress File
#

file 0 ./SlowIngressCount.uof
file 1 ./SlowEgressRR.uof
file 2 ./FastIngressCount-seq1.uof
file 3 ./FastIngressCount-seq2.uof
file 4 ./FastEgressFifo.uof


# **********************************************************************
#
# Now specify the microaces 
#
# <name of ace> <name of executable> <config file name> <runsOn> \
#	<type> <additional parameters>
#
# runsOn can be -- 0 (RUNS_ON_INGRESS_SIDE)
#               -- 1 (RUNS_ON_EGRESS_SIDE)
#
# type can be -- 0 (unknown type)
#		 1 (Ingress)
#		 2 (egress)
#		 3 (L3)
#		 4 (L2)
#		 5 (input nat)
#		 6 (output nat)		 
#
# 
# The first parameter to every microace is the mask of microengines it
# runs on. This is passed automatically by the application. The <additional
# parameters> specify the rest of the command line parameters
#

# no config file for ingress and egress needed and no parameters

microace ifaceInput ./ingressAce none 0 1 
microace ifaceOutput ./egressAce none 1 2

# This microace will substitute for L3 for now 
#
# options for CountMicroAce are 
#
# -v : verbose
# -target : send packets over the default target
# -loop : loop back packets to the microblock
# -blockname <name> : name of the microblock
# -port <portNumber>: output port to send to (default is dont change what's in
#                     the ofnum of the packet)
#

microace CountMicroAce ./CountMicroAce 0 0 none -target -blockname COUNT 


# **********************************************************************
#
# Now specify the regular aces like stack ace, nat control ace, spanning
# tree ace etc
#
# <name of ace> <name of executable> <config file name> <type> <parameters>
#
#
# type can be -- 0 (unknown type)
#		 1 (Spanning Tree)
#		 2 (Nat control)
#		 3 (Stack ace)
#
# <parameters> are any command line (argc/argv) parameters to be passed to
# the ace
#
# **********************************************************************


# **********************************************************************
#
# Now specify the all the bind operations 
# 
# <static/regular> <target name> <ace name>
# 
# Specify static for microace to microace static targets
#

bind static ifaceInput/default CountMicroAce
bind static CountMicroAce/default ifaceOutput

# **********************************************************************

# Now specify any shell commands. These will always be executed last
# no matter where they are specified. Note that these are to be used
# typically for things like adding arp entries to the linux stack.
#
# Below we add arp entries to the linux stack. This is needed because
# the traffic generator we are using does not respond to ARP requests.
# Otherwise this is typically not needed as long as the ARP target of 
# of the interface ace is bound to the stack ace 
#
# Below we add a couple of arp entries 
#
# Syntax is 
#
# sh [command string to be executed]
#

# sh arp -s 10.1.0.2 01:02:03:04:05:06
# sh arp -s 10.2.0.2 02:02:03:04:05:06
# sh arp -s 10.3.0.2 03:02:03:04:05:06
# sh arp -s 10.4.0.2 04:02:03:04:05:06
# sh arp -s 10.5.0.2 05:02:03:04:05:06
# sh arp -s 10.6.0.2 06:02:03:04:05:06
# sh arp -s 10.7.0.2 07:02:03:04:05:06
# sh arp -s 10.8.0.2 08:02:03:04:05:06
# sh arp -s 10.9.0.2 09:02:03:04:05:06

# **********************************************************************


More information about the ixp1200 mailing list