Kernel Functions for Drivers mac_hcksum_get(9F)
NAME
mac_hcksum_get, mac_hcksum_set - hardware checksumming
offload routinesSYNOPSIS
#include
void mac_hcksum_get(mblk_t *mp, uint32_t *start, uint32_t *stuff,
uint32_t *end, uint32_t *value, uint32_t *flags);
void mac_hcksum_set(mblk_t *mp, uint32_t start, uint32_t stuff,
uint32_t end, uint32_t value, uint32_t *flags);
PARAMETERS
mp pointer to a message block start offset, in bytes, from the start of the IP header to the start of the checksum span end offset, in bytes, from the start of the IP header to the end of the checksum span stuff offset, in bytes, from the start of the IP header to the checksum field in the protocol header value hardware computed checksum valueflags per-packet flags indicating the hardware checksum-
ming to be performed on outbound packets, or the hardware checksumming performed on inbound packetINTERFACE LEVEL
Solaris architecture specific (Solaris DDI)DESCRIPTION
Hardware checksumming allows the checksum computation to beoffloaded to the network device hardware for lower CPU util-
ization. Hardware checksumming capabilities are advertisedfrom the driver's mc_getcapab(9E) entry point. The descrip-
tion of mc_getcapab() also includes more information about
the expected behavior of drivers for full and partial check-
summing offload.SunOS 5.11 Last change: 26 Jul 2010 1
Kernel Functions for Drivers mac_hcksum_get(9F)
For received traffic, the hardware can enable hardware checksumming, and the network stack will know how to handle packets for which checksum computation or verification hasbeen performed. The mac_hcksum_set() function can be used
by a device driver to associate information related to the hardware checksumming performed on the packet. The flags argument can be a combination of the following:HCK_FULLCKSUM The full checksum was computed, and
is passed through the value argu-
ment.HCK_FULLCKSUM_OK The full checksum was verified in
hardware and is correct.HCK_PARTIALCKSUM Partial checksum computed and passed
through the value argument. The start and end arguments specify the checksum span.HCK_IPV4_HDRCKSUM_OK IP header checksum was verified in
hardware and is correct.HCK_PARTIALCKSUM is mutually exclusive with the
HCK_FULLCKSUM and HCK_FULLCKSUM_OK flags.
For outbound packets, hardware checksumming capabilities arequeried via the mc_getcapab() entry point. Hardware check-
summing is enabled by the network stack based on theMAC_CAPAB_HCKSUM capability. A device driver that advertised
support for this capability can subsequently receive out-
bound packets that may not have a fully computed checksum. It is the responsibility of the driver to invokemac_hcksum_get() to retrieve the per-packet hardware check-
summing metadata.HCK_FULLCKSUM Compute full checksum for this packet.
HCK_PARTIALCKSUM Compute partial 1's complement checksum
based on the start, stuff, and offset.SunOS 5.11 Last change: 26 Jul 2010 2
Kernel Functions for Drivers mac_hcksum_get(9F)
HCK_IPV4_HDRCKSUM Compute the IP header checksum.
HCK_PARTIALCKSUM is mutually exclusive with HCK_FULLCKSUM.
The flags HCK_FULLCKSUM, HCK_FULLCKSUM_OK, and
HCK_PARTIALCKSUM are used for both IPv4 and IPv6 packets.
The driver advertises support for IPv4 and/or IPv6 full checksumming during capability negotiation. Seemc_getcapab(9E).
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Availability | SUNWhea ||_____________________________|_____________________________|
| Interface Stability | Committed ||_____________________________|_____________________________|
SEE ALSO
attributes(5), mac(9E)SunOS 5.11 Last change: 26 Jul 2010 3