what does HeaderSize mean?

Hi dear all,
In my understanding , what we get from NDIS_GET_PACKET_HEADER_SIZE is
the lower packet header size. i.e. If the upper layer set this field
to zero , that means the upper layer have filled the packet header ,
the lower layer should not fill it . For example , the ARP packets
passed down from tcpip protocol layer always set header size to zero ,
and it proved that the packets is filled with the ether frame header.
So if header size is not zero , the lower layer should fill it. Is
this description correct ? Many thanks .