From: "Martinez, Ricardo" <ricardo.martinez@linux.intel.com>
To: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
Cc: netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
kuba@kernel.org, davem@davemloft.net, johannes@sipsolutions.net,
ryazanov.s.a@gmail.com, loic.poulain@linaro.org,
m.chetan.kumar@intel.com, chandrashekar.devegowda@intel.com,
linuxwwan@intel.com, chiranjeevi.rapolu@linux.intel.com,
haijun.liu@mediatek.com, amir.hanania@intel.com,
andriy.shevchenko@linux.intel.com, dinesh.sharma@intel.com,
eliot.lee@intel.com, mika.westerberg@linux.intel.com,
moises.veleta@intel.com, pierre-louis.bossart@intel.com,
muralidharan.sethuraman@intel.com,
Soumya.Prakash.Mishra@intel.com, sreehari.kancharla@intel.com
Subject: Re: [PATCH net-next v3 02/12] net: wwan: t7xx: Add core components
Date: Wed, 12 Jan 2022 13:58:17 -0800 [thread overview]
Message-ID: <5b15709f-cbc6-d922-1151-4543dc5ffc1d@linux.intel.com> (raw)
In-Reply-To: <db45c31-5041-5853-e88a-b1f76a1fb9a0@linux.intel.com>
On 12/16/2021 3:55 AM, Ilpo Järvinen wrote:
...
>
>> + switch (reason) {
>> + case EXCEPTION_HS_TIMEOUT:
>> + dev_err(dev, "BOOT_HS_FAIL\n");
>> + break;
>> +
>> + case EXCEPTION_EVENT:
>> + t7xx_fsm_broadcast_state(ctl, MD_STATE_EXCEPTION);
>> + t7xx_md_exception_handshake(ctl->md);
>> +
>> + cnt = 0;
>> + while (cnt < FSM_MD_EX_REC_OK_TIMEOUT_MS / FSM_EVENT_POLL_INTERVAL_MS) {
>> + if (kthread_should_stop())
>> + return;
>> +
>> + spin_lock_irqsave(&ctl->event_lock, flags);
>> + event = list_first_entry_or_null(&ctl->event_queue,
>> + struct t7xx_fsm_event, entry);
>> + if (event) {
>> + if (event->event_id == FSM_EVENT_MD_EX) {
>> + fsm_del_kf_event(event);
>> + } else if (event->event_id == FSM_EVENT_MD_EX_REC_OK) {
>> + rec_ok = true;
>> + fsm_del_kf_event(event);
>> + }
>> + }
>> +
>> + spin_unlock_irqrestore(&ctl->event_lock, flags);
>> + if (rec_ok)
>> + break;
>> +
>> + cnt++;
>> + /* Try again after 20ms */
>> + msleep(FSM_EVENT_POLL_INTERVAL_MS);
>> + }
>> +
>> + cnt = 0;
>> + while (cnt < FSM_MD_EX_PASS_TIMEOUT_MS / FSM_EVENT_POLL_INTERVAL_MS) {
>> + if (kthread_should_stop())
>> + return;
>> +
>> + spin_lock_irqsave(&ctl->event_lock, flags);
>> + event = list_first_entry_or_null(&ctl->event_queue,
>> + struct t7xx_fsm_event, entry);
>> + if (event && event->event_id == FSM_EVENT_MD_EX_PASS) {
>> + pass = true;
>> + fsm_del_kf_event(event);
>> + }
>> +
>> + spin_unlock_irqrestore(&ctl->event_lock, flags);
>> +
>> + if (pass)
>> + break;
>> + cnt++;
>> + /* Try again after 20ms */
>> + msleep(FSM_EVENT_POLL_INTERVAL_MS);
>> + }
> It hurts me a bit to see so much code duplication with only that one
> extra if branch + if condition right-hand sides being different. It would
> seem like something that could be solved with a helper taking those two
> things as parameters.
>
> I hope the ordering of FSM_EVENT_MD_EX, FSM_EVENT_MD_EX_REC_OK, and
> FSM_EVENT_MD_EX_PASS is guaranteed by something. Otherwise, the event
> being waited for might not become the first entry in the event_queue and
> the loop just keeps waiting until timeout?
>
Ordering is guaranteed by the modem. Removing code duplication in the
next iteration.
>> +void t7xx_fsm_clr_event(struct t7xx_fsm_ctl *ctl, enum t7xx_fsm_event_state event_id)
>> +{
>> + struct device *dev = &ctl->md->t7xx_dev->pdev->dev;
>> + struct t7xx_fsm_event *event, *evt_next;
>> + unsigned long flags;
>> +
>> + spin_lock_irqsave(&ctl->event_lock, flags);
>> + list_for_each_entry_safe(event, evt_next, &ctl->event_queue, entry) {
>> + dev_err(dev, "Unhandled event %d\n", event->event_id);
>> +
>> + if (event->event_id == event_id)
>> + fsm_del_kf_event(event);
>> + }
> It seems that only events matching to event_id are removed from the
> event_queue. Can that dev_err print the same event over and over again
> (I'm assuming here multiple calls to t7xx_fsm_clr_event can occur) because
> the other events still remaining in event_queue?
>
The purpose of this function is just to remove an event if present, it
is not relevant if there
were other events in the list, so I'll remove the dev_err.
next prev parent reply other threads:[~2022-01-12 21:58 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-07 2:46 [PATCH net-next v3 00/12] net: wwan: t7xx: PCIe driver for MediaTek M.2 modem Ricardo Martinez
2021-12-07 2:47 ` [PATCH net-next v3 01/12] net: wwan: t7xx: Add control DMA interface Ricardo Martinez
2021-12-07 17:11 ` Jakub Kicinski
2021-12-16 11:08 ` Ilpo Järvinen
2022-01-12 4:55 ` Martinez, Ricardo
2022-01-12 11:40 ` Andy Shevchenko
2022-01-12 14:24 ` Ilpo Järvinen
2022-01-12 16:20 ` Andy Shevchenko
2022-01-12 18:16 ` Ilpo Järvinen
2022-01-12 19:03 ` Martinez, Ricardo
2022-01-12 19:24 ` Ilpo Järvinen
2022-01-12 20:08 ` Martinez, Ricardo
2022-01-13 18:31 ` Ilpo Järvinen
2021-12-07 2:47 ` [PATCH net-next v3 02/12] net: wwan: t7xx: Add core components Ricardo Martinez
2021-12-16 11:55 ` Ilpo Järvinen
2022-01-12 21:58 ` Martinez, Ricardo [this message]
2021-12-07 2:47 ` [PATCH net-next v3 03/12] net: wwan: t7xx: Add port proxy infrastructure Ricardo Martinez
2021-12-16 12:17 ` Ilpo Järvinen
2021-12-07 2:47 ` [PATCH net-next v3 04/12] net: wwan: t7xx: Add control port Ricardo Martinez
2021-12-16 13:44 ` Ilpo Järvinen
2021-12-07 2:47 ` [PATCH net-next v3 05/12] net: wwan: t7xx: Add AT and MBIM WWAN ports Ricardo Martinez
2021-12-07 9:48 ` Loic Poulain
2021-12-16 12:25 ` Ilpo Järvinen
2021-12-16 12:59 ` Andy Shevchenko
2021-12-07 2:47 ` [PATCH net-next v3 06/12] net: wwan: t7xx: Data path HW layer Ricardo Martinez
2021-12-07 11:59 ` Andy Shevchenko
2021-12-07 12:04 ` Andy Shevchenko
2021-12-07 2:47 ` [PATCH net-next v3 07/12] net: wwan: t7xx: Add data path interface Ricardo Martinez
2021-12-16 13:30 ` Ilpo Järvinen
2022-01-12 23:27 ` Martinez, Ricardo
2021-12-07 2:47 ` [PATCH net-next v3 08/12] net: wwan: t7xx: Add WWAN network interface Ricardo Martinez
2021-12-07 2:47 ` [PATCH net-next v3 09/12] net: wwan: t7xx: Introduce power management support Ricardo Martinez
2021-12-07 2:47 ` [PATCH net-next v3 10/12] net: wwan: t7xx: Runtime PM Ricardo Martinez
2021-12-07 2:47 ` [PATCH net-next v3 11/12] net: wwan: t7xx: Device deep sleep lock/unlock Ricardo Martinez
2021-12-07 2:47 ` [PATCH net-next v3 12/12] net: wwan: t7xx: Add maintainers and documentation Ricardo Martinez
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=5b15709f-cbc6-d922-1151-4543dc5ffc1d@linux.intel.com \
--to=ricardo.martinez@linux.intel.com \
--cc=Soumya.Prakash.Mishra@intel.com \
--cc=amir.hanania@intel.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=chandrashekar.devegowda@intel.com \
--cc=chiranjeevi.rapolu@linux.intel.com \
--cc=davem@davemloft.net \
--cc=dinesh.sharma@intel.com \
--cc=eliot.lee@intel.com \
--cc=haijun.liu@mediatek.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=johannes@sipsolutions.net \
--cc=kuba@kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=linuxwwan@intel.com \
--cc=loic.poulain@linaro.org \
--cc=m.chetan.kumar@intel.com \
--cc=mika.westerberg@linux.intel.com \
--cc=moises.veleta@intel.com \
--cc=muralidharan.sethuraman@intel.com \
--cc=netdev@vger.kernel.org \
--cc=pierre-louis.bossart@intel.com \
--cc=ryazanov.s.a@gmail.com \
--cc=sreehari.kancharla@intel.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.