From: Alexander H Duyck <alexander.duyck@gmail.com>
To: Jeremy Kerr <jk@codeconstruct.com.au>, netdev@vger.kernel.org
Cc: Matt Johnston <matt@codeconstruct.com.au>,
"David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>,
Harsh Tyagi <harshtya@google.com>
Subject: Re: [PATCH net] mctp: serial: Fix starting value for frame check sequence
Date: Fri, 16 Dec 2022 08:41:30 -0800 [thread overview]
Message-ID: <2eecaca2d1066d51d136a8d95b5cd2fd19e5e111.camel@gmail.com> (raw)
In-Reply-To: <20221216034409.27174-1-jk@codeconstruct.com.au>
On Fri, 2022-12-16 at 11:44 +0800, Jeremy Kerr wrote:
> 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: a0c2ccd9b5ad ("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>
> ---
> drivers/net/mctp/mctp-serial.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/mctp/mctp-serial.c b/drivers/net/mctp/mctp-serial.c
> index 7cd103fd34ef..9f9eaf896047 100644
> --- a/drivers/net/mctp/mctp-serial.c
> +++ b/drivers/net/mctp/mctp-serial.c
> @@ -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;
> }
Since the starting value isn't unique would it possibly be worthwhile
to look at adding a define to include/linux/crc-ccitt.h to be used to
handle the cases where the initial value is 0xffff? I notice there
seems to only be two starting values 0 and 0xffff for all callers so it
might make sense to centralize it in one place.
Otherwise the code itself looks good.
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
next prev parent reply other threads:[~2022-12-16 16:44 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-16 3:44 [PATCH net] mctp: serial: Fix starting value for frame check sequence Jeremy Kerr
2022-12-16 16:41 ` Alexander H Duyck [this message]
2022-12-17 6:44 ` Jeremy Kerr
2022-12-17 20:59 ` Alexander Duyck
2022-12-18 1:32 ` Jeremy Kerr
2022-12-19 12:50 ` patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2eecaca2d1066d51d136a8d95b5cd2fd19e5e111.camel@gmail.com \
--to=alexander.duyck@gmail.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=harshtya@google.com \
--cc=jk@codeconstruct.com.au \
--cc=kuba@kernel.org \
--cc=matt@codeconstruct.com.au \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.