The convolution filter used for mipmap generation generally produces normals that are not unit length. The following method allows you to do that:
Normal map mipmaps are generated by filtering previous normal map levels. After filtering the resulting normals are generally unit length. By default, these normals are re-normalized, but you can chose to left them unnormalized with the following method: