Merge tag 'erofs-for-5.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang...
[linux-2.6-microblaze.git] / drivers / infiniband / hw / efa / efa_com_cmd.c
index 6ac2362..f752ef6 100644 (file)
@@ -76,6 +76,7 @@ int efa_com_modify_qp(struct efa_com_dev *edev,
        cmd.qkey = params->qkey;
        cmd.sq_psn = params->sq_psn;
        cmd.sq_drained_async_notify = params->sq_drained_async_notify;
+       cmd.rnr_retry = params->rnr_retry;
 
        err = efa_com_cmd_exec(aq,
                               (struct efa_admin_aq_entry *)&cmd,
@@ -121,6 +122,7 @@ int efa_com_query_qp(struct efa_com_dev *edev,
        result->qkey = resp.qkey;
        result->sq_draining = resp.sq_draining;
        result->sq_psn = resp.sq_psn;
+       result->rnr_retry = resp.rnr_retry;
 
        return 0;
 }
@@ -750,11 +752,27 @@ int efa_com_get_stats(struct efa_com_dev *edev,
                return err;
        }
 
-       result->basic_stats.tx_bytes = resp.basic_stats.tx_bytes;
-       result->basic_stats.tx_pkts = resp.basic_stats.tx_pkts;
-       result->basic_stats.rx_bytes = resp.basic_stats.rx_bytes;
-       result->basic_stats.rx_pkts = resp.basic_stats.rx_pkts;
-       result->basic_stats.rx_drops = resp.basic_stats.rx_drops;
+       switch (cmd.type) {
+       case EFA_ADMIN_GET_STATS_TYPE_BASIC:
+               result->basic_stats.tx_bytes = resp.u.basic_stats.tx_bytes;
+               result->basic_stats.tx_pkts = resp.u.basic_stats.tx_pkts;
+               result->basic_stats.rx_bytes = resp.u.basic_stats.rx_bytes;
+               result->basic_stats.rx_pkts = resp.u.basic_stats.rx_pkts;
+               result->basic_stats.rx_drops = resp.u.basic_stats.rx_drops;
+               break;
+       case EFA_ADMIN_GET_STATS_TYPE_MESSAGES:
+               result->messages_stats.send_bytes = resp.u.messages_stats.send_bytes;
+               result->messages_stats.send_wrs = resp.u.messages_stats.send_wrs;
+               result->messages_stats.recv_bytes = resp.u.messages_stats.recv_bytes;
+               result->messages_stats.recv_wrs = resp.u.messages_stats.recv_wrs;
+               break;
+       case EFA_ADMIN_GET_STATS_TYPE_RDMA_READ:
+               result->rdma_read_stats.read_wrs = resp.u.rdma_read_stats.read_wrs;
+               result->rdma_read_stats.read_bytes = resp.u.rdma_read_stats.read_bytes;
+               result->rdma_read_stats.read_wr_err = resp.u.rdma_read_stats.read_wr_err;
+               result->rdma_read_stats.read_resp_bytes = resp.u.rdma_read_stats.read_resp_bytes;
+               break;
+       }
 
        return 0;
 }