Refreshed all patches.
Compile-tested on: cns3xxx, imx6
Runtime-tested on: cns3xxx, imx6
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
LINUX_RELEASE?=1
LINUX_VERSION-3.18 = .122
-LINUX_VERSION-4.14 = .70
LINUX_VERSION-4.9 = .128
+LINUX_VERSION-4.14 = .71
LINUX_KERNEL_HASH-3.18.122 = 675b1ce36af23caa500cb1d4f0ec2976791fb0a97ebb6486a5e2ebcb5527ade5
-LINUX_KERNEL_HASH-4.14.70 = c5dfd832477f8856b5b094ab62cc8c8491d04b76b2ec5ebb0126e554891ee32c
LINUX_KERNEL_HASH-4.9.128 = bdb76f48491a6aadc89c0f0f7fdc240d77cee54da5aac59da0b5d98e226b6f12
+LINUX_KERNEL_HASH-4.14.71 = 76a4473dbcbd922c23a16130414829a36eb7e2f4e5859bd1b742fffdff907489
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
#define IP6_MF 0x0001
#define IP6_OFFSET 0xFFF8
-@@ -444,8 +444,8 @@ static inline void __ipv6_addr_set_half(
+@@ -437,8 +437,8 @@ static inline void __ipv6_addr_set_half(
}
#endif
#endif
}
static inline void ipv6_addr_set(struct in6_addr *addr,
-@@ -504,6 +504,8 @@ static inline bool ipv6_prefix_equal(con
+@@ -497,6 +497,8 @@ static inline bool ipv6_prefix_equal(con
const __be32 *a1 = addr1->s6_addr32;
const __be32 *a2 = addr2->s6_addr32;
unsigned int pdw, pbi;
/* check complete u32 in prefix */
pdw = prefixlen >> 5;
-@@ -512,7 +514,9 @@ static inline bool ipv6_prefix_equal(con
+@@ -505,7 +507,9 @@ static inline bool ipv6_prefix_equal(con
/* check incomplete u32 in prefix */
pbi = prefixlen & 0x1f;
return false;
return true;
-@@ -656,13 +660,13 @@ static inline void ipv6_addr_set_v4mappe
+@@ -634,13 +638,13 @@ static inline void ipv6_addr_set_v4mappe
*/
static inline int __ipv6_addr_diff32(const void *token1, const void *token2, int addrlen)
{
if (xb)
return i * 32 + 31 - __fls(ntohl(xb));
}
-@@ -831,17 +835,18 @@ static inline int ip6_default_np_autolab
+@@ -809,17 +813,18 @@ static inline int ip6_default_np_autolab
static inline void ip6_flow_hdr(struct ipv6hdr *hdr, unsigned int tclass,
__be32 flowlabel)
{
#define IP6_MF 0x0001
#define IP6_OFFSET 0xFFF8
-@@ -444,8 +444,8 @@ static inline void __ipv6_addr_set_half(
+@@ -437,8 +437,8 @@ static inline void __ipv6_addr_set_half(
}
#endif
#endif
}
static inline void ipv6_addr_set(struct in6_addr *addr,
-@@ -504,6 +504,8 @@ static inline bool ipv6_prefix_equal(con
+@@ -497,6 +497,8 @@ static inline bool ipv6_prefix_equal(con
const __be32 *a1 = addr1->s6_addr32;
const __be32 *a2 = addr2->s6_addr32;
unsigned int pdw, pbi;
/* check complete u32 in prefix */
pdw = prefixlen >> 5;
-@@ -512,7 +514,9 @@ static inline bool ipv6_prefix_equal(con
+@@ -505,7 +507,9 @@ static inline bool ipv6_prefix_equal(con
/* check incomplete u32 in prefix */
pbi = prefixlen & 0x1f;
return false;
return true;
-@@ -656,13 +660,13 @@ static inline void ipv6_addr_set_v4mappe
+@@ -634,13 +638,13 @@ static inline void ipv6_addr_set_v4mappe
*/
static inline int __ipv6_addr_diff32(const void *token1, const void *token2, int addrlen)
{
if (xb)
return i * 32 + 31 - __fls(ntohl(xb));
}
-@@ -831,17 +835,18 @@ static inline int ip6_default_np_autolab
+@@ -809,17 +813,18 @@ static inline int ip6_default_np_autolab
static inline void ip6_flow_hdr(struct ipv6hdr *hdr, unsigned int tclass,
__be32 flowlabel)
{
if (dc_lsize == 0)
r4k_blast_dcache = (void *)cache_noop;
else if (dc_lsize == 16)
-@@ -955,6 +967,8 @@ static void local_r4k_flush_cache_sigtra
+@@ -957,6 +969,8 @@ static void local_r4k_flush_cache_sigtra
}
R4600_HIT_CACHEOP_WAR_IMPL;
if (!cpu_has_ic_fills_f_dc) {
if (dc_lsize)
vaddr ? flush_dcache_line(addr & ~(dc_lsize - 1))
-@@ -1849,6 +1863,17 @@ static void coherency_setup(void)
+@@ -1851,6 +1865,17 @@ static void coherency_setup(void)
* silly idea of putting something else there ...
*/
switch (current_cpu_type()) {
case CPU_R4000PC:
case CPU_R4000SC:
case CPU_R4000MC:
-@@ -1895,6 +1920,15 @@ void r4k_cache_init(void)
+@@ -1897,6 +1922,15 @@ void r4k_cache_init(void)
extern void build_copy_page(void);
struct cpuinfo_mips *c = ¤t_cpu_data;
probe_pcache();
probe_vcache();
setup_scache();
-@@ -1972,7 +2006,15 @@ void r4k_cache_init(void)
+@@ -1974,7 +2008,15 @@ void r4k_cache_init(void)
*/
local_r4k___flush_cache_all(NULL);
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
-@@ -911,6 +911,8 @@ static inline struct sk_buff *ip6_finish
+@@ -889,6 +889,8 @@ static inline struct sk_buff *ip6_finish
&inet6_sk(sk)->cork);
}
#endif
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
-@@ -911,8 +911,6 @@ static inline struct sk_buff *ip6_finish
+@@ -889,8 +889,6 @@ static inline struct sk_buff *ip6_finish
&inet6_sk(sk)->cork);
}
*/
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -2491,6 +2491,10 @@ static inline int pskb_trim(struct sk_bu
+@@ -2496,6 +2496,10 @@ static inline int pskb_trim(struct sk_bu
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
}
/**
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
* @skb: buffer to alter
-@@ -2621,16 +2625,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -2626,16 +2630,6 @@ static inline struct sk_buff *dev_alloc_
}
--- a/net/ipv4/proc.c
+++ b/net/ipv4/proc.c
-@@ -557,6 +557,9 @@ static __net_initdata struct pernet_oper
+@@ -558,6 +558,9 @@ static __net_initdata struct pernet_oper
int __init ip_misc_proc_init(void)
{
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -2455,7 +2455,7 @@ static inline int pskb_network_may_pull(
+@@ -2460,7 +2460,7 @@ static inline int pskb_network_may_pull(
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
*/
#ifndef NET_SKB_PAD
#endif
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -777,6 +777,7 @@ struct sk_buff {
+@@ -782,6 +782,7 @@ struct sk_buff {
__u8 tc_redirected:1;
__u8 tc_from_ingress:1;
#endif
---
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
-@@ -3962,6 +3962,15 @@ static int mvneta_ethtool_set_wol(struct
+@@ -3961,6 +3961,15 @@ static int mvneta_ethtool_set_wol(struct
return ret;
}
static const struct net_device_ops mvneta_netdev_ops = {
.ndo_open = mvneta_open,
.ndo_stop = mvneta_stop,
-@@ -3972,6 +3981,7 @@ static const struct net_device_ops mvnet
+@@ -3971,6 +3980,7 @@ static const struct net_device_ops mvnet
.ndo_fix_features = mvneta_fix_features,
.ndo_get_stats64 = mvneta_get_stats64,
.ndo_do_ioctl = mvneta_ioctl,
if (!pp->neta_armada3700) {
for_each_online_cpu(cpu) {
-@@ -3252,103 +3209,232 @@ static int mvneta_set_mac_addr(struct ne
+@@ -3251,103 +3208,232 @@ static int mvneta_set_mac_addr(struct ne
return 0;
}
}
/* Electing a CPU must be done in an atomic way: it should be done
-@@ -3627,10 +3713,9 @@ static int mvneta_stop(struct net_device
+@@ -3626,10 +3712,9 @@ static int mvneta_stop(struct net_device
static int mvneta_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
{
}
/* Ethtool methods */
-@@ -3641,44 +3726,25 @@ mvneta_ethtool_set_link_ksettings(struct
+@@ -3640,44 +3725,25 @@ mvneta_ethtool_set_link_ksettings(struct
const struct ethtool_link_ksettings *cmd)
{
struct mvneta_port *pp = netdev_priv(ndev);
}
/* Set interrupt coalescing for ethtools */
-@@ -3770,6 +3836,22 @@ static int mvneta_ethtool_set_ringparam(
+@@ -3769,6 +3835,22 @@ static int mvneta_ethtool_set_ringparam(
return 0;
}
static void mvneta_ethtool_get_strings(struct net_device *netdev, u32 sset,
u8 *data)
{
-@@ -3786,26 +3868,35 @@ static void mvneta_ethtool_update_stats(
+@@ -3785,26 +3867,35 @@ static void mvneta_ethtool_update_stats(
{
const struct mvneta_statistic *s;
void __iomem *base = pp->base;
}
}
-@@ -3940,28 +4031,65 @@ static int mvneta_ethtool_get_rxfh(struc
+@@ -3939,28 +4030,65 @@ static int mvneta_ethtool_get_rxfh(struc
static void mvneta_ethtool_get_wol(struct net_device *dev,
struct ethtool_wolinfo *wol)
{
static u16 mvneta_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv,
select_queue_fallback_t fallback)
-@@ -3985,13 +4113,15 @@ static const struct net_device_ops mvnet
+@@ -3984,13 +4112,15 @@ static const struct net_device_ops mvnet
};
static const struct ethtool_ops mvneta_eth_tool_ops = {
.get_strings = mvneta_ethtool_get_strings,
.get_ethtool_stats = mvneta_ethtool_get_stats,
.get_sset_count = mvneta_ethtool_get_sset_count,
-@@ -3999,10 +4129,12 @@ static const struct ethtool_ops mvneta_e
+@@ -3998,10 +4128,12 @@ static const struct ethtool_ops mvneta_e
.get_rxnfc = mvneta_ethtool_get_rxnfc,
.get_rxfh = mvneta_ethtool_get_rxfh,
.set_rxfh = mvneta_ethtool_set_rxfh,
};
/* Initialize hw */
-@@ -4147,14 +4279,13 @@ static int mvneta_probe(struct platform_
+@@ -4146,14 +4278,13 @@ static int mvneta_probe(struct platform_
{
struct resource *res;
struct device_node *dn = pdev->dev.of_node;
int tx_csum_limit;
int phy_mode;
int err;
-@@ -4170,31 +4301,11 @@ static int mvneta_probe(struct platform_
+@@ -4169,31 +4300,11 @@ static int mvneta_probe(struct platform_
goto err_free_netdev;
}
}
dev->tx_queue_len = MVNETA_MAX_TXD;
-@@ -4205,12 +4316,7 @@ static int mvneta_probe(struct platform_
+@@ -4204,12 +4315,7 @@ static int mvneta_probe(struct platform_
pp = netdev_priv(dev);
spin_lock_init(&pp->lock);
pp->rxq_def = rxq_def;
-@@ -4232,7 +4338,7 @@ static int mvneta_probe(struct platform_
+@@ -4231,7 +4337,7 @@ static int mvneta_probe(struct platform_
pp->clk = devm_clk_get(&pdev->dev, NULL);
if (IS_ERR(pp->clk)) {
err = PTR_ERR(pp->clk);
}
clk_prepare_enable(pp->clk);
-@@ -4358,6 +4464,14 @@ static int mvneta_probe(struct platform_
+@@ -4357,6 +4463,14 @@ static int mvneta_probe(struct platform_
/* 9676 == 9700 - 20 and rounding to 8 */
dev->max_mtu = 9676;
err = register_netdev(dev);
if (err < 0) {
dev_err(&pdev->dev, "failed to register\n");
-@@ -4369,14 +4483,6 @@ static int mvneta_probe(struct platform_
+@@ -4368,14 +4482,6 @@ static int mvneta_probe(struct platform_
platform_set_drvdata(pdev, pp->dev);
return 0;
err_netdev:
-@@ -4387,16 +4493,14 @@ err_netdev:
+@@ -4386,16 +4492,14 @@ err_netdev:
1 << pp->id);
}
err_free_stats:
err_free_irq:
irq_dispose_mapping(dev->irq);
err_free_netdev:
-@@ -4408,7 +4512,6 @@ err_free_netdev:
+@@ -4407,7 +4511,6 @@ err_free_netdev:
static int mvneta_remove(struct platform_device *pdev)
{
struct net_device *dev = platform_get_drvdata(pdev);
struct mvneta_port *pp = netdev_priv(dev);
unregister_netdev(dev);
-@@ -4416,10 +4519,8 @@ static int mvneta_remove(struct platform
+@@ -4415,10 +4518,8 @@ static int mvneta_remove(struct platform
clk_disable_unprepare(pp->clk);
free_percpu(pp->ports);
free_percpu(pp->stats);
free_netdev(dev);
if (pp->bm_priv) {
-@@ -4471,9 +4572,6 @@ static int mvneta_resume(struct device *
+@@ -4470,9 +4571,6 @@ static int mvneta_resume(struct device *
return err;
}
struct device_node *dn;
unsigned int tx_csum_limit;
struct phylink *phylink;
-@@ -4316,6 +4317,7 @@ static int mvneta_probe(struct platform_
+@@ -4315,6 +4316,7 @@ static int mvneta_probe(struct platform_
pp = netdev_priv(dev);
spin_lock_init(&pp->lock);
phylink_start(pp->phylink);
netif_tx_start_all_queues(pp->dev);
-@@ -3543,8 +3541,7 @@ static int mvneta_cpu_online(unsigned in
+@@ -3542,8 +3540,7 @@ static int mvneta_cpu_online(unsigned in
on_each_cpu(mvneta_percpu_unmask_interrupt, pp, true);
mvreg_write(pp, MVNETA_INTR_MISC_MASK,
MVNETA_CAUSE_PHY_STATUS_CHANGE |
netif_tx_start_all_queues(pp->dev);
spin_unlock(&pp->lock);
return 0;
-@@ -3585,8 +3582,7 @@ static int mvneta_cpu_dead(unsigned int
+@@ -3584,8 +3581,7 @@ static int mvneta_cpu_dead(unsigned int
on_each_cpu(mvneta_percpu_unmask_interrupt, pp, true);
mvreg_write(pp, MVNETA_INTR_MISC_MASK,
MVNETA_CAUSE_PHY_STATUS_CHANGE |
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
-@@ -4046,6 +4046,22 @@ static int mvneta_ethtool_set_wol(struct
+@@ -4045,6 +4045,22 @@ static int mvneta_ethtool_set_wol(struct
return ret;
}
static int mvneta_ethtool_get_eee(struct net_device *dev,
struct ethtool_eee *eee)
{
-@@ -4130,6 +4146,8 @@ static const struct ethtool_ops mvneta_e
+@@ -4129,6 +4145,8 @@ static const struct ethtool_ops mvneta_e
.set_link_ksettings = mvneta_ethtool_set_link_ksettings,
.get_wol = mvneta_ethtool_get_wol,
.set_wol = mvneta_ethtool_set_wol,
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
-@@ -4046,22 +4046,6 @@ static int mvneta_ethtool_set_wol(struct
+@@ -4045,22 +4045,6 @@ static int mvneta_ethtool_set_wol(struct
return ret;
}
static int mvneta_ethtool_get_eee(struct net_device *dev,
struct ethtool_eee *eee)
{
-@@ -4146,8 +4130,6 @@ static const struct ethtool_ops mvneta_e
+@@ -4145,8 +4129,6 @@ static const struct ethtool_ops mvneta_e
.set_link_ksettings = mvneta_ethtool_set_link_ksettings,
.get_wol = mvneta_ethtool_get_wol,
.set_wol = mvneta_ethtool_set_wol,