Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F167285069
D58834.id184021.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
6 KB
Referenced Files
None
Subscribers
None
D58834.id184021.diff
View Options
diff --git a/sys/compat/linuxkpi/common/include/linux/timer.h b/sys/compat/linuxkpi/common/include/linux/timer.h
--- a/sys/compat/linuxkpi/common/include/linux/timer.h
+++ b/sys/compat/linuxkpi/common/include/linux/timer.h
@@ -35,13 +35,20 @@
#include <sys/kernel.h>
#include <sys/callout.h>
+#if defined(LINUXKPI_VERSION) && (LINUXKPI_VERSION < 41500) && !defined(_WANT_LKPI_TIMER_CONTAINER_OF) /* 354b46b1a0add */
+#define _TIMER_LIST_FUNCTION_ARG unsigned long
+#else
+#define _TIMER_LIST_FUNCTION_ARG struct timer_list *
+#endif
+
+#define _TIME_LIST_DATA(_t) ((_TIMER_LIST_FUNCTION_ARG)(_t)->data)
+
struct timer_list {
struct callout callout;
- union {
- void (*function) (unsigned long); /* < v4.15 */
- void (*function_415) (struct timer_list *);
- };
+ void (*function) (_TIMER_LIST_FUNCTION_ARG);
+/* #if defined(LINUXKPI_VERSION) && (LINUXKPI_VERSION < 41500) */ /* c1eba5bcb643 */
unsigned long data;
+/* #endif */
unsigned long expires;
};
@@ -49,7 +56,7 @@
#define TIMER_IRQSAFE 0x0001
-#if defined(LINUXKPI_VERSION) && (LINUXKPI_VERSION < 61600)
+#if defined(LINUXKPI_VERSION) && (LINUXKPI_VERSION < 61600) && !defined(_WANT_LKPI_TIMER_CONTAINER_OF)
#define from_timer(var, arg, field) \
container_of(arg, typeof(*(var)), field)
#else
@@ -59,7 +66,7 @@
#define timer_setup(timer, func, flags) do { \
CTASSERT(((flags) & ~TIMER_IRQSAFE) == 0); \
- (timer)->function_415 = (func); \
+ (timer)->function = (func); \
(timer)->data = (unsigned long)(timer); \
callout_init(&(timer)->callout, 1); \
} while (0)
diff --git a/sys/compat/linuxkpi/common/src/linux_compat.c b/sys/compat/linuxkpi/common/src/linux_compat.c
--- a/sys/compat/linuxkpi/common/src/linux_compat.c
+++ b/sys/compat/linuxkpi/common/src/linux_compat.c
@@ -2119,7 +2119,7 @@
return;
}
- timer->function(timer->data);
+ timer->function(_TIME_LIST_DATA(timer));
}
static int
diff --git a/sys/conf/kern.pre.mk b/sys/conf/kern.pre.mk
--- a/sys/conf/kern.pre.mk
+++ b/sys/conf/kern.pre.mk
@@ -269,13 +269,15 @@
-I$S/compat/linuxkpi/dummy/include \
-include $S/compat/linuxkpi/common/include/linux/kconfig.h
LINUXKPI_C= ${NORMAL_C} ${LINUXKPI_INCLUDES}
+LINUXKPI_VERSION_OLD_TIMER= -DLINUXKPI_VERSION=41499
# Infiniband C flags. Correct include paths and omit errors that linux
# does not honor.
OFEDINCLUDES= -I$S/ofed/include -I$S/ofed/include/uapi ${LINUXKPI_INCLUDES}
OFEDNOERR= -Wno-cast-qual -Wno-pointer-arith
OFEDCFLAGS= ${CFLAGS:N-I*} -DCONFIG_INFINIBAND_USER_MEM \
- ${OFEDINCLUDES} ${CFLAGS:M-I*} ${OFEDNOERR}
+ ${OFEDINCLUDES} ${CFLAGS:M-I*} ${OFEDNOERR} \
+ ${LINUXKPI_VERSION_OLD_TIMER}
OFED_C_NOIMP= ${CC} -c -o ${.TARGET} ${OFEDCFLAGS} ${WERROR}
OFED_C= ${OFED_C_NOIMP} ${.IMPSRC}
diff --git a/sys/dev/irdma/irdma_cm.c b/sys/dev/irdma/irdma_cm.c
--- a/sys/dev/irdma/irdma_cm.c
+++ b/sys/dev/irdma/irdma_cm.c
@@ -32,6 +32,8 @@
* SOFTWARE.
*/
+#define _WANT_LKPI_TIMER_CONTAINER_OF /* LinuxKPI version problem with OFED */
+
#include "irdma_main.h"
static void irdma_cm_post_event(struct irdma_cm_event *event);
diff --git a/sys/dev/irdma/irdma_utils.c b/sys/dev/irdma/irdma_utils.c
--- a/sys/dev/irdma/irdma_utils.c
+++ b/sys/dev/irdma/irdma_utils.c
@@ -32,6 +32,8 @@
* SOFTWARE.
*/
+#define _WANT_LKPI_TIMER_CONTAINER_OF /* LinuxKPI version problem with OFED */
+
#include "irdma_main.h"
LIST_HEAD(irdma_handlers);
diff --git a/sys/modules/cxgbe/iw_cxgbe/Makefile b/sys/modules/cxgbe/iw_cxgbe/Makefile
--- a/sys/modules/cxgbe/iw_cxgbe/Makefile
+++ b/sys/modules/cxgbe/iw_cxgbe/Makefile
@@ -17,6 +17,7 @@
CFLAGS+= -I${CXGBE} -I${SRCTOP}/sys/ofed/include -DLINUX_TYPES_DEFINED
CFLAGS+= -I${SRCTOP}/sys/ofed/include/uapi
CFLAGS+= ${LINUXKPI_INCLUDES}
+CFLAGS+= -DLINUXKPI_VERSION=41499 # struct timer_list->function
CFLAGS+= -DCONFIG_INFINIBAND_USER_MEM
CFLAGS+= -DINET6 -DINET
diff --git a/sys/modules/ipoib/Makefile b/sys/modules/ipoib/Makefile
--- a/sys/modules/ipoib/Makefile
+++ b/sys/modules/ipoib/Makefile
@@ -10,6 +10,7 @@
CFLAGS+= -I${SRCTOP}/sys/ofed/include
CFLAGS+= -I${SRCTOP}/sys/ofed/include/uapi
CFLAGS+= ${LINUXKPI_INCLUDES}
+CFLAGS+= -DLINUXKPI_VERSION=41499 # struct timer_list->function
.include <bsd.kmod.mk>
diff --git a/sys/modules/irdma/Makefile b/sys/modules/irdma/Makefile
--- a/sys/modules/irdma/Makefile
+++ b/sys/modules/irdma/Makefile
@@ -16,6 +16,7 @@
CFLAGS+= -I${OFED_INC_DIR}/uapi
CFLAGS+= ${LINUXKPI_INCLUDES}
CFLAGS+= -DCONFIG_INFINIBAND_USER_MEM
+CFLAGS+= -DLINUXKPI_VERSION=41499 # struct timer_list->function
ice_rdma.h:
cp $(ICE_DIR)/ice_rdma.h .
diff --git a/sys/modules/mlx4/Makefile b/sys/modules/mlx4/Makefile
--- a/sys/modules/mlx4/Makefile
+++ b/sys/modules/mlx4/Makefile
@@ -28,6 +28,7 @@
CFLAGS+= -I${SRCTOP}/sys/ofed/include
CFLAGS+= -I${SRCTOP}/sys/ofed/include/uapi
CFLAGS+= ${LINUXKPI_INCLUDES}
+CFLAGS+= -DLINUXKPI_VERSION=41499 # struct timer_list->function
EXPORT_SYMS= YES
diff --git a/sys/modules/mlx4en/Makefile b/sys/modules/mlx4en/Makefile
--- a/sys/modules/mlx4en/Makefile
+++ b/sys/modules/mlx4en/Makefile
@@ -14,5 +14,6 @@
CFLAGS+= -I${SRCTOP}/sys/ofed/include
CFLAGS+= ${LINUXKPI_INCLUDES}
+CFLAGS+= -DLINUXKPI_VERSION=41499 # struct timer_list->function
.include <bsd.kmod.mk>
diff --git a/sys/modules/mlx5/Makefile b/sys/modules/mlx5/Makefile
--- a/sys/modules/mlx5/Makefile
+++ b/sys/modules/mlx5/Makefile
@@ -51,6 +51,7 @@
CFLAGS+= -I${SRCTOP}/sys/ofed/include
CFLAGS+= -I${SRCTOP}/sys/ofed/include/uapi
CFLAGS+= ${LINUXKPI_INCLUDES}
+CFLAGS+= -DLINUXKPI_VERSION=41499 # struct timer_list->function
.if defined(CONFIG_BUILD_FPGA)
SRCS+= \
diff --git a/sys/modules/mlx5ib/Makefile b/sys/modules/mlx5ib/Makefile
--- a/sys/modules/mlx5ib/Makefile
+++ b/sys/modules/mlx5ib/Makefile
@@ -21,6 +21,7 @@
CFLAGS+= -I${SRCTOP}/sys/ofed/include
CFLAGS+= -I${SRCTOP}/sys/ofed/include/uapi
CFLAGS+= ${LINUXKPI_INCLUDES}
+CFLAGS+= -DLINUXKPI_VERSION=41499 # struct timer_list->function
CFLAGS+= -DCONFIG_INFINIBAND_USER_MEM
.if defined(CONFIG_BUILD_FPGA)
diff --git a/sys/modules/mthca/Makefile b/sys/modules/mthca/Makefile
--- a/sys/modules/mthca/Makefile
+++ b/sys/modules/mthca/Makefile
@@ -26,6 +26,7 @@
CFLAGS+= -I${SRCTOP}/sys/ofed/include
CFLAGS+= -I${SRCTOP}/sys/ofed/include/uapi
CFLAGS+= ${LINUXKPI_INCLUDES}
+CFLAGS+= -DLINUXKPI_VERSION=41499 # struct timer_list->function
CFLAGS+= -DCONFIG_INFINIBAND_USER_MEM
CFLAGS+= -DINET6 -DINET
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Aug 21, 3:57 PM (9 h, 48 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
36961922
Default Alt Text
D58834.id184021.diff (6 KB)
Attached To
Mode
D58834: LinuxKPI: rework struct timer_list (*function[_415])
Attached
Detach File
Event Timeline
Log In to Comment