[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 70/71] hw/net/can/sja1000: fix bug for single acceptance filter an
From: |
Philippe Mathieu-Daudé |
Subject: |
[PULL 70/71] hw/net/can/sja1000: fix bug for single acceptance filter and standard frame |
Date: |
Fri, 5 Jan 2024 16:43:03 +0100 |
From: Pavel Pisa <pisa@cmp.felk.cvut.cz>
A CAN sja1000 standard frame filter mask has been computed and applied
incorrectly for standard frames when single Acceptance Filter Mode
(MOD_AFM = 1) has been selected. The problem has not been found
by Linux kernel testing because it uses dual filter mode (MOD_AFM = 0)
and leaves falters fully open.
The problem has been noticed by Grant Ramsay when testing with Zephyr
RTOS which uses single filter mode.
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Reported-by: Grant Ramsay <gramsay@enphaseenergy.com>
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2028
Fixes: 733210e754 ("hw/net/can: SJA1000 chip register level emulation")
Message-ID: <20240103231426.5685-1-pisa@fel.cvut.cz>
---
hw/net/can/can_sja1000.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/net/can/can_sja1000.c b/hw/net/can/can_sja1000.c
index 1165d59824..6694d7bfd8 100644
--- a/hw/net/can/can_sja1000.c
+++ b/hw/net/can/can_sja1000.c
@@ -108,7 +108,7 @@ void can_sja_single_filter(struct qemu_can_filter *filter,
}
filter->can_mask = (uint32_t)amr[0] << 3;
- filter->can_mask |= (uint32_t)amr[1] << 5;
+ filter->can_mask |= (uint32_t)amr[1] >> 5;
filter->can_mask = ~filter->can_mask & QEMU_CAN_SFF_MASK;
if (!(amr[1] & 0x10)) {
filter->can_mask |= QEMU_CAN_RTR_FLAG;
--
2.41.0
- [PULL 59/71] backends: Have HostMemoryBackendClass::alloc() handler return a boolean, (continued)
- [PULL 59/71] backends: Have HostMemoryBackendClass::alloc() handler return a boolean, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 61/71] util/oslib: Have qemu_prealloc_mem() handler return a boolean, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 62/71] misc: Simplify qemu_prealloc_mem() calls, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 63/71] hw: Simplify memory_region_init_ram() calls, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 64/71] hw/arm: Simplify memory_region_init_rom() calls, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 66/71] hw/misc: Simplify memory_region_init_ram_from_fd() calls, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 67/71] hw/nvram: Simplify memory_region_init_rom_device() calls, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 65/71] hw/sparc: Simplify memory_region_init_ram_nomigrate() calls, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 68/71] hw/pci-host/raven: Propagate error in raven_realize(), Philippe Mathieu-Daudé, 2024/01/05
- [PULL 69/71] hw/m68k/mcf5206: Embed m5206_timer_state in m5206_mbar_state, Philippe Mathieu-Daudé, 2024/01/05
- [PULL 70/71] hw/net/can/sja1000: fix bug for single acceptance filter and standard frame,
Philippe Mathieu-Daudé <=
- [PULL 71/71] target/sparc: Simplify qemu_irq_ack, Philippe Mathieu-Daudé, 2024/01/05
- Re: [PULL 00/71] HW core patches for 2024-01-05, Philippe Mathieu-Daudé, 2024/01/05