[openwrt/openwrt] lantiq: fix lantiq applications kernel 4.14 compatiblity

LEDE Commits lede-commits at lists.infradead.org
Tue Feb 20 10:27:34 PST 2018


mkresin pushed a commit to openwrt/openwrt.git, branch master:
https://git.lede-project.org/73ba5e11f7582967f5151f5a3cb27932b47f44fa

commit 73ba5e11f7582967f5151f5a3cb27932b47f44fa
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Mon Nov 13 22:18:00 2017 +0100

    lantiq: fix lantiq applications kernel 4.14 compatiblity
    
    This is fixing multiple compile problems with kernel 4.14 and updates the
    code to take care of changes introduced between kernel 4.9 and 4.14.
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
    Signed-off-by: Mathias Kresin <dev at kresin.me>
---
 .../ltq-adsl-mei/src/ifxmips_mei_interface.h       |  4 ++++
 package/kernel/lantiq/ltq-atm/src/ltq_atm.c        |  4 ++++
 .../kernel/lantiq/ltq-deu/src/ifxmips_deu_dma.h    |  5 +++++
 .../lantiq/ltq-ifxos/patches/002-fix-compile.patch | 22 ++++++++++++++++++++
 .../kernel/lantiq/ltq-ptm/src/ifxmips_ptm_adsl.c   | 13 +++++++++++-
 .../kernel/lantiq/ltq-ptm/src/ifxmips_ptm_vdsl.c   | 12 +++++++++++
 .../lantiq/ltq-tapi/patches/010-fix-compile.patch  | 22 ++++++++++++++++++++
 .../lantiq/ltq-tapi/patches/100-ifxmips.patch      |  2 +-
 .../lantiq/ltq-tapi/patches/200-linux-37.patch     | 14 ++++++-------
 .../lantiq/ltq-tapi/patches/300-linux-310.patch    |  8 +++-----
 .../ltq-vdsl-mei/patches/001-fix-compile.patch     | 24 ++++++++++++++++++++++
 .../lantiq/ltq-vdsl-mei/patches/100-compat.patch   |  2 +-
 .../lantiq/ltq-vdsl/patches/001-fix-compile.patch  | 12 +++++++++++
 13 files changed, 129 insertions(+), 15 deletions(-)

diff --git a/package/kernel/lantiq/ltq-adsl-mei/src/ifxmips_mei_interface.h b/package/kernel/lantiq/ltq-adsl-mei/src/ifxmips_mei_interface.h
index 1098b2b..dc9f1c2 100644
--- a/package/kernel/lantiq/ltq-adsl-mei/src/ifxmips_mei_interface.h
+++ b/package/kernel/lantiq/ltq-adsl-mei/src/ifxmips_mei_interface.h
@@ -111,7 +111,11 @@ static inline long
 ugly_hack_sleep_on_timeout(wait_queue_head_t *q, long timeout)
 {
 	unsigned long flags;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,13,0))
+	wait_queue_entry_t wait;
+#else
 	wait_queue_t wait;
+#endif
 
 	init_waitqueue_entry(&wait, current);
 
diff --git a/package/kernel/lantiq/ltq-atm/src/ltq_atm.c b/package/kernel/lantiq/ltq-atm/src/ltq_atm.c
index 0b9d7a0..a8f787f 100644
--- a/package/kernel/lantiq/ltq-atm/src/ltq_atm.c
+++ b/package/kernel/lantiq/ltq-atm/src/ltq_atm.c
@@ -812,7 +812,11 @@ struct sk_buff* atm_alloc_tx(struct atm_vcc *vcc, unsigned int size)
 		return NULL;
 	}
 
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,13,0))
+	refcount_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
+#else
 	atomic_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
+#endif
 
 	return skb;
 }
diff --git a/package/kernel/lantiq/ltq-deu/src/ifxmips_deu_dma.h b/package/kernel/lantiq/ltq-deu/src/ifxmips_deu_dma.h
index fde7a90..b64d747 100644
--- a/package/kernel/lantiq/ltq-deu/src/ifxmips_deu_dma.h
+++ b/package/kernel/lantiq/ltq-deu/src/ifxmips_deu_dma.h
@@ -39,6 +39,7 @@
 #include <asm/byteorder.h>
 #include <linux/skbuff.h>
 #include <linux/netdevice.h>
