summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornarayan <none@none>2007-08-18 06:36:15 -0700
committernarayan <none@none>2007-08-18 06:36:15 -0700
commit332608ac9554f08178b41e86935f5eef65453071 (patch)
treeae1cd77c9d4b25c9559535f6c86681cc42b69fd6
parentf2ae7103d1ba90bbf5530ba2117bd044c29f9661 (diff)
downloadillumos-gate-332608ac9554f08178b41e86935f5eef65453071.tar.gz
6591825 ldc_read does not set qhead after processing control pkts
-rw-r--r--usr/src/uts/sun4v/io/ldc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/usr/src/uts/sun4v/io/ldc.c b/usr/src/uts/sun4v/io/ldc.c
index ca29b89108..1ff888511a 100644
--- a/usr/src/uts/sun4v/io/ldc.c
+++ b/usr/src/uts/sun4v/io/ldc.c
@@ -3689,8 +3689,9 @@ i_ldc_read_packet(ldc_chan_t *ldcp, caddr_t target_bufp, size_t *sizep)
break;
}
- /* advance head if it is a DATA ACK */
- if ((msg->type & LDC_DATA) && (msg->stype & LDC_ACK)) {
+ /* advance head if it is a CTRL packet or a DATA ACK packet */
+ if ((msg->type & LDC_CTRL) ||
+ ((msg->type & LDC_DATA) && (msg->stype & LDC_ACK))) {
/* set the queue head */
if (rv = i_ldc_set_rx_head(ldcp, curr_head)) {