[openfabrics-ewg] [Patch ofed1.2 2/3]libehca: cleanup and adjust mmap
Stefan Roscher
ossrosch at linux.vnet.ibm.com
Fri Jan 26 08:47:54 PST 2007
Signed-off-by: Stefan Roscher <stefan.roscher at de.ibm.com>
---
diff -Nurp libehca_old/src/ehca_utools.h libehca_new/src/ehca_utools.h
--- libehca_old/src/ehca_utools.h 2007-01-26 14:27:03.000000000 +0100
+++ libehca_new/src/ehca_utools.h 2007-01-26 14:27:43.000000000 +0100
@@ -1,53 +1,53 @@
-/*
+/*
* IBM eServer eHCA Infiniband device driver for Linux on POWER
- *
+ *
* Userspace functions
*
* Authors: Khadija Souissi <souissik at de.ibm.com>
* Christoph Raisch <raisch at de.ibm.com>
*
* Copyright (c) 2005 IBM Corporation
- *
+ *
* All rights reserved.
*
- * This source code is distributed under a dual license of GPL v2.0 and OpenIB
- * BSD.
+ * This source code is distributed under a dual license of GPL v2.0 and OpenIB
+ * BSD.
*
* OpenIB BSD License
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
*
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
*
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
* and/or other materials
- * provided with the distribution.
+ * provided with the distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ehca_utools.h,v 1.2 2006/02/21 17:15:47 nguyen Exp $
*/
-
+
#ifndef __EHCA_UTOOL_H__
#define __EHCA_UTOOL_H__
#include <stdio.h>
+#include <unistd.h>
#include <linux/types.h>
-#include <linux/err.h>
+#include <linux/errno.h>
#define u64 __u64
#define u32 __u32
#define u16 __u16
@@ -55,41 +55,38 @@
#define unlikely(x) __builtin_expect(!!(x), 0)
-/* defines for EDEBs */
-extern int libehca_trlevel;
-extern FILE *libehca_fh;
+/* defines for EHCA traces */
+extern int libehca_trace_on;
/* checks if debug is on for the given level
- * caller's module must have this decl: extern int libehca_trlevel;
+ * caller's module must have this decl: extern int libehca_trace_on;
*/
-#ifdef EDEB_NO_TRACE
-#define IS_EDEB_ON(level) (1==0)
-#define EDEB_GENERIC(level,idstring,format,args...) \
-while (1==0) { \
- \
- fprintf(libehca_fh,"%s " idstring "%p "format "\n", __func__, ##args); \
-}
-#else /* EDEB_NO_TRACE */
-#define IS_EDEB_ON(level) (level<=libehca_trlevel)
+#define ehca_dbg(ibv_dev, format, arg...) \
+ do { \
+ if (unlikely(libehca_trace_on)) \
+ fprintf(stderr, "PID%04x %s EHCA_DBG:%s " format "\n", \
+ getpid(), (ibv_dev)->name, __func__, ##arg); \
+ } while (0)
+
+#define ehca_err(ibv_dev, format, arg...) \
+ fprintf(stderr, "PID%04x %s EHCA_ERR:%s " format "\n", \
+ getpid(), (ibv_dev)->name, __func__, ##arg)
+
+/* use this one only if no ibv_dev available */
+#define ehca_gen_dbg(format, arg...) \
+ do { \
+ if (unlikely(libehca_trace_on)) \
+ fprintf(stderr, "PID%04x EHCA_DBG:%s " format "\n", \
+ getpid(), __func__, ##arg); \
+ } while (0)
+
+#define ehca_gen_err(format, arg...) \
+ fprintf(stderr, "PID%04x EHCA_ERR:%s " format "\n", \
+ getpid(), __func__, ##arg)
-#define EDEB_GENERIC(level,idstring,format,args...) \
-do { \
- if (unlikely(level<=libehca_trlevel))\
- fprintf(libehca_fh,"%s " idstring " "format "\n", __func__, ##args); \
-} while (1==0)
-#endif /* EDEB_NO_TRACE */
-
-#define EDEB(level,format,args...) \
- EDEB_GENERIC(level,"",format,##args)
-#define EDEB_EN(level,format,args...) \
- EDEB_GENERIC(level,">>>",format,##args)
-#define EDEB_EX(level,format,args...) \
- EDEB_GENERIC(level,"<<<",format,##args)
-#define EDEB_ERR(level,format,args...) \
- EDEB_GENERIC(level,"HCAD_ERROR ",format,##args)
/**
- * EDEB macro to dump a memory block, whose length is n*8 bytes.
+ * EHCA macro to dump a memory block, whose length is n*8 bytes.
* Each line has the following layout:
* <format string> adr=X ofs=Y <8 bytes hex> <8 bytes hex>
*/
@@ -98,92 +95,56 @@ do { \
#else
#define FORMAT_2U64 "%016lx %016lx"
#endif
-#define EDEB_DMP(level,adr,len,format,args...) \
- do { \
+#define ehca_dmp_dbg(adr, len, format, args...) \
+do { \
+ if (unlikely(libehca_trace_on)) { \
+ unsigned int x; \
+ unsigned int l = (unsigned int)(len); \
+ unsigned char *deb = (unsigned char*)(adr); \
+ for (x = 0; x < l; x += 16) { \
+ ehca_gen_dbg(format " adr=%p ofs=%04x " FORMAT_2U64, \
+ ##args, deb, x, \
+ *((u64 *)&deb[0]), *((u64 *)&deb[8])); \
+ deb += 16; \
+ } \
+ } \
+} while (0)
+
+#define ehca_dmp_err(adr, len, format, args...) \
+ do { \
unsigned int x; \
unsigned int l = (unsigned int)(len); \
unsigned char *deb = (unsigned char*)(adr); \
for (x = 0; x < l; x += 16) { \
- EDEB(level, format " adr=%p ofs=%04x " FORMAT_2U64, \
+ ehca_gen_err(format " adr=%p ofs=%04x " FORMAT_2U64, \
##args, deb, x, \
*((u64 *)&deb[0]), *((u64 *)&deb[8])); \
deb += 16; \
} \
- } while (0)
+ } while (0)
-/* define a bitmask, little endian version */
-#define EHCA_BMASK(pos,length) (((pos)<<16)+(length))
/* define a bitmask, the ibm way... */
-#define EHCA_BMASK_IBM(from,to) (((63-to)<<16)+((to)-(from)+1))
+#define EHCA_BMASK_IBM(from, to) (((63-to)<<16)+((to)-(from)+1))
/* internal function, don't use */
#define EHCA_BMASK_SHIFTPOS(mask) (((mask)>>16)&0xffff)
/* internal function, don't use */
#define EHCA_BMASK_MASK(mask) (0xffffffffffffffffULL >> ((64-(mask))&0xffff))
-/** return value shifted and masked by mask\n
- variable|=HCA_BMASK_SET(MY_MASK,0x4711) ORs the bits in variable\n
- variable&=~HCA_BMASK_SET(MY_MASK,-1) clears the bits from the mask
+/** return value shifted and masked by mask
+ variable|=HCA_BMASK_SET(MY_MASK,0x4711) ORs the bits in variable
+ variable&=~HCA_BMASK_SET(MY_MASK,-1) clears the bits from the mask
in variable
*/
-#define EHCA_BMASK_SET(mask,value) \
+#define EHCA_BMASK_SET(mask, value) \
((EHCA_BMASK_MASK(mask) & ((u64)(value)))<<EHCA_BMASK_SHIFTPOS(mask))
-
-#include "ehca_qes.h"
+#ifndef offsetof
+#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+#endif
#define container_of(ptr, type, member) ({ \
- const typeof( ((type *)0)->member ) *__mptr = (ptr); \
- (type *)( (char *)__mptr - offsetof(type,member) );})
-
-#define PARANOIA_MODE
-#ifdef PARANOIA_MODE
-#define EHCA_CHECK_ADR_P(adr) \
- if (adr==0) {\
- EDEB_ERR(4, "adr=%p check failed line %i", adr,__LINE__); \
- return ERR_PTR(-EFAULT); }
-
-#define EHCA_CHECK_ADR(adr) \
- if (adr==0) {\
- EDEB_ERR(4, "adr=%p check failed line %i", adr,__LINE__); \
- return -EFAULT; }
-
-#define EHCA_CHECK_CQ(cq) \
- if (cq==0) {\
- EDEB_ERR(4, "cq=%p check failed", cq); \
- return -EFAULT; }
-
-#define EHCA_CHECK_CQ_P(cq) \
- if (cq==0) {\
- EDEB_ERR(4, "cq=%p check failed", cq); \
- return ERR_PTR(-EFAULT); }
-
-#define EHCA_CHECK_QP(qp) \
- if (qp==0) {\
- EDEB_ERR(4, "qp=%p check failed", qp); \
- return -EFAULT; }
-
-#define EHCA_CHECK_QP_P(qp) \
- if (qp==0) {\
- EDEB_ERR(4, "qp=%p check failed", qp); \
- return ERR_PTR(-EFAULT); }
-
-#else
-#define EHCA_CHECK_ADR_P(adr)
-
-#define EHCA_CHECK_ADR(adr)
+ const typeof(((type *)0)->member) *__mptr = (ptr); \
+ (type *)((char *)__mptr - offsetof(type, member));})
-#define EHCA_CHECK_CQ(cq)
-
-#define EHCA_CHECK_CQ_P(cq)
-
-#define EHCA_CHECK_QP(qp)
-
-#define EHCA_CHECK_QP_P(qp)
-#endif
#define be64_to_cpu(x) (x)
-#define mftb() ({ unsigned long rval; \
- asm volatile("mftb %0" : "=r" (rval)); rval; })
-
-#define asm_sync_mem() __asm__ __volatile__ ("sync" : : : "memory")
-
#endif /* __EHCA_UTOOL_H__ */
diff -Nurp libehca_old/src/hcp_phyp.c libehca_new/src/hcp_phyp.c
--- libehca_old/src/hcp_phyp.c 2007-01-26 14:27:03.000000000 +0100
+++ libehca_new/src/hcp_phyp.c 2007-01-26 14:27:43.000000000 +0100
@@ -1,74 +1,60 @@
-/*
+/*
* IBM eServer eHCA Infiniband device driver for Linux on POWER
- *
+ *
* load store abstraction for ehca register access
*
- * Authors: Christoph Raisch <raisch at de.ibm.com>
+ * Authors: Christoph Raisch <raisch at de.ibm.com>
*
* Copyright (c) 2005 IBM Corporation
- *
+ *
* All rights reserved.
*
- * This source code is distributed under a dual license of GPL v2.0 and OpenIB
- * BSD.
+ * This source code is distributed under a dual license of GPL v2.0 and OpenIB
+ * BSD.
*
* OpenIB BSD License
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
*
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
*
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
* and/or other materials
- * provided with the distribution.
+ * provided with the distribution.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: hcp_phyp.c,v 1.1 2006/02/22 12:26:55 nguyen Exp $
*/
-
-#define DEB_PREFIX "PHYP"
-#ifdef __KERNEL__
-#include "ehca_kernel.h"
-#include "hipz_hw.h"
-/* #include "hipz_structs.h" / * TODO: still necessary */
-#include "ehca_classes_pSeries.h"
-#else /* !__KERNEL__ */
#include "ehca_utools.h"
#include "ehca_galpa.h"
-#endif
-
-#ifndef EHCA_USERDRIVER /* TODO: is this correct */
#ifdef __PPC64__
u64 hipz_galpa_load(struct h_galpa galpa, u32 offset)
{
u64 addr = galpa.fw_handle + offset;
- EDEB_EN(7, "addr=%lx offset=%x ", addr, offset);
+ ehca_gen_dbg("addr=%lx offset=%x ", addr, offset);
u64 out = *(u64 *) addr;
- EDEB_EX(7, "addr=%lx value=%lx", addr, out);
+ ehca_gen_dbg("addr=%lx value=%lx", addr, out);
return out;
};
void hipz_galpa_store(struct h_galpa galpa, u32 offset, u64 value)
{
u64 addr = galpa.fw_handle + offset;
- EDEB(7, "addr=%lx offset=%x value=%lx", addr,
- offset, value);
+ ehca_gen_dbg("addr=%lx offset=%x value=%lx", addr, offset, value);
*(u64 *) addr = value;
#ifdef EHCA_USE_HCALL
/* hipz_galpa_load(galpa, offset);*/
@@ -76,9 +62,9 @@ void hipz_galpa_store(struct h_galpa gal
};
#else /* ___PPC64__ the only way to do 8 byte store in 32 bit mode ?*/
-inline static void load64(u64 * from, u64 *to)
+inline static void load64(u64 *from, u64 *to)
{
- unsigned long temp=0;
+ unsigned long temp = 0;
asm("ld %2,0(%0)\n\t"
"std %2,0(%1)":/*no output*/:"r"(from),"r"(to),"r" (temp):"r0");
}
@@ -86,34 +72,34 @@ inline static void load64(u64 * from, u6
u64 hipz_galpa_load(struct h_galpa galpa, u32 offset)
{
void * addr = ((void*)(unsigned long)galpa.fw_handle) + offset;
- EDEB_EN(7, "addr=%p offset=%x ", addr, offset);
+ ehca_gen_dbg("addr=%p offset=%x ", addr, offset);
u32 temp[4];
- u64 *outadr=(u64*)((((u32)&temp)+7)&~7);/* 8 byte align the stack adress*/
+ /* 8 byte align the stack adress*/
+ u64 *outadr=(u64*)((((u32)&temp) + 7) & ~7);
load64(addr, outadr);
- EDEB_EX(7, "addr=%p value=%Lx", addr, *outadr);
+ ehca_gen_dbg("addr=%p value=%Lx", addr, *outadr);
return *outadr;
};
-inline static void store64(void * adr,unsigned int datal, unsigned int datah)
+inline static void store64(void *adr, unsigned int datal, unsigned int datah)
{
unsigned long temp=0;
asm("sldi %3,%1,32\n\t"
"or 0,%3,%0\n\t"
- "std 0,0(%2)\n" :/* no output */: "r" (datal), "r" (datah), "r" (adr), "r" (temp):"r0");
+ "std 0,0(%2)\n" :/* no output */: "r" (datal), "r" (datah),
+ "r" (adr), "r" (temp):"r0");
}
void hipz_galpa_store(struct h_galpa galpa, u32 offset, u64 value)
{
void * addr = ((void*)(unsigned long)galpa.fw_handle) + offset;
- EDEB(7, "addr=%p offset=%x value=%Lx", addr,
- offset, value);
- store64(addr,value&0xffffffffULL,value >>32ULL);
+ ehca_gen_dbg("addr=%p offset=%x value=%Lx", addr, offset, value);
+ store64(addr, value&0xffffffffULL, value >>32ULL);
#ifdef EHCA_USE_HCALL
- /* hipz_galpa_load(galpa, offset); */
- /* synchronize explicitly */
+ /* hipz_galpa_load(galpa, offset);
+ * synchronize explicitly
+ */
#endif
};
#endif /* ___PPC64__*/
-
-#endif /* EHCA_USERDRIVER */
diff -Nurp libehca_old/src/hipz_fns_core.h libehca_new/src/hipz_fns_core.h
--- libehca_old/src/hipz_fns_core.h 2007-01-26 14:27:03.000000000 +0100
+++ libehca_new/src/hipz_fns_core.h 2007-01-26 14:27:43.000000000 +0100
@@ -38,8 +38,6 @@
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: hipz_fns_core.h,v 1.2 2006/03/26 21:27:27 nguyen Exp $
*/
#ifndef __HIPZ_FNS_CORE_H__
@@ -48,76 +46,71 @@
#include "ehca_galpa.h"
#include "hipz_hw.h"
-#define hipz_galpa_store_cq(gal,offset,value)\
- hipz_galpa_store(gal,CQTEMM_OFFSET(offset),value)
-#define hipz_galpa_load_cq(gal,offset)\
- hipz_galpa_load(gal,CQTEMM_OFFSET(offset))
-
-#define hipz_galpa_store_qp(gal,offset,value)\
- hipz_galpa_store(gal,QPTEMM_OFFSET(offset),value)
-#define hipz_galpa_load_qp(gal,offset)\
- hipz_galpa_load(gal,QPTEMM_OFFSET(offset))
+#define hipz_galpa_store_cq(gal, offset, value) \
+ hipz_galpa_store(gal, CQTEMM_OFFSET(offset), value)
+#define hipz_galpa_load_cq(gal, offset) \
+ hipz_galpa_load(gal, CQTEMM_OFFSET(offset))
+
+#define hipz_galpa_store_qp(gal, offset, value) \
+ hipz_galpa_store(gal, QPTEMM_OFFSET(offset), value)
+#define hipz_galpa_load_qp(gal, offset) \
+ hipz_galpa_load(gal, QPTEMM_OFFSET(offset))
inline static void hipz_update_SQA(struct ehcau_qp *qp, u16 nr_wqes)
{
struct h_galpa gal;
- EDEB_EN(7, "qp=%p", qp);
gal = qp->galpas.kernel;
/* ringing doorbell :-) */
hipz_galpa_store_qp(gal, QPx_SQA, EHCA_BMASK_SET(QPx_SQAdder, nr_wqes));
- EDEB_EX(7, "qp=%p QPx_SQA = %i", qp, nr_wqes);
+ ehca_gen_dbg("qp=%p QPx_SQA = %i", qp, nr_wqes);
}
inline static void hipz_update_RQA(struct ehcau_qp *qp, u16 nr_wqes)
{
struct h_galpa gal;
- EDEB_EN(7, "qp=%p", qp);
gal = qp->galpas.kernel;
/* ringing doorbell :-) */
hipz_galpa_store_qp(gal, QPx_RQA, EHCA_BMASK_SET(QPx_RQAdder, nr_wqes));
- EDEB_EX(7, "qp=%p QPx_RQA = %i", qp, nr_wqes);
+ ehca_gen_dbg("qp=%p QPx_RQA = %i", qp, nr_wqes);
}
inline static void hipz_update_FECA(struct ehcau_cq *cq, u32 nr_cqes)
{
struct h_galpa gal;
- EDEB_EN(7, "cq=%p", cq);
gal = cq->galpas.kernel;
hipz_galpa_store_cq(gal, CQx_FECA,
EHCA_BMASK_SET(CQx_FECAdder, nr_cqes));
- EDEB_EX(7, "cq=%p CQx_FECA = %i", cq, nr_cqes);
+ ehca_gen_dbg("cq=%p CQx_FECA = %i", cq, nr_cqes);
}
inline static void hipz_set_CQx_N0(struct ehcau_cq *cq, u32 value)
{
struct h_galpa gal;
- u64 CQx_N0_reg = 0;
+ u64 CQx_N0_reg;
- EDEB_EN(7, "cq=%p event on solicited completion -- write CQx_N0",
- cq);
+ ehca_gen_dbg("cq=%p event on solicited completion -- write CQx_N0", cq);
gal = cq->galpas.kernel;
hipz_galpa_store_cq(gal, CQx_N0,
EHCA_BMASK_SET(CQx_N0_generate_solicited_comp_event,
value));
CQx_N0_reg = hipz_galpa_load_cq(gal, CQx_N0);
- EDEB_EX(7, "cq=%p loaded CQx_N0=%lx", cq,(unsigned long)CQx_N0_reg);
+ ehca_gen_dbg("cq=%p loaded CQx_N0=%lx", cq, (unsigned long)CQx_N0_reg);
}
inline static void hipz_set_CQx_N1(struct ehcau_cq *cq, u32 value)
{
struct h_galpa gal;
- u64 CQx_N1_reg = 0;
+ u64 CQx_N1_reg;
- EDEB_EN(7, "cq=%p event on completion -- write CQx_N1",
- cq);
+ ehca_gen_dbg("cq=%p event on completion -- write CQx_N1", cq);
gal = cq->galpas.kernel;
hipz_galpa_store_cq(gal, CQx_N1,
EHCA_BMASK_SET(CQx_N1_generate_comp_event, value));
CQx_N1_reg = hipz_galpa_load_cq(gal, CQx_N1);
- EDEB_EX(7, "cq=%p loaded CQx_N1=%lx", cq,(unsigned long)CQx_N1_reg);
+ ehca_gen_dbg("cq=%p loaded CQx_N1=%lx", cq, (unsigned long)CQx_N1_reg);
}
#endif /* __HIPZ_FNC_CORE_H__ */
diff -Nurp libehca_old/src/hipz_hw.h libehca_new/src/hipz_hw.h
--- libehca_old/src/hipz_hw.h 2007-01-26 14:27:03.000000000 +0100
+++ libehca_new/src/hipz_hw.h 2007-01-26 14:27:43.000000000 +0100
@@ -38,8 +38,6 @@
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: hipz_hw.h,v 1.1 2006/02/22 12:26:55 nguyen Exp $
*/
#ifndef __HIPZ_HW_H__
@@ -52,191 +50,189 @@
#include "ehca_utools.h"
#endif
-/** @brief Queue Pair Table Memory
- */
+#define EHCA_MAX_MTU 4
+
+/* Queue Pair Table Memory */
struct hipz_QPTEMM {
u64 QPx_HCR;
-#define QPx_HCR_PKEY_Mode EHCA_BMASK_IBM(1,2)
-#define QPx_HCR_Special_QP_Mode EHCA_BMASK_IBM(6,7)
+#define QPx_HCR_PKEY_Mode EHCA_BMASK_IBM(1, 2)
+#define QPx_HCR_Special_QP_Mode EHCA_BMASK_IBM(6, 7)
u64 QPx_C;
-#define QPx_C_Enabled EHCA_BMASK_IBM(0,0)
-#define QPx_C_Disabled EHCA_BMASK_IBM(1,1)
-#define QPx_C_Req_State EHCA_BMASK_IBM(16,23)
-#define QPx_C_Res_State EHCA_BMASK_IBM(25,31)
-#define QPx_C_disable_ETE_check EHCA_BMASK_IBM(7,7)
+#define QPx_C_Enabled EHCA_BMASK_IBM(0, 0)
+#define QPx_C_Disabled EHCA_BMASK_IBM(1, 1)
+#define QPx_C_Req_State EHCA_BMASK_IBM(16, 23)
+#define QPx_C_Res_State EHCA_BMASK_IBM(25, 31)
+#define QPx_C_disable_ETE_check EHCA_BMASK_IBM(7, 7)
u64 QPx_HERR;
u64 QPx_AER;
-/* 0x20*/
+ /* 0x20*/
u64 QPx_SQA;
-#define QPx_SQAdder EHCA_BMASK_IBM(48,63)
+#define QPx_SQAdder EHCA_BMASK_IBM(48, 63)
u64 QPx_SQC;
u64 QPx_RQA;
-#define QPx_RQAdder EHCA_BMASK_IBM(48,63)
+#define QPx_RQAdder EHCA_BMASK_IBM(48, 63)
u64 QPx_RQC;
-/* 0x40*/
+ /* 0x40*/
u64 QPx_ST;
u64 QPx_PMSTATE;
-#define QPx_PMSTATE_BITS EHCA_BMASK_IBM(30,31)
+#define QPx_PMSTATE_BITS EHCA_BMASK_IBM(30, 31)
u64 QPx_PMFA;
u64 QPx_PKEY;
-#define QPx_PKEY_value EHCA_BMASK_IBM(48,63)
-/* 0x60*/
+#define QPx_PKEY_value EHCA_BMASK_IBM(48, 63)
+ /* 0x60*/
u64 QPx_PKEYA;
-#define QPx_PKEYA_index0 EHCA_BMASK_IBM(0,15)
-#define QPx_PKEYA_index1 EHCA_BMASK_IBM(16,31)
-#define QPx_PKEYA_index2 EHCA_BMASK_IBM(32,47)
-#define QPx_PKEYA_index3 EHCA_BMASK_IBM(48,63)
+#define QPx_PKEYA_index0 EHCA_BMASK_IBM(0, 15)
+#define QPx_PKEYA_index1 EHCA_BMASK_IBM(16, 31)
+#define QPx_PKEYA_index2 EHCA_BMASK_IBM(32, 47)
+#define QPx_PKEYA_index3 EHCA_BMASK_IBM(48, 63)
u64 QPx_PKEYB;
-#define QPx_PKEYB_index4 EHCA_BMASK_IBM(0,15)
-#define QPx_PKEYB_index5 EHCA_BMASK_IBM(16,31)
-#define QPx_PKEYB_index6 EHCA_BMASK_IBM(32,47)
-#define QPx_PKEYB_index7 EHCA_BMASK_IBM(48,63)
+#define QPx_PKEYB_index4 EHCA_BMASK_IBM(0, 15)
+#define QPx_PKEYB_index5 EHCA_BMASK_IBM(16, 31)
+#define QPx_PKEYB_index6 EHCA_BMASK_IBM(32, 47)
+#define QPx_PKEYB_index7 EHCA_BMASK_IBM(48, 63)
u64 QPx_PKEYC;
-#define QPx_PKEYC_index8 EHCA_BMASK_IBM(0,15)
-#define QPx_PKEYC_index9 EHCA_BMASK_IBM(16,31)
-#define QPx_PKEYC_index10 EHCA_BMASK_IBM(32,47)
-#define QPx_PKEYC_index11 EHCA_BMASK_IBM(48,63)
+#define QPx_PKEYC_index8 EHCA_BMASK_IBM(0, 15)
+#define QPx_PKEYC_index9 EHCA_BMASK_IBM(16, 31)
+#define QPx_PKEYC_index10 EHCA_BMASK_IBM(32, 47)
+#define QPx_PKEYC_index11 EHCA_BMASK_IBM(48, 63)
u64 QPx_PKEYD;
-#define QPx_PKEYD_index12 EHCA_BMASK_IBM(0,15)
-#define QPx_PKEYD_index13 EHCA_BMASK_IBM(16,31)
-#define QPx_PKEYD_index14 EHCA_BMASK_IBM(32,47)
-#define QPx_PKEYD_index15 EHCA_BMASK_IBM(48,63)
-/* 0x80*/
+#define QPx_PKEYD_index12 EHCA_BMASK_IBM(0, 15)
+#define QPx_PKEYD_index13 EHCA_BMASK_IBM(16, 31)
+#define QPx_PKEYD_index14 EHCA_BMASK_IBM(32, 47)
+#define QPx_PKEYD_index15 EHCA_BMASK_IBM(48, 63)
+ /* 0x80*/
u64 QPx_QKEY;
-#define QPx_QKEY_value EHCA_BMASK_IBM(32,63)
+#define QPx_QKEY_value EHCA_BMASK_IBM(32, 63)
u64 QPx_DQP;
-#define QPx_DQP_number EHCA_BMASK_IBM(40,63)
+#define QPx_DQP_number EHCA_BMASK_IBM(40, 63)
u64 QPx_DLIDP;
-#define QPx_DLID_PRIMARY EHCA_BMASK_IBM(48,63)
-#define QPx_DLIDP_GRH EHCA_BMASK_IBM(31,31)
+#define QPx_DLID_PRIMARY EHCA_BMASK_IBM(48, 63)
+#define QPx_DLIDP_GRH EHCA_BMASK_IBM(31, 31)
u64 QPx_PORTP;
-#define QPx_PORT_Primary EHCA_BMASK_IBM(57,63)
-/* 0xa0*/
+#define QPx_PORT_Primary EHCA_BMASK_IBM(57, 63)
+ /* 0xa0*/
u64 QPx_SLIDP;
-#define QPx_SLIDP_p_path EHCA_BMASK_IBM(48,63)
-#define QPx_SLIDP_lmc EHCA_BMASK_IBM(37,39)
+#define QPx_SLIDP_p_path EHCA_BMASK_IBM(48, 63)
+#define QPx_SLIDP_lmc EHCA_BMASK_IBM(37, 39)
u64 QPx_SLIDPP;
-#define QPx_SLID_PRIM_PATH EHCA_BMASK_IBM(57,63)
+#define QPx_SLID_PRIM_PATH EHCA_BMASK_IBM(57, 63)
u64 QPx_DLIDA;
-#define QPx_DLIDA_GRH EHCA_BMASK_IBM(31,31)
+#define QPx_DLIDA_GRH EHCA_BMASK_IBM(31, 31)
u64 QPx_PORTA;
-#define QPx_PORT_Alternate EHCA_BMASK_IBM(57,63)
-/* 0xc0*/
+#define QPx_PORT_Alternate EHCA_BMASK_IBM(57, 63)
+ /* 0xc0*/
u64 QPx_SLIDA;
u64 QPx_SLIDPA;
u64 QPx_SLVL;
-#define QPx_SLVL_BITS EHCA_BMASK_IBM(56,59)
-#define QPx_SLVL_VL EHCA_BMASK_IBM(60,63)
+#define QPx_SLVL_BITS EHCA_BMASK_IBM(56, 59)
+#define QPx_SLVL_VL EHCA_BMASK_IBM(60, 63)
u64 QPx_IPD;
-#define QPx_IPD_max_static_rate EHCA_BMASK_IBM(56,63)
-/* 0xe0*/
+#define QPx_IPD_max_static_rate EHCA_BMASK_IBM(56, 63)
+ /* 0xe0*/
u64 QPx_MTU;
-#define QPx_MTU_size EHCA_BMASK_IBM(56,63)
+#define QPx_MTU_size EHCA_BMASK_IBM(56, 63)
u64 QPx_LATO;
-#define QPx_LATO_BITS EHCA_BMASK_IBM(59,63)
+#define QPx_LATO_BITS EHCA_BMASK_IBM(59, 63)
u64 QPx_RLIMIT;
-#define QPx_RETRY_COUNT EHCA_BMASK_IBM(61,63)
+#define QPx_RETRY_COUNT EHCA_BMASK_IBM(61, 63)
u64 QPx_RNRLIMIT;
-#define QPx_RNR_RETRY_COUNT EHCA_BMASK_IBM(61,63)
-/* 0x100*/
+#define QPx_RNR_RETRY_COUNT EHCA_BMASK_IBM(61, 63)
+ /* 0x100*/
u64 QPx_T;
u64 QPx_SQHP;
u64 QPx_SQPTP;
u64 QPx_NSPSN;
-#define QPx_NSPSN_value EHCA_BMASK_IBM(40,63)
-/* 0x120*/
+#define QPx_NSPSN_value EHCA_BMASK_IBM(40, 63)
+ /* 0x120*/
u64 QPx_NSPSNHWM;
-#define QPx_NSPSNHWM_value EHCA_BMASK_IBM(40,63)
+#define QPx_NSPSNHWM_value EHCA_BMASK_IBM(40, 63)
u64 reserved1;
u64 QPx_SDSI;
u64 QPx_SDSBC;
-/* 0x140*/
+ /* 0x140*/
u64 QPx_SQWSIZE;
-#define QPx_SQWSIZE_value EHCA_BMASK_IBM(61,63)
+#define QPx_SQWSIZE_value EHCA_BMASK_IBM(61, 63)
u64 QPx_SQWTS;
u64 QPx_LSN;
u64 QPx_NSSN;
-/* 0x160 */
+ /* 0x160 */
u64 QPx_MOR;
-#define QPx_MOR_value EHCA_BMASK_IBM(48,63)
+#define QPx_MOR_value EHCA_BMASK_IBM(48, 63)
u64 QPx_COR;
u64 QPx_SQSIZE;
-#define QPx_SQSIZE_value EHCA_BMASK_IBM(60,63)
+#define QPx_SQSIZE_value EHCA_BMASK_IBM(60, 63)
u64 QPx_ERC;
-/* 0x180*/
+ /* 0x180*/
u64 QPx_RNRRC;
-#define QPx_RNRRESP_value EHCA_BMASK_IBM(59,63)
+#define QPx_RNRRESP_value EHCA_BMASK_IBM(59, 63)
u64 QPx_ERNRWT;
u64 QPx_RNRRESP;
-#define QPx_RNRRESP_WTR EHCA_BMASK_IBM(59,63)
+#define QPx_RNRRESP_WTR EHCA_BMASK_IBM(59, 63)
u64 QPx_LMSNA;
-/* 0x1a0 */
+ /* 0x1a0 */
u64 QPx_SQHPC;
u64 QPx_SQCPTP;
u64 QPx_SIGT;
u64 QPx_WQECNT;
-/* 0x1c0*/
-
+ /* 0x1c0*/
u64 QPx_RQHP;
u64 QPx_RQPTP;
u64 QPx_RQSIZE;
-#define QPx_RQSIZE_value EHCA_BMASK_IBM(60,63)
+#define QPx_RQSIZE_value EHCA_BMASK_IBM(60, 63)
u64 QPx_NRR;
-#define QPx_NRR_value EHCA_BMASK_IBM(61,63)
-/* 0x1e0*/
+#define QPx_NRR_value EHCA_BMASK_IBM(61, 63)
+ /* 0x1e0*/
u64 QPx_RDMAC;
-#define QPx_RDMAC_value EHCA_BMASK_IBM(61,63)
+#define QPx_RDMAC_value EHCA_BMASK_IBM(61, 63)
u64 QPx_NRPSN;
-#define QPx_NRPSN_value EHCA_BMASK_IBM(40,63)
+#define QPx_NRPSN_value EHCA_BMASK_IBM(40, 63)
u64 QPx_LAPSN;
-#define QPx_LAPSN_value EHCA_BMASK_IBM(40,63)
+#define QPx_LAPSN_value EHCA_BMASK_IBM(40, 63)
u64 QPx_LCR;
-/* 0x200*/
+ /* 0x200*/
u64 QPx_RWC;
u64 QPx_RWVA;
u64 QPx_RDSI;
u64 QPx_RDSBC;
-/* 0x220*/
+ /* 0x220*/
u64 QPx_RQWSIZE;
-#define QPx_RQWSIZE_value EHCA_BMASK_IBM(61,63)
+#define QPx_RQWSIZE_value EHCA_BMASK_IBM(61, 63)
u64 QPx_CRMSN;
u64 QPx_RDD;
-#define QPx_RDD_VALUE EHCA_BMASK_IBM(32,63)
+#define QPx_RDD_VALUE EHCA_BMASK_IBM(32, 63)
u64 QPx_LARPSN;
-#define QPx_LARPSN_value EHCA_BMASK_IBM(40,63)
-/* 0x240*/
+#define QPx_LARPSN_value EHCA_BMASK_IBM(40, 63)
+ /* 0x240*/
u64 QPx_PD;
u64 QPx_SCQN;
u64 QPx_RCQN;
u64 QPx_AEQN;
-/* 0x260*/
+ /* 0x260*/
u64 QPx_AAELOG;
u64 QPx_RAM;
u64 QPx_RDMAQE0;
u64 QPx_RDMAQE1;
-/* 0x280*/
+ /* 0x280*/
u64 QPx_RDMAQE2;
u64 QPx_RDMAQE3;
u64 QPx_NRPSNHWM;
-#define QPx_NRPSNHWM_value EHCA_BMASK_IBM(40,63)
-/* 0x298*/
+#define QPx_NRPSNHWM_value EHCA_BMASK_IBM(40, 63)
+ /* 0x298*/
u64 reserved[(0x400 - 0x298) / 8];
-/* 0x400 extended data */
+ /* 0x400 extended data */
u64 reserved_ext[(0x500 - 0x400) / 8];
-/* 0x500 */
+ /* 0x500 */
u64 reserved2[(0x1000 - 0x500) / 8];
-/* 0x1000 */
+ /* 0x1000 */
};
-#define QPTEMM_OFFSET(x) offsetof(struct hipz_QPTEMM,x)
+#define QPTEMM_OFFSET(x) offsetof(struct hipz_QPTEMM, x)
-/** @brief MRMWPT Entry Memory Map
- */
+/* MRMWPT Entry Memory Map */
struct hipz_MRMWMM {
/* 0x00 */
u64 MRx_HCR;
-#define MRx_HCR_LPARID_VALID EHCA_BMASK_IBM(0,0)
-
+#define MRx_HCR_LPARID_VALID EHCA_BMASK_IBM(0, 0)
u64 MRx_C;
u64 MRx_HERR;
u64 MRx_AER;
@@ -249,26 +245,24 @@ struct hipz_MRMWMM {
u64 reserved4[(0x200 - 0x40) / 8];
/* 0x200 */
u64 MRx_CTL[64];
-
};
-#define MRMWMM_OFFSET(x) offsetof(struct hipz_MRMWMM,x)
+#define MRMWMM_OFFSET(x) offsetof(struct hipz_MRMWMM, x)
-/** @brief QPEDMM
- */
+/* QPEDMM */
struct hipz_QPEDMM {
/* 0x00 */
u64 reserved0[(0x400) / 8];
/* 0x400 */
u64 QPEDx_PHH;
-#define QPEDx_PHH_TClass EHCA_BMASK_IBM(4,11)
-#define QPEDx_PHH_HopLimit EHCA_BMASK_IBM(56,63)
-#define QPEDx_PHH_FlowLevel EHCA_BMASK_IBM(12,31)
+#define QPEDx_PHH_TClass EHCA_BMASK_IBM(4, 11)
+#define QPEDx_PHH_HopLimit EHCA_BMASK_IBM(56, 63)
+#define QPEDx_PHH_FlowLevel EHCA_BMASK_IBM(12, 31)
u64 QPEDx_PPSGP;
-#define QPEDx_PPSGP_PPPidx EHCA_BMASK_IBM(0,63)
+#define QPEDx_PPSGP_PPPidx EHCA_BMASK_IBM(0, 63)
/* 0x410 */
u64 QPEDx_PPSGU;
-#define QPEDx_PPSGU_PPPSGID EHCA_BMASK_IBM(0,63)
+#define QPEDx_PPSGU_PPPSGID EHCA_BMASK_IBM(0, 63)
u64 QPEDx_PPDGP;
/* 0x420 */
u64 QPEDx_PPDGU;
@@ -310,73 +304,71 @@ struct hipz_QPEDMM {
u64 QPEDx_RRVA3;
};
-#define QPEDMM_OFFSET(x) offsetof(struct hipz_QPEDMM,x)
+#define QPEDMM_OFFSET(x) offsetof(struct hipz_QPEDMM, x)
-/** @brief CQ Table Entry Memory Map
- */
+/* CQ Table Entry Memory Map */
struct hipz_CQTEMM {
u64 CQx_HCR;
-#define CQx_HCR_LPARID_valid EHCA_BMASK_IBM(0,0)
+#define CQx_HCR_LPARID_valid EHCA_BMASK_IBM(0, 0)
u64 CQx_C;
-#define CQx_C_Enable EHCA_BMASK_IBM(0,0)
-#define CQx_C_Disable_Complete EHCA_BMASK_IBM(1,1)
-#define CQx_C_Error_Reset EHCA_BMASK_IBM(23,23)
+#define CQx_C_Enable EHCA_BMASK_IBM(0, 0)
+#define CQx_C_Disable_Complete EHCA_BMASK_IBM(1, 1)
+#define CQx_C_Error_Reset EHCA_BMASK_IBM(23, 23)
u64 CQx_HERR;
u64 CQx_AER;
-/* 0x20 */
+ /* 0x20 */
u64 CQx_PTP;
u64 CQx_TP;
-#define CQx_FEC_CQE_cnt EHCA_BMASK_IBM(32,63)
+#define CQx_FEC_CQE_cnt EHCA_BMASK_IBM(32, 63)
u64 CQx_FEC;
u64 CQx_FECA;
-#define CQx_FECAdder EHCA_BMASK_IBM(32,63)
-/* 0x40 */
+#define CQx_FECAdder EHCA_BMASK_IBM(32, 63)
+ /* 0x40 */
u64 CQx_EP;
-#define CQx_EP_Event_Pending EHCA_BMASK_IBM(0,0)
-#define CQx_EQ_number EHCA_BMASK_IBM(0,15)
-#define CQx_EQ_CQtoken EHCA_BMASK_IBM(32,63)
+#define CQx_EP_Event_Pending EHCA_BMASK_IBM(0, 0)
+#define CQx_EQ_number EHCA_BMASK_IBM(0, 15)
+#define CQx_EQ_CQtoken EHCA_BMASK_IBM(32, 63)
u64 CQx_EQ;
-/* 0x50 */
+ /* 0x50 */
u64 reserved1;
u64 CQx_N0;
-#define CQx_N0_generate_solicited_comp_event EHCA_BMASK_IBM(0,0)
-/* 0x60 */
+#define CQx_N0_generate_solicited_comp_event EHCA_BMASK_IBM(0, 0)
+ /* 0x60 */
u64 CQx_N1;
-#define CQx_N1_generate_comp_event EHCA_BMASK_IBM(0,0)
+#define CQx_N1_generate_comp_event EHCA_BMASK_IBM(0, 0)
u64 reserved2[(0x1000 - 0x60) / 8];
-/* 0x1000 */
+ /* 0x1000 */
};
-#define CQTEMM_OFFSET(x) offsetof(struct hipz_CQTEMM,x)
+#define CQTEMM_OFFSET(x) offsetof(struct hipz_CQTEMM, x)
-/** @brief EQ Table Entry Memory Map
- */
+/* EQ Table Entry Memory Map */
struct hipz_EQTEMM {
u64 EQx_HCR;
-#define EQx_HCR_LPARID_valid EHCA_BMASK_IBM(0,0)
-#define EQx_HCR_ENABLE_PSB EHCA_BMASK_IBM(8,8)
+#define EQx_HCR_LPARID_valid EHCA_BMASK_IBM(0, 0)
+#define EQx_HCR_ENABLE_PSB EHCA_BMASK_IBM(8, 8)
u64 EQx_C;
-#define EQx_C_Enable EHCA_BMASK_IBM(0,0)
-#define EQx_C_Error_Reset EHCA_BMASK_IBM(23,23)
-#define EQx_C_Comp_Event EHCA_BMASK_IBM(17,17)
+#define EQx_C_Enable EHCA_BMASK_IBM(0, 0)
+#define EQx_C_Error_Reset EHCA_BMASK_IBM(23, 23)
+#define EQx_C_Comp_Event EHCA_BMASK_IBM(17, 17)
u64 EQx_HERR;
u64 EQx_AER;
-/* 0x20 */
+ /* 0x20 */
u64 EQx_PTP;
u64 EQx_TP;
u64 EQx_SSBA;
u64 EQx_PSBA;
-/* 0x40 */
+ /* 0x40 */
u64 EQx_CEC;
u64 EQx_MEQL;
u64 EQx_XISBI;
u64 EQx_XISC;
-/* 0x60 */
+ /* 0x60 */
u64 EQx_IT;
};
-#define EQTEMM_OFFSET(x) offsetof(struct hipz_EQTEMM,x)
+#define EQTEMM_OFFSET(x) offsetof(struct hipz_EQTEMM, x)
#endif
diff -Nurp libehca_old/src/ipzu_pt_fn.h libehca_new/src/ipzu_pt_fn.h
--- libehca_old/src/ipzu_pt_fn.h 2007-01-26 14:27:03.000000000 +0100
+++ libehca_new/src/ipzu_pt_fn.h 2007-01-26 14:27:43.000000000 +0100
@@ -39,8 +39,6 @@
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: ipzu_pt_fn.h,v 1.1 2006/03/26 22:34:11 nguyen Exp $
*/
#ifndef __IPZU_PT_FN_H__
@@ -60,33 +58,32 @@ struct ipzu_queue {
u32 dummy3; /* 64 bit alignment*/
};
-/** return current Queue Entry
- @returns address of current Queue Entry
- */
+/* returns address of current Queue Entry */
static inline void *ipzu_qeit_get(struct ipzu_queue *queue)
{
- return (queue->current_q_addr);
+ return queue->current_q_addr;
}
-/** return current Queue Page , increment Queue Page iterator from
- page to page in struct ipzu_queue, last increment will return 0! and
- NOT wrap
- @returns address of current Queue Page
- @warning don't use in parallel with ipzu_qeit_get_inc()
+/*
+ * return current Queue Page , increment Queue Page iterator from
+ * page to page in struct ipzu_queue, last increment will return 0! and
+ * NOT wrap
+ * warning: don't use in parallel with ipzu_qeit_get_inc()
*/
void *ipzu_qpageit_get_inc(struct ipzu_queue *queue);
-/** return current Queue Entry, increment Queue Entry iterator by one
- step in struct ipzu_queue, will wrap in ringbuffer
- @returns address of current Queue Entry BEFORE increment
- @warning don't use in parallel with ipzu_qpageit_get_inc()
- @warning unpredictable results may occur if steps>act_nr_of_queue_entries
+/*
+ * return current Queue Entry, increment Queue Entry iterator by one
+ * step in struct ipzu_queue, will wrap in ringbuffer
+ * (returns address of current Queue Entry BEFORE increment)
+ * warning: don't use in parallel with ipzu_qpageit_get_inc()
+ * warning: unpredictable results may occur if steps>act_nr_of_queue_entries
*/
static inline void *ipzu_qeit_get_inc(struct ipzu_queue *queue)
{
- void *retvalue = 0;
+ void *retvalue;
u8 *last_entry_in_q = queue->queue + queue->queue_length
- - queue->qe_size;
+ - queue->qe_size;
retvalue = queue->current_q_addr;
queue->current_q_addr += queue->qe_size;
@@ -96,38 +93,37 @@ static inline void *ipzu_qeit_get_inc(st
queue->toggle_state = (~queue->toggle_state) & 1;
}
- EDEB(7, "queue=%p retvalue=%p new current_q_addr=%p qe_size=%x",
- queue, retvalue, queue->current_q_addr, queue->qe_size);
-
- return (retvalue);
+ ehca_gen_dbg("queue=%p retvalue=%p new current_q_addr=%p qe_size=%x",
+ queue, retvalue, queue->current_q_addr, queue->qe_size);
+ return retvalue;
}
-/** return current Queue Entry, increment Queue Entry iterator by one
- step in struct ipzu_queue, will wrap in ringbuffer
- @returns address of current Queue Entry BEFORE increment
- @returns 0 and does not increment, if wrong valid state
- @warning don't use in parallel with ipzu_qpageit_get_inc()
- @warning unpredictable results may occur if steps>act_nr_of_queue_entries
+/* return current Queue Entry, increment Queue Entry iterator by one
+ * step in struct ipzu_queue, will wrap in ringbuffer
+ * (returns address of current Queue Entry BEFORE increment)
+ * (returns 0 and does not increment, if wrong valid state)
+ * warning: don't use in parallel with ipzu_qpageit_get_inc()
+ * warning: unpredictable results may occur if steps>act_nr_of_queue_entries
*/
inline static void *ipzu_qeit_get_inc_valid(struct ipzu_queue *queue)
{
void *retvalue = ipzu_qeit_get(queue);
u32 qe = ((struct ehca_cqe *)retvalue)->cqe_flags;
- if ((qe >> 7) == (queue->toggle_state & 1)) {
- /* this is a good one */
- ipzu_qeit_get_inc(queue);
- } else
- retvalue = 0;
- return (retvalue);
+ if ((qe >> 7) != (queue->toggle_state & 1))
+ return NULL;
+ /* this is a good one */
+ ipzu_qeit_get_inc(queue);
+ return retvalue;
}
-/** returns and resets Queue Entry iterator
- @returns address (kv) of first Queue Entry
+/*
+ * returns and resets Queue Entry iterator
+ * (returns address (kv) of first Queue Entry)
*/
static inline void *ipzu_qeit_reset(struct ipzu_queue *queue)
{
queue->current_q_addr = queue->queue;
- return (queue->queue);
+ return queue->queue;
}
#endif /* __IPZU_PT_FN_H__ */
More information about the ewg
mailing list