提交 4165a2d1 编写于 作者: L linyunsheng 提交者: Xie XiuQi

net: hns3: add trace events support for hns3 driver

driver inclusion
category: bugfix
bugzilla: NA
CVE: NA

change for hns3 trace to debug tso and gro problem

Feature or Bugfix:Bugfix
Signed-off-by: NYunsheng Lin <linyunsheng@huawei.com>
Reviewed-by: Nlipeng <lipeng321@huawei.com>
Reviewed-by: NYang Yingliang <yangyingliang@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 8b206623
......@@ -717,6 +717,8 @@ static int hns3_set_tso(struct sk_buff *skb, u32 *paylen,
/* get MSS for TSO */
*mss = skb_shinfo(skb)->gso_size;
trace_hns3_tso(skb);
return 0;
}
......@@ -1235,10 +1237,10 @@ static int hns3_nic_maybe_stop_tx(struct hns3_enet_ring *ring,
if (unlikely(bd_num > HNS3_MAX_BD_PER_FRAG)) {
struct sk_buff *new_skb;
if (skb_is_gso(skb) && !hns3_skb_need_linearized(skb))
if (skb_is_gso(skb) && !hns3_skb_need_linearized(skb)) {
trace_hns3_over_8bd(skb);
goto out;
trace_hns3_over_8bd(skb);
}
bd_num = hns3_tx_bd_count(skb->len);
if (unlikely(ring_space(ring) < bd_num))
......@@ -2506,6 +2508,9 @@ static int hns3_gro_complete(struct sk_buff *skb, u32 l234info)
skb->csum_start = (unsigned char *)th - skb->head;
skb->csum_offset = offsetof(struct tcphdr, check);
skb->ip_summed = CHECKSUM_PARTIAL;
trace_hns3_gro(skb);
return 0;
}
......
......@@ -11,31 +11,57 @@
#define DESC_NR (sizeof(struct hns3_desc) / sizeof(u32))
TRACE_EVENT(hns3_over_8bd,
DECLARE_EVENT_CLASS(hns3_skb_template,
TP_PROTO(struct sk_buff *skb),
TP_ARGS(skb),
TP_STRUCT__entry(
__field(unsigned int, headlen)
__field(unsigned int, len)
__field(__u8, nr_frags)
__field(__u8, ip_summed)
__field(unsigned int, hdr_len)
__field(unsigned short, gso_size)
__field(unsigned short, gso_segs)
__field(unsigned int, gso_type)
__array(__u32, size, MAX_SKB_FRAGS)
),
TP_fast_assign(
__entry->headlen = skb_headlen(skb);
__entry->len = skb->len;
__entry->nr_frags = skb_shinfo(skb)->nr_frags;
__entry->gso_size = skb_shinfo(skb)->gso_size;
__entry->gso_segs = skb_shinfo(skb)->gso_segs;
__entry->gso_type = skb_shinfo(skb)->gso_type;
__entry->hdr_len = skb->encapsulation ?
skb_inner_transport_offset(skb) + inner_tcp_hdrlen(skb) :
skb_transport_offset(skb) + tcp_hdrlen(skb);
__entry->ip_summed = skb->ip_summed;
hns3_shinfo_pack(skb_shinfo(skb), __entry->size);
),
TP_printk(
"headlen: %u, nr_frags: %u, gso: %u frag size: %s",
__entry->headlen, __entry->gso_size, __entry->nr_frags,
"len: %u, %u, %u, cs: %u, gso: %u, %u, %x, frag(%u): %s",
__entry->headlen, __entry->len, __entry->hdr_len,
__entry->ip_summed, __entry->gso_size, __entry->gso_segs,
__entry->gso_type, __entry->nr_frags,
__print_array(__entry->size, MAX_SKB_FRAGS, sizeof(__u32))
)
);
DEFINE_EVENT(hns3_skb_template, hns3_over_8bd,
TP_PROTO(struct sk_buff *skb),
TP_ARGS(skb));
DEFINE_EVENT(hns3_skb_template, hns3_gro,
TP_PROTO(struct sk_buff *skb),
TP_ARGS(skb));
DEFINE_EVENT(hns3_skb_template, hns3_tso,
TP_PROTO(struct sk_buff *skb),
TP_ARGS(skb));
TRACE_EVENT(hns3_tx_desc,
TP_PROTO(struct hns3_enet_ring *ring),
TP_ARGS(ring),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册