/* Configure output options and let the other side know
                 * which ones we don't like. */
 
-               /* If MTU is not provided in configure request, use the most recently
-                * explicitly or implicitly accepted value for the other direction,
-                * or the default value.
+               /* If MTU is not provided in configure request, try adjusting it
+                * to the current output MTU if it has been set
+                *
+                * Bluetooth Core 6.1, Vol 3, Part A, Section 4.5
+                *
+                * Each configuration parameter value (if any is present) in an
+                * L2CAP_CONFIGURATION_RSP packet reflects an ‘adjustment’ to a
+                * configuration parameter value that has been sent (or, in case
+                * of default values, implied) in the corresponding
+                * L2CAP_CONFIGURATION_REQ packet.
                 */
-               if (mtu == 0)
-                       mtu = chan->imtu ? chan->imtu : L2CAP_DEFAULT_MTU;
+               if (!mtu) {
+                       /* Only adjust for ERTM channels as for older modes the
+                        * remote stack may not be able to detect that the
+                        * adjustment causing it to silently drop packets.
+                        */
+                       if (chan->mode == L2CAP_MODE_ERTM &&
+                           chan->omtu && chan->omtu != L2CAP_DEFAULT_MTU)
+                               mtu = chan->omtu;
+                       else
+                               mtu = L2CAP_DEFAULT_MTU;
+               }
 
                if (mtu < L2CAP_DEFAULT_MIN_MTU)
                        result = L2CAP_CONF_UNACCEPT;