summaryrefslogtreecommitdiff
path: root/cesar/hle/src
diff options
context:
space:
mode:
authorschodet2010-04-21 12:56:00 +0000
committerschodet2010-04-21 12:56:00 +0000
commit39ff255830b19a31232af37964a90a5f8aca58f6 (patch)
tree34e9a80ffa81976b2edc8eff8b348d3837c65974 /cesar/hle/src
parentf6f5d2a48257397f8a50af0ccb9efff6a673d366 (diff)
cesar/hal/hle: reserve space in RX mailbox for SEND_DONE, refs #1418
git-svn-id: svn+ssh://pessac/svn/cesar/trunk@6949 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cesar/hle/src')
-rw-r--r--cesar/hle/src/hle.c14
-rw-r--r--cesar/hle/src/trace.c1
2 files changed, 13 insertions, 2 deletions
diff --git a/cesar/hle/src/hle.c b/cesar/hle/src/hle.c
index 9f29a60908..11cd468faf 100644
--- a/cesar/hle/src/hle.c
+++ b/cesar/hle/src/hle.c
@@ -179,7 +179,12 @@ void hle_data_recv (hle_t *ctx, u8 *buffer, uint length)
word[1] = (uint) buffer;
- ipmbox_tx (ctx->ipmbox, word, 2);
+ if (!ipmbox_tx_try (ctx->ipmbox, word, 2))
+ {
+ /* Can not transmit message, drop and reuse buffer. */
+ HLE_TRACE (DROP);
+ cl_data_buffer_add (ctx->cl, buffer);
+ }
}
/**
@@ -250,7 +255,12 @@ void hle_mme_recv (hle_t *ctx, u8 *buffer, uint length)
(PARAM_MSG_LENGTH, length));
word[1] = (uint) buffer;
- ipmbox_tx (ctx->ipmbox, word, 2);
+ if (!ipmbox_tx_try (ctx->ipmbox, word, 2))
+ {
+ /* Can not transmit message, drop and reuse buffer. */
+ HLE_TRACE (DROP);
+ cl_mme_buffer_add (ctx->cl, buffer);
+ }
}
/**
diff --git a/cesar/hle/src/trace.c b/cesar/hle/src/trace.c
index 0945e876b4..d5e3656887 100644
--- a/cesar/hle/src/trace.c
+++ b/cesar/hle/src/trace.c
@@ -38,6 +38,7 @@ hle_trace_init (hle_t *ctx)
TRACE_EVENT (HLE_TRACE_MME_RECV, "HLE_MME_RECV length : %d, buffer @ : %x", TIMESTAMP),
TRACE_EVENT (HLE_TRACE_IPMBOX, "HLE_IPMBOX_ACTIVATE avctive : %d", TIMESTAMP),
TRACE_EVENT (HLE_TRACE_DROPPED, "HLE_MSG DROPPED data: %d, length: %d, buffer: %x", TIMESTAMP),
+ TRACE_EVENT (HLE_TRACE_DROP, "DROP"),
};
dbg_assert (ctx);
trace_namespace_init (&namespace, event_ids, COUNT (event_ids));