net: ipa: introduce gsi_channel_stop_retry()
Create a new helper function that encapsulates issuing a set of channel stop commands, retrying if appropriate, with a short delay between attempts. Signed-off-by: Alex Elder <elder@linaro.org> Acked-by: Willem de Bruijn <willemb@google.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
6b00a76a1d
commit
697e834e14
|
@ -892,15 +892,12 @@ int gsi_channel_start(struct gsi *gsi, u32 channel_id)
|
|||
return ret;
|
||||
}
|
||||
|
||||
/* Stop a started channel */
|
||||
int gsi_channel_stop(struct gsi *gsi, u32 channel_id)
|
||||
static int gsi_channel_stop_retry(struct gsi_channel *channel)
|
||||
{
|
||||
struct gsi_channel *channel = &gsi->channel[channel_id];
|
||||
u32 retries = GSI_CHANNEL_STOP_RETRIES;
|
||||
struct gsi *gsi = channel->gsi;
|
||||
int ret;
|
||||
|
||||
gsi_channel_freeze(channel);
|
||||
|
||||
mutex_lock(&gsi->mutex);
|
||||
|
||||
do {
|
||||
|
@ -912,6 +909,19 @@ int gsi_channel_stop(struct gsi *gsi, u32 channel_id)
|
|||
|
||||
mutex_unlock(&gsi->mutex);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Stop a started channel */
|
||||
int gsi_channel_stop(struct gsi *gsi, u32 channel_id)
|
||||
{
|
||||
struct gsi_channel *channel = &gsi->channel[channel_id];
|
||||
int ret;
|
||||
|
||||
gsi_channel_freeze(channel);
|
||||
|
||||
ret = gsi_channel_stop_retry(channel);
|
||||
|
||||
/* Re-thaw the channel if an error occurred while stopping */
|
||||
if (ret)
|
||||
gsi_channel_thaw(channel);
|
||||
|
|
Loading…
Reference in New Issue