diff --git a/[refs] b/[refs] index 1419ef637612..3c82b952480a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0fabd9fb7bdc935f121e6950a2c4eff971dd4c75 +refs/heads/master: d0a9d25cdcd511dd523357bc902979220dc72a2e diff --git a/trunk/drivers/infiniband/hw/mthca/mthca_mr.c b/trunk/drivers/infiniband/hw/mthca/mthca_mr.c index 6a127a7aca57..ac3265d0bf79 100644 --- a/trunk/drivers/infiniband/hw/mthca/mthca_mr.c +++ b/trunk/drivers/infiniband/hw/mthca/mthca_mr.c @@ -198,20 +198,40 @@ static void mthca_free_mtt(struct mthca_dev *dev, u32 seg, int order, seg + (1 << order) - 1); } +static inline u32 tavor_hw_index_to_key(u32 ind) +{ + return ind; +} + +static inline u32 tavor_key_to_hw_index(u32 key) +{ + return key; +} + +static inline u32 arbel_hw_index_to_key(u32 ind) +{ + return (ind >> 24) | (ind << 8); +} + +static inline u32 arbel_key_to_hw_index(u32 key) +{ + return (key << 24) | (key >> 8); +} + static inline u32 hw_index_to_key(struct mthca_dev *dev, u32 ind) { if (dev->hca_type == ARBEL_NATIVE) - return (ind >> 24) | (ind << 8); + return arbel_hw_index_to_key(ind); else - return ind; + return tavor_hw_index_to_key(ind); } static inline u32 key_to_hw_index(struct mthca_dev *dev, u32 key) { if (dev->hca_type == ARBEL_NATIVE) - return (key << 24) | (key >> 8); + return arbel_key_to_hw_index(key); else - return key; + return tavor_key_to_hw_index(key); } int mthca_mr_alloc_notrans(struct mthca_dev *dev, u32 pd,