[ixp1200] Large packets on the IXP

Abhijeet Joglekar abhijeet at cs.utah.edu
Wed Mar 27 13:32:55 EST 2002


I was getting those assembler errors for the instruction,

     br_!signal[start_receive, skip#], guess_branch

because I had another macro defined called "signal" :)
So that problem is solved...

Anyway, but from a quick test, I think that I am still having problems in
getting the correct rcv_cntl status without the delay loop before issuing
a recieve request. (As  described below in the previous mail)

Let me check again and confirm.

Just mailed in because I did not want people trying to break their head
figuring out why "br_!signal" doesnt get assembled in Utah. :)

	Thanks.
	- Abhijeet


On Wed, 27 Mar 2002, Abhijeet Joglekar wrote:

> Thanks Michael.
> 
> I looked up the Intel supplied microblocks for SlowIngress and found that
> before sending out a rcv_request, a macro CONSUME_START_RCV is used.
> 
> =============================================================================
> // This macro will consume a start receive signal, if present.
> // It is used as a safety net to catch start_receive signals
> // sent from the IXF440 that we don't expect
> #macro CONSUME_START_RCV()
> .local $ignored
>     br_!signal[start_receive, skip#], guess_branch
>     nop
>     csr[read, $ignored, rcv_cntl], ctx_swap
>     skip#:
> .endlocal
> #endm
> =============================================================================
> 
> Instead of doing this, I was inserting a delay loop after reading the port
> status and before sending a rcv_request, since without the delay loop, I
> get incorrect status in the rcv_cntl register.
> 
> ============================================================================
> 	get_port_status 
> 	.if (we_have_a_packet)
> 		.local count	
> 		set [count, 0]
> 		.while(count < 0x55)
> 		alu [ count, count , + , 1]
> 		.endw
> 		.endlocal
> 	.endif
> 	issue_recv_request
> ============================================================================
> 
> This loop is slowing down my input contexts.
> 
> So maybe instead of this loop, I need to use the CONSUME_START_RCV macro.
> 
> But when I use the instruction,
>     br_!signal[start_receive, skip#], guess_branch
> 
> I get the following assembler errors.
> 
> ERROR: Invalid text follows macro reference
> ERROR: Wrong number of arguments for macro : 2 shoule be 1.
> 
> Wierd, because the Programmers Reference Manual specifies exactly the same
> format that I am using above.
> 
> Any ideas/pointers?
> 
> Also, after taking a look at the Intel SlowIngress microblock, I think my
> critical sections are a little too large. I will try shrinking them too
> and see what happens.
> 
> 	- Abhijeet
> 




More information about the ixp1200 mailing list