Bluetooth: Add bt_status

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@intel.com>
This commit is contained in:
Luiz Augusto von Dentz 2022-04-08 15:07:44 -07:00
parent 1bbf4023cf
commit ca2045e059
2 changed files with 72 additions and 0 deletions

View File

@ -521,6 +521,7 @@ static inline struct sk_buff *bt_skb_sendmmsg(struct sock *sk,
} }
int bt_to_errno(u16 code); int bt_to_errno(u16 code);
__u8 bt_status(int err);
void hci_sock_set_flag(struct sock *sk, int nr); void hci_sock_set_flag(struct sock *sk, int nr);
void hci_sock_clear_flag(struct sock *sk, int nr); void hci_sock_clear_flag(struct sock *sk, int nr);

View File

@ -135,6 +135,77 @@ int bt_to_errno(__u16 code)
} }
EXPORT_SYMBOL(bt_to_errno); 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);
void bt_info(const char *format, ...) void bt_info(const char *format, ...)
{ {
struct va_format vaf; struct va_format vaf;