+#include <linux/version.h>
 
 // must match the size of memory block allocated for g_dma_block and g_dma_block2
 #define DEU_MAX_PACKET_SIZE    (PAGE_SIZE >> 1)
@@ -53,7 +54,11 @@ typedef struct ifx_deu_device {
 	int recv_count;
 	int packet_size;
 	int packet_num;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,13,0))
+	wait_queue_entry_t wait;
+#else
 	wait_queue_t wait;
+#endif
 } _ifx_deu_device;
 
 extern _ifx_deu_device ifx_deu[1];
diff --git a/package/kernel/lantiq/ltq-ifxos/patches/002-fix-compile.patch b/package/kernel/lantiq/ltq-ifxos/patches/002-fix-compile.patch
new file mode 100644
index 0000000..3872229
--- /dev/null
+++ b/package/kernel/lantiq/ltq-ifxos/patches/002-fix-compile.patch
@@ -0,0 +1,22 @@
+--- a/src/linux/ifxos_linux_copy_user_space_drv.c
++++ b/src/linux/ifxos_linux_copy_user_space_drv.c
+@@ -29,7 +29,7 @@
+ #ifdef MODULE
+    #include <linux/module.h>
+ #endif
+-#include <asm/uaccess.h>
++#include <linux/uaccess.h>
+ 
+ #include "ifx_types.h"
+ #include "ifxos_rt_if_check.h"
+--- a/src/linux/ifxos_linux_socket_drv.c
++++ b/src/linux/ifxos_linux_socket_drv.c
+@@ -25,7 +25,7 @@
+ #endif
+ #include <linux/in.h>
+ #include <linux/net.h>
+-#include <asm/uaccess.h>
++#include <linux/uaccess.h>
+ 
+ #include "ifx_types.h"
+ #include "ifxos_rt_if_check.h"
diff --git a/package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_adsl.c b/package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_adsl.c
index f764eba..43e171a 100644
--- a/package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_adsl.c
+++ b/package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_adsl.c
@@ -128,7 +128,9 @@ static int ptm_stop(struct net_device *);
   static unsigned int ptm_poll(int, unsigned int);
   static int ptm_napi_poll(struct napi_struct *, int);
 static int ptm_hard_start_xmit(struct sk_buff *, struct net_device *);
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0))
 static int ptm_change_mtu(struct net_device *, int);
+#endif
 static int ptm_ioctl(struct net_device *, struct ifreq *, int);
 static void ptm_tx_timeout(struct net_device *);
 
@@ -247,7 +249,9 @@ static struct net_device_ops g_ptm_netdev_ops = {
     .ndo_start_xmit      = ptm_hard_start_xmit,
     .ndo_validate_addr   = eth_validate_addr,
     .ndo_set_mac_address = eth_mac_addr,
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0))
     .ndo_change_mtu      = ptm_change_mtu,
+#endif
     .ndo_do_ioctl        = ptm_ioctl,
     .ndo_tx_timeout      = ptm_tx_timeout,
 };
@@ -285,6 +289,10 @@ static void ptm_setup(struct net_device *dev, int ndev)
 
     /*  hook network operations */
     dev->netdev_ops      = &g_ptm_netdev_ops;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0))
+    /* Allow up to 1508 bytes, for RFC4638 */
+    dev->max_mtu         = ETH_DATA_LEN + 8;
+#endif
     netif_napi_add(dev, &g_ptm_priv_data.itf[ndev].napi, ptm_napi_poll, 25);
     dev->watchdog_timeo  = ETH_WATCHDOG_TIMEOUT;
 
@@ -459,7 +467,7 @@ PTM_HARD_START_XMIT_FAIL:
     g_ptm_priv_data.itf[ndev].stats.tx_dropped++;
     return NETDEV_TX_OK;
 }
-
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0))
 static int ptm_change_mtu(struct net_device *dev, int mtu)
 {
 	/* Allow up to 1508 bytes, for RFC4638 */
@@ -468,6 +476,7 @@ static int ptm_change_mtu(struct net_device *dev, int mtu)
         dev->mtu = mtu;
         return 0;
 }
