summaryrefslogtreecommitdiffstats
path: root/include/linux/qed/qed_rdma_if.h
diff options
context:
space:
mode:
authorKalderon, Michal <Michal.Kalderon@cavium.com>2017-07-02 10:29:28 +0300
committerDavid S. Miller <davem@davemloft.net>2017-07-03 01:43:45 -0700
commit4b0fdd7c8b757125ac7996617d914bbdb9e0348c (patch)
treea9f8b3b7a6fa959273450957bb4210ab251c9857 /include/linux/qed/qed_rdma_if.h
parent456a584947d5b92d5e5a62cc68125ab5f150aa8c (diff)
downloadlinux-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.h26
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);