diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c index 34940f90145a27b4c7900e351bb40b1ac7d45ca0..4e29050aafa0763ec6b8125765308fa2e7cb1cf0 100644 --- a/net/ipv4/ip_input.c +++ b/net/ipv4/ip_input.c @@ -219,6 +219,13 @@ static int ip_local_deliver_finish(struct net *net, struct sock *sk, struct sk_b resubmit: raw = raw_local_deliver(skb, protocol); +#ifdef CONFIG_XEN_SME + memset(dbg_buff, 0, DBG_BUF_SIZE); + sprintf(dbg_buff, "%s:%d caller: %pS, raw: %d", __func__, __LINE__, + __builtin_return_address(0), raw); + xsl_print_sk_buff(skb, dbg_buff); +#endif + ipprot = rcu_dereference(inet_protos[protocol]); if (ipprot) { int ret; @@ -230,7 +237,21 @@ static int ip_local_deliver_finish(struct net *net, struct sock *sk, struct sk_b } nf_reset(skb); } +#ifdef CONFIG_XEN_SME + memset(dbg_buff, 0, DBG_BUF_SIZE); + sprintf(dbg_buff, "%s:%d caller: %pS", __func__, __LINE__, + __builtin_return_address(0)); + xsl_print_sk_buff(skb, dbg_buff); +#endif + ret = ipprot->handler(skb); +#ifdef CONFIG_XEN_SME + memset(dbg_buff, 0, DBG_BUF_SIZE); + sprintf(dbg_buff, "%s:%d caller: %pS", __func__, __LINE__, + __builtin_return_address(0)); + xsl_print_sk_buff(skb, dbg_buff); +#endif + if (ret < 0) { protocol = -ret; goto resubmit; diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 5bab6c3f7a2fc19937571346c93302cddaddcf18..f5ee1ace797b0622fff29481e0be6db5b32ffb62 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -79,6 +79,10 @@ #define pr_fmt(fmt) "UDP: " fmt +#ifdef CONFIG_XEN_SME +#include "../../drivers/net/ethernet/broadcom/bnx2x/sme/xen_sme_hooks.h" +#define DBG_BUF_SIZE 256 +#endif #include <asm/uaccess.h> #include <asm/ioctls.h> #include <linux/bootmem.h> @@ -1505,6 +1509,13 @@ int udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) int rc; int is_udplite = IS_UDPLITE(sk); +#ifdef CONFIG_XEN_SME + char dbg_buff[DBG_BUF_SIZE]; + memset(dbg_buff, 0, DBG_BUF_SIZE); + sprintf(dbg_buff, "%s:%d caller: %pS", __func__, __LINE__, + __builtin_return_address(0)); + xsl_print_sk_buff(skb, dbg_buff); +#endif /* * Charge it to the socket, dropping if the queue is full. */ @@ -1597,6 +1608,12 @@ int udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) rc = 0; +#ifdef CONFIG_XEN_SME + memset(dbg_buff, 0, DBG_BUF_SIZE); + sprintf(dbg_buff, "%s:%d caller: %pS, sock owned: %d", __func__, __LINE__, + __builtin_return_address(0), (sk ? sk->sk_lock.owned : -2)); + xsl_print_sk_buff(skb, dbg_buff); +#endif ipv4_pktinfo_prepare(sk, skb); bh_lock_sock(sk); if (!sock_owned_by_user(sk)) @@ -1739,6 +1756,13 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, __be32 saddr, daddr; struct net *net = dev_net(skb->dev); +#ifdef CONFIG_XEN_SME + char dbg_buff[DBG_BUF_SIZE]; + memset(dbg_buff, 0, DBG_BUF_SIZE); + sprintf(dbg_buff, "%s:%d caller: %pS", __func__, __LINE__, + __builtin_return_address(0)); + xsl_print_sk_buff(skb, dbg_buff); +#endif /* * Validate the packet. */