+#endif
 
 static int ptm_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 {
@@ -654,7 +663,9 @@ static INLINE int mailbox_rx_irq_handler(unsigned int ch)   //  return: < 0 - de
             skb->dev = g_net_dev[ndev];
             skb->protocol = eth_type_trans(skb, skb->dev);
 
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,11,0))
             g_net_dev[ndev]->last_rx = jiffies;
+#endif
 
             netif_rx_ret = netif_receive_skb(skb);
 
diff --git a/package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_vdsl.c b/package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_vdsl.c
index 4e10d72..9cfeefd 100644
--- a/package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_vdsl.c
+++ b/package/kernel/lantiq/ltq-ptm/src/ifxmips_ptm_vdsl.c
@@ -74,7 +74,9 @@ static int ptm_stop(struct net_device *);
   static unsigned int ptm_poll(int, unsigned int);
   static int ptm_napi_poll(struct napi_struct *, int);
 static int ptm_hard_start_xmit(struct sk_buff *, struct net_device *);
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0))
 static int ptm_change_mtu(struct net_device *, int);
+#endif
 static int ptm_ioctl(struct net_device *, struct ifreq *, int);
 static void ptm_tx_timeout(struct net_device *);
 
@@ -115,7 +117,9 @@ static struct net_device_ops g_ptm_netdev_ops = {
     .ndo_start_xmit      = ptm_hard_start_xmit,
     .ndo_validate_addr   = eth_validate_addr,
     .ndo_set_mac_address = eth_mac_addr,
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0))
     .ndo_change_mtu      = ptm_change_mtu,
+#endif
     .ndo_do_ioctl        = ptm_ioctl,
     .ndo_tx_timeout      = ptm_tx_timeout,
 };
@@ -141,6 +145,10 @@ static void ptm_setup(struct net_device *dev, int ndev)
     netif_carrier_off(dev);
 
     dev->netdev_ops      = &g_ptm_netdev_ops;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0))
+    /* Allow up to 1508 bytes, for RFC4638 */
+    dev->max_mtu         = ETH_DATA_LEN + 8;
+#endif
     netif_napi_add(dev, &g_ptm_priv_data.itf[ndev].napi, ptm_napi_poll, 16);
     dev->watchdog_timeo  = ETH_WATCHDOG_TIMEOUT;
 
@@ -218,7 +226,9 @@ static unsigned int ptm_poll(int ndev, unsigned int work_to_do)
             skb->dev = g_net_dev[0];
             skb->protocol = eth_type_trans(skb, skb->dev);
 
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,11,0))
             g_net_dev[0]->last_rx = jiffies;
+#endif
 
             netif_receive_skb(skb);
 
@@ -367,6 +377,7 @@ PTM_HARD_START_XMIT_FAIL:
     return 0;
 }
 
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0))
 static int ptm_change_mtu(struct net_device *dev, int mtu)
 {
 	/* Allow up to 1508 bytes, for RFC4638 */
@@ -375,6 +386,7 @@ static int ptm_change_mtu(struct net_device *dev, int mtu)
         dev->mtu = mtu;
         return 0;
 }
