]> rtime.felk.cvut.cz Git - linux-lin.git/commitdiff
Update response checksum calculation for kernel code too.
authorPavel Pisa <pisa@cmp.felk.cvut.cz>
Fri, 25 Nov 2011 01:58:41 +0000 (02:58 +0100)
committerPavel Pisa <pisa@cmp.felk.cvut.cz>
Fri, 25 Nov 2011 01:58:41 +0000 (02:58 +0100)
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
sllin/sllin.c

index 497e3e28fcf71ff44607fe3b66ef74eeb9f8342f..011743ec5992d2714c6f1577f0424802487b38bb 100644 (file)
@@ -479,10 +479,22 @@ int sllin_setup_msg(struct sllin *sl, int mode, int id,
        sl->tx_lim = SLLIN_BUFF_DATA;
 
        if ((data != NULL) && len) {
+               int i;
+               unsigned csum  = 0;
+
                sl->tx_lim += len;
                memcpy(sl->tx_buff + SLLIN_BUFF_DATA, data, len);
+               /* compute data parity there */
+               for (i = SLLIN_BUFF_DATA; i < sl->tx_lim; i++) {
+                       csum += sl->tx_buff[i];
+                       if (csum > 255)
+                               csum -= 255;
+               }
+
+               sl->tx_buff[sl->tx_lim++] = csum;
        }
-       sl->rx_lim += len;
+       if (len != 0)
+               sl->rx_lim += len + 1;
 
        return 0;
 }