Skip to content

Commit 159c797

Browse files
quic-bjorandeandersson
authored andcommitted
rpmsg: glink: Tidy up RX advance handling
The operation of advancing the FIFO receive pointer is sprinkled between the interrupt handler itself, and functions being called from this. Push all the RX advancement operations to the individual handlers, to unify the style across the handling of the various messages. Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com> Reviewed-by: Chris Lew <quic_clew@quicinc.com> Link: https://lore.kernel.org/r/20240805-glink-tracepoints-v1-1-a5f3293fb09e@quicinc.com Signed-off-by: Bjorn Andersson <andersson@kernel.org>
1 parent 8400291 commit 159c797

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

drivers/rpmsg/qcom_glink_native.c

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,8 @@ static void qcom_glink_handle_intent_req_ack(struct qcom_glink *glink,
424424
struct glink_channel *channel;
425425
unsigned long flags;
426426

427+
qcom_glink_rx_advance(glink, ALIGN(sizeof(struct glink_msg), 8));
428+
427429
spin_lock_irqsave(&glink->idr_lock, flags);
428430
channel = idr_find(&glink->rcids, cid);
429431
spin_unlock_irqrestore(&glink->idr_lock, flags);
@@ -745,6 +747,8 @@ static void qcom_glink_handle_rx_done(struct qcom_glink *glink,
745747
struct glink_channel *channel;
746748
unsigned long flags;
747749

750+
qcom_glink_rx_advance(glink, ALIGN(sizeof(struct glink_msg), 8));
751+
748752
spin_lock_irqsave(&glink->idr_lock, flags);
749753
channel = idr_find(&glink->rcids, cid);
750754
spin_unlock_irqrestore(&glink->idr_lock, flags);
@@ -952,6 +956,12 @@ static int qcom_glink_rx_data(struct qcom_glink *glink, size_t avail)
952956
return ret;
953957
}
954958

959+
static void qcom_glink_rx_read_notif(struct qcom_glink *glink)
960+
{
961+
qcom_glink_rx_advance(glink, ALIGN(sizeof(struct glink_msg), 8));
962+
qcom_glink_tx_kick(glink);
963+
}
964+
955965
static void qcom_glink_handle_intent(struct qcom_glink *glink,
956966
unsigned int cid,
957967
unsigned int count,
@@ -1022,6 +1032,8 @@ static int qcom_glink_rx_open_ack(struct qcom_glink *glink, unsigned int lcid)
10221032
{
10231033
struct glink_channel *channel;
10241034

1035+
qcom_glink_rx_advance(glink, ALIGN(sizeof(struct glink_msg), 8));
1036+
10251037
spin_lock(&glink->idr_lock);
10261038
channel = idr_find(&glink->lcids, lcid);
10271039
spin_unlock(&glink->idr_lock);
@@ -1067,6 +1079,8 @@ static void qcom_glink_handle_signals(struct qcom_glink *glink,
10671079
unsigned long flags;
10681080
bool enable;
10691081

1082+
qcom_glink_rx_advance(glink, ALIGN(sizeof(struct glink_msg), 8));
1083+
10701084
spin_lock_irqsave(&glink->idr_lock, flags);
10711085
channel = idr_find(&glink->rcids, rcid);
10721086
spin_unlock_irqrestore(&glink->idr_lock, flags);
@@ -1114,7 +1128,6 @@ void qcom_glink_native_rx(struct qcom_glink *glink)
11141128
break;
11151129
case GLINK_CMD_OPEN_ACK:
11161130
ret = qcom_glink_rx_open_ack(glink, param1);
1117-
qcom_glink_rx_advance(glink, ALIGN(sizeof(msg), 8));
11181131
break;
11191132
case GLINK_CMD_OPEN:
11201133
ret = qcom_glink_rx_defer(glink, param2);
@@ -1124,27 +1137,22 @@ void qcom_glink_native_rx(struct qcom_glink *glink)
11241137
ret = qcom_glink_rx_data(glink, avail);
11251138
break;
11261139
case GLINK_CMD_READ_NOTIF:
1127-
qcom_glink_rx_advance(glink, ALIGN(sizeof(msg), 8));
1128-
qcom_glink_tx_kick(glink);
1140+
qcom_glink_rx_read_notif(glink);
11291141
break;
11301142
case GLINK_CMD_INTENT:
11311143
qcom_glink_handle_intent(glink, param1, param2, avail);
11321144
break;
11331145
case GLINK_CMD_RX_DONE:
11341146
qcom_glink_handle_rx_done(glink, param1, param2, false);
1135-
qcom_glink_rx_advance(glink, ALIGN(sizeof(msg), 8));
11361147
break;
11371148
case GLINK_CMD_RX_DONE_W_REUSE:
11381149
qcom_glink_handle_rx_done(glink, param1, param2, true);
1139-
qcom_glink_rx_advance(glink, ALIGN(sizeof(msg), 8));
11401150
break;
11411151
case GLINK_CMD_RX_INTENT_REQ_ACK:
11421152
qcom_glink_handle_intent_req_ack(glink, param1, param2);
1143-
qcom_glink_rx_advance(glink, ALIGN(sizeof(msg), 8));
11441153
break;
11451154
case GLINK_CMD_SIGNALS:
11461155
qcom_glink_handle_signals(glink, param1, param2);
1147-
qcom_glink_rx_advance(glink, ALIGN(sizeof(msg), 8));
11481156
break;
11491157
default:
11501158
dev_err(glink->dev, "unhandled rx cmd: %d\n", cmd);

0 commit comments

Comments
 (0)