216 printk(KERN_ERR "UWBD: event %s[%u]: unknown\n", type_table->name, event);
217 return -EINVAL;
218 }
219 return (*handler)(evt);
220}
221
222static void uwbd_event_handle_message(struct uwb_event *evt)
223{
224 struct uwb_rc *rc;
225 int result;
226
227 rc = evt->rc;
228
229 if (evt->message < 0 || evt->message >= ARRAY_SIZE(uwbd_message_handlers)) {
230 dev_err(&rc->uwb_dev.dev, "UWBD: invalid message type %d\n", evt->message);
231 return;
232 }
233
234
235
236
237 if (evt->message == UWB_EVT_MSG_RESET)
238 mutex_unlock(&uwbd_event_mutex);
239
240 result = uwbd_message_handlers[evt->message].handler(evt);
241 if (result < 0)
242 dev_err(&rc->uwb_dev.dev, "UWBD: '%s' message failed: %d\n",
243 uwbd_message_handlers[evt->message].name, result);
244
245 if (evt->message == UWB_EVT_MSG_RESET)
246 mutex_lock(&uwbd_event_mutex);
247}
248
249static void uwbd_event_handle(struct uwb_event *evt)
250{
251 struct uwb_rc *rc;
252 int should_keep;
253
254 rc = evt->rc;
255
256 if (rc->ready) {