Refreshed all patches.
Compile-tested on: ar71xx
Runtime-tested on: ar71xx
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
LINUX_RELEASE?=1
-LINUX_VERSION-4.9 = .133
+LINUX_VERSION-4.9 = .134
LINUX_VERSION-4.14 = .76
-LINUX_KERNEL_HASH-4.9.133 = 53730fc025ba330a6f4908a6a1e4cb86d821000c84167721680ccf1b37b26563
+LINUX_KERNEL_HASH-4.9.134 = 6dfbe8d122021c874945c0f2ebeace2248e58eed93c10ce61e4a134e70997a77
LINUX_KERNEL_HASH-4.14.76 = ee3f19a4ff8a42793c193e361e1d34fcc821a5ca9b58db41befb2b4df0e482be
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
#define IP6_MF 0x0001
#define IP6_OFFSET 0xFFF8
-@@ -443,8 +443,8 @@ static inline void __ipv6_addr_set_half(
+@@ -436,8 +436,8 @@ static inline void __ipv6_addr_set_half(
}
#endif
#endif
}
static inline void ipv6_addr_set(struct in6_addr *addr,
-@@ -503,6 +503,8 @@ static inline bool ipv6_prefix_equal(con
+@@ -496,6 +496,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;
-@@ -511,7 +513,9 @@ static inline bool ipv6_prefix_equal(con
+@@ -504,7 +506,9 @@ static inline bool ipv6_prefix_equal(con
/* check incomplete u32 in prefix */
pbi = prefixlen & 0x1f;
return false;
return true;
-@@ -655,13 +659,13 @@ static inline void ipv6_addr_set_v4mappe
+@@ -633,13 +637,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));
}
-@@ -830,17 +834,18 @@ static inline int ip6_default_np_autolab
+@@ -808,17 +812,18 @@ static inline int ip6_default_np_autolab
static inline void ip6_flow_hdr(struct ipv6hdr *hdr, unsigned int tclass,
__be32 flowlabel)
{
#define free_page(addr) free_pages((addr), 0)
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -2471,7 +2471,7 @@ static inline struct sk_buff *netdev_all
+@@ -2476,7 +2476,7 @@ static inline struct sk_buff *netdev_all
static inline void skb_free_frag(void *addr)
{
/* bnx2x_has_rx_work() reads the status block,
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
-@@ -1778,7 +1778,7 @@ static int bnxt_poll_nitroa0(struct napi
+@@ -1781,7 +1781,7 @@ static int bnxt_poll_nitroa0(struct napi
}
if (!bnxt_has_work(bp, cpr) && rx_pkts < budget) {
--- a/drivers/net/ethernet/marvell/mvpp2.c
+++ b/drivers/net/ethernet/marvell/mvpp2.c
-@@ -5404,7 +5404,7 @@ static int mvpp2_poll(struct napi_struct
+@@ -5406,7 +5406,7 @@ static int mvpp2_poll(struct napi_struct
if (budget > 0) {
cause_rx = 0;
*/
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -2334,6 +2334,10 @@ static inline int pskb_trim(struct sk_bu
+@@ -2339,6 +2339,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
-@@ -2454,16 +2458,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -2459,16 +2463,6 @@ static inline struct sk_buff *dev_alloc_
}
help
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -2950,10 +2950,20 @@ static int xmit_one(struct sk_buff *skb,
+@@ -2972,10 +2972,20 @@ static int xmit_one(struct sk_buff *skb,
if (!list_empty(&ptype_all) || !list_empty(&dev->ptype_all))
dev_queue_xmit_nit(skb, dev);
}
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
-@@ -1799,10 +1799,12 @@ static int __init setup_vmstat(void)
+@@ -1798,10 +1798,12 @@ static int __init setup_vmstat(void)
cpu_notifier_register_done();
#endif
#ifdef CONFIG_PROC_FS
--- a/net/ipv4/proc.c
+++ b/net/ipv4/proc.c
-@@ -564,6 +564,9 @@ static __net_initdata struct pernet_oper
+@@ -565,6 +565,9 @@ static __net_initdata struct pernet_oper
int __init ip_misc_proc_init(void)
{
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -2298,7 +2298,7 @@ static inline int pskb_network_may_pull(
+@@ -2303,7 +2303,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
/**
* ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
* @t: the outgoing tunnel device
-@@ -1294,6 +1434,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1299,6 +1439,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
{
struct ip6_tnl *t = netdev_priv(dev);
- struct ipv6hdr *ipv6h = ipv6_hdr(skb);
+ struct ipv6hdr *ipv6h;
+ struct __ip6_tnl_fmr *fmr;
int encap_limit = -1;
__u16 offset;
struct flowi6 fl6;
-@@ -1352,6 +1493,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1361,6 +1502,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
fl6.flowi6_mark = skb->mark;
}
if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
return -1;
-@@ -1479,6 +1632,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
+@@ -1488,6 +1641,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
t->parms.flowinfo = p->flowinfo;
t->parms.link = p->link;
t->parms.proto = p->proto;
dst_cache_reset(&t->dst_cache);
ip6_tnl_link_config(t);
return 0;
-@@ -1517,6 +1678,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1526,6 +1687,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
p->flowinfo = u->flowinfo;
p->link = u->link;
p->proto = u->proto;
memcpy(p->name, u->name, sizeof(u->name));
}
-@@ -1894,6 +2056,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1903,6 +2065,15 @@ static int ip6_tnl_validate(struct nlatt
return 0;
}
static void ip6_tnl_netlink_parms(struct nlattr *data[],
struct __ip6_tnl_parm *parms)
{
-@@ -1928,6 +2099,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -1937,6 +2108,46 @@ static void ip6_tnl_netlink_parms(struct
if (data[IFLA_IPTUN_COLLECT_METADATA])
parms->collect_md = true;
}
static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
-@@ -2041,6 +2252,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -2050,6 +2261,12 @@ static void ip6_tnl_dellink(struct net_d
static size_t ip6_tnl_get_size(const struct net_device *dev)
{
return
/* IFLA_IPTUN_LINK */
nla_total_size(4) +
-@@ -2068,6 +2285,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -2077,6 +2294,24 @@ static size_t ip6_tnl_get_size(const str
nla_total_size(2) +
/* IFLA_IPTUN_COLLECT_METADATA */
nla_total_size(0) +
0;
}
-@@ -2075,6 +2310,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2084,6 +2319,9 @@ static int ip6_tnl_fill_info(struct sk_b
{
struct ip6_tnl *tunnel = netdev_priv(dev);
struct __ip6_tnl_parm *parm = &tunnel->parms;
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -2083,9 +2321,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2092,9 +2330,27 @@ static int ip6_tnl_fill_info(struct sk_b
nla_put_u8(skb, IFLA_IPTUN_ENCAP_LIMIT, parm->encap_limit) ||
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
-@@ -2123,6 +2379,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -2132,6 +2388,7 @@ static const struct nla_policy ip6_tnl_p
[IFLA_IPTUN_ENCAP_SPORT] = { .type = NLA_U16 },
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
#endif
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -742,7 +742,8 @@ struct sk_buff {
+@@ -747,7 +747,8 @@ struct sk_buff {
#ifdef CONFIG_NET_SWITCHDEV
__u8 offload_fwd_mark:1;
#endif
__u16 tc_index; /* traffic control index */
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -4550,6 +4550,9 @@ static enum gro_result dev_gro_receive(s
+@@ -4572,6 +4572,9 @@ static enum gro_result dev_gro_receive(s
enum gro_result ret;
int grow;
if (!(skb->dev->features & NETIF_F_GRO))
goto normal;
-@@ -5838,6 +5841,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -5860,6 +5863,48 @@ static void __netdev_adjacent_dev_unlink
&upper_dev->adj_list.lower);
}
static int __netdev_upper_dev_link(struct net_device *dev,
struct net_device *upper_dev, bool master,
void *upper_priv, void *upper_info)
-@@ -5910,6 +5955,7 @@ static int __netdev_upper_dev_link(struc
+@@ -5932,6 +5977,7 @@ static int __netdev_upper_dev_link(struc
goto rollback_lower_mesh;
}
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
&changeupper_info.info);
ret = notifier_to_errno(ret);
-@@ -6036,6 +6082,7 @@ void netdev_upper_dev_unlink(struct net_
+@@ -6058,6 +6104,7 @@ void netdev_upper_dev_unlink(struct net_
list_for_each_entry(i, &upper_dev->all_adj_list.upper, list)
__netdev_adjacent_dev_unlink(dev, i->dev, i->ref_nr);
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
&changeupper_info.info);
}
-@@ -6636,6 +6683,7 @@ int dev_set_mac_address(struct net_devic
+@@ -6660,6 +6707,7 @@ int dev_set_mac_address(struct net_devic
if (err)
return err;
dev->addr_assign_type = NET_ADDR_SET;
unsigned short min_header_len;
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -903,6 +903,7 @@ void kfree_skb(struct sk_buff *skb);
+@@ -908,6 +908,7 @@ void kfree_skb(struct sk_buff *skb);
void kfree_skb_list(struct sk_buff *segs);
void skb_tx_error(struct sk_buff *skb);
void consume_skb(struct sk_buff *skb);
void __kfree_skb(struct sk_buff *skb);
extern struct kmem_cache *skbuff_head_cache;
-@@ -3059,6 +3060,7 @@ static inline void skb_free_datagram_loc
+@@ -3081,6 +3082,7 @@ static inline void skb_free_datagram_loc
}
int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags);
int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len);
* These are the defined Ethernet Protocol ID's.
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -6630,9 +6630,18 @@ int dev_set_mtu(struct net_device *dev,
+@@ -6652,9 +6652,18 @@ int dev_set_mtu(struct net_device *dev,
if (new_mtu == dev->mtu)
return 0;
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
-@@ -292,6 +292,7 @@ stmmac_probe_config_dt(struct platform_d
+@@ -291,6 +291,7 @@ stmmac_probe_config_dt(struct platform_d
if (of_device_is_compatible(np, "snps,dwmac-4.00") ||
of_device_is_compatible(np, "snps,dwmac-4.10a")) {
plat->has_gmac4 = 1;
plat->pmt = 1;
plat->tso_en = of_property_read_bool(np, "snps,tso");
}
-@@ -303,21 +304,25 @@ stmmac_probe_config_dt(struct platform_d
+@@ -302,21 +303,25 @@ stmmac_probe_config_dt(struct platform_d
plat->force_sf_dma_mode = 1;
}
plat->force_thresh_dma_mode = of_property_read_bool(np, "snps,force_thresh_dma_mode");
if (plat->force_thresh_dma_mode) {
plat->force_sf_dma_mode = 0;
-@@ -445,9 +450,7 @@ static int stmmac_pltfr_suspend(struct d
+@@ -444,9 +449,7 @@ static int stmmac_pltfr_suspend(struct d
struct platform_device *pdev = to_platform_device(dev);
ret = stmmac_suspend(dev);
priv->plat->exit(pdev, priv->plat->bsp_priv);
return ret;
-@@ -466,9 +469,7 @@ static int stmmac_pltfr_resume(struct de
+@@ -465,9 +468,7 @@ static int stmmac_pltfr_resume(struct de
struct stmmac_priv *priv = netdev_priv(ndev);
struct platform_device *pdev = to_platform_device(dev);
The full GNU General Public License is included in this distribution in
the file called "COPYING".
-@@ -121,7 +117,6 @@ static struct stmmac_axi *stmmac_axi_set
+@@ -120,7 +116,6 @@ static struct stmmac_axi *stmmac_axi_set
axi->axi_lpi_en = of_property_read_bool(np, "snps,lpi_en");
axi->axi_xit_frm = of_property_read_bool(np, "snps,xit_frm");
axi->axi_kbbe = of_property_read_bool(np, "snps,axi_kbbe");
axi->axi_fb = of_property_read_bool(np, "snps,axi_fb");
axi->axi_mb = of_property_read_bool(np, "snps,axi_mb");
axi->axi_rb = of_property_read_bool(np, "snps,axi_rb");
-@@ -181,10 +176,19 @@ static int stmmac_dt_phy(struct plat_stm
+@@ -180,10 +175,19 @@ static int stmmac_dt_phy(struct plat_stm
mdio = false;
}
}
if (plat->mdio_node) {
-@@ -249,6 +253,9 @@ stmmac_probe_config_dt(struct platform_d
+@@ -248,6 +252,9 @@ stmmac_probe_config_dt(struct platform_d
plat->force_sf_dma_mode =
of_property_read_bool(np, "snps,force_sf_dma_mode");
/* Set the maxmtu to a default of JUMBO_LEN in case the
* parameter is not present in the device tree.
*/
-@@ -333,7 +340,54 @@ stmmac_probe_config_dt(struct platform_d
+@@ -332,7 +339,54 @@ stmmac_probe_config_dt(struct platform_d
plat->axi = stmmac_axi_setup(pdev);
}
/**
-@@ -357,7 +411,7 @@ void stmmac_remove_config_dt(struct plat
+@@ -356,7 +410,7 @@ void stmmac_remove_config_dt(struct plat
struct plat_stmmacenet_data *
stmmac_probe_config_dt(struct platform_device *pdev, const char **mac)
{
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
-@@ -108,7 +108,7 @@ static struct stmmac_axi *stmmac_axi_set
+@@ -107,7 +107,7 @@ static struct stmmac_axi *stmmac_axi_set
if (!np)
return NULL;
if (!axi) {
of_node_put(np);
return ERR_PTR(-ENOMEM);
-@@ -132,6 +132,155 @@ static struct stmmac_axi *stmmac_axi_set
+@@ -131,6 +131,155 @@ static struct stmmac_axi *stmmac_axi_set
}
/**
* stmmac_dt_phy - parse device-tree driver parameters to allocate PHY resources
* @plat: driver data platform structure
* @np: device tree node
-@@ -340,6 +489,8 @@ stmmac_probe_config_dt(struct platform_d
+@@ -339,6 +488,8 @@ stmmac_probe_config_dt(struct platform_d
plat->axi = stmmac_axi_setup(pdev);
/* clock setup */
plat->stmmac_clk = devm_clk_get(&pdev->dev,
STMMAC_RESOURCE_NAME);
-@@ -359,13 +510,12 @@ stmmac_probe_config_dt(struct platform_d
+@@ -358,13 +509,12 @@ stmmac_probe_config_dt(struct platform_d
clk_prepare_enable(plat->pclk);
/* Fall-back to main clock in case of no PTP ref is passed */
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
-@@ -309,6 +309,13 @@ static int stmmac_dt_phy(struct plat_stm
+@@ -308,6 +308,13 @@ static int stmmac_dt_phy(struct plat_stm
struct device_node *np, struct device *dev)
{
bool mdio = true;
/* If phy-handle property is passed from DT, use it as the PHY */
plat->phy_node = of_parse_phandle(np, "phy-handle", 0);
-@@ -325,8 +332,7 @@ static int stmmac_dt_phy(struct plat_stm
+@@ -324,8 +331,7 @@ static int stmmac_dt_phy(struct plat_stm
mdio = false;
}