diff options
author | Kalderon, Michal <Michal.Kalderon@cavium.com> | 2017-07-02 10:29:28 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-07-03 01:43:45 -0700 |
commit | 4b0fdd7c8b757125ac7996617d914bbdb9e0348c (patch) | |
tree | a9f8b3b7a6fa959273450957bb4210ab251c9857 /include/linux/qed/qed_rdma_if.h | |
parent | 456a584947d5b92d5e5a62cc68125ab5f150aa8c (diff) | |
download | linux-stable-4b0fdd7c8b757125ac7996617d914bbdb9e0348c.tar.gz linux-stable-4b0fdd7c8b757125ac7996617d914bbdb9e0348c.tar.bz2 linux-stable-4b0fdd7c8b757125ac7996617d914bbdb9e0348c.zip |
qed: iWARP CM add active side connect
This patch implements the active side connect.
Offload a connection, process MPA reply and send RTR.
In some of the common passive/active functions, the active side
will work in blocking mode.
Signed-off-by: Michal Kalderon <Michal.Kalderon@cavium.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
Signed-off-by: Ariel Elior <Ariel.Elior@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/qed/qed_rdma_if.h')
-rw-r--r-- | include/linux/qed/qed_rdma_if.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/include/linux/qed/qed_rdma_if.h b/include/linux/qed/qed_rdma_if.h index c4c241fe2579..e9514a69b03f 100644 --- a/include/linux/qed/qed_rdma_if.h +++ b/include/linux/qed/qed_rdma_if.h @@ -473,6 +473,8 @@ struct qed_rdma_counters_out_params { enum qed_iwarp_event_type { QED_IWARP_EVENT_MPA_REQUEST, /* Passive side request received */ QED_IWARP_EVENT_PASSIVE_COMPLETE, /* ack on mpa response */ + QED_IWARP_EVENT_ACTIVE_COMPLETE, /* Active side reply received */ + QED_IWARP_EVENT_ACTIVE_MPA_REPLY, }; enum qed_tcp_ip_version { @@ -503,6 +505,20 @@ struct qed_iwarp_cm_event_params { typedef int (*iwarp_event_handler) (void *context, struct qed_iwarp_cm_event_params *event); +struct qed_iwarp_connect_in { + iwarp_event_handler event_cb; + void *cb_context; + struct qed_rdma_qp *qp; + struct qed_iwarp_cm_info cm_info; + u16 mss; + u8 remote_mac_addr[ETH_ALEN]; + u8 local_mac_addr[ETH_ALEN]; +}; + +struct qed_iwarp_connect_out { + void *ep_context; +}; + struct qed_iwarp_listen_in { iwarp_event_handler event_cb; void *cb_context; /* passed to event_cb */ @@ -534,6 +550,10 @@ struct qed_iwarp_reject_in { u16 private_data_len; }; +struct qed_iwarp_send_rtr_in { + void *ep_context; +}; + struct qed_roce_ll2_header { void *vaddr; dma_addr_t baddr; @@ -640,6 +660,10 @@ struct qed_rdma_ops { int (*ll2_set_mac_filter)(struct qed_dev *cdev, u8 *old_mac_address, u8 *new_mac_address); + int (*iwarp_connect)(void *rdma_cxt, + struct qed_iwarp_connect_in *iparams, + struct qed_iwarp_connect_out *oparams); + int (*iwarp_create_listen)(void *rdma_cxt, struct qed_iwarp_listen_in *iparams, struct qed_iwarp_listen_out *oparams); @@ -652,6 +676,8 @@ struct qed_rdma_ops { int (*iwarp_destroy_listen)(void *rdma_cxt, void *handle); + int (*iwarp_send_rtr)(void *rdma_cxt, + struct qed_iwarp_send_rtr_in *iparams); }; const struct qed_rdma_ops *qed_get_rdma_ops(void); |