| From ff78bd6fd37efc57578fd0696f8176ade042a500 Mon Sep 17 00:00:00 2001 |
| From: Jack Morgenstein <jackm@dev.mellanox.co.il> |
| Date: Thu, 15 Nov 2018 18:05:13 +0200 |
| Subject: net/mlx4_core: Zero out lkey field in SW2HW_MPT fw command |
| |
| [ Upstream commit bd85fbc2038a1bbe84990b23ff69b6fc81a32b2c ] |
| |
| When re-registering a user mr, the mpt information for the |
| existing mr when running SRIOV is obtained via the QUERY_MPT |
| fw command. The returned information includes the mpt's lkey. |
| |
| This retrieved mpt information is used to move the mpt back |
| to hardware ownership in the rereg flow (via the SW2HW_MPT |
| fw command when running SRIOV). |
| |
| The fw API spec states that for SW2HW_MPT, the lkey field |
| must be zero. Any ConnectX-3 PF driver which checks for strict spec |
| adherence will return failure for SW2HW_MPT if the lkey field is not |
| zero (although the fw in practice ignores this field for SW2HW_MPT). |
| |
| Thus, in order to conform to the fw API spec, set the lkey field to zero |
| before invoking SW2HW_MPT when running SRIOV. |
| |
| Fixes: e630664c8383 ("mlx4_core: Add helper functions to support MR re-registration") |
| Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il> |
| Signed-off-by: Tariq Toukan <tariqt@mellanox.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/mellanox/mlx4/mr.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| diff --git a/drivers/net/ethernet/mellanox/mlx4/mr.c b/drivers/net/ethernet/mellanox/mlx4/mr.c |
| index b7cdef0aebd6..47c2f7c5703d 100644 |
| --- a/drivers/net/ethernet/mellanox/mlx4/mr.c |
| +++ b/drivers/net/ethernet/mellanox/mlx4/mr.c |
| @@ -372,6 +372,7 @@ int mlx4_mr_hw_write_mpt(struct mlx4_dev *dev, struct mlx4_mr *mmr, |
| container_of((void *)mpt_entry, struct mlx4_cmd_mailbox, |
| buf); |
| |
| + (*mpt_entry)->lkey = 0; |
| err = mlx4_SW2HW_MPT(dev, mailbox, key); |
| } |
| |
| -- |
| 2.19.1 |
| |