Re: [PATCH 2.6.18-rc7 3/9] NetXen: hw initilization routines

2006-09-19 Thread Pradeep Dalvi

diff -u linux-2.6.18-rc7/drivers/net/netxen/netxen_nic_init.c 
linux-2.6.18-rc7/drivers/net/netxen/netxen_nic_init.c
--- linux-2.6.18-rc7/drivers/net/netxen/netxen_nic_init.c   2006-09-15 
10:51:59.0 -0700
+++ linux-2.6.18-rc7/drivers/net/netxen/netxen_nic_init.c   2006-09-19 
07:51:20.0 -0700
@@ -208,8 +208,8 @@
ops-handle_phy_intr = netxen_nic_gbe_handle_phy_intr;
ops-macaddr_set = netxen_niu_macaddr_set;
ops-set_mtu = netxen_nic_set_mtu_gb;
-   ops-set_promisc_mode = netxen_niu_set_promiscuous_mode;
-   ops-unset_promisc_mode = netxen_niu_set_promiscuous_mode;
+   ops-set_promisc = netxen_niu_set_promiscuous_mode;
+   ops-unset_promisc = netxen_niu_set_promiscuous_mode;
ops-phy_read = netxen_niu_gbe_phy_read;
ops-phy_write = netxen_niu_gbe_phy_write;
ops-init_port = netxen_niu_gbe_init_port;
@@ -225,8 +225,8 @@
ops-handle_phy_intr = netxen_nic_xgbe_handle_phy_intr;
ops-macaddr_set = netxen_niu_xg_macaddr_set;
ops-set_mtu = netxen_nic_set_mtu_xgb;
-   ops-set_promisc_mode = netxen_niu_xg_set_promiscuous_mode;
-   ops-unset_promisc_mode = netxen_niu_xg_set_promiscuous_mode;
+   ops-set_promisc = netxen_niu_xg_set_promiscuous_mode;
+   ops-unset_promisc = netxen_niu_xg_set_promiscuous_mode;
ops-stop_port = netxen_niu_disable_xg_port;
break;

@@ -535,8 +535,8 @@
struct netxen_recv_context *recv_ctx =
(adapter-recv_ctx[ctx]);
u32 consumer;
-   struct status_desc_t *desc_head;
-   struct status_desc_t *desc; /* used to read status desc 
here */
+   struct status_desc *desc_head;
+   struct status_desc *desc;   /* used to read status desc 
here */

consumer = recv_ctx-status_rx_consumer;
desc_head = recv_ctx-rcv_status_desc_head;
@@ -584,7 +584,7 @@
  */
 void
 netxen_process_rcv(struct netxen_adapter *adapter, int ctxid,
-  struct status_desc_t *desc)
+  struct status_desc *desc)
 {
struct netxen_port *port = adapter-port[STATUS_DESC_PORT(desc)];
struct pci_dev *pdev = port-pdev;
@@ -674,8 +674,8 @@
 u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctxid, int max)
 {
struct netxen_recv_context *recv_ctx = (adapter-recv_ctx[ctxid]);
-   struct status_desc_t *desc_head = recv_ctx-rcv_status_desc_head;
-   struct status_desc_t *desc; /* used to read status desc here */
+   struct status_desc *desc_head = recv_ctx-rcv_status_desc_head;
+   struct status_desc *desc;   /* used to read status desc here */
u32 consumer = recv_ctx-status_rx_consumer;
int count = 0, ring;

@@ -829,9 +829,9 @@
__FUNCTION__);
 }

-/**
+/*
  * netxen_post_rx_buffers puts buffer in the Phantom memory
- **/
+ */
 void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, u32 
ringid)
 {
struct pci_dev *pdev = adapter-ahw.pdev;
@@ -841,7 +841,7 @@
struct netxen_recv_crb *crbarea = recv_crb_registers[ctx];
struct netxen_rcv_desc_crb *rcv_desc_crb = NULL;
u32 producer;
-   struct rcv_desc_t *pdesc;
+   struct rcv_desc *pdesc;
struct netxen_rx_buffer *buffer;
int count = 0;
int index = 0;

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2.6.18-rc7 3/9] NetXen: hw initilization routines

2006-09-15 Thread Amit S. Kale

