From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Linyu Yuan <quic_linyyuan@quicinc.com>
Cc: Alan Stern <stern@rowland.harvard.edu>,
Thinh Nguyen <Thinh.Nguyen@synopsys.com>,
linux-usb@vger.kernel.org
Subject: Re: [PATCH v7 2/4] usb: gadget: add anonymous definition in some struct for trace purpose
Date: Tue, 19 Sep 2023 09:07:44 +0200 [thread overview]
Message-ID: <2023091932-jigsaw-mooned-e7f0@gregkh> (raw)
In-Reply-To: <afaffda9-d9aa-6f88-7fad-fab7c1eead2e@quicinc.com>
On Tue, Sep 19, 2023 at 08:01:43AM +0800, Linyu Yuan wrote:
>
> On 9/18/2023 10:14 PM, Alan Stern wrote:
> > On Mon, Sep 18, 2023 at 02:06:34PM +0200, Greg Kroah-Hartman wrote:
> > > On Mon, Sep 18, 2023 at 07:25:32PM +0800, Linyu Yuan wrote:
> > > > Some UDC trace event will save usb udc information, but it use one int
> > > > size buffer to save one bit information of usb udc, it waste trace buffer.
> > > >
> > > > Add anonymous union which have u32 members can be used by trace event
> > > > during fast assign stage to save more entries with same trace ring buffer
> > > > size.
> > > >
> > > > In order to access each bit with BIT() macro, add different definition for
> > > > each bit fields according host little/big endian to make sure it has same
> > > > eacho bit field have same bit position in memory.
> > > typo?
> > >
> > > > Add some macros or helper for later trace event usage which follow the
> > > > udc structs, As when possible future changes to udc related structs,
> > > > developers will easy notice them.
> > > This isn't going to work at all, there's nothing to keep the two in
> > > sync.
> > >
> > > As you are using bitmasks now, wonderful, just use those only and ignore
> > > the bitfield definitions, that's not going to work mixing the two at
> > > all.
> > Greg is right. If you really want to access these fields using bitmask
> > operations, you should do it by changing all of the fields into
> > bitmasks; mixing bitmasks and bitfields is not a good idea.
> >
> > For example, in order to do this you will have to change the definition
> > of struct usb_gadget. Replace
> >
> > unsigned sg_supported:1;
> > unsigned is_otg:1;
> > unsigned is_a_peripheral:1;
> > unsigned b_hnp_enable:1;
> > unsigned a_hnp_support:1;
> > unsigned a_alt_hnp_support:1;
> > unsigned hnp_polling_support:1;
> > unsigned host_request_flag:1;
> > unsigned quirk_ep_out_aligned_size:1;
> > unsigned quirk_altset_not_supp:1;
> > unsigned quirk_stall_not_supp:1;
> > unsigned quirk_zlp_not_supp:1;
> > unsigned quirk_avoids_skb_reserve:1;
> > unsigned is_selfpowered:1;
> > unsigned deactivated:1;
> > unsigned connected:1;
> > unsigned lpm_capable:1;
> > unsigned wakeup_capable:1;
> > unsigned wakeup_armed:1;
> >
> > with
> >
> > unsigned int dw1;
> >
> > #define USB_GADGET_SG_SUPPORTED BIT(0)
> > #define USB_GADGET_IS_OTG BIT(1)
> > ...
> > #define USB_GADGET_WAKEUP_ARMED BIT(18)
> >
> > Then change all the drivers that use these fields. For example, change
> >
> > g->connected = 1;
> >
> > to
> >
> > g->dw1 |= USB_GADGET_CONNECTED;
> >
> > and change
> >
> > if (g->is_selfpowered)
> >
> > to
> >
> > if (g->dw1 & USB_GADGET_IS_SELFPOWERED)
> >
> > Or if you prefer, invent some inline routines or macros that will handle
> > this for you.
>
>
> it is a lot of changes. i only expect common and minimal
> change(macros/helpers) in gadget.h.
Why?
> if you have better idea, please help share a patch.
Alan is right here, please just take the time to do this properly, after
documenting exactly how much time/space is going to be saved here, I
don't seem to see that anywhere in your patch sets so I still do not
understand why this patch set was created in the first place.
thanks,
greg k-h
next prev parent reply other threads:[~2023-09-19 7:08 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-18 11:25 [PATCH v7 0/4] usb: gadget: reduce usb gadget trace event buffer usage Linyu Yuan
2023-09-18 11:25 ` [PATCH v7 1/4] usb: gadget: remove UDC_TRACE_STR_MAX definition Linyu Yuan
2023-09-18 11:25 ` [PATCH v7 2/4] usb: gadget: add anonymous definition in some struct for trace purpose Linyu Yuan
2023-09-18 12:06 ` Greg Kroah-Hartman
2023-09-18 14:14 ` Alan Stern
2023-09-19 0:01 ` Linyu Yuan
2023-09-19 7:07 ` Greg Kroah-Hartman [this message]
2023-09-18 11:25 ` [PATCH v7 3/4] usb: udc: trace: reduce buffer usage of trace event Linyu Yuan
2023-09-18 11:25 ` [PATCH v7 4/4] usb: dwc3: " Linyu Yuan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2023091932-jigsaw-mooned-e7f0@gregkh \
--to=gregkh@linuxfoundation.org \
--cc=Thinh.Nguyen@synopsys.com \
--cc=linux-usb@vger.kernel.org \
--cc=quic_linyyuan@quicinc.com \
--cc=stern@rowland.harvard.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox