• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/usb/mon/

Lines Matching defs:mbus

20 static void mon_stop(struct mon_bus *mbus);
21 static void mon_dissolve(struct mon_bus *mbus, struct usb_bus *ubus);
33 * This must be called with mon_lock taken because of mbus->ref.
35 void mon_reader_add(struct mon_bus *mbus, struct mon_reader *r)
40 spin_lock_irqsave(&mbus->lock, flags);
41 if (mbus->nreaders == 0) {
42 if (mbus == &mon_bus0) {
49 mbus->u_bus->monitored = 1;
52 mbus->nreaders++;
53 list_add_tail(&r->r_link, &mbus->r_list);
54 spin_unlock_irqrestore(&mbus->lock, flags);
56 kref_get(&mbus->ref);
62 * This is called with mon_lock taken, so we can decrement mbus->ref.
64 void mon_reader_del(struct mon_bus *mbus, struct mon_reader *r)
68 spin_lock_irqsave(&mbus->lock, flags);
70 --mbus->nreaders;
71 if (mbus->nreaders == 0)
72 mon_stop(mbus);
73 spin_unlock_irqrestore(&mbus->lock, flags);
75 kref_put(&mbus->ref, mon_bus_drop);
80 static void mon_bus_submit(struct mon_bus *mbus, struct urb *urb)
86 spin_lock_irqsave(&mbus->lock, flags);
87 mbus->cnt_events++;
88 list_for_each (pos, &mbus->r_list) {
92 spin_unlock_irqrestore(&mbus->lock, flags);
98 struct mon_bus *mbus;
100 if ((mbus = ubus->mon_bus) != NULL)
101 mon_bus_submit(mbus, urb);
107 static void mon_bus_submit_error(struct mon_bus *mbus, struct urb *urb, int error)
113 spin_lock_irqsave(&mbus->lock, flags);
114 mbus->cnt_events++;
115 list_for_each (pos, &mbus->r_list) {
119 spin_unlock_irqrestore(&mbus->lock, flags);
125 struct mon_bus *mbus;
127 if ((mbus = ubus->mon_bus) != NULL)
128 mon_bus_submit_error(mbus, urb, error);
134 static void mon_bus_complete(struct mon_bus *mbus, struct urb *urb, int status)
140 spin_lock_irqsave(&mbus->lock, flags);
141 mbus->cnt_events++;
142 list_for_each (pos, &mbus->r_list) {
146 spin_unlock_irqrestore(&mbus->lock, flags);
151 struct mon_bus *mbus;
153 if ((mbus = ubus->mon_bus) != NULL)
154 mon_bus_complete(mbus, urb, status);
163 static void mon_stop(struct mon_bus *mbus)
168 if (mbus == &mon_bus0) {
170 mbus = list_entry(p, struct mon_bus, bus_link);
174 if (mbus->nreaders == 0 && (ubus = mbus->u_bus) != NULL)
182 if (mon_bus0.nreaders == 0 && (ubus = mbus->u_bus) != NULL) {
209 struct mon_bus *mbus = ubus->mon_bus;
212 list_del(&mbus->bus_link);
213 if (mbus->text_inited)
214 mon_text_del(mbus);
215 if (mbus->bin_inited)
216 mon_bin_del(mbus);
218 mon_dissolve(mbus, ubus);
219 kref_put(&mbus->ref, mon_bus_drop);
252 static void mon_dissolve(struct mon_bus *mbus, struct usb_bus *ubus)
261 mbus->u_bus = NULL;
271 struct mon_bus *mbus = container_of(r, struct mon_bus, ref);
272 kfree(mbus);
283 struct mon_bus *mbus;
285 if ((mbus = kzalloc(sizeof(struct mon_bus), GFP_KERNEL)) == NULL)
287 kref_init(&mbus->ref);
288 spin_lock_init(&mbus->lock);
289 INIT_LIST_HEAD(&mbus->r_list);
295 mbus->u_bus = ubus;
296 ubus->mon_bus = mbus;
298 mbus->text_inited = mon_text_add(mbus, ubus);
299 mbus->bin_inited = mon_bin_add(mbus, ubus);
302 list_add_tail(&mbus->bus_link, &mon_buses);
312 struct mon_bus *mbus = &mon_bus0;
314 kref_init(&mbus->ref);
315 spin_lock_init(&mbus->lock);
316 INIT_LIST_HEAD(&mbus->r_list);
318 mbus->text_inited = mon_text_add(mbus, NULL);
319 mbus->bin_inited = mon_bin_add(mbus, NULL);
333 struct mon_bus *mbus;
339 mbus = list_entry(p, struct mon_bus, bus_link);
340 if (mbus->u_bus->busnum == num) {
341 return mbus;
384 struct mon_bus *mbus;
394 mbus = list_entry(p, struct mon_bus, bus_link);
397 if (mbus->text_inited)
398 mon_text_del(mbus);
399 if (mbus->bin_inited)
400 mon_bin_del(mbus);
407 if (mbus->nreaders) {
410 mbus->nreaders, mbus->u_bus->busnum);
411 atomic_set(&mbus->ref.refcount, 2); /* Force leak */
414 mon_dissolve(mbus, mbus->u_bus);
415 kref_put(&mbus->ref, mon_bus_drop);
418 mbus = &mon_bus0;
419 if (mbus->text_inited)
420 mon_text_del(mbus);
421 if (mbus->bin_inited)
422 mon_bin_del(mbus);