diff --git a/include/net/route.h b/include/net/route.h
index 71e069675810..5818b43d20d0 100644
--- a/include/net/route.h
+++ b/include/net/route.h
@@ -72,6 +72,7 @@ struct rtable {
 	int			rt_iif;
 	int			rt_edscp;
 
+	__be32			rt_saddr;
 	u8			rt_gw_family;
 	/* Info on neighbour */
 	union {
diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h
index d39978d583f5..e4d2ddb1a7bb 100644
--- a/include/uapi/linux/rtnetlink.h
+++ b/include/uapi/linux/rtnetlink.h
@@ -359,7 +359,7 @@ enum rt_class_t {
 
 /* Routing message attributes */
 
-enum rtattr_type_t {
+enum rtattr_type_t {/* attr   */
 	RTA_UNSPEC,
 	RTA_DST,
 	RTA_SRC,
diff --git a/lib/nlattr.c b/lib/nlattr.c
index 86029ad5ead4..edde37753389 100644
--- a/lib/nlattr.c
+++ b/lib/nlattr.c
@@ -597,11 +597,11 @@ static int __nla_validate_parse(const struct nlattr *head, int len, int maxtype,
 	}
 
 	if (unlikely(rem > 0)) {
-		pr_warn_ratelimited("netlink: %d bytes leftover after parsing attributes in process `%s'.\n",
+		pr_warn_ratelimited("netlink: %d bytes leftover after parsing attributes in process `%s' Q [patch, don`t return error] .\n",
 				    rem, current->comm);
-		NL_SET_ERR_MSG(extack, "bytes leftover after parsing attributes");
-		if (validate & NL_VALIDATE_TRAILING)
-			return -EINVAL;
+		/* NL_SET_ERR_MSG(extack, " bytes leftover after parsing attributes"); */
+		/* if (validate & NL_VALIDATE_TRAILING) */
+		/* 	return -EINVAL; */
 	}
 
 	return 0;
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
index d86bcbf99650..459ccb17c55e 100644
--- a/net/ipv4/fib_frontend.c
+++ b/net/ipv4/fib_frontend.c
@@ -721,7 +721,7 @@ int fib_gw_from_via(struct fib_config *cfg, struct nlattr *nla,
 	return 0;
 }
 
-static int rtm_to_fib_config(struct net *net, struct sk_buff *skb,
+static int rtm_to_fib_config(struct net *net, struct sk_buff *skb, /* EEE FIB cfg */
 			     struct nlmsghdr *nlh, struct fib_config *cfg,
 			     struct netlink_ext_ack *extack)
 {
@@ -739,9 +739,11 @@ static int rtm_to_fib_config(struct net *net, struct sk_buff *skb,
 
 	rtm = nlmsg_data(nlh);
 
+        printk("QQQ CFG validate [%d]\n", rtm->rtm_tos);
 	if (!inet_validate_dscp(rtm->rtm_tos)) {
+                /* || !inet_validate_dscp(rtm->rtm_dscp) */
 		NL_SET_ERR_MSG(extack,
-			       "Invalid dsfield (tos): ECN bits must be 0");
+			       "Invalid dsfield (tos|dscp): ECN bits must be 0");
 		err = -EINVAL;
 		goto errout;
 	}
@@ -751,6 +753,7 @@ static int rtm_to_fib_config(struct net *net, struct sk_buff *skb,
         else
             cfg->fc_idscp = inet_dsfield_to_dscp(rtm->rtm_tos);
 
+        printk("QQQ CFG set [%d|%d]\n", cfg->fc_idscp, cfg->fc_edscp);
 	cfg->fc_dst_len = rtm->rtm_dst_len;
 	cfg->fc_table = rtm->rtm_table;
 	cfg->fc_protocol = rtm->rtm_protocol;
@@ -880,7 +883,7 @@ static int inet_rtm_delroute(struct sk_buff *skb, struct nlmsghdr *nlh,
 	return err;
 }
 
-static int inet_rtm_newroute(struct sk_buff *skb, struct nlmsghdr *nlh,
+static int inet_rtm_newroute(struct sk_buff *skb, struct nlmsghdr *nlh, /* EEE newroute */
 			     struct netlink_ext_ack *extack)
 {
 	struct net *net = sock_net(skb->sk);
@@ -888,16 +891,19 @@ static int inet_rtm_newroute(struct sk_buff *skb, struct nlmsghdr *nlh,
 	struct fib_table *tb;
 	int err;
 
+        printk("QQQ new route\n");
 	err = rtm_to_fib_config(net, skb, nlh, &cfg, extack);
 	if (err < 0)
 		goto errout;
 
+        printk("QQQ new table\n");
 	tb = fib_new_table(net, cfg.fc_table);
 	if (!tb) {
 		err = -ENOBUFS;
 		goto errout;
 	}
 
+        printk("QQQ new insert\n");
 	err = fib_table_insert(net, tb, &cfg, extack);
 	if (!err && cfg.fc_type == RTN_LOCAL)
 		net->ipv4.fib_has_custom_local_routes = true;
diff --git a/net/ipv4/fib_rules.c b/net/ipv4/fib_rules.c
index 513f475c6a53..1e3b063eb4f2 100644
--- a/net/ipv4/fib_rules.c
+++ b/net/ipv4/fib_rules.c
@@ -50,7 +50,7 @@ static bool fib4_rule_matchall(const struct fib_rule *rule)
 {
 	struct fib4_rule *r = container_of(rule, struct fib4_rule, common);
 
-	if (r->dst_len || r->src_len || r->dscp)
+	if (r->dst_len || r->src_len || r->dscp) //
 		return false;
 	return fib_rule_matchall(rule);
 }
@@ -186,7 +186,7 @@ INDIRECT_CALLABLE_SCOPE int fib4_rule_match(struct fib_rule *rule,
 	    ((daddr ^ r->dst) & r->dstmask))
 		return 0;
 
-	if (r->dscp && r->dscp != inet_dsfield_to_dscp(fl4->flowi4_tos))
+	if (r->dscp && r->dscp != inet_dsfield_to_dscp(fl4->flowi4_tos)) //
 		return 0;
 
 	if (rule->ip_proto && (rule->ip_proto != fl4->flowi4_proto))
@@ -236,7 +236,7 @@ static int fib4_rule_configure(struct fib_rule *rule, struct sk_buff *skb,
 		NL_SET_ERR_MSG(extack, "Invalid tos");
 		goto errout;
 	}
-	rule4->dscp = inet_dsfield_to_dscp(frh->tos);
+	rule4->dscp = inet_dsfield_to_dscp(frh->tos); //
 
 	/* split local/main if they are not already split */
 	err = fib_unmerge(net);
@@ -320,7 +320,7 @@ static int fib4_rule_compare(struct fib_rule *rule, struct fib_rule_hdr *frh,
 	if (frh->dst_len && (rule4->dst_len != frh->dst_len))
 		return 0;
 
-	if (frh->tos && inet_dscp_to_dsfield(rule4->dscp) != frh->tos)
+	if (frh->tos && inet_dscp_to_dsfield(rule4->dscp) != frh->tos) //
 		return 0;
 
 #ifdef CONFIG_IP_ROUTE_CLASSID
@@ -344,7 +344,7 @@ static int fib4_rule_fill(struct fib_rule *rule, struct sk_buff *skb,
 
 	frh->dst_len = rule4->dst_len;
 	frh->src_len = rule4->src_len;
-	frh->tos = inet_dscp_to_dsfield(rule4->dscp);
+	frh->tos = inet_dscp_to_dsfield(rule4->dscp);/* WWW check  */
 
 	if ((rule4->dst_len &&
 	     nla_put_in_addr(skb, FRA_DST, rule4->dst)) ||
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
index 308c06eb770a..3d8b5613eaaf 100644
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
@@ -1784,6 +1784,7 @@ int fib_dump_info(struct sk_buff *skb, u32 portid, u32 seq, int event,
 	rtm->rtm_dst_len = fri->dst_len;
 	rtm->rtm_src_len = 0;
 	rtm->rtm_tos = inet_dscp_to_dsfield(fri->dscp);
+        printk("QQQ FIB_DUMP [%d|%d|%d]\n", rtm->rtm_tos, fri->dscp, fri->edscp);
 	if (fi->fib_flags & RTM_F_DSCP)
 		rtm->rtm_tos = inet_dscp_to_dsfield(fri->edscp);
 		
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c
index 1b8aa417d7e1..b8a0fb136188 100644
--- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c
@@ -1209,7 +1209,7 @@ static void fib_remove_alias(struct trie *t, struct key_vector *tp,
 			     struct key_vector *l, struct fib_alias *old);
 
 /* Caller must hold RTNL. */
-int fib_table_insert(struct net *net, struct fib_table *tb,
+int fib_table_insert(struct net *net, struct fib_table *tb, /* FFF */
 		     struct fib_config *cfg, struct netlink_ext_ack *extack)
 {
 	struct trie *t = (struct trie *)tb->tb_data;
@@ -1225,6 +1225,7 @@ int fib_table_insert(struct net *net, struct fib_table *tb,
 
 	key = ntohl(cfg->fc_dst);
 
+        printk("QQQ new valid\n");
 	if (!fib_valid_key_len(key, plen, extack))
 		return -EINVAL;
 
@@ -1326,7 +1327,8 @@ int fib_table_insert(struct net *net, struct fib_table *tb,
 					goto out_free_new_fa;
 				}
 			}
-
+                        /* REPLACE new */
+                        printk("QQQ REPLACE  new\n");
 			rtmsg_fib(RTM_NEWROUTE, htonl(key), new_fa, plen,
 				  tb->tb_id, &cfg->fc_nlinfo, nlflags);
 
diff --git a/net/ipv4/ip_forward.c b/net/ipv4/ip_forward.c
index 3fbaeee43dcb..f76d8cfae1ea 100644
--- a/net/ipv4/ip_forward.c
+++ b/net/ipv4/ip_forward.c
@@ -83,6 +83,11 @@ static int ip_forward_finish(struct net *net, struct sock *sk, struct sk_buff *s
 	return dst_output(net, sk, skb);
 }
 
+bool gdebug = true;
+void debug (void) {
+    printk("debug");
+}
+
 int ip_forward(struct sk_buff *skb)
 {
 	u32 mtu;
@@ -126,6 +131,7 @@ int ip_forward(struct sk_buff *skb)
 		goto drop;
 	}
 
+        printk("QQQ ip_forward rt\n");
 	rt = skb_rtable(skb);
 
 	if (opt->is_strictroute && rt->rt_uses_gateway)
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 6e33a58c3a11..4dc9c455398d 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -1269,7 +1269,7 @@ static int ip_rt_bug(struct net *net, struct sock *sk, struct sk_buff *skb)
  * in IP options!
  */
 
-void ip_rt_get_source(u8 *addr, struct sk_buff *skb, struct rtable *rt)
+void ip_rt_get_source(u8 *addr, struct sk_buff *skb, struct rtable *rt) //
 {
 	__be32 src;
 
@@ -1811,6 +1811,7 @@ static int __mkroute_input(struct sk_buff *skb,
 		return -EINVAL;
 	}
 
+        printk("QQQ __mkroute_input\n");
 	err = fib_validate_source(skb, saddr, daddr, tos, FIB_RES_OIF(*res),
 				  in_dev->dev, in_dev, &itag);
 	if (err < 0) {
@@ -1850,15 +1851,18 @@ static int __mkroute_input(struct sk_buff *skb,
 	if (no_policy)
 		IPCB(skb)->flags |= IPSKB_NOPOLICY;
 
+        printk("QQQ find_exception\n");
 	fnhe = find_exception(nhc, daddr);
 	if (do_cache) {
+                /* dst = skb_dst(skb); */
+                /* dst->edscp = res->edscp; */
+                printk("QQQ do cache\n");
 		if (fnhe)
 			rth = rcu_dereference(fnhe->fnhe_rth_input);
 		else
 			rth = rcu_dereference(nhc->nhc_rth_input);
 		if (rt_cache_valid(rth)) {
                         rth->dst.edscp = res->edscp;
-                        printk("QQQ YAY [%d]\n", rth->dst.edscp);
 			skb_dst_set_noref(skb, &rth->dst);
 			goto out;
 		}
@@ -1875,6 +1879,9 @@ static int __mkroute_input(struct sk_buff *skb,
 	RT_CACHE_STAT_INC(in_slow_tot);
 	rth->dst.input = ip_forward;
         rth->dst.edscp = res->edscp;
+	rth->rt_edscp = res->edscp;
+        rth->rt_saddr = saddr;
+        printk("QQQ mk_route_in set dscp [%d|%pI4]\n", rth->rt_edscp, &saddr);
 
 	rt_set_nexthop(rth, daddr, res, fnhe, res->fi, res->type, itag,
 		       do_cache);
@@ -2340,7 +2347,7 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
 		goto martian_destination;
 
 make_route:
-	err = ip_mkroute_input(skb, res, in_dev, daddr, saddr, tos, flkeys);
+	err = ip_mkroute_input(skb, res, in_dev, daddr, saddr, tos, flkeys); //
 out:	return err;
 
 brd_input:
@@ -2945,7 +2952,7 @@ struct rtable *ip_route_output_tunnel(struct sk_buff *skb,
 EXPORT_SYMBOL_GPL(ip_route_output_tunnel);
 
 /* called with rcu_read_lock held */
-static int rt_fill_info(struct net *net, __be32 dst, __be32 src,
+static int rt_fill_info(struct net *net, __be32 dst, __be32 src, /* EEE Fill */
 			struct rtable *rt, u32 table_id, struct flowi4 *fl4,
 			struct sk_buff *skb, u32 portid, u32 seq,
 			unsigned int flags)
@@ -3287,7 +3294,7 @@ static int inet_rtm_valid_getroute_req(struct sk_buff *skb,
 	return 0;
 }
 
-static int inet_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh,
+static int inet_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh, /* EEE get route */
 			     struct netlink_ext_ack *extack)
 {
 	struct net *net = sock_net(in_skb->sk);
diff --git a/net/netfilter/xt_DSCP.c b/net/netfilter/xt_DSCP.c
index eababc354ff1..d87d35eca1e6 100644
--- a/net/netfilter/xt_DSCP.c
+++ b/net/netfilter/xt_DSCP.c
@@ -25,7 +25,7 @@ MODULE_ALIAS("ipt_TOS");
 MODULE_ALIAS("ip6t_TOS");
 
 static unsigned int
-dscp_tg(struct sk_buff *skb, const struct xt_action_param *par)
+dscp_tg(struct sk_buff *skb, const struct xt_action_param *par)/* WWW   */
 {
 	const struct xt_DSCP_info *dinfo = par->targinfo;
 	u_int8_t dscp = ipv4_get_dsfield(ip_hdr(skb)) >> XT_DSCP_SHIFT;
@@ -34,7 +34,7 @@ dscp_tg(struct sk_buff *skb, const struct xt_action_param *par)
 		if (skb_ensure_writable(skb, sizeof(struct iphdr)))
 			return NF_DROP;
 
-		ipv4_change_dsfield(ip_hdr(skb),
+		ipv4_change_dsfield(ip_hdr(skb),/* WWW   */
 				    (__force __u8)(~XT_DSCP_MASK),
 				    dinfo->dscp << XT_DSCP_SHIFT);
 
diff --git a/scripts/Makefile.package b/scripts/Makefile.package
index 77b612183c08..8528207a5c01 100644
--- a/scripts/Makefile.package
+++ b/scripts/Makefile.package
@@ -75,7 +75,7 @@ deb-pkg:
 	$(call cmd,src_tar,$(KDEB_SOURCENAME))
 	origversion=$$(dpkg-parsechangelog -SVersion |sed 's/-[^-]*$$//');\
 		mv $(KDEB_SOURCENAME).tar.gz ../$(KDEB_SOURCENAME)_$${origversion}.orig.tar.gz
-	+dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) $(DPKG_FLAGS) -i.git -us -uc
+	dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) $(DPKG_FLAGS) -i.git -us -uc
 
 PHONY += bindeb-pkg
 bindeb-pkg:
diff --git a/scripts/gdb/vmlinux-gdb.py b/scripts/gdb/vmlinux-gdb.py
old mode 100644
new mode 100755
diff --git a/scripts/tags.sh b/scripts/tags.sh
index 01fab3d4f90b..a2b8a345532e 100755
--- a/scripts/tags.sh
+++ b/scripts/tags.sh
@@ -125,7 +125,7 @@ all_kconfigs()
 
 docscope()
 {
-	(echo \-k; echo \-q; all_target_sources) > cscope.files
+	(echo \-k; echo \-q; all_target_sources) | grep -v debian > cscope.files
 	cscope -b -f cscope.out
 }
 
