@@ -424,6 +424,8 @@ static void qcom_glink_handle_intent_req_ack(struct qcom_glink *glink,
424
424
struct glink_channel * channel ;
425
425
unsigned long flags ;
426
426
427
+ qcom_glink_rx_advance (glink , ALIGN (sizeof (struct glink_msg ), 8 ));
428
+
427
429
spin_lock_irqsave (& glink -> idr_lock , flags );
428
430
channel = idr_find (& glink -> rcids , cid );
429
431
spin_unlock_irqrestore (& glink -> idr_lock , flags );
@@ -745,6 +747,8 @@ static void qcom_glink_handle_rx_done(struct qcom_glink *glink,
745
747
struct glink_channel * channel ;
746
748
unsigned long flags ;
747
749
750
+ qcom_glink_rx_advance (glink , ALIGN (sizeof (struct glink_msg ), 8 ));
751
+
748
752
spin_lock_irqsave (& glink -> idr_lock , flags );
749
753
channel = idr_find (& glink -> rcids , cid );
750
754
spin_unlock_irqrestore (& glink -> idr_lock , flags );
@@ -952,6 +956,12 @@ static int qcom_glink_rx_data(struct qcom_glink *glink, size_t avail)
952
956
return ret ;
953
957
}
954
958
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
+
955
965
static void qcom_glink_handle_intent (struct qcom_glink * glink ,
956
966
unsigned int cid ,
957
967
unsigned int count ,
@@ -1022,6 +1032,8 @@ static int qcom_glink_rx_open_ack(struct qcom_glink *glink, unsigned int lcid)
1022
1032
{
1023
1033
struct glink_channel * channel ;
1024
1034
1035
+ qcom_glink_rx_advance (glink , ALIGN (sizeof (struct glink_msg ), 8 ));
1036
+
1025
1037
spin_lock (& glink -> idr_lock );
1026
1038
channel = idr_find (& glink -> lcids , lcid );
1027
1039
spin_unlock (& glink -> idr_lock );
@@ -1067,6 +1079,8 @@ static void qcom_glink_handle_signals(struct qcom_glink *glink,
1067
1079
unsigned long flags ;
1068
1080
bool enable ;
1069
1081
1082
+ qcom_glink_rx_advance (glink , ALIGN (sizeof (struct glink_msg ), 8 ));
1083
+
1070
1084
spin_lock_irqsave (& glink -> idr_lock , flags );
1071
1085
channel = idr_find (& glink -> rcids , rcid );
1072
1086
spin_unlock_irqrestore (& glink -> idr_lock , flags );
@@ -1114,7 +1128,6 @@ void qcom_glink_native_rx(struct qcom_glink *glink)
1114
1128
break ;
1115
1129
case GLINK_CMD_OPEN_ACK :
1116
1130
ret = qcom_glink_rx_open_ack (glink , param1 );
1117
- qcom_glink_rx_advance (glink , ALIGN (sizeof (msg ), 8 ));
1118
1131
break ;
1119
1132
case GLINK_CMD_OPEN :
1120
1133
ret = qcom_glink_rx_defer (glink , param2 );
@@ -1124,27 +1137,22 @@ void qcom_glink_native_rx(struct qcom_glink *glink)
1124
1137
ret = qcom_glink_rx_data (glink , avail );
1125
1138
break ;
1126
1139
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 );
1129
1141
break ;
1130
1142
case GLINK_CMD_INTENT :
1131
1143
qcom_glink_handle_intent (glink , param1 , param2 , avail );
1132
1144
break ;
1133
1145
case GLINK_CMD_RX_DONE :
1134
1146
qcom_glink_handle_rx_done (glink , param1 , param2 , false);
1135
- qcom_glink_rx_advance (glink , ALIGN (sizeof (msg ), 8 ));
1136
1147
break ;
1137
1148
case GLINK_CMD_RX_DONE_W_REUSE :
1138
1149
qcom_glink_handle_rx_done (glink , param1 , param2 , true);
1139
- qcom_glink_rx_advance (glink , ALIGN (sizeof (msg ), 8 ));
1140
1150
break ;
1141
1151
case GLINK_CMD_RX_INTENT_REQ_ACK :
1142
1152
qcom_glink_handle_intent_req_ack (glink , param1 , param2 );
1143
- qcom_glink_rx_advance (glink , ALIGN (sizeof (msg ), 8 ));
1144
1153
break ;
1145
1154
case GLINK_CMD_SIGNALS :
1146
1155
qcom_glink_handle_signals (glink , param1 , param2 );
1147
- qcom_glink_rx_advance (glink , ALIGN (sizeof (msg ), 8 ));
1148
1156
break ;
1149
1157
default :
1150
1158
dev_err (glink -> dev , "unhandled rx cmd: %d\n" , cmd );
0 commit comments