wrong CRC calculated in ADIS16495

Hello

Above image has all burst read data and 16 and 17 index has CRC values. Adis16495 has an example , when i calculate that data i got right CRC and when i calculate above image data i am getting wrong calculated CRC.  

  • And i am using below function to calculate CRC. From this i getting right CRC if i take example data which is present ADIS16495 datasheet. If i calculate above image data i am getting wrong calculated CRC.

    uint32_t rc_crc32(uint32_t crc, const char *buf, size_t len)
    {
    static uint32_t table[256];
    static int have_table = 0;
    uint32_t rem;
    uint8_t octet;
    int i, j;
    const char *p, *q;

    /* This check is not thread safe; there is no mutex. */
    if (have_table == 0) {
    /* Calculate CRC table. */
    for (i = 0; i < 256; i++) {
    rem = i; /* remainder from polynomial division */
    for (j = 0; j < 8; j++) {
    if (rem & 1) {
    rem >>= 1;
    rem ^= 0xedb88320;
    } else
    rem >>= 1;
    }
    table[i] = rem;
    }
    have_table = 1;
    }

    crc = ~crc;
    q = buf + len;
    for (p = buf; p < q; p++) {
    octet = *p; /* Cast to unsigned octet. */
    crc = (crc >> 8) ^ table[(crc & 0xff) ^ octet];
    }
    return ~crc;
    }