1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -117,7 +117,7 @@ POST_UNINSTALL = :
# the headerfile of linux kernels 2.6.x contain to much arithmetic
# with void pointers (which is allowed for gcc!)
-@KERNEL_2_6_FALSE@am__append_6 = -Wpointer-arith
+@KERNEL_2_6_FALSE@am__append_6 =
subdir = src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
--- a/src/common/drv_dsl_cpe_os_linux.c
+++ b/src/common/drv_dsl_cpe_os_linux.c
@@ -11,6 +11,7 @@
#define DSL_INTERN
+#include <linux/device.h>
#include "drv_dsl_cpe_api.h"
#include "drv_dsl_cpe_api_ioctl.h"
@@ -249,14 +250,7 @@ static DSL_long_t DSL_DRV_Ioctls(DSL_DRV
}
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- if (pFile->f_dentry != DSL_NULL)
- {
- pINode = pFile->f_dentry->d_inode;
- }
- else
- {
- pINode = DSL_NULL;
- }
+ pINode = file_inode(pFile);
#endif
if (pINode == DSL_NULL)
@@ -491,7 +485,11 @@ DSL_void_t* DSL_DRV_VMalloc(
DSL_DRV_size_t nSize)
{
/* VRX500-BU: Better to use vmalloc or vzmalloc here?! */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,9,0)
return __vmalloc((unsigned long)nSize, GFP_KERNEL, PAGE_KERNEL);
+#else
+ return __vmalloc((unsigned long)nSize, GFP_KERNEL);
+#endif
/* return vmalloc(nSize);*/
}
@@ -917,12 +915,19 @@ DSL_int32_t DSL_DRV_ThreadShutdown(
DSL_uint32_t DSL_DRV_SysTimeGet(DSL_uint32_t nOffset)
{
- struct timeval tv;
DSL_uint32_t nTime = 0;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0))
+ struct timeval tv;
memset(&tv, 0, sizeof(tv));
do_gettimeofday(&tv);
nTime = (DSL_uint32_t)tv.tv_sec;
+#else
+ struct timespec64 now;
+
+ ktime_get_real_ts64(&now);
+ nTime = (DSL_uint32_t)now.tv_sec;
+#endif
if ( (nOffset == 0) || (nOffset > nTime) )
{
@@ -1203,6 +1208,9 @@ static void DSL_DRV_NlSendMsg(DSL_char_t
}
#endif
+static struct class *dsl_class;
+static dev_t dsl_devt;
+
/* Entry point of driver */
int __init DSL_ModuleInit(void)
{
@@ -1241,6 +1249,10 @@ int __init DSL_ModuleInit(void)
DSL_DRV_DevNodeInit();
+ dsl_class = class_create(THIS_MODULE, DRV_DSL_CPE_API_DEV_NAME);
+ dsl_devt = MKDEV(DRV_DSL_CPE_API_DEV_MAJOR, 0);
+ device_create(dsl_class, NULL, dsl_devt, NULL, "dsl_cpe_api/0");
+
return 0;
}
@@ -1248,6 +1260,11 @@ void __exit DSL_ModuleCleanup(void)
{
printk("Module will be unloaded"DSL_DRV_CRLF);
+ device_destroy(dsl_class, dsl_devt);
+ dsl_devt = NULL;
+ class_destroy(dsl_class);
+ dsl_class = NULL;
+
unregister_chrdev(nMajorNum, DRV_DSL_CPE_API_DEV_NAME);
DSL_DRV_Cleanup();
--- a/src/device/drv_dsl_cpe_device_vrx.c
+++ b/src/device/drv_dsl_cpe_device_vrx.c
@@ -5337,6 +5337,7 @@ DSL_Error_t DSL_DRV_DEV_HybridTypeGet(
#undef DSL_DBG_BLOCK
#define DSL_DBG_BLOCK DSL_DBG_NOTIFICATIONS
+#if 0
DSL_Error_t DSL_DRV_DEV_MeiTcLayerSignaling
(
DSL_Context_t *pContext,
@@ -5384,6 +5385,15 @@ DSL_Error_t DSL_DRV_DEV_MeiTcLayerSignal
return nErrCode;
}
+#else
+DSL_Error_t DSL_DRV_DEV_MeiTcLayerSignaling
+(
+ DSL_Context_t *pContext,
+ DSL_TcLayerSelection_t nTcLayer)
+{
+ return DSL_SUCCESS;
+}
+#endif
DSL_Error_t DSL_DRV_DEV_MeiShowtimeSignaling
(
|