]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: ionic: Update LIF identity with additional RDMA capabilities
authorAbhijit Gangurde <abhijit.gangurde@amd.com>
Wed, 3 Sep 2025 06:15:54 +0000 (11:45 +0530)
committerLeon Romanovsky <leon@kernel.org>
Thu, 11 Sep 2025 06:18:35 +0000 (02:18 -0400)
Firmware sends the RDMA capability in a response for LIF_IDENTIFY
device command. Update the LIF indentify with additional RDMA
capabilities used by driver and firmware.

Reviewed-by: Shannon Nelson <shannon.nelson@amd.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Abhijit Gangurde <abhijit.gangurde@amd.com>
Link: https://patch.msgid.link/20250903061606.4139957-3-abhijit.gangurde@amd.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/net/ethernet/pensando/ionic/ionic_if.h

index 9886cd66ce6864b0113941dae7480c1a320f3f41..77c3dc188264b869037676daab4db4c28b5bc59d 100644 (file)
@@ -494,6 +494,16 @@ union ionic_lif_config {
        __le32 words[64];
 };
 
+/**
+ * enum ionic_lif_rdma_cap_stats - LIF stat type
+ * @IONIC_LIF_RDMA_STAT_GLOBAL:     Global stats
+ * @IONIC_LIF_RDMA_STAT_QP:         Queue pair stats
+ */
+enum ionic_lif_rdma_cap_stats {
+       IONIC_LIF_RDMA_STAT_GLOBAL = BIT(0),
+       IONIC_LIF_RDMA_STAT_QP = BIT(1),
+};
+
 /**
  * struct ionic_lif_identity - LIF identity information (type-specific)
  *
@@ -513,10 +523,10 @@ union ionic_lif_config {
  *     @eth.config:             LIF config struct with features, mtu, mac, q counts
  *
  * @rdma:                RDMA identify structure
- *     @rdma.version:         RDMA version of opcodes and queue descriptors
+ *     @rdma.version:         RDMA capability version
  *     @rdma.qp_opcodes:      Number of RDMA queue pair opcodes supported
  *     @rdma.admin_opcodes:   Number of RDMA admin opcodes supported
- *     @rdma.rsvd:            reserved byte(s)
+ *     @rdma.minor_version:   RDMA capability minor version
  *     @rdma.npts_per_lif:    Page table size per LIF
  *     @rdma.nmrs_per_lif:    Number of memory regions per LIF
  *     @rdma.nahs_per_lif:    Number of address handles per LIF
@@ -526,12 +536,17 @@ union ionic_lif_config {
  *     @rdma.rrq_stride:      Remote RQ work request stride
  *     @rdma.rsq_stride:      Remote SQ work request stride
  *     @rdma.dcqcn_profiles:  Number of DCQCN profiles
- *     @rdma.rsvd_dimensions: reserved byte(s)
+ *     @rdma.udma_shift:      Log2 number of queues per queue group
+ *     @rdma.rsvd_dimensions: Reserved byte
+ *     @rdma.page_size_cap:   Supported page sizes
  *     @rdma.aq_qtype:        RDMA Admin Qtype
  *     @rdma.sq_qtype:        RDMA Send Qtype
  *     @rdma.rq_qtype:        RDMA Receive Qtype
  *     @rdma.cq_qtype:        RDMA Completion Qtype
  *     @rdma.eq_qtype:        RDMA Event Qtype
+ *     @rdma.stats_type:      Supported statistics type
+ *                            (enum ionic_lif_rdma_cap_stats)
+ *     @rdma.rsvd1:           Reserved byte(s)
  * @words:               word access to struct contents
  */
 union ionic_lif_identity {
@@ -557,7 +572,7 @@ union ionic_lif_identity {
                        u8 version;
                        u8 qp_opcodes;
                        u8 admin_opcodes;
-                       u8 rsvd;
+                       u8 minor_version;
                        __le32 npts_per_lif;
                        __le32 nmrs_per_lif;
                        __le32 nahs_per_lif;
@@ -567,12 +582,16 @@ union ionic_lif_identity {
                        u8 rrq_stride;
                        u8 rsq_stride;
                        u8 dcqcn_profiles;
-                       u8 rsvd_dimensions[10];
+                       u8 udma_shift;
+                       u8 rsvd_dimensions;
+                       __le64 page_size_cap;
                        struct ionic_lif_logical_qtype aq_qtype;
                        struct ionic_lif_logical_qtype sq_qtype;
                        struct ionic_lif_logical_qtype rq_qtype;
                        struct ionic_lif_logical_qtype cq_qtype;
                        struct ionic_lif_logical_qtype eq_qtype;
+                       __le16 stats_type;
+                       u8 rsvd1[162];
                } __packed rdma;
        } __packed;
        __le32 words[478];