[lvc-project] [PATCH BlueZ 1/2] audio: actually try to enable MTU auto-tuning
Fedor Pchelkin
pchelkin at ispras.ru
Wed Jan 29 09:43:53 MSK 2025
On Tue, 28. Jan 16:59, Luiz Augusto von Dentz wrote:
> > @@ -622,7 +623,7 @@ static gboolean set_l2opts(int sock, uint16_t imtu, uint16_t omtu,
> > return FALSE;
> > }
> >
> > - if (imtu)
> > + if (imtu || auto_mtu)
> > l2o.imtu = imtu;
>
> We might need to do some more special handling for auto_mtu, so in
> case it fail we retry with the default values instead.
Yep, a good point. And I see now it _might_ fail here for the kernels
without the corresponding patch.
> > static gboolean l2cap_set(int sock, uint8_t src_type, int sec_level,
> > - uint16_t imtu, uint16_t omtu, uint8_t mode,
> > - int central, int flushable, uint32_t priority,
> > - GError **err)
> > + uint16_t imtu, uint16_t omtu, uint8_t auto_mtu,
> > + uint8_t mode, int central, int flushable,
> > + uint32_t priority, GError **err)
> > {
> > - if (imtu || omtu || mode) {
> > + if (imtu || omtu || auto_mtu || mode) {
> > gboolean ret = FALSE;
> >
> > if (src_type == BDADDR_BREDR)
> > - ret = set_l2opts(sock, imtu, omtu, mode, err);
> > + ret = set_l2opts(sock, imtu, omtu, auto_mtu, mode, err);
>
> Perhaps here we do:
>
> if (ret && auto_mtu)
> ret = set_l2opts(sock, imtu, omtu, false, mode, err);
>
> Thoughts?
Agreed, trying the original default behavior will work with existing
kernels. I'll respin the series.
>
> > else {
> > - if (imtu)
> > + if (imtu || auto_mtu)
> > ret = set_le_imtu(sock, imtu, err);
Huh, the BT_RCVMTU case may also fail for L2CAP_MODE_EXT_FLOWCTL (that's
not something I'm prepared to reproduce though).
l2cap_chan_reconfigure() will reject a zero imtu. Worth adding some another
kernel patch or ECRED should not actually support MTU auto-tuning?
More information about the lvc-project
mailing list