IB/hns: add self loopback for CM
This patch mainly adds self loopback support for CM. Signed-off-by: Lijun Ou <oulijun@huawei.com> Signed-off-by: Peter Chen <luck.chen@huawei.com> Reviewed-by: Wei Hu (Xavier) <xavier.huwei@huawei.com> Signed-off-by: Salil Mehta <salil.mehta@huawei.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
Родитель
8d497eb0f3
Коммит
543bfe6c3c
|
@ -32,6 +32,7 @@
|
||||||
|
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/acpi.h>
|
#include <linux/acpi.h>
|
||||||
|
#include <linux/etherdevice.h>
|
||||||
#include <rdma/ib_umem.h>
|
#include <rdma/ib_umem.h>
|
||||||
#include "hns_roce_common.h"
|
#include "hns_roce_common.h"
|
||||||
#include "hns_roce_device.h"
|
#include "hns_roce_device.h"
|
||||||
|
@ -72,6 +73,8 @@ int hns_roce_v1_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
|
||||||
int nreq = 0;
|
int nreq = 0;
|
||||||
u32 ind = 0;
|
u32 ind = 0;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
u8 *smac;
|
||||||
|
int loopback;
|
||||||
|
|
||||||
if (unlikely(ibqp->qp_type != IB_QPT_GSI &&
|
if (unlikely(ibqp->qp_type != IB_QPT_GSI &&
|
||||||
ibqp->qp_type != IB_QPT_RC)) {
|
ibqp->qp_type != IB_QPT_RC)) {
|
||||||
|
@ -129,6 +132,14 @@ int hns_roce_v1_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
|
||||||
UD_SEND_WQE_U32_8_DMAC_5_M,
|
UD_SEND_WQE_U32_8_DMAC_5_M,
|
||||||
UD_SEND_WQE_U32_8_DMAC_5_S,
|
UD_SEND_WQE_U32_8_DMAC_5_S,
|
||||||
ah->av.mac[5]);
|
ah->av.mac[5]);
|
||||||
|
|
||||||
|
smac = (u8 *)hr_dev->dev_addr[qp->port];
|
||||||
|
loopback = ether_addr_equal_unaligned(ah->av.mac,
|
||||||
|
smac) ? 1 : 0;
|
||||||
|
roce_set_bit(ud_sq_wqe->u32_8,
|
||||||
|
UD_SEND_WQE_U32_8_LOOPBACK_INDICATOR_S,
|
||||||
|
loopback);
|
||||||
|
|
||||||
roce_set_field(ud_sq_wqe->u32_8,
|
roce_set_field(ud_sq_wqe->u32_8,
|
||||||
UD_SEND_WQE_U32_8_OPERATION_TYPE_M,
|
UD_SEND_WQE_U32_8_OPERATION_TYPE_M,
|
||||||
UD_SEND_WQE_U32_8_OPERATION_TYPE_S,
|
UD_SEND_WQE_U32_8_OPERATION_TYPE_S,
|
||||||
|
|
|
@ -440,6 +440,8 @@ struct hns_roce_ud_send_wqe {
|
||||||
#define UD_SEND_WQE_U32_8_DMAC_5_M \
|
#define UD_SEND_WQE_U32_8_DMAC_5_M \
|
||||||
(((1UL << 8) - 1) << UD_SEND_WQE_U32_8_DMAC_5_S)
|
(((1UL << 8) - 1) << UD_SEND_WQE_U32_8_DMAC_5_S)
|
||||||
|
|
||||||
|
#define UD_SEND_WQE_U32_8_LOOPBACK_INDICATOR_S 22
|
||||||
|
|
||||||
#define UD_SEND_WQE_U32_8_OPERATION_TYPE_S 16
|
#define UD_SEND_WQE_U32_8_OPERATION_TYPE_S 16
|
||||||
#define UD_SEND_WQE_U32_8_OPERATION_TYPE_M \
|
#define UD_SEND_WQE_U32_8_OPERATION_TYPE_M \
|
||||||
(((1UL << 4) - 1) << UD_SEND_WQE_U32_8_OPERATION_TYPE_S)
|
(((1UL << 4) - 1) << UD_SEND_WQE_U32_8_OPERATION_TYPE_S)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче