mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-03-16 12:14:06 +00:00
mctp: serial: Fix starting value for frame check sequence
RFC1662 defines the start state for the crc16 FCS to be 0xffff, but
we're currently starting at zero.
This change uses the correct start state. We're only early in the
adoption for the serial binding, so there aren't yet any other users to
interface to.
Fixes: a0c2ccd9b5
("mctp: Add MCTP-over-serial transport binding")
Reported-by: Harsh Tyagi <harshtya@google.com>
Tested-by: Harsh Tyagi <harshtya@google.com>
Signed-off-by: Jeremy Kerr <jk@codeconstruct.com.au>
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1b0c84a32e
commit
2856a62762
1 changed files with 4 additions and 2 deletions
|
@ -35,6 +35,8 @@
|
|||
#define BYTE_FRAME 0x7e
|
||||
#define BYTE_ESC 0x7d
|
||||
|
||||
#define FCS_INIT 0xffff
|
||||
|
||||
static DEFINE_IDA(mctp_serial_ida);
|
||||
|
||||
enum mctp_serial_state {
|
||||
|
@ -123,7 +125,7 @@ static void mctp_serial_tx_work(struct work_struct *work)
|
|||
buf[2] = dev->txlen;
|
||||
|
||||
if (!dev->txpos)
|
||||
dev->txfcs = crc_ccitt(0, buf + 1, 2);
|
||||
dev->txfcs = crc_ccitt(FCS_INIT, buf + 1, 2);
|
||||
|
||||
txlen = write_chunk(dev, buf + dev->txpos, 3 - dev->txpos);
|
||||
if (txlen <= 0) {
|
||||
|
@ -303,7 +305,7 @@ static void mctp_serial_push_header(struct mctp_serial *dev, unsigned char c)
|
|||
case 1:
|
||||
if (c == MCTP_SERIAL_VERSION) {
|
||||
dev->rxpos++;
|
||||
dev->rxfcs = crc_ccitt_byte(0, c);
|
||||
dev->rxfcs = crc_ccitt_byte(FCS_INIT, c);
|
||||
} else {
|
||||
dev->rxstate = STATE_ERR;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue