--- /dev/null
+#
+# Copyright (C) 2010 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
+
+PKG_NAME:=drv_kpi2udp
+PKG_VERSION:=2.2.0
+PKG_RELEASE:=1
+
+PKG_SOURCE:=drv_kpi2udp-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
+PKG_MD5SUM:=af3855609554c7f3d2c3df8c597f50a7
+
+include $(INCLUDE_DIR)/package.mk
+
+define KernelPackage/ltq-kpi2udp
+ SUBMENU:=Voice over IP
+ TITLE:=TAPI KPI2UDP plug-in
+ URL:=http://www.lantiq.com/
+ DEPENDS:=+kmod-ltq-tapi @TARGET_lantiq
+ FILES:=$(PKG_BUILD_DIR)/drv_kpi2udp.ko
+ AUTOLOAD:=$(call AutoLoad,26,drv_kpi2udp)
+ MAINTAINER:=John Crispin <blogic@openwrt.org>
+endef
+
+define KernelPackage/ltq-kpi2udp/description
+ RTP packet path accelleration into IP stack (strongly recommended)
+endef
+
+CONFIGURE_ARGS += --enable-kernelincl="$(LINUX_DIR)/include" \
+ --enable-tapiincl="$(STAGING_DIR)/usr/include/drv_tapi" \
+ --with-ifxos-incl=$(STAGING_DIR)/usr/include/ifxos \
+ --enable-warning \
+ --enable-linux-26 \
+ --enable-kernelbuild="$(LINUX_DIR)" \
+ ARCH=$(LINUX_KARCH)
+
+define Build/Configure
+ (cd $(PKG_BUILD_DIR); aclocal && autoconf && automake)
+ $(call Build/Configure/Default)
+endef
+
+$(eval $(call KernelPackage,ltq-kpi2udp))
--- /dev/null
+--- a/configure.in
++++ b/configure.in
+@@ -113,7 +113,7 @@
+ AC_ARG_ENABLE(kernelbuild,
+ AS_HELP_STRING(--enable-kernelbuild=x,Set the target kernel build path),
+ [
+- if test -r $enableval/include/linux/autoconf.h; then
++ if test -r $enableval/include/generated/autoconf.h; then
+ AC_SUBST([KERNEL_BUILD_PATH],[$enableval])
+ else
+ AC_MSG_ERROR([The kernel build directory is not valid or not configured!])
--- /dev/null
+--- a/ifx_udp_redirect.c
++++ b/ifx_udp_redirect.c
+@@ -256,7 +256,7 @@
+ {
+ if (redtab.channels[i].in_use == IFX_TRUE)
+ {
+- if (redtab.channels[i].sk->sk_lock.owner != 0)
++ if (redtab.channels[i].sk->sk_lock.owned != 0)
+ return IFX_TRUE;
+ }
+ }
+@@ -545,7 +545,7 @@
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
+ if (sk->num != htons(sport))
+ #else
+- if (((struct inet_sock *)sk)->num != htons(sport))
++ if (((struct inet_sock *)sk)->inet_num != htons(sport))
+ #endif
+ {
+ return CALL_MK_SESSION_ERR;
+@@ -628,7 +628,7 @@
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
+ if((vsock != NULL)&&(vsk != NULL)&&(vsk->num > 0))
+ #else
+- if((vsock != NULL)&&(vsk != NULL)&&(((struct inet_sock *)vsk)->num > 0))
++ if((vsock != NULL)&&(vsk != NULL)&&(((struct inet_sock *)vsk)->inet_num > 0))
+ #endif
+ {
+ /*printk("[KPI2UDP] releasing vsock...%p, ops %p\n", vsock, vsock->ops);*/