+#endif
 
 static int ptm_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 {
diff --git a/package/kernel/lantiq/ltq-tapi/patches/010-fix-compile.patch b/package/kernel/lantiq/ltq-tapi/patches/010-fix-compile.patch
new file mode 100644
index 0000000..051e25d
--- /dev/null
+++ b/package/kernel/lantiq/ltq-tapi/patches/010-fix-compile.patch
@@ -0,0 +1,22 @@
+--- a/src/drv_tapi_linux.c
++++ b/src/drv_tapi_linux.c
+@@ -54,6 +54,10 @@
+    #include <linux/workqueue.h>        /* LINUX 2.6 We need work_struct */
+    #include <linux/device.h>
+    #include <linux/sched.h>
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0))
++   #include <linux/sched/signal.h>
++   #include <linux/sched/types.h>
++#endif
+    #undef   CONFIG_DEVFS_FS
+    #ifndef UTS_RELEASE
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))
+@@ -184,7 +188,7 @@ MODULE_PARM_DESC(block_egress_tasklet, "
+ MODULE_PARM_DESC(block_ingress_tasklet, "block the execution of the ingress tasklet, i.e. force to use the RT kernel thread");
+ 
+ /** The driver callbacks which will be registered with the kernel*/
+-static struct file_operations tapi_fops = {0};
++static struct file_operations tapi_fops;
+ 
+ /* ============================= */
+ /* Global function definition    */
diff --git a/package/kernel/lantiq/ltq-tapi/patches/100-ifxmips.patch b/package/kernel/lantiq/ltq-tapi/patches/100-ifxmips.patch
index a9c0d81..f56587d 100644
--- a/package/kernel/lantiq/ltq-tapi/patches/100-ifxmips.patch
+++ b/package/kernel/lantiq/ltq-tapi/patches/100-ifxmips.patch
@@ -1,6 +1,6 @@
 --- a/src/drv_tapi_linux.c
 +++ b/src/drv_tapi_linux.c
-@@ -552,7 +552,7 @@ static ssize_t ifx_tapi_write (struct fi
+@@ -556,7 +556,7 @@ static ssize_t ifx_tapi_write (struct fi
     IFX_uint8_t         *pData;
     IFX_size_t           buf_size;
  #endif /* TAPI_PACKET */
diff --git a/package/kernel/lantiq/ltq-tapi/patches/200-linux-37.patch b/package/kernel/lantiq/ltq-tapi/patches/200-linux-37.patch
index 9d7428d..fd6133e 100644
--- a/package/kernel/lantiq/ltq-tapi/patches/200-linux-37.patch
+++ b/package/kernel/lantiq/ltq-tapi/patches/200-linux-37.patch
@@ -10,7 +10,7 @@
  #include <asm/io.h>
  
  #ifdef LINUX_2_6
-@@ -65,7 +67,9 @@
+@@ -69,7 +71,9 @@
  #else
     #include <linux/tqueue.h>
     #include <linux/sched.h>
@@ -20,7 +20,7 @@
  #endif /* LINUX_2_6 */
  
  #include "drv_tapi.h"
-@@ -133,8 +137,13 @@
+@@ -137,8 +141,13 @@ static ssize_t ifx_tapi_write(struct fil
                                size_t count, loff_t * ppos);
  static ssize_t ifx_tapi_read(struct file * filp, char *buf,
                                size_t length, loff_t * ppos);
@@ -34,7 +34,7 @@
  static unsigned int ifx_tapi_poll (struct file *filp, poll_table *table);
  
  #ifdef CONFIG_PROC_FS
-@@ -218,7 +227,11 @@
+@@ -222,7 +231,11 @@ IFX_return_t TAPI_OS_RegisterLLDrv (IFX_
     IFX_char_t   *pRegDrvName = IFX_NULL;
     IFX_int32_t ret = 0;
  
@@ -46,7 +46,7 @@
     {
  #ifdef MODULE
        tapi_fops.owner =    THIS_MODULE;
-@@ -226,7 +239,11 @@
+@@ -230,7 +243,11 @@ IFX_return_t TAPI_OS_RegisterLLDrv (IFX_
        tapi_fops.read =     ifx_tapi_read;
        tapi_fops.write =    ifx_tapi_write;
        tapi_fops.poll =     ifx_tapi_poll;
@@ -58,7 +58,7 @@
        tapi_fops.open =     ifx_tapi_open;
        tapi_fops.release =  ifx_tapi_release;
     }
-@@ -881,8 +898,13 @@
+@@ -885,8 +902,13 @@ static IFX_uint32_t ifx_tapi_poll (struc
     - 0 and positive values - success
     - negative value - ioctl failed
  */
@@ -72,7 +72,7 @@
  {
     TAPI_FD_PRIV_DATA_t *pTapiPriv;
     IFX_TAPI_ioctlCtx_t  ctx;
-@@ -3721,7 +3743,9 @@
+@@ -3725,7 +3747,9 @@ IFX_void_t TAPI_OS_ThreadKill(IFXOS_Thre
              kernel lock (lock_kernel()). The lock must be
              grabbed before changing the terminate
              flag and released after the down() call. */
@@ -83,7 +83,7 @@
           mb();
  #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28)
           kill_proc(pThrCntrl->tid, SIGKILL, 1);
-@@ -3729,8 +3753,10 @@
+@@ -3733,8 +3757,10 @@ IFX_void_t TAPI_OS_ThreadKill(IFXOS_Thre
           kill_pid(find_vpid(pThrCntrl->tid), SIGKILL, 1);
  #endif
           /* release the big kernel lock */
diff --git a/package/kernel/lantiq/ltq-tapi/patches/300-linux-310.patch b/package/kernel/lantiq/ltq-tapi/patches/300-linux-310.patch
index ac72515..2da1719 100644
--- a/package/kernel/lantiq/ltq-tapi/patches/300-linux-310.patch
+++ b/package/kernel/lantiq/ltq-tapi/patches/300-linux-310.patch
@@ -1,8 +1,6 @@
-Index: drv_tapi-3.13.0/src/drv_tapi_linux.c
-===================================================================
---- drv_tapi-3.13.0.orig/src/drv_tapi_linux.c	2013-09-05 22:28:16.868419283 +0200
-+++ drv_tapi-3.13.0/src/drv_tapi_linux.c	2013-09-05 22:32:37.396425814 +0200
-@@ -93,6 +93,8 @@
+--- a/src/drv_tapi_linux.c
++++ b/src/drv_tapi_linux.c
+@@ -97,6 +97,8 @@
  #include "drv_tapi_announcements.h"
  #endif /* TAPI_ANNOUNCEMENTS */
  
diff --git a/package/kernel/lantiq/ltq-vdsl-mei/patches/001-fix-compile.patch b/package/kernel/lantiq/ltq-vdsl-mei/patches/001-fix-compile.patch
new file mode 100644
index 0000000..b19de24
--- /dev/null
+++ b/package/kernel/lantiq/ltq-vdsl-mei/patches/001-fix-compile.patch
@@ -0,0 +1,24 @@
+--- a/src/drv_mei_cpe_linux.h
++++ b/src/drv_mei_cpe_linux.h
+@@ -31,6 +31,9 @@
+ #include <linux/module.h>
+ 
+ #include <linux/sched.h>
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0))
++#include <linux/sched/signal.h>
++#endif
+ #include <linux/interrupt.h>
+ #include <linux/version.h>
+ #include <linux/crc32.h>
+@@ -121,7 +124,11 @@ typedef int (*MEI_RequestIrq_WrapLinux_t
+ /**
+    Function typedef for the Linux free_irq()
+ */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0))
++typedef const void *(*MEI_FreeIrq_WrapLinux_t)( unsigned int usedIrq,
++#else
+ typedef void (*MEI_FreeIrq_WrapLinux_t)( unsigned int usedIrq,
++#endif
+                                            void *usedDevId );
+ 
+ 
diff --git a/package/kernel/lantiq/ltq-vdsl-mei/patches/100-compat.patch b/package/kernel/lantiq/ltq-vdsl-mei/patches/100-compat.patch
index 10122fe..e958409 100644
--- a/package/kernel/lantiq/ltq-vdsl-mei/patches/100-compat.patch
+++ b/package/kernel/lantiq/ltq-vdsl-mei/patches/100-compat.patch
@@ -10,7 +10,7 @@
  
 --- a/src/drv_mei_cpe_linux.h
 +++ b/src/drv_mei_cpe_linux.h
-@@ -57,12 +57,6 @@
+@@ -60,12 +60,6 @@
  #include <linux/poll.h>
  #include <linux/types.h>
  
diff --git a/package/kernel/lantiq/ltq-vdsl/patches/001-fix-compile.patch b/package/kernel/lantiq/ltq-vdsl/patches/001-fix-compile.patch
new file mode 100644
index 0000000..1355a1a
--- /dev/null
+++ b/package/kernel/lantiq/ltq-vdsl/patches/001-fix-compile.patch
@@ -0,0 +1,12 @@
+--- a/src/include/drv_dsl_cpe_os_linux.h
++++ b/src/include/drv_dsl_cpe_os_linux.h
+@@ -33,6 +33,9 @@
+ #endif
+ 
+ #include <linux/sched.h>
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0))
++#include <linux/sched/signal.h>
++#endif
+ 
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))
+    #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))



More information about the lede-commits mailing list