It's a tough one for me but this is what I found in my military dictionary:
There is a staff officer and an engineer officer. Major General is a rank in the US army, marines and air force (GB has Air Vice Marshal in the air force). Given this, I would say "engineer staff officer, Major General John Smith". The first part is just a desctiption, the second gives the very
I vote for 'Major General' as his rank/title. The rest is extra information. The way Miche has put it seems reasonable to me, or 'Major General John Smith, engineer staff officer'.