From: Manish Lachwani <mlachwani@mvista.com>
To: Thomas Koeller <thomas.koeller@baslerweb.com>
Cc: linux-mips@linux-mips.org
Subject: Re: titan code question
Date: Mon, 22 Nov 2004 09:35:08 -0800 [thread overview]
Message-ID: <41A2234C.8090809@mvista.com> (raw)
In-Reply-To: <200411191623.14760.thomas.koeller@baslerweb.com>
Hi Thomas,
This makes sense. Basically, in Titan 1.0 and 1.1, there was no support
for IP header alignment. As a results, for every incoming packet, there
had to be an extra copy in the driver. This had to be somehow fixed in
the chip. So, the chip designers were basically looking for some unused
registers that can be used to indicate to the chip that IP header needs
aligning. And the chip designers wanted to implement this framework by
using minimal possible changes so that 1.2 can be released asap.
Hence, they used this register. I am not sure if this is even
documented. However, this code has been written based on the feedback
from the chip designers. If you dont use this code, the MAC subsystem of
titan will stop aligning IP headers and you will need to implement the
code in the driver to do the aligning.
Hope this clears things.
Thanks
Manish Lachwani
Thomas Koeller wrote:
> Hi Manish & Ralf,
>
> the code below is from tian_ge.c:
>
> /*
> * This is the 1.2 revision of the chip. It has fix for the
> * IP header alignment. Now, the IP header begins at an
> * aligned address and this wont need an extra copy in the
> * driver. This performance drawback existed in the previous
> * versions of the silicon
> */
> reg_data_1 = TITAN_GE_READ(0x103c + (port_num << 12));
> reg_data_1 |= 0x40000000;
> TITAN_GE_WRITE((0x103c + (port_num << 12)), reg_data_1);
>
> reg_data_1 |= 0x04000000;
> TITAN_GE_WRITE((0x103c + (port_num << 12)), reg_data_1);
>
> mdelay(5);
>
> reg_data_1 &= ~(0x04000000);
> TITAN_GE_WRITE((0x103c + (port_num << 12)), reg_data_1);
>
> mdelay(5);
>
>
> According to the RM9000 user manual, register 0x103c (and 0x203c
> and 0x303c), named TTPRI0, contains eight four-bit fields, each
> of which is a packet priority value. This would be used to find
> the priority for incoming packets.
>
> Given the register description in the cpu manual, I cannot make
> any sense of the code above. Whoever did that, would you care to
> explain?
>
> thanks,
> Thomas
next prev parent reply other threads:[~2004-11-22 17:35 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-11-19 15:23 titan code question Thomas Koeller
2004-11-22 17:35 ` Manish Lachwani [this message]
2004-11-22 19:40 ` Maciej W. Rozycki
2004-11-22 19:42 ` Manish Lachwani
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=41A2234C.8090809@mvista.com \
--to=mlachwani@mvista.com \
--cc=linux-mips@linux-mips.org \
--cc=thomas.koeller@baslerweb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox