qtype, qti->max_sg_elems);
                dev_dbg(ionic->dev, " qtype[%d].sg_desc_stride = %d\n",
                        qtype, qti->sg_desc_stride);
+
+               if (qti->max_sg_elems >= IONIC_MAX_FRAGS) {
+                       qti->max_sg_elems = IONIC_MAX_FRAGS - 1;
+                       dev_dbg(ionic->dev, "limiting qtype %d max_sg_elems to IONIC_MAX_FRAGS-1 %d\n",
+                               qtype, qti->max_sg_elems);
+               }
+
+               if (qti->max_sg_elems > MAX_SKB_FRAGS) {
+                       qti->max_sg_elems = MAX_SKB_FRAGS;
+                       dev_dbg(ionic->dev, "limiting qtype %d max_sg_elems to MAX_SKB_FRAGS %d\n",
+                               qtype, qti->max_sg_elems);
+               }
        }
 }