@@ -31,6 +31,7 @@ TI_TEST_BASE = "\
linuxptp \
lmbench \
lsof \
+ mcrc64 \
media-ctl \
memtester \
mstpd \
new file mode 100644
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2025 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of Texas Instruments Incorporated nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+*/
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/socket.h>
+#include <linux/if_alg.h>
+#include <string.h>
+
+#define BUFFER_SIZE 4096
+#define SECTOR 4096
+
+int main (int argc, char **argv) {
+
+ int desc[2] = { -1, -1 };
+
+ struct sockaddr_alg sock = {
+ .salg_family = AF_ALG,
+ .salg_type = "hash",
+ .salg_name = "crc64-iso3309"
+ };
+
+ if ((desc[0] = socket(AF_ALG, SOCK_SEQPACKET, 0)) == -1 ) {
+ perror("socket");
+ return -1;
+ }
+
+ if( bind(desc[0], (struct sockaddr *) &sock, sizeof(sock)) != 0 ) {
+ perror("bind");
+ return -1;
+ }
+
+ if( (desc[1] = accept(desc[0], NULL, 0)) == -1 )
+ return -1;
+
+ if (argc != 2 || strlen(argv[1]) == 0) {
+ printf("Please specify filename\n");
+ return -1; // empty string
+ }
+
+ FILE* file;
+ unsigned char *buffer;
+ if(posix_memalign((void *)&buffer, SECTOR, BUFFER_SIZE)) {
+ perror("posix_memalign failed");
+ return -1;
+ }
+
+ file = fopen(argv[1], "rb");
+ if(file == NULL)
+ {
+ printf("An error occured while opening file: %s\n", argv[1]);
+ free(buffer);
+ return -1;
+ }
+
+ while(!feof(file))
+ {
+ unsigned int count = fread(buffer, sizeof(char), BUFFER_SIZE, file);
+ if(ferror(file))
+ {
+ printf("An error occurred while accessing the file: %s\n", argv[1]);
+ fclose(file);
+ free(buffer);
+ return -1;
+ }
+
+ if (send(desc[1], buffer, count, MSG_MORE) != count) {
+ free(buffer);
+ return -1;
+ }
+ }
+
+ long int crc64 = 0x0000000000000000;
+ if(read(desc[1], &crc64, 8) != 8) {
+ free(buffer);
+ return -1;
+ }
+
+ printf("0x%llx\n", crc64);
+ free(buffer);
+ return 0;
+}
new file mode 100644
@@ -0,0 +1,18 @@
+SUMMARY = "Application to test MCRC64 driver"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://mcrc64.c;beginline=1;endline=33;md5=070547e79367134fcfdf7fdb5e3ef7e3"
+
+SRC_URI = "file://mcrc64.c"
+
+S = "${WORKDIR}/sources"
+UNPACKDIR = "${S}"
+
+do_compile() {
+ ${CC} ${CFLAGS} ${LDFLAGS} ${UNPACKDIR}/mcrc64.c -o mcrc64
+}
+
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 mcrc64 ${D}${bindir}
+}