From 11:00 PM CDT Friday, May 10 – 02:30 PM CDT Saturday, May 11 (04:00 AM UTC – 07:30 PM UTC), ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Linux Users

cancel
Showing results for 
Search instead for 
Did you mean: 

Fix for NI-VISA for kernel >=4.10

Hi,

 

I hacked a quick fix together for everyone using kernel 4.10 or newer:

 

I made a quick git repo and a diff:

diff --git a/nikal.c b/nikal.c
index e63534c..258813a 100644
--- a/nikal.c
+++ b/nikal.c
@@ -2038,14 +2038,6 @@ nNIKAL100_tBoolean nNIKAL200_isAddressableMemOver4G()
 
 #define NLNIKAL_CMD_SEND     1
 
-static struct genl_family nikal_netlink_family =
-{
-   .id = GENL_ID_GENERATE,
-   .name = "nlnikal",
-   .version = 1,
-   .maxattr = 1
-};
-
 static int nlnikal_msg(struct sk_buff *skb, struct genl_info *info) { return 0; }
 
 static struct genl_ops nikal_netlink_ops[] =
@@ -2056,6 +2048,20 @@ static struct genl_ops nikal_netlink_ops[] =
    },
 };
 
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0))
+#define GENL_ID_GENERATE 0
+#endif /* Linux 4.10.0 */
+
+static struct genl_family nikal_netlink_family =
+{
+   .id = GENL_ID_GENERATE,
+   .name = "nlnikal",
+   .version = 1,
+   .maxattr = 1,
+   #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0))
+   .ops        =   nikal_netlink_ops,
+   #endif /* Linux 4.10.0 */
+};
 
 static int __init nNIKAL100_initDriver(void)
 {
@@ -2077,11 +2083,15 @@ static int __init nNIKAL100_initDriver(void)
    kref_init(&(nNIKAL200_sPALPseudoDevice.kref));
    kref_init(&(nNIKAL200_sPALPseudoDeviceInterface.kref));
 
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0))
+    return genl_register_family(&nikal_netlink_family);
+#else
 #ifdef nNIKAL1400_kHasFamilyGenlOpsGroups
    if ((status = genl_register_family_with_ops(&nikal_netlink_family, nikal_netlink_ops))) return status;
 #else
    if ((status = genl_register_family_with_ops(&nikal_netlink_family, nikal_netlink_ops, 1))) return status;
 #endif
+#endif
 
 
    nNIKAL200_sProcRootDir = proc_mkdir("driver/ni", NULL);

 

Have fun!

Message 1 of 1
(2,995 Views)