@@ -25,20 +25,7 @@ DECLARE_EVENT_CLASS(udc_log_gadget,
__field(enum usb_device_speed, max_speed)
__field(enum usb_device_state, state)
__field(unsigned, mA)
- __field(unsigned, sg_supported)
- __field(unsigned, is_otg)
- __field(unsigned, is_a_peripheral)
- __field(unsigned, b_hnp_enable)
- __field(unsigned, a_hnp_support)
- __field(unsigned, hnp_polling_support)
- __field(unsigned, host_request_flag)
- __field(unsigned, quirk_ep_out_aligned_size)
- __field(unsigned, quirk_altset_not_supp)
- __field(unsigned, quirk_stall_not_supp)
- __field(unsigned, quirk_zlp_not_supp)
- __field(unsigned, is_selfpowered)
- __field(unsigned, deactivated)
- __field(unsigned, connected)
+ __field(u32, gdw1)
__field(int, ret)
),
TP_fast_assign(
@@ -46,38 +33,12 @@ DECLARE_EVENT_CLASS(udc_log_gadget,
__entry->max_speed = g->max_speed;
__entry->state = g->state;
__entry->mA = g->mA;
- __entry->sg_supported = g->sg_supported;
- __entry->is_otg = g->is_otg;
- __entry->is_a_peripheral = g->is_a_peripheral;
- __entry->b_hnp_enable = g->b_hnp_enable;
- __entry->a_hnp_support = g->a_hnp_support;
- __entry->hnp_polling_support = g->hnp_polling_support;
- __entry->host_request_flag = g->host_request_flag;
- __entry->quirk_ep_out_aligned_size = g->quirk_ep_out_aligned_size;
- __entry->quirk_altset_not_supp = g->quirk_altset_not_supp;
- __entry->quirk_stall_not_supp = g->quirk_stall_not_supp;
- __entry->quirk_zlp_not_supp = g->quirk_zlp_not_supp;
- __entry->is_selfpowered = g->is_selfpowered;
- __entry->deactivated = g->deactivated;
- __entry->connected = g->connected;
+ __entry->gdw1 = g->dw1;
__entry->ret = ret;
),
- TP_printk("speed %d/%d state %d %dmA [%s%s%s%s%s%s%s%s%s%s%s%s%s%s] --> %d",
+ TP_printk("speed %d/%d state %d %dmA [%s] --> %d",
__entry->speed, __entry->max_speed, __entry->state, __entry->mA,
- __entry->sg_supported ? "sg:" : "",
- __entry->is_otg ? "OTG:" : "",
- __entry->is_a_peripheral ? "a_peripheral:" : "",
- __entry->b_hnp_enable ? "b_hnp:" : "",
- __entry->a_hnp_support ? "a_hnp:" : "",
- __entry->hnp_polling_support ? "hnp_poll:" : "",
- __entry->host_request_flag ? "hostreq:" : "",
- __entry->quirk_ep_out_aligned_size ? "out_aligned:" : "",
- __entry->quirk_altset_not_supp ? "no_altset:" : "",
- __entry->quirk_stall_not_supp ? "no_stall:" : "",
- __entry->quirk_zlp_not_supp ? "no_zlp" : "",
- __entry->is_selfpowered ? "self-powered:" : "bus-powered:",
- __entry->deactivated ? "deactivated:" : "activated:",
- __entry->connected ? "connected" : "disconnected",
+ __print_flags(__entry->gdw1, ":", USB_GADGET_FLAGS),
__entry->ret)
);
@@ -145,34 +106,26 @@ DECLARE_EVENT_CLASS(udc_log_ep,
TP_PROTO(struct usb_ep *ep, int ret),
TP_ARGS(ep, ret),
TP_STRUCT__entry(
- __string(name, ep->name)
- __field(unsigned, maxpacket)
- __field(unsigned, maxpacket_limit)
- __field(unsigned, max_streams)
- __field(unsigned, mult)
- __field(unsigned, maxburst)
- __field(u8, address)
- __field(bool, claimed)
- __field(bool, enabled)
+ __field(u32, edw3)
+ __field(u32, edw1)
+ __field(u32, edw2)
__field(int, ret)
),
TP_fast_assign(
- __assign_str(name, ep->name);
- __entry->maxpacket = ep->maxpacket;
- __entry->maxpacket_limit = ep->maxpacket_limit;
- __entry->max_streams = ep->max_streams;
- __entry->mult = ep->mult;
- __entry->maxburst = ep->maxburst;
- __entry->address = ep->address,
- __entry->claimed = ep->claimed;
- __entry->enabled = ep->enabled;
+ __entry->edw3 = ep->dw3;
+ __entry->edw1 = ep->dw1;
+ __entry->edw2 = ep->dw2;
__entry->ret = ret;
),
- TP_printk("%s: mps %d/%d streams %d mult %d burst %d addr %02x %s%s --> %d",
- __get_str(name), __entry->maxpacket, __entry->maxpacket_limit,
- __entry->max_streams, __entry->mult, __entry->maxburst,
- __entry->address, __entry->claimed ? "claimed:" : "released:",
- __entry->enabled ? "enabled" : "disabled", ret)
+ TP_printk("%s: mps %d/%d streams %d mult %d burst %d addr %02x %s --> %d",
+ usb_gadget_ep_name(__get_buf(USB_EP_MAX_NAME_LEN), __entry->edw3),
+ u32_get_bits(__entry->edw1, USB_EP_MAXPACKET),
+ u32_get_bits(__entry->edw1, USB_EP_MAXPACKET_LIMIT),
+ u32_get_bits(__entry->edw2, USB_EP_MAX_STREAMS),
+ u32_get_bits(__entry->edw2, USB_EP_MULT),
+ u32_get_bits(__entry->edw2, USB_EP_MAXBURST),
+ u32_get_bits(__entry->edw3, USB_EP_ADDRESS),
+ __print_flags(__entry->edw3, ":", USB_EP_FLAGS), ret)
);
DEFINE_EVENT(udc_log_ep, usb_ep_set_maxpacket_limit,
@@ -219,41 +172,34 @@ DECLARE_EVENT_CLASS(udc_log_req,
TP_PROTO(struct usb_ep *ep, struct usb_request *req, int ret),
TP_ARGS(ep, req, ret),
TP_STRUCT__entry(
- __string(name, ep->name)
+ __field(u32, edw3)
__field(unsigned, length)
__field(unsigned, actual)
__field(unsigned, num_sgs)
__field(unsigned, num_mapped_sgs)
- __field(unsigned, stream_id)
- __field(unsigned, no_interrupt)
- __field(unsigned, zero)
- __field(unsigned, short_not_ok)
+ __field(u32, rdw1)
__field(int, status)
__field(int, ret)
__field(struct usb_request *, req)
),
TP_fast_assign(
- __assign_str(name, ep->name);
+ __entry->edw3 = ep->dw3;
__entry->length = req->length;
__entry->actual = req->actual;
__entry->num_sgs = req->num_sgs;
__entry->num_mapped_sgs = req->num_mapped_sgs;
- __entry->stream_id = req->stream_id;
- __entry->no_interrupt = req->no_interrupt;
- __entry->zero = req->zero;
- __entry->short_not_ok = req->short_not_ok;
+ __entry->rdw1 = req->dw1;
__entry->status = req->status;
__entry->ret = ret;
__entry->req = req;
),
- TP_printk("%s: req %p length %d/%d sgs %d/%d stream %d %s%s%s status %d --> %d",
- __get_str(name),__entry->req, __entry->actual, __entry->length,
- __entry->num_mapped_sgs, __entry->num_sgs, __entry->stream_id,
- __entry->zero ? "Z" : "z",
- __entry->short_not_ok ? "S" : "s",
- __entry->no_interrupt ? "i" : "I",
- __entry->status, __entry->ret
- )
+ TP_printk("%s: req %p length %d/%d sgs %d/%d stream %d %s status %d --> %d",
+ usb_gadget_ep_name(__get_buf(USB_EP_MAX_NAME_LEN), __entry->edw3),
+ __entry->req, __entry->actual, __entry->length,
+ __entry->num_mapped_sgs, __entry->num_sgs,
+ u32_get_bits(__entry->rdw1, USB_REQ_STREAM_ID),
+ __print_flags(__entry->rdw1, ":", USB_REQ_FLAGS),
+ __entry->status, __entry->ret)
);
DEFINE_EVENT(udc_log_req, usb_ep_alloc_request,
Save u32 members into trace event ring buffer and parse it for bit fields. take below trace event class for explanation, save two u32 members and parse it to generate ep name and other information. old: DECLARE_EVENT_CLASS(udc_log_req, TP_PROTO(struct usb_ep *ep, struct usb_request *req, int ret), TP_ARGS(ep, req, ret), TP_STRUCT__entry( __string(name, ep->name) __field(unsigned, length) __field(unsigned, actual) __field(unsigned, num_sgs) __field(unsigned, num_mapped_sgs) __field(unsigned, stream_id) __field(unsigned, no_interrupt) __field(unsigned, zero) __field(unsigned, short_not_ok) __field(int, status) __field(int, ret) __field(struct usb_request *, req) ), TP_fast_assign( __assign_str(name, ep->name); __entry->length = req->length; __entry->actual = req->actual; __entry->num_sgs = req->num_sgs; __entry->num_mapped_sgs = req->num_mapped_sgs; __entry->stream_id = req->stream_id; __entry->no_interrupt = req->no_interrupt; __entry->zero = req->zero; __entry->short_not_ok = req->short_not_ok; __entry->status = req->status; __entry->ret = ret; __entry->req = req; ), ... ); new: DECLARE_EVENT_CLASS(udc_log_req, TP_PROTO(struct usb_ep *ep, struct usb_request *req, int ret), TP_ARGS(ep, req, ret), TP_STRUCT__entry( __field(u32, edw3) __field(unsigned, length) __field(unsigned, actual) __field(unsigned, num_sgs) __field(unsigned, num_mapped_sgs) __field(u32, rdw1) __field(int, status) __field(int, ret) __field(struct usb_request *, req) ), TP_fast_assign( __entry->edw3 = ep->dw3; __entry->length = req->length; __entry->actual = req->actual; __entry->num_sgs = req->num_sgs; __entry->num_mapped_sgs = req->num_mapped_sgs; __entry->rdw1 = req->dw1; __entry->status = req->status; __entry->ret = ret; __entry->req = req; ), ... ); consider 32 bit ARCH, for old definition, one trace entry size is: 4 (ring buffer event header ) + 8 (trace event header ) + 48 (trace class header) + 9 (ep string name) = 69 bytes. for new definition, one trace entry size is: 4 (ring buffer event header ) + 8 (trace event header ) + 36 (trace class header) = 48 bytes. consider there is 1MB trace buffer space, for old definition, it can save 15196 entries, for new definition, it can save 21845 entries. Use new common trace event macro in gadget.h for output stage. Signed-off-by: Linyu Yuan <quic_linyyuan@quicinc.com> --- drivers/usb/gadget/udc/trace.h | 114 +++++++++------------------------ 1 file changed, 30 insertions(+), 84 deletions(-)