intr->dyn_ctl_itridx_s = PF_GLINT_DYN_CTL_ITR_INDX_S;
                intr->dyn_ctl_intrvl_s = PF_GLINT_DYN_CTL_INTERVAL_S;
                intr->dyn_ctl_wb_on_itr_m = PF_GLINT_DYN_CTL_WB_ON_ITR_M;
+               intr->dyn_ctl_swint_trig_m = PF_GLINT_DYN_CTL_SWINT_TRIG_M;
+               intr->dyn_ctl_sw_itridx_ena_m =
+                       PF_GLINT_DYN_CTL_SW_ITR_INDX_ENA_M;
 
                spacing = IDPF_ITR_IDX_SPACING(reg_vals[vec_id].itrn_index_spacing,
                                               IDPF_PF_ITR_IDX_SPACING);
 
  * @dyn_ctl_itridx_m: Mask for ITR index
  * @dyn_ctl_intrvl_s: Register bit offset for ITR interval
  * @dyn_ctl_wb_on_itr_m: Mask for WB on ITR feature
+ * @dyn_ctl_sw_itridx_ena_m: Mask for SW ITR index
+ * @dyn_ctl_swint_trig_m: Mask for dyn_ctl SW triggered interrupt enable
  * @rx_itr: RX ITR register
  * @tx_itr: TX ITR register
  * @icr_ena: Interrupt cause register offset
        u32 dyn_ctl_itridx_m;
        u32 dyn_ctl_intrvl_s;
        u32 dyn_ctl_wb_on_itr_m;
+       u32 dyn_ctl_sw_itridx_ena_m;
+       u32 dyn_ctl_swint_trig_m;
        void __iomem *rx_itr;
        void __iomem *tx_itr;
        void __iomem *icr_ena;
        cpumask_var_t affinity_mask;
        __cacheline_group_end_aligned(cold);
 };
-libeth_cacheline_set_assert(struct idpf_q_vector, 112,
+libeth_cacheline_set_assert(struct idpf_q_vector, 120,
                            24 + sizeof(struct napi_struct) +
                            2 * sizeof(struct dim),
                            8 + sizeof(cpumask_var_t));
 #define IDPF_ITR_IS_DYNAMIC(itr_mode) (itr_mode)
 #define IDPF_ITR_TX_DEF                IDPF_ITR_20K
 #define IDPF_ITR_RX_DEF                IDPF_ITR_20K
+/* Index used for 'SW ITR' update in DYN_CTL register */
+#define IDPF_SW_ITR_UPDATE_IDX 2
 /* Index used for 'No ITR' update in DYN_CTL register */
 #define IDPF_NO_ITR_UPDATE_IDX 3
 #define IDPF_ITR_IDX_SPACING(spacing, dflt)    (spacing ? spacing : dflt)
 
                intr->dyn_ctl_itridx_s = VF_INT_DYN_CTLN_ITR_INDX_S;
                intr->dyn_ctl_intrvl_s = VF_INT_DYN_CTLN_INTERVAL_S;
                intr->dyn_ctl_wb_on_itr_m = VF_INT_DYN_CTLN_WB_ON_ITR_M;
+               intr->dyn_ctl_swint_trig_m = VF_INT_DYN_CTLN_SWINT_TRIG_M;
+               intr->dyn_ctl_sw_itridx_ena_m =
+                       VF_INT_DYN_CTLN_SW_ITR_INDX_ENA_M;
 
                spacing = IDPF_ITR_IDX_SPACING(reg_vals[vec_id].itrn_index_spacing,
                                               IDPF_VF_ITR_IDX_SPACING);