]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.drivers/netxen-fix-endianness-in-firmware-commands.patch
Revert "Move xen patchset to new version's subdir."
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.drivers / netxen-fix-endianness-in-firmware-commands.patch
diff --git a/src/patches/suse-2.6.27.31/patches.drivers/netxen-fix-endianness-in-firmware-commands.patch b/src/patches/suse-2.6.27.31/patches.drivers/netxen-fix-endianness-in-firmware-commands.patch
deleted file mode 100644 (file)
index 6ffceef..0000000
+++ /dev/null
@@ -1,411 +0,0 @@
-From 2edbb454428729f450f7a0aabbf95ac62b46b78a Mon Sep 17 00:00:00 2001
-From: Dhananjay Phadke <dhananjay@netxen.com>
-Date: Wed, 14 Jan 2009 20:47:30 -0800
-Subject: netxen: fix endianness in firmware commands
-Acked-by: Karsten Keil <kkeil@novell.com>
-Reference: bnc#472416
-
-o Set restricted (little endian) data types in firmware command
-  requests and responses.
-o Remove unnecessary conversion to LE when writing registers.
-
-Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/netxen/netxen_nic.h      |   98 +++++++++++++++++-----------------
- drivers/net/netxen/netxen_nic_ctx.c  |   50 +++++++----------
- drivers/net/netxen/netxen_nic_hw.c   |   42 ++++++++------
- drivers/net/netxen/netxen_nic_init.c |    2 +-
- 4 files changed, 95 insertions(+), 97 deletions(-)
-
-Index: linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic.h
-===================================================================
---- linux-2.6.27-kketmp.orig/drivers/net/netxen/netxen_nic.h
-+++ linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic.h
-@@ -995,31 +995,31 @@ struct netxen_recv_context {
-  */
- typedef struct {
--      u64 host_phys_addr;     /* Ring base addr */
--      u32 ring_size;          /* Ring entries */
--      u16 msi_index;
--      u16 rsvd;               /* Padding */
-+      __le64 host_phys_addr;  /* Ring base addr */
-+      __le32 ring_size;               /* Ring entries */
-+      __le16 msi_index;
-+      __le16 rsvd;            /* Padding */
- } nx_hostrq_sds_ring_t;
- typedef struct {
--      u64 host_phys_addr;     /* Ring base addr */
--      u64 buff_size;          /* Packet buffer size */
--      u32 ring_size;          /* Ring entries */
--      u32 ring_kind;          /* Class of ring */
-+      __le64 host_phys_addr;  /* Ring base addr */
-+      __le64 buff_size;               /* Packet buffer size */
-+      __le32 ring_size;               /* Ring entries */
-+      __le32 ring_kind;               /* Class of ring */
- } nx_hostrq_rds_ring_t;
- typedef struct {
--      u64 host_rsp_dma_addr;  /* Response dma'd here */
--      u32 capabilities[4];    /* Flag bit vector */
--      u32 host_int_crb_mode;  /* Interrupt crb usage */
--      u32 host_rds_crb_mode;  /* RDS crb usage */
-+      __le64 host_rsp_dma_addr;       /* Response dma'd here */
-+      __le32 capabilities[4]; /* Flag bit vector */
-+      __le32 host_int_crb_mode;       /* Interrupt crb usage */
-+      __le32 host_rds_crb_mode;       /* RDS crb usage */
-       /* These ring offsets are relative to data[0] below */
--      u32 rds_ring_offset;    /* Offset to RDS config */
--      u32 sds_ring_offset;    /* Offset to SDS config */
--      u16 num_rds_rings;      /* Count of RDS rings */
--      u16 num_sds_rings;      /* Count of SDS rings */
--      u16 rsvd1;              /* Padding */
--      u16 rsvd2;              /* Padding */
-+      __le32 rds_ring_offset; /* Offset to RDS config */
-+      __le32 sds_ring_offset; /* Offset to SDS config */
-+      __le16 num_rds_rings;   /* Count of RDS rings */
-+      __le16 num_sds_rings;   /* Count of SDS rings */
-+      __le16 rsvd1;           /* Padding */
-+      __le16 rsvd2;           /* Padding */
-       u8  reserved[128];      /* reserve space for future expansion*/
-       /* MUST BE 64-bit aligned.
-          The following is packed:
-@@ -1029,24 +1029,24 @@ typedef struct {
- } nx_hostrq_rx_ctx_t;
- typedef struct {
--      u32 host_producer_crb;  /* Crb to use */
--      u32 rsvd1;              /* Padding */
-+      __le32 host_producer_crb;       /* Crb to use */
-+      __le32 rsvd1;           /* Padding */
- } nx_cardrsp_rds_ring_t;
- typedef struct {
--      u32 host_consumer_crb;  /* Crb to use */
--      u32 interrupt_crb;      /* Crb to use */
-+      __le32 host_consumer_crb;       /* Crb to use */
-+      __le32 interrupt_crb;   /* Crb to use */
- } nx_cardrsp_sds_ring_t;
- typedef struct {
-       /* These ring offsets are relative to data[0] below */
--      u32 rds_ring_offset;    /* Offset to RDS config */
--      u32 sds_ring_offset;    /* Offset to SDS config */
--      u32 host_ctx_state;     /* Starting State */
--      u32 num_fn_per_port;    /* How many PCI fn share the port */
--      u16 num_rds_rings;      /* Count of RDS rings */
--      u16 num_sds_rings;      /* Count of SDS rings */
--      u16 context_id;         /* Handle for context */
-+      __le32 rds_ring_offset; /* Offset to RDS config */
-+      __le32 sds_ring_offset; /* Offset to SDS config */
-+      __le32 host_ctx_state;  /* Starting State */
-+      __le32 num_fn_per_port; /* How many PCI fn share the port */
-+      __le16 num_rds_rings;   /* Count of RDS rings */
-+      __le16 num_sds_rings;   /* Count of SDS rings */
-+      __le16 context_id;              /* Handle for context */
-       u8  phys_port;          /* Physical id of port */
-       u8  virt_port;          /* Virtual/Logical id of port */
-       u8  reserved[128];      /* save space for future expansion */
-@@ -1072,34 +1072,34 @@ typedef struct {
-  */
- typedef struct {
--      u64 host_phys_addr;     /* Ring base addr */
--      u32 ring_size;          /* Ring entries */
--      u32 rsvd;               /* Padding */
-+      __le64 host_phys_addr;  /* Ring base addr */
-+      __le32 ring_size;               /* Ring entries */
-+      __le32 rsvd;            /* Padding */
- } nx_hostrq_cds_ring_t;
- typedef struct {
--      u64 host_rsp_dma_addr;  /* Response dma'd here */
--      u64 cmd_cons_dma_addr;  /*  */
--      u64 dummy_dma_addr;     /*  */
--      u32 capabilities[4];    /* Flag bit vector */
--      u32 host_int_crb_mode;  /* Interrupt crb usage */
--      u32 rsvd1;              /* Padding */
--      u16 rsvd2;              /* Padding */
--      u16 interrupt_ctl;
--      u16 msi_index;
--      u16 rsvd3;              /* Padding */
-+      __le64 host_rsp_dma_addr;       /* Response dma'd here */
-+      __le64 cmd_cons_dma_addr;       /*  */
-+      __le64 dummy_dma_addr;  /*  */
-+      __le32 capabilities[4]; /* Flag bit vector */
-+      __le32 host_int_crb_mode;       /* Interrupt crb usage */
-+      __le32 rsvd1;           /* Padding */
-+      __le16 rsvd2;           /* Padding */
-+      __le16 interrupt_ctl;
-+      __le16 msi_index;
-+      __le16 rsvd3;           /* Padding */
-       nx_hostrq_cds_ring_t cds_ring;  /* Desc of cds ring */
-       u8  reserved[128];      /* future expansion */
- } nx_hostrq_tx_ctx_t;
- typedef struct {
--      u32 host_producer_crb;  /* Crb to use */
--      u32 interrupt_crb;      /* Crb to use */
-+      __le32 host_producer_crb;       /* Crb to use */
-+      __le32 interrupt_crb;   /* Crb to use */
- } nx_cardrsp_cds_ring_t;
- typedef struct {
--      u32 host_ctx_state;     /* Starting state */
--      u16 context_id;         /* Handle for context */
-+      __le32 host_ctx_state;  /* Starting state */
-+      __le16 context_id;              /* Handle for context */
-       u8  phys_port;          /* Physical id of port */
-       u8  virt_port;          /* Virtual/Logical id of port */
-       nx_cardrsp_cds_ring_t cds_ring; /* Card cds settings */
-@@ -1202,9 +1202,9 @@ enum {
- #define VPORT_MISS_MODE_ACCEPT_MULTI  2 /* accept unmatched multicast */
- typedef struct {
--      u64 qhdr;
--      u64 req_hdr;
--      u64 words[6];
-+      __le64 qhdr;
-+      __le64 req_hdr;
-+      __le64 words[6];
- } nx_nic_req_t;
- typedef struct {
-Index: linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic_ctx.c
-===================================================================
---- linux-2.6.27-kketmp.orig/drivers/net/netxen/netxen_nic_ctx.c
-+++ linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic_ctx.c
-@@ -76,7 +76,7 @@ netxen_api_unlock(struct netxen_adapter 
- static u32
- netxen_poll_rsp(struct netxen_adapter *adapter)
- {
--      u32 raw_rsp, rsp = NX_CDRP_RSP_OK;
-+      u32 rsp = NX_CDRP_RSP_OK;
-       int     timeout = 0;
-       do {
-@@ -86,10 +86,7 @@ netxen_poll_rsp(struct netxen_adapter *a
-               if (++timeout > NX_OS_CRB_RETRY_COUNT)
-                       return NX_CDRP_RSP_TIMEOUT;
--              netxen_nic_read_w1(adapter, NX_CDRP_CRB_OFFSET,
--                              &raw_rsp);
--
--              rsp = le32_to_cpu(raw_rsp);
-+              netxen_nic_read_w1(adapter, NX_CDRP_CRB_OFFSET, &rsp);
-       } while (!NX_CDRP_IS_RSP(rsp));
-       return rsp;
-@@ -109,20 +106,16 @@ netxen_issue_cmd(struct netxen_adapter *
-       if (netxen_api_lock(adapter))
-               return NX_RCODE_TIMEOUT;
--      netxen_nic_write_w1(adapter, NX_SIGN_CRB_OFFSET,
--                      cpu_to_le32(signature));
-+      netxen_nic_write_w1(adapter, NX_SIGN_CRB_OFFSET, signature);
--      netxen_nic_write_w1(adapter, NX_ARG1_CRB_OFFSET,
--                      cpu_to_le32(arg1));
-+      netxen_nic_write_w1(adapter, NX_ARG1_CRB_OFFSET, arg1);
--      netxen_nic_write_w1(adapter, NX_ARG2_CRB_OFFSET,
--                      cpu_to_le32(arg2));
-+      netxen_nic_write_w1(adapter, NX_ARG2_CRB_OFFSET, arg2);
--      netxen_nic_write_w1(adapter, NX_ARG3_CRB_OFFSET,
--                      cpu_to_le32(arg3));
-+      netxen_nic_write_w1(adapter, NX_ARG3_CRB_OFFSET, arg3);
-       netxen_nic_write_w1(adapter, NX_CDRP_CRB_OFFSET,
--                      cpu_to_le32(NX_CDRP_FORM_CMD(cmd)));
-+                      NX_CDRP_FORM_CMD(cmd));
-       rsp = netxen_poll_rsp(adapter);
-@@ -133,7 +126,6 @@ netxen_issue_cmd(struct netxen_adapter *
-               rcode = NX_RCODE_TIMEOUT;
-       } else if (rsp == NX_CDRP_RSP_FAIL) {
-               netxen_nic_read_w1(adapter, NX_ARG1_CRB_OFFSET, &rcode);
--              rcode = le32_to_cpu(rcode);
-               printk(KERN_ERR "%s: failed card response code:0x%x\n",
-                               netxen_nic_driver_name, rcode);
-@@ -183,7 +175,7 @@ nx_fw_cmd_create_rx_ctx(struct netxen_ad
-       int i, nrds_rings, nsds_rings;
-       size_t rq_size, rsp_size;
--      u32 cap, reg;
-+      u32 cap, reg, val;
-       int err;
-@@ -225,11 +217,14 @@ nx_fw_cmd_create_rx_ctx(struct netxen_ad
-       prq->num_rds_rings = cpu_to_le16(nrds_rings);
-       prq->num_sds_rings = cpu_to_le16(nsds_rings);
--      prq->rds_ring_offset = 0;
--      prq->sds_ring_offset = prq->rds_ring_offset +
-+      prq->rds_ring_offset = cpu_to_le32(0);
-+
-+      val = le32_to_cpu(prq->rds_ring_offset) +
-               (sizeof(nx_hostrq_rds_ring_t) * nrds_rings);
-+      prq->sds_ring_offset = cpu_to_le32(val);
--      prq_rds = (nx_hostrq_rds_ring_t *)(prq->data + prq->rds_ring_offset);
-+      prq_rds = (nx_hostrq_rds_ring_t *)(prq->data +
-+                      le32_to_cpu(prq->rds_ring_offset));
-       for (i = 0; i < nrds_rings; i++) {
-@@ -241,17 +236,14 @@ nx_fw_cmd_create_rx_ctx(struct netxen_ad
-               prq_rds[i].buff_size = cpu_to_le64(rds_ring->dma_size);
-       }
--      prq_sds = (nx_hostrq_sds_ring_t *)(prq->data + prq->sds_ring_offset);
-+      prq_sds = (nx_hostrq_sds_ring_t *)(prq->data +
-+                      le32_to_cpu(prq->sds_ring_offset));
-       prq_sds[0].host_phys_addr =
-               cpu_to_le64(recv_ctx->rcv_status_desc_phys_addr);
-       prq_sds[0].ring_size = cpu_to_le32(adapter->max_rx_desc_count);
-       /* only one msix vector for now */
--      prq_sds[0].msi_index = cpu_to_le32(0);
--
--      /* now byteswap offsets */
--      prq->rds_ring_offset = cpu_to_le32(prq->rds_ring_offset);
--      prq->sds_ring_offset = cpu_to_le32(prq->sds_ring_offset);
-+      prq_sds[0].msi_index = cpu_to_le16(0);
-       phys_addr = hostrq_phys_addr;
-       err = netxen_issue_cmd(adapter,
-@@ -269,9 +261,9 @@ nx_fw_cmd_create_rx_ctx(struct netxen_ad
-       prsp_rds = ((nx_cardrsp_rds_ring_t *)
--                       &prsp->data[prsp->rds_ring_offset]);
-+                       &prsp->data[le32_to_cpu(prsp->rds_ring_offset)]);
--      for (i = 0; i < le32_to_cpu(prsp->num_rds_rings); i++) {
-+      for (i = 0; i < le16_to_cpu(prsp->num_rds_rings); i++) {
-               rds_ring = &recv_ctx->rds_rings[i];
-               reg = le32_to_cpu(prsp_rds[i].host_producer_crb);
-@@ -279,7 +271,7 @@ nx_fw_cmd_create_rx_ctx(struct netxen_ad
-       }
-       prsp_sds = ((nx_cardrsp_sds_ring_t *)
--                      &prsp->data[prsp->sds_ring_offset]);
-+                      &prsp->data[le32_to_cpu(prsp->sds_ring_offset)]);
-       reg = le32_to_cpu(prsp_sds[0].host_consumer_crb);
-       recv_ctx->crb_sts_consumer = NETXEN_NIC_REG(reg - 0x200);
-@@ -288,7 +280,7 @@ nx_fw_cmd_create_rx_ctx(struct netxen_ad
-       recv_ctx->state = le32_to_cpu(prsp->host_ctx_state);
-       recv_ctx->context_id = le16_to_cpu(prsp->context_id);
--      recv_ctx->virt_port = le16_to_cpu(prsp->virt_port);
-+      recv_ctx->virt_port = prsp->virt_port;
- out_free_rsp:
-       pci_free_consistent(adapter->pdev, rsp_size, prsp, cardrsp_phys_addr);
-Index: linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic_hw.c
-===================================================================
---- linux-2.6.27-kketmp.orig/drivers/net/netxen/netxen_nic_hw.c
-+++ linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic_hw.c
-@@ -539,16 +539,19 @@ static int nx_p3_sre_macaddr_change(stru
- {
-       struct netxen_adapter *adapter = (struct netxen_adapter *)dev->priv;
-       nx_nic_req_t req;
--      nx_mac_req_t mac_req;
-+      nx_mac_req_t *mac_req;
-+      u64 word;
-       int rv;
-       memset(&req, 0, sizeof(nx_nic_req_t));
--      req.qhdr |= (NX_NIC_REQUEST << 23);
--      req.req_hdr |= NX_MAC_EVENT;
--      req.req_hdr |= ((u64)adapter->portnum << 16);
--      mac_req.op = op;
--      memcpy(&mac_req.mac_addr, addr, 6);
--      req.words[0] = cpu_to_le64(*(u64 *)&mac_req);
-+      req.qhdr = cpu_to_le64(NX_NIC_REQUEST << 23);
-+
-+      word = NX_MAC_EVENT | ((u64)adapter->portnum << 16);
-+      req.req_hdr = cpu_to_le64(word);
-+
-+      mac_req = (nx_mac_req_t *)&req.words[0];
-+      mac_req->op = op;
-+      memcpy(mac_req->mac_addr, addr, 6);
-       rv = netxen_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1);
-       if (rv != 0) {
-@@ -612,12 +615,16 @@ send_fw_cmd:
- int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32 mode)
- {
-       nx_nic_req_t req;
-+      u64 word;
-       memset(&req, 0, sizeof(nx_nic_req_t));
--      req.qhdr |= (NX_HOST_REQUEST << 23);
--      req.req_hdr |= NX_NIC_H2C_OPCODE_PROXY_SET_VPORT_MISS_MODE;
--      req.req_hdr |= ((u64)adapter->portnum << 16);
-+      req.qhdr = cpu_to_le64(NX_HOST_REQUEST << 23);
-+
-+      word = NX_NIC_H2C_OPCODE_PROXY_SET_VPORT_MISS_MODE |
-+                      ((u64)adapter->portnum << 16);
-+      req.req_hdr = cpu_to_le64(word);
-+
-       req.words[0] = cpu_to_le64(mode);
-       return netxen_send_cmd_descs(adapter,
-@@ -632,13 +639,15 @@ int netxen_p3_nic_set_promisc(struct net
- int netxen_config_intr_coalesce(struct netxen_adapter *adapter)
- {
-       nx_nic_req_t req;
-+      u64 word;
-       int rv;
-       memset(&req, 0, sizeof(nx_nic_req_t));
--      req.qhdr |= (NX_NIC_REQUEST << 23);
--      req.req_hdr |= NETXEN_CONFIG_INTR_COALESCE;
--      req.req_hdr |= ((u64)adapter->portnum << 16);
-+      req.qhdr = cpu_to_le64(NX_NIC_REQUEST << 23);
-+
-+      word = NETXEN_CONFIG_INTR_COALESCE | ((u64)adapter->portnum << 16);
-+      req.req_hdr = cpu_to_le64(word);
-       memcpy(&req.words[0], &adapter->coal, sizeof(adapter->coal));
-@@ -772,13 +781,10 @@ int netxen_p3_get_mac_addr(struct netxen
-       adapter->hw_read_wx(adapter, crbaddr, &mac_lo, 4);
-       adapter->hw_read_wx(adapter, crbaddr+4, &mac_hi, 4);
--      mac_hi = cpu_to_le32(mac_hi);
--      mac_lo = cpu_to_le32(mac_lo);
--
-       if (pci_func & 1)
--              *mac = ((mac_lo >> 16) | ((u64)mac_hi << 16));
-+              *mac = le64_to_cpu((mac_lo >> 16) | ((u64)mac_hi << 16));
-       else
--              *mac = ((mac_lo) | ((u64)mac_hi << 32));
-+              *mac = le64_to_cpu((u64)mac_lo | ((u64)mac_hi << 32));
-       return 0;
- }
-Index: linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic_init.c
-===================================================================
---- linux-2.6.27-kketmp.orig/drivers/net/netxen/netxen_nic_init.c
-+++ linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic_init.c
-@@ -1277,7 +1277,7 @@ static void netxen_process_rcv(struct ne
-               dev_kfree_skb_any(skb);
-               for (i = 0; i < nr_frags; i++) {
--                      index = frag_desc->frag_handles[i];
-+                      index = le16_to_cpu(frag_desc->frag_handles[i]);
-                       skb = netxen_process_rxbuf(adapter,
-                                       rds_ring, index, cksum);
-                       if (skb)