diff -Narup -X linux-2.6.18-rc7.orig/Documentation/dontdiff 
linux-2.6.18-rc7.orig/drivers/net/netxen/netxen_nic_init.c 
linux-2.6.18-rc7/drivers/net/netxen/netxen_nic_init.c
--- linux-2.6.18-rc7.orig/drivers/net/netxen/netxen_nic_init.c  1969-12-31 
16:00:00.0 -0800
+++ linux-2.6.18-rc7/drivers/net/netxen/netxen_nic_init.c   2006-09-15 
10:51:59.0 -0700
@@ -0,0 +1,1143 @@
+/*
+ * Copyright (C) 2003 - 2006 NetXen, Inc.
+ * All rights reserved.
+ * 
+ * This program is free software; you can redistribute it and/or

+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful, but

+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License

+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA  02111-1307, USA.
+ * 
+ * The full GNU General Public License is included in this distribution

+ * in the file called LICENSE.
+ * 
+ * Contact Information:

+ *[EMAIL PROTECTED]
+ * NetXen,
+ * 3965 Freedom Circle, Fourth floor,
+ * Santa Clara, CA 95054
+ *
+ *
+ * Source file for NIC routines to initialize the Phantom Hardware
+ *
+ */
+
+#include linux/netdevice.h
+#include linux/delay.h
+#include netxen_nic.h
+#include netxen_nic_hw.h
+#include netxen_nic_ioctl.h
+#include netxen_nic_phan_reg.h
+
+struct crb_addr_pair {
+   long addr;
+   long data;
+};
+
+#define NETXEN_MAX_CRB_XFORM 60
+static unsigned int crb_addr_xform[NETXEN_MAX_CRB_XFORM];
+#define NETXEN_ADDR_ERROR ((unsigned long ) 0x )
+
+#define crb_addr_transform(name) \
+   crb_addr_xform[NETXEN_HW_PX_MAP_CRB_##name] = \
+   NETXEN_HW_CRB_HUB_AGT_ADR_##name  20
+
+static inline void
+netxen_nic_locked_write_reg(struct netxen_adapter *adapter,
+   unsigned long off, int *data)
+{
+   void __iomem *addr = (adapter-ahw.pci_base + off);
+   writel(*data, addr);
+}
+
+static void crb_addr_transform_setup(void)
+{
+   crb_addr_transform(XDMA);
+   crb_addr_transform(TIMR);
+   crb_addr_transform(SRE);
+   crb_addr_transform(SQN3);
+   crb_addr_transform(SQN2);
+   crb_addr_transform(SQN1);
+   crb_addr_transform(SQN0);
+   crb_addr_transform(SQS3);
+   crb_addr_transform(SQS2);
+   crb_addr_transform(SQS1);
+   crb_addr_transform(SQS0);
+   crb_addr_transform(RPMX7);
+   crb_addr_transform(RPMX6);
+   crb_addr_transform(RPMX5);
+   crb_addr_transform(RPMX4);
+   crb_addr_transform(RPMX3);
+   crb_addr_transform(RPMX2);
+   crb_addr_transform(RPMX1);
+   crb_addr_transform(RPMX0);
+   crb_addr_transform(ROMUSB);
+   crb_addr_transform(SN);
+   crb_addr_transform(QMN);
+   crb_addr_transform(QMS);
+   crb_addr_transform(PGNI);
+   crb_addr_transform(PGND);
+   crb_addr_transform(PGN3);
+   crb_addr_transform(PGN2);
+   crb_addr_transform(PGN1);
+   crb_addr_transform(PGN0);
+   crb_addr_transform(PGSI);
+   crb_addr_transform(PGSD);
+   crb_addr_transform(PGS3);
+   crb_addr_transform(PGS2);
+   crb_addr_transform(PGS1);
+   crb_addr_transform(PGS0);
+   crb_addr_transform(PS);
+   crb_addr_transform(PH);
+   crb_addr_transform(NIU);
+   crb_addr_transform(I2Q);
+   crb_addr_transform(EG);
+   crb_addr_transform(MN);
+   crb_addr_transform(MS);
+   crb_addr_transform(CAS2);
+   crb_addr_transform(CAS1);
+   crb_addr_transform(CAS0);
+   crb_addr_transform(CAM);
+   crb_addr_transform(C2C1);
+   crb_addr_transform(C2C0);
+}
+
+int netxen_init_firmware(struct netxen_adapter *adapter)
+{
+   u32 state = 0, loops = 0, err = 0;
+
+   /* Window 1 call */
+   state = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE));
+
+   if (state == PHAN_INITIALIZE_ACK)
+   return 0;
+
+   while (state != PHAN_INITIALIZE_COMPLETE  loops  2000) {
+   udelay(100);
+   /* Window 1 call */
+   state = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE));
+
+   loops++;
+   }
+   if (loops = 2000) {
+   printk(KERN_ERR Cmd Peg initialization not complete:%x.\n,
+  state);
+   err = -EIO;
+   return err;
+   }
+   /* Window 1 call */
+   writel(PHAN_INITIALIZE_ACK,
+  NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE));
+
+   return err;
+}
+
+void netxen_initialize_adapter_sw(struct netxen_adapter *adapter)
+{
+   int ctxid, ring;
+   u32 i;
+   u32 num_rx_bufs = 0;
+