Hi Marcel, On Fri, May 20, 2022 at 2:16 AM Marcel Holtmann <marcel@xxxxxxxxxxxx> wrote: > > Hi Luiz, > > >>> This adds bt_status which can be used to convert Unix errno to > >>> Bluetooth status. > >>> > >>> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> > >>> --- > >>> include/net/bluetooth/bluetooth.h | 1 + > >>> net/bluetooth/lib.c | 71 +++++++++++++++++++++++++++++++ > >>> 2 files changed, 72 insertions(+) > >>> > >>> diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h > >>> index 6b48d9e2aab9..cfe6159f26bc 100644 > >>> --- a/include/net/bluetooth/bluetooth.h > >>> +++ b/include/net/bluetooth/bluetooth.h > >>> @@ -521,6 +521,7 @@ static inline struct sk_buff *bt_skb_sendmmsg(struct sock *sk, > >>> } > >>> > >>> int bt_to_errno(u16 code); > >>> +__u8 bt_status(int err); > >>> > >>> void hci_sock_set_flag(struct sock *sk, int nr); > >>> void hci_sock_clear_flag(struct sock *sk, int nr); > >>> diff --git a/net/bluetooth/lib.c b/net/bluetooth/lib.c > >>> index 5326f41a58b7..469a0c95b6e8 100644 > >>> --- a/net/bluetooth/lib.c > >>> +++ b/net/bluetooth/lib.c > >>> @@ -135,6 +135,77 @@ int bt_to_errno(__u16 code) > >>> } > >>> EXPORT_SYMBOL(bt_to_errno); > >>> > >>> +/* Unix errno to Bluetooth error codes mapping */ > >>> +__u8 bt_status(int err) > >>> +{ > >>> + /* Don't convert if already positive value */ > >>> + if (err >= 0) > >>> + return err; > >>> + > >>> + switch (err) { > >>> + case -EBADRQC: > >>> + return 0x01; > >>> + > >>> + case -ENOTCONN: > >>> + return 0x02; > >>> + > >>> + case -EIO: > >>> + return 0x03; > >>> + > >>> + case -EHOSTDOWN: > >>> + return 0x04; > >>> + > >>> + case -EACCES: > >>> + return 0x05; > >>> + > >>> + case -EBADE: > >>> + return 0x06; > >>> + > >>> + case -ENOMEM: > >>> + return 0x07; > >>> + > >>> + case -ETIMEDOUT: > >>> + return 0x08; > >>> + > >>> + case -EMLINK: > >>> + return 0x09; > >>> + > >>> + case EALREADY: > >>> + return 0x0b; > >>> + > >>> + case -EBUSY: > >>> + return 0x0c; > >>> + > >>> + case -ECONNREFUSED: > >>> + return 0x0d; > >>> + > >>> + case -EOPNOTSUPP: > >>> + return 0x11; > >>> + > >>> + case -EINVAL: > >>> + return 0x12; > >>> + > >>> + case -ECONNRESET: > >>> + return 0x13; > >>> + > >>> + case -ECONNABORTED: > >>> + return 0x16; > >>> + > >>> + case ELOOP: > >>> + return 0x17; > >>> + > >>> + case -EPROTONOSUPPORT: > >>> + return 0x1a; > >>> + > >>> + case -EPROTO: > >>> + return 0x19; > >>> + > >>> + default: > >>> + return 0x1f; > >>> + } > >>> +} > >>> +EXPORT_SYMBOL(bt_status); > >>> + > >> > >> why are exporting this? > > > > Isn't it supposed to be exported since it is part of lib.c? All > > functions in this file use it. > > is it used outside of bluetooth.ko? Currently not, I just thought it would be convenient to have it accessible for the drivers as well since it is complementary to bt_to_errno. > Regards > > Marcel > -- Luiz Augusto von Dentz