implement MSI-X APIs
refactor