[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