From: David Mosberger-Tang Date: Wed, 7 Feb 2024 05:07:42 +0000 (+0000) Subject: wifi: wilc1000: correct CRC7 calculation X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=c08a986344a5eb80ae3651f33d0f386cd9e97252;p=linux.git wifi: wilc1000: correct CRC7 calculation Document ATWILC1000/ATWILC3000 Baremetal Wi-Fi/BLE Link Controller Software Design Guide https://tinyurl.com/yer2xhyc says that bit 0 of the CRC7 code must always be a 1. I confirmed that today with a logic analyzer: setting bit 0 causes wilc1000 to accept a command with CRC7 enabled, whereas clearing bit 0 causes wilc1000 to reject the command with a CRC error. Signed-off-by: David Mosberger-Tang Signed-off-by: Kalle Valo Link: https://msgid.link/20240207050736.2717641-1-davidm@egauge.net --- diff --git a/drivers/net/wireless/microchip/wilc1000/spi.c b/drivers/net/wireless/microchip/wilc1000/spi.c index eaf4dda9c5403..c92ee4b73a744 100644 --- a/drivers/net/wireless/microchip/wilc1000/spi.c +++ b/drivers/net/wireless/microchip/wilc1000/spi.c @@ -473,7 +473,7 @@ static int spi_data_write(struct wilc *wilc, u8 *b, u32 sz) ********************************************/ static u8 wilc_get_crc7(u8 *buffer, u32 len) { - return crc7_be(0xfe, buffer, len); + return crc7_be(0xfe, buffer, len) | 0x01; } static int wilc_spi_single_read(struct wilc *wilc, u8 cmd, u32 adr, void *b,