• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/usb/wusbcore/

Lines Matching defs:wusbhc

6 #include "wusbhc.h"
11 int wusbhc_sec_create(struct wusbhc *wusbhc)
13 wusbhc->gtk.descr.bLength = sizeof(wusbhc->gtk.descr) + sizeof(wusbhc->gtk.data);
14 wusbhc->gtk.descr.bDescriptorType = USB_DT_KEY;
15 wusbhc->gtk.descr.bReserved = 0;
17 wusbhc->gtk_index = wusb_key_index(0, WUSB_KEY_INDEX_TYPE_GTK,
20 INIT_WORK(&wusbhc->gtk_rekey_done_work, wusbhc_gtk_rekey_done_work);
27 void wusbhc_sec_destroy(struct wusbhc *wusbhc)
34 * @wusbhc: the WUSB host controller
44 static u32 wusbhc_next_tkid(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev)
50 tkid = &wusbhc->gtk_tkid;
53 tkid = &wusb_port_by_idx(wusbhc, wusb_dev->port_idx)->ptk_tkid;
62 static void wusbhc_generate_gtk(struct wusbhc *wusbhc)
64 const size_t key_size = sizeof(wusbhc->gtk.data);
67 tkid = wusbhc_next_tkid(wusbhc, NULL);
69 wusbhc->gtk.descr.tTKID[0] = (tkid >> 0) & 0xff;
70 wusbhc->gtk.descr.tTKID[1] = (tkid >> 8) & 0xff;
71 wusbhc->gtk.descr.tTKID[2] = (tkid >> 16) & 0xff;
73 get_random_bytes(wusbhc->gtk.descr.bKeyData, key_size);
78 * @wusbhc: the WUSB host controller
84 int wusbhc_sec_start(struct wusbhc *wusbhc)
86 const size_t key_size = sizeof(wusbhc->gtk.data);
89 wusbhc_generate_gtk(wusbhc);
91 result = wusbhc->set_gtk(wusbhc, wusbhc->gtk_tkid,
92 &wusbhc->gtk.descr.bKeyData, key_size);
94 dev_err(wusbhc->dev, "cannot set GTK for the host: %d\n",
102 * @wusbhc: the WUSB host controller
106 void wusbhc_sec_stop(struct wusbhc *wusbhc)
108 cancel_work_sync(&wusbhc->gtk_rekey_done_work);
160 static int wusb_dev_set_gtk(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev)
168 USB_DT_KEY << 8 | wusbhc->gtk_index, 0,
169 &wusbhc->gtk.descr, wusbhc->gtk.descr.bLength,
174 int wusb_dev_sec_add(struct wusbhc *wusbhc,
267 int wusb_dev_update_address(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev)
283 result = wusb_set_dev_addr(wusbhc, wusb_dev, 0);
299 result = wusb_set_dev_addr(wusbhc, wusb_dev, new_address);
314 int wusb_dev_4way_handshake(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev,
340 tkid = wusbhc_next_tkid(wusbhc, wusb_dev);
398 ccm_n.src_addr = wusbhc->uwb_rc->uwb_dev.dev_addr;
449 result = wusbhc->set_ptk(wusbhc, wusb_dev->port_idx, tkid,
454 result = wusb_dev_set_gtk(wusbhc, wusb_dev);
463 result = wusb_dev_update_address(wusbhc, wusb_dev);
495 struct wusbhc *wusbhc = container_of(work, struct wusbhc, gtk_rekey_done_work);
496 size_t key_size = sizeof(wusbhc->gtk.data);
498 mutex_lock(&wusbhc->mutex);
500 if (--wusbhc->pending_set_gtks == 0)
501 wusbhc->set_gtk(wusbhc, wusbhc->gtk_tkid, &wusbhc->gtk.descr.bKeyData, key_size);
503 mutex_unlock(&wusbhc->mutex);
508 struct wusbhc *wusbhc = urb->context;
510 queue_work(wusbd, &wusbhc->gtk_rekey_done_work);
515 * @wusbhc: the WUSB host controller
524 void wusbhc_gtk_rekey(struct wusbhc *wusbhc)
526 static const size_t key_size = sizeof(wusbhc->gtk.data);
529 wusbhc_generate_gtk(wusbhc);
531 for (p = 0; p < wusbhc->ports_max; p++) {
534 wusb_dev = wusbhc->port[p].wusb_dev;
541 &wusbhc->gtk.descr, wusbhc->gtk.descr.bLength,
542 wusbhc_set_gtk_callback, wusbhc);
544 wusbhc->pending_set_gtks++;
546 if (wusbhc->pending_set_gtks == 0)
547 wusbhc->set_gtk(wusbhc, wusbhc->gtk_tkid, &wusbhc->gtk.descr.bKeyData, key_size);