From: Pradeep Dalvi <pradeep@linsyssoft.com>
To: Andi Kleen <ak@suse.de>
Cc: "Linsys Contractor Amit S. Kale" <amitkale@unminc.com>,
Kernel Netdev Mailing List <netdev@vger.kernel.org>,
Sanjeev Jorapur <sanjeev@netxen.com>,
UNM Project Staff <unmproj@linsyssoft.com>
Subject: Re: [PATCH 1/9] NetXen 1G/10G ethernet driver patch with corrections
Date: Thu, 08 Jun 2006 14:55:02 +0000 [thread overview]
Message-ID: <1149778502.12428.3.camel@arya.linsyssoft.com> (raw)
In-Reply-To: <200606071149.51879.ak@suse.de>
diff -u linux-2.6.16.20/drivers/net/netxen/netxen_nic_ethtool.c
linux-2.6.16.20/drivers/net/netxen/netxen_nic_ethtool.c
--- linux-2.6.16.20/drivers/net/netxen/netxen_nic_ethtool.c 2006-06-06
06:58:11.000000000 -0700
+++ linux-2.6.16.20/drivers/net/netxen/netxen_nic_ethtool.c 2006-06-08
06:52:09.000000000 -0700
@@ -240,6 +240,95 @@
return NETXEN_NIC_REGS_LEN;
}
+struct netxen_niu_regs {
+ netxen_crbword_t reg[NETXEN_NIC_REGS_COUNT];
+};
+
+static struct netxen_niu_regs niu_registers[] = {
+ {
+ /* GB Mode */
+ {
+ NETXEN_NIU_GB_SERDES_RESET,
+ NETXEN_NIU_GB0_MII_MODE,
+ NETXEN_NIU_GB1_MII_MODE,
+ NETXEN_NIU_GB2_MII_MODE,
+ NETXEN_NIU_GB3_MII_MODE,
+ NETXEN_NIU_GB0_GMII_MODE,
+ NETXEN_NIU_GB1_GMII_MODE,
+ NETXEN_NIU_GB2_GMII_MODE,
+ NETXEN_NIU_GB3_GMII_MODE,
+ NETXEN_NIU_REMOTE_LOOPBACK,
+ NETXEN_NIU_GB0_HALF_DUPLEX,
+ NETXEN_NIU_GB1_HALF_DUPLEX,
+ NETXEN_NIU_RESET_SYS_FIFOS,
+ NETXEN_NIU_GB_CRC_DROP,
+ NETXEN_NIU_GB_DROP_WRONGADDR,
+ NETXEN_NIU_TEST_MUX_CTL,
+
+ NETXEN_NIU_GB_MAC_CONFIG_0(0),
+ NETXEN_NIU_GB_MAC_CONFIG_1(0),
+ NETXEN_NIU_GB_HALF_DUPLEX_CTRL(0),
+ NETXEN_NIU_GB_MAX_FRAME_SIZE(0),
+ NETXEN_NIU_GB_TEST_REG(0),
+ NETXEN_NIU_GB_MII_MGMT_CONFIG(0),
+ NETXEN_NIU_GB_MII_MGMT_COMMAND(0),
+ NETXEN_NIU_GB_MII_MGMT_ADDR(0),
+ NETXEN_NIU_GB_MII_MGMT_CTRL(0),
+ NETXEN_NIU_GB_MII_MGMT_STATUS(0),
+ NETXEN_NIU_GB_MII_MGMT_INDICATE(0),
+ NETXEN_NIU_GB_INTERFACE_CTRL(0),
+ NETXEN_NIU_GB_INTERFACE_STATUS(0),
+ NETXEN_NIU_GB_STATION_ADDR_0(0),
+ NETXEN_NIU_GB_STATION_ADDR_1(0),
+ -1,
+ }
+ },
+ {
+ /* XG Mode */
+ {
+ NETXEN_NIU_XG_SINGLE_TERM,
+ NETXEN_NIU_XG_DRIVE_HI,
+ NETXEN_NIU_XG_DRIVE_LO,
+ NETXEN_NIU_XG_DTX,
+ NETXEN_NIU_XG_DEQ,
+ NETXEN_NIU_XG_WORD_ALIGN,
+ NETXEN_NIU_XG_RESET,
+ NETXEN_NIU_XG_POWER_DOWN,
+ NETXEN_NIU_XG_RESET_PLL,
+ NETXEN_NIU_XG_SERDES_LOOPBACK,
+ NETXEN_NIU_XG_DO_BYTE_ALIGN,
+ NETXEN_NIU_XG_TX_ENABLE,
+ NETXEN_NIU_XG_RX_ENABLE,
+ NETXEN_NIU_XG_STATUS,
+ NETXEN_NIU_XG_PAUSE_THRESHOLD,
+ NETXEN_NIU_XGE_CONFIG_0,
+ NETXEN_NIU_XGE_CONFIG_1,
+ NETXEN_NIU_XGE_IPG,
+ NETXEN_NIU_XGE_STATION_ADDR_0_HI,
+ NETXEN_NIU_XGE_STATION_ADDR_0_1,
+ NETXEN_NIU_XGE_STATION_ADDR_1_LO,
+ NETXEN_NIU_XGE_STATUS,
+ NETXEN_NIU_XGE_MAX_FRAME_SIZE,
+ NETXEN_NIU_XGE_PAUSE_FRAME_VALUE,
+ NETXEN_NIU_XGE_TX_BYTE_CNT,
+ NETXEN_NIU_XGE_TX_FRAME_CNT,
+ NETXEN_NIU_XGE_RX_BYTE_CNT,
+ NETXEN_NIU_XGE_RX_FRAME_CNT,
+ NETXEN_NIU_XGE_AGGR_ERROR_CNT,
+ NETXEN_NIU_XGE_MULTICAST_FRAME_CNT,
+ NETXEN_NIU_XGE_UNICAST_FRAME_CNT,
+ NETXEN_NIU_XGE_CRC_ERROR_CNT,
+ NETXEN_NIU_XGE_OVERSIZE_FRAME_ERR,
+ NETXEN_NIU_XGE_UNDERSIZE_FRAME_ERR,
+ NETXEN_NIU_XGE_LOCAL_ERROR_CNT,
+ NETXEN_NIU_XGE_REMOTE_ERROR_CNT,
+ NETXEN_NIU_XGE_CONTROL_CHAR_CNT,
+ NETXEN_NIU_XGE_PAUSE_FRAME_CNT,
+ -1,
+ }
+ }
+};
+
static void
netxen_nic_get_regs(struct net_device *dev, struct ethtool_regs *regs,
void *p)
{
@@ -248,6 +337,7 @@
netxen_crbword_t mode, *regs_buff = p;
unsigned long flags;
void *addr;
+ int i, window;
memset(p, 0, NETXEN_NIC_REGS_LEN);
regs->version = (1 << 24) | (adapter->ahw.revision_id << 16) |
@@ -260,176 +350,18 @@
/* Common registers to all the modes */
NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_STRAP_VALUE_SAVE_HIGHER,
®s_buff[2]);
- switch (mode) {
- case 4:{ /* XGB Mode */
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XG_SINGLE_TERM,
- ®s_buff[3]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XG_DRIVE_HI,
- ®s_buff[4]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XG_DRIVE_LO,
- ®s_buff[5]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XG_DTX,
- ®s_buff[6]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XG_DEQ,
- ®s_buff[7]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XG_WORD_ALIGN,
- ®s_buff[8]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XG_RESET,
- ®s_buff[9]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XG_POWER_DOWN,
- ®s_buff[10]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XG_RESET_PLL,
- ®s_buff[11]);
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_XG_SERDES_LOOPBACK, ®s_buff[12]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XG_DO_BYTE_ALIGN,
- ®s_buff[13]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XG_TX_ENABLE,
- ®s_buff[14]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XG_RX_ENABLE,
- ®s_buff[15]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XG_STATUS,
- ®s_buff[16]);
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_XG_PAUSE_THRESHOLD, ®s_buff[17]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XGE_CONFIG_0,
- ®s_buff[18]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XGE_CONFIG_1,
- ®s_buff[19]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XGE_IPG,
- ®s_buff[20]);
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_XGE_STATION_ADDR_0_HI, ®s_buff[21]);
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_XGE_STATION_ADDR_0_1, ®s_buff[22]);
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_XGE_STATION_ADDR_1_LO, ®s_buff[23]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XGE_STATUS,
- ®s_buff[24]);
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_XGE_MAX_FRAME_SIZE, ®s_buff[25]);
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_XGE_PAUSE_FRAME_VALUE, ®s_buff[26]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XGE_TX_BYTE_CNT,
- ®s_buff[27]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XGE_TX_FRAME_CNT,
- ®s_buff[28]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XGE_RX_BYTE_CNT,
- ®s_buff[29]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XGE_RX_FRAME_CNT,
- ®s_buff[30]);
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_XGE_AGGR_ERROR_CNT, ®s_buff[31]);
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_XGE_MULTICAST_FRAME_CNT,
- ®s_buff[32]);
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_XGE_UNICAST_FRAME_CNT, ®s_buff[33]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XGE_CRC_ERROR_CNT,
- ®s_buff[34]);
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_XGE_OVERSIZE_FRAME_ERR, ®s_buff[35]);
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_XGE_UNDERSIZE_FRAME_ERR,
- ®s_buff[36]);
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_XGE_LOCAL_ERROR_CNT, ®s_buff[37]);
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_XGE_REMOTE_ERROR_CNT, ®s_buff[38]);
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_XGE_CONTROL_CHAR_CNT, ®s_buff[39]);
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_XGE_PAUSE_FRAME_CNT, ®s_buff[40]);
- break;
- }
+ /* GB/XGB Mode */
+ mode = (mode/2) - 1;
+ window = 0;
+ if(mode <= 1) {
+ for ( i = 3; niu_registers[mode].reg[i - 3] != -1; i++) {
+ /* GB: port specific registers */
+ if(mode == 0 && i >= 19)
+ window = port->portnum * 0x10000;
- case 2:{ /* GB Mode */
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB_SERDES_RESET,
- ®s_buff[3]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB0_MII_MODE,
- ®s_buff[4]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB1_MII_MODE,
- ®s_buff[5]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB2_MII_MODE,
- ®s_buff[6]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB3_MII_MODE,
- ®s_buff[7]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB0_GMII_MODE,
- ®s_buff[8]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB1_GMII_MODE,
- ®s_buff[9]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB2_GMII_MODE,
- ®s_buff[10]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB3_GMII_MODE,
- ®s_buff[11]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_REMOTE_LOOPBACK,
- ®s_buff[12]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB0_HALF_DUPLEX,
- ®s_buff[13]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB1_HALF_DUPLEX,
- ®s_buff[14]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_RESET_SYS_FIFOS,
- ®s_buff[15]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB_CRC_DROP,
- ®s_buff[16]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB_DROP_WRONGADDR,
- ®s_buff[17]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_TEST_MUX_CTL,
- ®s_buff[18]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB_MAC_CONFIG_0
- (port->portnum),
- ®s_buff[19]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB_MAC_CONFIG_1
- (port->portnum),
- ®s_buff[20]);
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_GB_HALF_DUPLEX_CTRL(port->portnum),
- ®s_buff[21]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB_MAX_FRAME_SIZE
- (port->portnum),
- ®s_buff[22]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB_TEST_REG
- (port->portnum),
- ®s_buff[23]);
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB_MII_MGMT_CONFIG
- (port->portnum),
- ®s_buff[24]);
NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_GB_MII_MGMT_COMMAND(port->portnum),
- ®s_buff[25]);
-
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB_MII_MGMT_ADDR
- (port->portnum),
- ®s_buff[26]);
-
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB_MII_MGMT_CTRL
- (port->portnum),
- ®s_buff[27]);
-
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB_MII_MGMT_STATUS
- (port->portnum),
- ®s_buff[28]);
-
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_GB_MII_MGMT_INDICATE(port->portnum),
- ®s_buff[29]);
-
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB_INTERFACE_CTRL
- (port->portnum),
- ®s_buff[30]);
-
- NETXEN_NIC_LOCKED_READ_REG
- (NETXEN_NIU_GB_INTERFACE_STATUS(port->portnum),
- ®s_buff[31]);
-
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB_STATION_ADDR_0
- (port->portnum),
- ®s_buff[32]);
-
- NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_GB_STATION_ADDR_1
- (port->portnum),
- ®s_buff[33]);
- break;
+ (niu_registers[mode].reg[i - 3] + window,
+ ®s_buff[i]);
}
}
write_unlock_irqrestore(&adapter->adapter_lock, flags);
On Wed, 2006-06-07 at 11:49 +0200, Andi Kleen wrote:
> On Wednesday 07 June 2006 11:39, Linsys Contractor Amit S. Kale wrote:
>
> > + switch (mode) {
>
> ... You could save a lot of code by using a table and a loop over the registers.
>
>
> > + case 4:{ /* XGB Mode */
> > + NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XG_SINGLE_TERM,
> > + ®s_buff[3]);
>
>
> -Andi
>
>
--
pradeep
prev parent reply other threads:[~2006-06-08 15:12 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-07 9:39 [PATCH 1/9] NetXen 1G/10G ethernet driver patch with corrections Linsys Contractor Amit S. Kale
2006-06-07 9:49 ` Andi Kleen
2006-06-08 14:55 ` Pradeep Dalvi [this message]
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=1149778502.12428.3.camel@arya.linsyssoft.com \
--to=pradeep@linsyssoft.com \
--cc=ak@suse.de \
--cc=amitkale@unminc.com \
--cc=netdev@vger.kernel.org \
--cc=sanjeev@netxen.com \
--cc=unmproj@linsyssoft.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;
as well as URLs for NNTP newsgroup(s).