Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

w1: ds2406: use crc16() instead of crc16_byte() loop

Instead of looping through each byte and calling crc16_byte(), instead
just call crc16() on the whole buffer. No functional change.

Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20250513022115.39109-2-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@google.com>

+2 -10
+2 -10
drivers/w1/slaves/w1_ds2406.c
··· 29 29 { 30 30 u8 w1_buf[6] = {W1_F12_FUNC_READ_STATUS, 7, 0, 0, 0, 0}; 31 31 struct w1_slave *sl = kobj_to_w1_slave(kobj); 32 - u16 crc = 0; 33 - int i; 34 32 ssize_t rtnval = 1; 35 33 36 34 if (off != 0) ··· 45 47 46 48 w1_write_block(sl->master, w1_buf, 3); 47 49 w1_read_block(sl->master, w1_buf+3, 3); 48 - for (i = 0; i < 6; i++) 49 - crc = crc16_byte(crc, w1_buf[i]); 50 - if (crc == 0xb001) /* good read? */ 50 + if (crc16(0, w1_buf, sizeof(w1_buf)) == 0xb001) /* good read? */ 51 51 *buf = ((w1_buf[3]>>5)&3)|0x30; 52 52 else 53 53 rtnval = -EIO; ··· 62 66 { 63 67 struct w1_slave *sl = kobj_to_w1_slave(kobj); 64 68 u8 w1_buf[6] = {W1_F12_FUNC_WRITE_STATUS, 7, 0, 0, 0, 0}; 65 - u16 crc = 0; 66 - int i; 67 69 ssize_t rtnval = 1; 68 70 69 71 if (count != 1 || off != 0) ··· 77 83 w1_buf[3] = (((*buf)&3)<<5)|0x1F; 78 84 w1_write_block(sl->master, w1_buf, 4); 79 85 w1_read_block(sl->master, w1_buf+4, 2); 80 - for (i = 0; i < 6; i++) 81 - crc = crc16_byte(crc, w1_buf[i]); 82 - if (crc == 0xb001) /* good read? */ 86 + if (crc16(0, w1_buf, sizeof(w1_buf)) == 0xb001) /* good read? */ 83 87 w1_write_8(sl->master, 0xFF); 84 88 else 85 89 rtnval = -EIO;