diff --git a/.github/workflows/create.yml b/.github/workflows/create.yml
index 2c937b5c..f181da62 100644
--- a/.github/workflows/create.yml
+++ b/.github/workflows/create.yml
@@ -55,7 +55,6 @@ jobs:
     strategy:
       matrix:
         kernel: [
-           "4.5",
            "4.6",
            "4.7",
            "4.8",
diff --git a/README b/README
index 92512d5c..31add70f 100644
--- a/README
+++ b/README
@@ -8,7 +8,7 @@ down to older kernels. It currently backports the following subsystems:
   * WWAN
 
 This package provides the latest Linux kernel subsystem enhancements
-for kernels 4.5 and above.
+for kernels 4.6 and above.
 
 # Documentation
 
diff --git a/backport/backport-include/crypto/hash.h b/backport/backport-include/crypto/hash.h
deleted file mode 100644
index 96ae799d..00000000
--- a/backport/backport-include/crypto/hash.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef _BACKPORT_CRYPTO_HASH_H
-#define _BACKPORT_CRYPTO_HASH_H
-#include_next <crypto/hash.h>
-#include <linux/version.h>
-
-#if LINUX_VERSION_IS_LESS(4,6,0)
-#define shash_desc_zero LINUX_BACKPORT(shash_desc_zero)
-static inline void shash_desc_zero(struct shash_desc *desc)
-{
-	memzero_explicit(desc,
-			 sizeof(*desc) + crypto_shash_descsize(desc->tfm));
-}
-#endif
-
-#if LINUX_VERSION_IS_LESS(4,6,0)
-#define ahash_request_zero LINUX_BACKPORT(ahash_request_zero)
-static inline void ahash_request_zero(struct ahash_request *req)
-{
-	memzero_explicit(req, sizeof(*req) +
-			      crypto_ahash_reqsize(crypto_ahash_reqtfm(req)));
-}
-#endif
-
-#ifndef AHASH_REQUEST_ON_STACK
-#define AHASH_REQUEST_ON_STACK(name, ahash) \
-	char __##name##_desc[sizeof(struct ahash_request) + \
-		crypto_ahash_reqsize(ahash)] CRYPTO_MINALIGN_ATTR; \
-	struct ahash_request *name = (void *)__##name##_desc
-#endif
-
-#ifndef SHASH_DESC_ON_STACK
-#define SHASH_DESC_ON_STACK(shash, ctx)				  \
-	char __##shash##_desc[sizeof(struct shash_desc) +	  \
-		crypto_shash_descsize(ctx)] CRYPTO_MINALIGN_ATTR; \
-	struct shash_desc *shash = (struct shash_desc *)__##shash##_desc
-#endif
-
-#endif /* _BACKPORT_CRYPTO_HASH_H */
diff --git a/backport/backport-include/linux/kcov.h b/backport/backport-include/linux/kcov.h
index 92095e63..2bea9057 100644
--- a/backport/backport-include/linux/kcov.h
+++ b/backport/backport-include/linux/kcov.h
@@ -2,9 +2,7 @@
 #ifndef __BACKPORTS_LINUX_KCOV_H
 #define __BACKPORTS_LINUX_KCOV_H
 #include <linux/version.h>
-#if LINUX_VERSION_IS_GEQ(4,6,0)
 #include_next <linux/kcov.h>
-#endif
 
 #if LINUX_VERSION_IS_LESS(5,5,0)
 #define kcov_remote_stop LINUX_BACKPORT(kcov_remote_stop)
diff --git a/backport/backport-include/linux/kernel.h b/backport/backport-include/linux/kernel.h
index 23a451b9..ae73f8db 100644
--- a/backport/backport-include/linux/kernel.h
+++ b/backport/backport-include/linux/kernel.h
@@ -3,14 +3,5 @@
 #include_next <linux/kernel.h>
 /* needed to include BUILD_BUG_ON_ZERO on <= 4.12 */
 #include <linux/bug.h>
-#include <linux/version.h>
-
-
-#if LINUX_VERSION_IS_LESS(4,6,0)
-#define kstrtobool LINUX_BACKPORT(kstrtobool)
-int __must_check kstrtobool(const char *s, bool *res);
-#define kstrtobool_from_user LINUX_BACKPORT(kstrtobool_from_user)
-int __must_check kstrtobool_from_user(const char __user *s, size_t count, bool *res);
-#endif
 
 #endif /* __BACKPORT_KERNEL_H */
diff --git a/backport/backport-include/linux/mii.h b/backport/backport-include/linux/mii.h
index 06bdc9b8..dcabbcc8 100644
--- a/backport/backport-include/linux/mii.h
+++ b/backport/backport-include/linux/mii.h
@@ -4,11 +4,11 @@
 #include <linux/version.h>
 
 
-#if LINUX_VERSION_IN_RANGE(4,6,0, 4,11,0)
+#if LINUX_VERSION_IS_LESS(4,11,0)
 extern int mii_ethtool_get_link_ksettings(
 	struct mii_if_info *mii, struct ethtool_link_ksettings *cmd);
 extern int mii_ethtool_set_link_ksettings(
 	struct mii_if_info *mii, const struct ethtool_link_ksettings *cmd);
-#endif /* LINUX_VERSION_IN_RANGE(4,6,0, 4,11,0) */
+#endif /* < 4,11,0 */
 
 #endif /* __BACKPORT_LINUX_MII_H */
diff --git a/backport/backport-include/linux/netdevice.h b/backport/backport-include/linux/netdevice.h
index f6d53f8a..71961625 100644
--- a/backport/backport-include/linux/netdevice.h
+++ b/backport/backport-include/linux/netdevice.h
@@ -129,7 +129,7 @@ struct rtnl_link_stats64 *
 bp_dev_get_tstats64(struct net_device *dev, struct rtnl_link_stats64 *s);
 #endif /* < 4.11 */
 
-#if LINUX_VERSION_IN_RANGE(4,6,0, 5,15,0)
+#if LINUX_VERSION_IS_LESS(5,15,0)
 #define get_user_ifreq LINUX_BACKPORT(get_user_ifreq)
 int get_user_ifreq(struct ifreq *ifr, void __user **ifrdata, void __user *arg);
 #define put_user_ifreq LINUX_BACKPORT(put_user_ifreq)
diff --git a/backport/backport-include/linux/page_ref.h b/backport/backport-include/linux/page_ref.h
deleted file mode 100644
index e45734ec..00000000
--- a/backport/backport-include/linux/page_ref.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef __BP_PAGE_REF_H
-#define __BP_PAGE_REF_H
-#include <linux/version.h>
-#if LINUX_VERSION_IS_GEQ(4,6,0)
-#include_next <linux/page_ref.h>
-#else
-static inline void page_ref_inc(struct page *page)
-{
-	atomic_inc(&page->_count);
-}
-
-static inline int page_ref_count(struct page *page)
-{
-	return atomic_read(&page->_count);
-}
-
-static inline int page_ref_sub_and_test(struct page *page, int nr)
-{
-	return atomic_sub_and_test(nr, &page->_count);
-}
-#endif
-
-#endif /* __BP_PAGE_REF_H */
diff --git a/backport/backport-include/linux/sched.h b/backport/backport-include/linux/sched.h
index 6a5cf8db..36263857 100644
--- a/backport/backport-include/linux/sched.h
+++ b/backport/backport-include/linux/sched.h
@@ -4,11 +4,6 @@
 #include_next <linux/sched.h>
 #include <linux/version.h>
 
-/* kcov was added in 4.6 and is included since then */
-#if LINUX_VERSION_IS_LESS(4,6,0)
-#include <linux/kcov.h>
-#endif
-
 #if LINUX_VERSION_IS_LESS(5,9,0)
 #if LINUX_VERSION_IS_GEQ(4,11,0)
 #include <uapi/linux/sched/types.h>
diff --git a/backport/backport-include/linux/string.h b/backport/backport-include/linux/string.h
deleted file mode 100644
index bbb076e0..00000000
--- a/backport/backport-include/linux/string.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef __BACKPORT_LINUX_STRING_H
-#define __BACKPORT_LINUX_STRING_H
-#include_next <linux/string.h>
-#include <linux/version.h>
-
-#if LINUX_VERSION_IS_LESS(4,6,0)
-int match_string(const char * const *array, size_t n, const char *string);
-#endif /* LINUX_VERSION_IS_LESS(4,5,0) */
-
-#endif /* __BACKPORT_LINUX_STRING_H */
diff --git a/backport/backport-include/linux/usb/ch9.h b/backport/backport-include/linux/usb/ch9.h
deleted file mode 100644
index d8d9a48b..00000000
--- a/backport/backport-include/linux/usb/ch9.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef __BACKPORT__LINUX_USB_CH9_H
-#define __BACKPORT__LINUX_USB_CH9_H
-
-#include <linux/version.h>
-#include_next <linux/usb/ch9.h>
-
-
-#if LINUX_VERSION_IS_LESS(4,6,0)
-#define USB_SPEED_SUPER_PLUS	6
-#endif
-
-#endif /* __BACKPORT__LINUX_USB_CH9_H */
diff --git a/backport/compat/Makefile b/backport/compat/Makefile
index dfd72d2d..87238c70 100644
--- a/backport/compat/Makefile
+++ b/backport/compat/Makefile
@@ -7,7 +7,6 @@ endif
 compat-y += main.o
 
 # Kernel backport compatibility code
-compat-$(CPTCFG_KERNEL_4_6) += backport-4.6.o
 compat-$(CPTCFG_KERNEL_4_7) += backport-4.7.o
 compat-$(CPTCFG_KERNEL_4_8) += backport-4.8.o
 compat-$(CPTCFG_KERNEL_4_10) += backport-4.10.o
diff --git a/backport/compat/backport-4.10.c b/backport/compat/backport-4.10.c
index d1d69115..497d51ab 100644
--- a/backport/compat/backport-4.10.c
+++ b/backport/compat/backport-4.10.c
@@ -15,7 +15,6 @@
 #include <linux/page_ref.h>
 #include <linux/gfp.h>
 
-#if LINUX_VERSION_IS_GEQ(4,6,0)
 #if LINUX_VERSION_IS_LESS(4,7,0)
 static bool ethtool_convert_link_mode_to_legacy_u32(u32 *legacy_u32,
 						    const unsigned long *src)
@@ -253,7 +252,6 @@ int mii_ethtool_get_link_ksettings(struct mii_if_info *mii,
 	return 0;
 }
 EXPORT_SYMBOL(mii_ethtool_get_link_ksettings);
-#endif /* LINUX_VERSION_IS_GEQ(4,6,0) */
 
 void __page_frag_cache_drain(struct page *page, unsigned int count)
 {
diff --git a/backport/compat/backport-4.6.c b/backport/compat/backport-4.6.c
deleted file mode 100644
index 8d0ecf56..00000000
--- a/backport/compat/backport-4.6.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright(c) 2016 Hauke Mehrtens <hauke@hauke-m.de>
- *
- * Backport functionality introduced in Linux 4.6.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/kernel.h>
-#include <linux/uaccess.h>
-#include <linux/export.h>
-
-/**
- * kstrtobool - convert common user inputs into boolean values
- * @s: input string
- * @res: result
- *
- * This routine returns 0 iff the first character is one of 'Yy1Nn0', or
- * [oO][NnFf] for "on" and "off". Otherwise it will return -EINVAL.  Value
- * pointed to by res is updated upon finding a match.
- */
-int kstrtobool(const char *s, bool *res)
-{
-	if (!s)
-		return -EINVAL;
-
-	switch (s[0]) {
-	case 'y':
-	case 'Y':
-	case '1':
-		*res = true;
-		return 0;
-	case 'n':
-	case 'N':
-	case '0':
-		*res = false;
-		return 0;
-	case 'o':
-	case 'O':
-		switch (s[1]) {
-		case 'n':
-		case 'N':
-			*res = true;
-			return 0;
-		case 'f':
-		case 'F':
-			*res = false;
-			return 0;
-		default:
-			break;
-		}
-	default:
-		break;
-	}
-
-	return -EINVAL;
-}
-EXPORT_SYMBOL_GPL(kstrtobool);
-
-/*
- * Since "base" would be a nonsense argument, this open-codes the
- * _from_user helper instead of using the helper macro below.
- */
-int kstrtobool_from_user(const char __user *s, size_t count, bool *res)
-{
-	/* Longest string needed to differentiate, newline, terminator */
-	char buf[4];
-
-	count = min(count, sizeof(buf) - 1);
-	if (copy_from_user(buf, s, count))
-		return -EFAULT;
-	buf[count] = '\0';
-	return kstrtobool(buf, res);
-}
-EXPORT_SYMBOL_GPL(kstrtobool_from_user);
-
-/**
- * match_string - matches given string in an array
- * @array:	array of strings
- * @n:		number of strings in the array or -1 for NULL terminated arrays
- * @string:	string to match with
- *
- * Return:
- * index of a @string in the @array if matches, or %-EINVAL otherwise.
- */
-int match_string(const char * const *array, size_t n, const char *string)
-{
-	int index;
-	const char *item;
-
-	for (index = 0; index < n; index++) {
-		item = array[index];
-		if (!item)
-			break;
-		if (!strcmp(item, string))
-			return index;
-	}
-
-	return -EINVAL;
-}
-EXPORT_SYMBOL(match_string);
diff --git a/backport/compat/backport-5.15.c b/backport/compat/backport-5.15.c
index 11aa74f6..bfafaec5 100644
--- a/backport/compat/backport-5.15.c
+++ b/backport/compat/backport-5.15.c
@@ -8,7 +8,6 @@
 
 #include <uapi/linux/if.h>
 
-#if LINUX_VERSION_IS_GEQ(4,6,0)
 
 int get_user_ifreq(struct ifreq *ifr, void __user **ifrdata, void __user *arg)
 {
@@ -53,7 +52,6 @@ int put_user_ifreq(struct ifreq *ifr, void __user *arg)
 }
 EXPORT_SYMBOL(put_user_ifreq);
 
-#endif /* >= 4.6.0 */
 
 /**
  * usb_find_endpoint() - Given an endpoint address, search for the endpoint's
diff --git a/dependencies b/dependencies
index 3f88c446..e25d08e9 100644
--- a/dependencies
+++ b/dependencies
@@ -11,12 +11,6 @@ ATMEL 4.18
 QTNFMAC 5.1
 QTNFMAC_PCIE 5.1
 
-# needs GPIO stuff we didn't backport
-SSB_DRIVER_GPIO 4.5
-
-# Uses gpiochip_get_data()
-BCMA_DRIVER_GPIO 4.5
-
 # struct ethtool_link_ksettings is missing, I'm lazy
 USB_USBNET 4.6
 USB_NET_RNDIS_WLAN 4.6
