Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/net/generic/net_checksum.c

    rccca251 r8d601db  
    4848 *
    4949 * @param[in] sum       Computed checksum.
    50  * @return              Compacted computed checksum to the 16 bits.
     50 * @returns             Compacted computed checksum to the 16 bits.
    5151 */
    5252uint16_t compact_checksum(uint32_t sum)
    5353{
    54         /* Shorten to the 16 bits */
     54        // shorten to the 16 bits
    5555        while (sum >> 16)
    5656                sum = (sum & 0xffff) + (sum >> 16);
     
    6666 * @param[in] data      Pointer to the beginning of data to process.
    6767 * @param[in] length    Length of the data in bytes.
    68  * @return              The computed checksum of the length bytes of the data.
     68 * @returns             The computed checksum of the length bytes of the data.
    6969 */
    7070uint32_t compute_checksum(uint32_t seed, uint8_t *data, size_t length)
     
    7272        size_t index;
    7373
    74         /* Sum all the 16 bit fields */
     74        // sum all the 16 bit fields
    7575        for (index = 0; index + 1 < length; index += 2)
    7676                seed += (data[index] << 8) + data[index + 1];
    7777
    78         /* Last odd byte with zero padding */
     78        // last odd byte with zero padding
    7979        if (index + 1 == length)
    8080                seed += data[index] << 8;
     
    8888 * @param[in] data      Pointer to the beginning of data to process.
    8989 * @param[in] length    Length of the data in bits.
    90  * @return              The computed CRC32 of the length bits of the data.
     90 * @returns             The computed CRC32 of the length bits of the data.
    9191 */
    9292uint32_t compute_crc32_be(uint32_t seed, uint8_t * data, size_t length)
     
    9494        size_t index;
    9595
    96         /* Process full bytes */
     96        // process full bytes
    9797        while (length >= 8) {
    98                 /* Add the data */
     98                // add the data
    9999                seed ^= (*data) << 24;
    100100               
    101                 /* For each added bit */
     101                // for each added bit
    102102                for (index = 0; index < 8; ++index) {
    103                         /* If the first bit is set */
     103                        // if the first bit is set
    104104                        if (seed & 0x80000000) {
    105                                 /* Shift and divide the checksum */
     105                                // shift and divide the checksum
    106106                                seed = (seed << 1) ^ ((uint32_t) CRC_DIVIDER_BE);
    107107                        } else {
    108                                 /* Shift otherwise */
     108                                // shift otherwise
    109109                                seed <<= 1;
    110110                        }
    111111                }
    112112               
    113                 /* Move to the next byte */
     113                // move to the next byte
    114114                ++data;
    115115                length -= 8;
    116116        }
    117117
    118         /* Process the odd bits */
     118        // process the odd bits
    119119        if (length > 0) {
    120                 /* Add the data with zero padding */
     120                // add the data with zero padding
    121121                seed ^= ((*data) & (0xff << (8 - length))) << 24;
    122122               
    123                 /* For each added bit */
     123                // for each added bit
    124124                for (index = 0; index < length; ++index) {
    125                         /* If the first bit is set */
     125                        // if the first bit is set
    126126                        if (seed & 0x80000000) {
    127                                 /* Shift and divide the checksum */
     127                                // shift and divide the checksum
    128128                                seed = (seed << 1) ^ ((uint32_t) CRC_DIVIDER_BE);
    129129                        } else {
    130                                 /* Shift otherwise */
     130                                // shift otherwise
    131131                                seed <<= 1;
    132132                        }
     
    142142 * @param[in] data      Pointer to the beginning of data to process.
    143143 * @param[in] length    Length of the data in bits.
    144  * @return              The computed CRC32 of the length bits of the data.
     144 * @returns             The computed CRC32 of the length bits of the data.
    145145 */
    146146uint32_t compute_crc32_le(uint32_t seed, uint8_t * data, size_t length)
     
    148148        size_t index;
    149149
    150         /* Process full bytes */
     150        // process full bytes
    151151        while (length >= 8) {
    152                 /* Add the data */
     152                // add the data
    153153                seed ^= (*data);
    154154               
    155                 /* For each added bit */
     155                // for each added bit
    156156                for (index = 0; index < 8; ++index) {
    157                         /* If the last bit is set */
     157                        // if the last bit is set
    158158                        if (seed & 1) {
    159                                 /* Shift and divide the checksum */
     159                                // shift and divide the checksum
    160160                                seed = (seed >> 1) ^ ((uint32_t) CRC_DIVIDER_LE);
    161161                        } else {
    162                                 /* Shift otherwise */
     162                                // shift otherwise
    163163                                seed >>= 1;
    164164                        }
    165165                }
    166166               
    167                 /* Move to the next byte */
     167                // move to the next byte
    168168                ++data;
    169169                length -= 8;
    170170        }
    171171
    172         /* Process the odd bits */
     172        // process the odd bits
    173173        if (length > 0) {
    174                 /* Add the data with zero padding */
     174                // add the data with zero padding
    175175                seed ^= (*data) >> (8 - length);
    176176               
    177177                for (index = 0; index < length; ++index) {
    178                         /* If the last bit is set */
     178                        // if the last bit is set
    179179                        if (seed & 1) {
    180                                 /* Shift and divide the checksum */
     180                                // shift and divide the checksum
    181181                                seed = (seed >> 1) ^ ((uint32_t) CRC_DIVIDER_LE);
    182182                        } else {
    183                                 /* Shift otherwise */
     183                                // shift otherwise
    184184                                seed >>= 1;
    185185                        }
     
    193193 *
    194194 * @param[in] checksum  The computed checksum.
    195  * @return              The internet protocol header checksum.
    196  * @return              0xFFFF if the computed checksum is zero.
     195 * @returns             The internet protocol header checksum.
     196 * @returns             0xFFFF if the computed checksum is zero.
    197197 */
    198198uint16_t flip_checksum(uint16_t checksum)
    199199{
    200         /* Flip, zero is returned as 0xFFFF (not flipped) */
     200        // flip, zero is returned as 0xFFFF (not flipped)
    201201        checksum = ~checksum;
    202202        return checksum ? checksum : IP_CHECKSUM_ZERO;
     
    211211 * @param[in] data      The header data.
    212212 * @param[in] length    The header length in bytes.
    213  * @return              The internet protocol header checksum.
    214  * @return              0xFFFF if the computed checksum is zero.
     213 * @returns             The internet protocol header checksum.
     214 * @returns             0xFFFF if the computed checksum is zero.
    215215 */
    216216uint16_t ip_checksum(uint8_t *data, size_t length)
    217217{
    218         /* Compute, compact and flip the data checksum */
     218        // compute, compact and flip the data checksum
    219219        return flip_checksum(compact_checksum(compute_checksum(0, data,
    220220            length)));
Note: See TracChangeset for help on using the changeset viewer.