1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27#define pr_fmt(fmt) "Bluetooth: " fmt
28
29#include <linux/export.h>
30
31#include <net/bluetooth/bluetooth.h>
32
33void baswap(bdaddr_t *dst, bdaddr_t *src)
34{
35 unsigned char *d = (unsigned char *) dst;
36 unsigned char *s = (unsigned char *) src;
37 unsigned int i;
38
39 for (i = 0; i < 6; i++)
40 d[i] = s[5 - i];
41}
42EXPORT_SYMBOL(baswap);
43
44
45int bt_to_errno(__u16 code)
46{
47 switch (code) {
48 case 0:
49 return 0;
50
51 case 0x01:
52 return EBADRQC;
53
54 case 0x02:
55 return ENOTCONN;
56
57 case 0x03:
58 return EIO;
59
60 case 0x04:
61 return EHOSTDOWN;
62
63 case 0x05:
64 return EACCES;
65
66 case 0x06:
67 return EBADE;
68
69 case 0x07:
70 return ENOMEM;
71
72 case 0x08:
73 return ETIMEDOUT;
74
75 case 0x09:
76 return EMLINK;
77
78 case 0x0a:
79 return EMLINK;
80
81 case 0x0b:
82 return EALREADY;
83
84 case 0x0c:
85 return EBUSY;
86
87 case 0x0d:
88 case 0x0e:
89 case 0x0f:
90 return ECONNREFUSED;
91
92 case 0x10:
93 return ETIMEDOUT;
94
95 case 0x11:
96 case 0x27:
97 case 0x29:
98 case 0x20:
99 return EOPNOTSUPP;
100
101 case 0x12:
102 return EINVAL;
103
104 case 0x13:
105 case 0x14:
106 case 0x15:
107 return ECONNRESET;
108
109 case 0x16:
110 return ECONNABORTED;
111
112 case 0x17:
113 return ELOOP;
114
115 case 0x18:
116 return EACCES;
117
118 case 0x1a:
119 return EPROTONOSUPPORT;
120
121 case 0x1b:
122 return ECONNREFUSED;
123
124 case 0x19:
125 case 0x1e:
126 case 0x23:
127 case 0x24:
128 case 0x25:
129 return EPROTO;
130
131 default:
132 return ENOSYS;
133 }
134}
135EXPORT_SYMBOL(bt_to_errno);
136
137int bt_info(const char *format, ...)
138{
139 struct va_format vaf;
140 va_list args;
141 int r;
142
143 va_start(args, format);
144
145 vaf.fmt = format;
146 vaf.va = &args;
147
148 r = pr_info("%pV", &vaf);
149
150 va_end(args);
151
152 return r;
153}
154EXPORT_SYMBOL(bt_info);
155
156int bt_err(const char *format, ...)
157{
158 struct va_format vaf;
159 va_list args;
160 int r;
161
162 va_start(args, format);
163
164 vaf.fmt = format;
165 vaf.va = &args;
166
167 r = pr_err("%pV", &vaf);
168
169 va_end(args);
170
171 return r;
172}
173EXPORT_SYMBOL(bt_err);
174