Question about inner tcp csum calculation

I used ConnectX-3 Pro(Model No CX312B) to send geneve packet

when send geneve pkt with no option(geneve headlen is same as vxlan), the nic can calculate inner tcp csum. but send geneve pkt with option(headlen is longer than vxlan), the nic does not calculate inner tcp csum.

I think the nic does not know the offset of inner tcp head,

How does the nic get the inner tcp head offset? Is setting by driver or hardware fixed value?

If the value can be set, how can I set it?

Thanks for all the help