On 06/15/2011 01:53 PM, RafaÅ MiÅecki wrote:
static u8 bcma_sprom_crc(const u16 *sprom) { - int word; - u8 crc = 0xFF; + u8 crc; + u8 sprom2[SSB_SPROMSIZE_WORDS_R4 * 2 - 1]; + u8 table[CRC8_TABLE_SIZE]; + u16 word; + /* u16 to u8 */ for (word = 0; word< SSB_SPROMSIZE_WORDS_R4 - 1; word++) { - crc = bcma_crc8(crc, sprom[word]& 0x00FF); - crc = bcma_crc8(crc, (sprom[word]& 0xFF00)>> 8); + sprom2[word * 2] = sprom[word]& 0x00FF; + sprom2[(word * 2) + 1] = (sprom[word]& 0xFF00)>> 8; } - crc = bcma_crc8(crc, sprom[SSB_SPROMSIZE_WORDS_R4 - 1]& 0x00FF); + /* 127th byte */ + sprom2[(SSB_SPROMSIZE_WORDS_R4 * 2) - 2] = + sprom[SSB_SPROMSIZE_WORDS_R4 - 1]& 0x00FF; + + /* Prepare table, 0xAB is x^8 + x^7 + x^6 + x^4 + x^2 + 1 */ + crc8_populate_lsb(table, 0xAB); + + /* Calculate */ + crc = crc8(table, sprom2, (SSB_SPROMSIZE_WORDS_R4 * 2) - 1, 0xFF); crc ^= 0xFF; return crc;
You could do (I think): crc8_populate_lsb(table, 0xAB); for (word = 0; word< SSB_SPROMSIZE_WORDS_R4; word++) { u16 val = cpu_to_le16(sprom[word]); crc = crc8(table,&val, sizeof(u16), crc); } Gr. AvS -- Almost nobody dances sober, unless they happen to be insane. -- H.P. Lovecraft -- -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html