On 06/15/2011 02:09 PM, Arend van Spriel wrote:
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);
Obviously this should have proper cast here so: (u8 *)&val
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