Search Linux Wireless

Re: [RFC][WORTH IT?][PATCH] bcma: make use of crc8 lib

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 06/15/2011 08:29 PM, RafaÅ MiÅecki wrote:
W dniu 15 czerwca 2011 14:09 uÅytkownik Arend van Spriel
<arend@xxxxxxxxxxxx>  napisaÅ:
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);
}
Maybe not a perfect/optimal solution (crc8 focuses on tables, we do
double loop instead) but should work. Thanks for the tip.

Agree. In brcm80211 we convert the entire sprom, calculate, and convert it back. Also not perfect I think as it loops over de sprom data twice.

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


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux