Message ID | 20240603051732.3334571-1-Shivasagar.Myana@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [QEMU,v3,1/1] hw/net/can/xlnx-versal-canfd: Fix sorting of the tx queue | expand |
On Mon, 3 Jun 2024 at 06:17, Shiva sagar Myana <Shivasagar.Myana@amd.com> wrote: > > Returning an uint32_t casted to a gint from g_cmp_ids causes the tx queue to > become wrongly sorted when executing g_slist_sort. Fix this by always > returning -1 or 1 from g_cmp_ids based on the ID comparison instead. > Also, if two message IDs are the same, sort them by using their index and > transmit the message at the lowest index first. > > Signed-off-by: Shiva sagar Myana <Shivasagar.Myana@amd.com> > Reviewed-by: Francisco Iglesias <francisco.iglesias@amd.com> > --- > Changelog: > v1 -> v2 : subject line is modified. > v2 -> v3 : subject line is modified from "[QEMU][master][PATCH" to > "[QEMU][PATCH". The usual prefix is just "[PATCH]" (with optional 'vX' etc); it's implicit that it's a QEMU patch because you sent it to the QEMU mailing lists. But you didn't need to respin just for that -- the patch application tools strip off all the [] prefixes regardless. Applied to target-arm.next, thanks. -- PMM
diff --git a/hw/net/can/xlnx-versal-canfd.c b/hw/net/can/xlnx-versal-canfd.c index 47a14cfe63..5f083c21e9 100644 --- a/hw/net/can/xlnx-versal-canfd.c +++ b/hw/net/can/xlnx-versal-canfd.c @@ -1312,7 +1312,10 @@ static gint g_cmp_ids(gconstpointer data1, gconstpointer data2) tx_ready_reg_info *tx_reg_1 = (tx_ready_reg_info *) data1; tx_ready_reg_info *tx_reg_2 = (tx_ready_reg_info *) data2; - return tx_reg_1->can_id - tx_reg_2->can_id; + if (tx_reg_1->can_id == tx_reg_2->can_id) { + return (tx_reg_1->reg_num < tx_reg_2->reg_num) ? -1 : 1; + } + return (tx_reg_1->can_id < tx_reg_2->can_id) ? -1 : 1; } static void free_list(GSList *list)