Lines Matching refs:kingsun
130 struct kingsun_cb *kingsun = urb->context; in kingsun_send_irq() local
131 struct net_device *netdev = kingsun->netdev; in kingsun_send_irq()
134 if (!netif_running(kingsun->netdev)) { in kingsun_send_irq()
135 dev_err(&kingsun->usbdev->dev, in kingsun_send_irq()
142 dev_err(&kingsun->usbdev->dev, in kingsun_send_irq()
155 struct kingsun_cb *kingsun; in kingsun_hard_xmit() local
164 kingsun = netdev_priv(netdev); in kingsun_hard_xmit()
166 spin_lock(&kingsun->lock); in kingsun_hard_xmit()
170 kingsun->out_buf, in kingsun_hard_xmit()
174 usb_fill_int_urb(kingsun->tx_urb, kingsun->usbdev, in kingsun_hard_xmit()
175 usb_sndintpipe(kingsun->usbdev, kingsun->ep_out), in kingsun_hard_xmit()
176 kingsun->out_buf, wraplen, kingsun_send_irq, in kingsun_hard_xmit()
177 kingsun, 1); in kingsun_hard_xmit()
179 if ((ret = usb_submit_urb(kingsun->tx_urb, GFP_ATOMIC))) { in kingsun_hard_xmit()
180 dev_err(&kingsun->usbdev->dev, in kingsun_hard_xmit()
196 spin_unlock(&kingsun->lock); in kingsun_hard_xmit()
204 struct kingsun_cb *kingsun = urb->context; in kingsun_rcv_irq() local
208 if (!netif_running(kingsun->netdev)) { in kingsun_rcv_irq()
209 kingsun->receiving = 0; in kingsun_rcv_irq()
215 dev_err(&kingsun->usbdev->dev, in kingsun_rcv_irq()
218 kingsun->receiving = 0; in kingsun_rcv_irq()
222 if (urb->actual_length == kingsun->max_rx) { in kingsun_rcv_irq()
231 if (bytes[0] >= 1 && bytes[0] < kingsun->max_rx) { in kingsun_rcv_irq()
233 async_unwrap_char(kingsun->netdev, in kingsun_rcv_irq()
234 &kingsun->netdev->stats, in kingsun_rcv_irq()
235 &kingsun->rx_buff, bytes[i]); in kingsun_rcv_irq()
237 kingsun->receiving = in kingsun_rcv_irq()
238 (kingsun->rx_buff.state != OUTSIDE_FRAME) in kingsun_rcv_irq()
242 dev_err(&kingsun->usbdev->dev, in kingsun_rcv_irq()
244 __func__, kingsun->max_rx, urb->actual_length); in kingsun_rcv_irq()
257 struct kingsun_cb *kingsun = netdev_priv(netdev); in kingsun_net_open() local
262 kingsun->receiving = 0; in kingsun_net_open()
265 kingsun->rx_buff.in_frame = FALSE; in kingsun_net_open()
266 kingsun->rx_buff.state = OUTSIDE_FRAME; in kingsun_net_open()
267 kingsun->rx_buff.truesize = IRDA_SKB_MAX_MTU; in kingsun_net_open()
268 kingsun->rx_buff.skb = dev_alloc_skb(IRDA_SKB_MAX_MTU); in kingsun_net_open()
269 if (!kingsun->rx_buff.skb) in kingsun_net_open()
272 skb_reserve(kingsun->rx_buff.skb, 1); in kingsun_net_open()
273 kingsun->rx_buff.head = kingsun->rx_buff.skb->data; in kingsun_net_open()
275 kingsun->rx_urb = usb_alloc_urb(0, GFP_KERNEL); in kingsun_net_open()
276 if (!kingsun->rx_urb) in kingsun_net_open()
279 kingsun->tx_urb = usb_alloc_urb(0, GFP_KERNEL); in kingsun_net_open()
280 if (!kingsun->tx_urb) in kingsun_net_open()
287 sprintf(hwname, "usb#%d", kingsun->usbdev->devnum); in kingsun_net_open()
288 kingsun->irlap = irlap_open(netdev, &kingsun->qos, hwname); in kingsun_net_open()
289 if (!kingsun->irlap) { in kingsun_net_open()
290 dev_err(&kingsun->usbdev->dev, "irlap_open failed\n"); in kingsun_net_open()
295 usb_fill_int_urb(kingsun->rx_urb, kingsun->usbdev, in kingsun_net_open()
296 usb_rcvintpipe(kingsun->usbdev, kingsun->ep_in), in kingsun_net_open()
297 kingsun->in_buf, kingsun->max_rx, in kingsun_net_open()
298 kingsun_rcv_irq, kingsun, 1); in kingsun_net_open()
299 kingsun->rx_urb->status = 0; in kingsun_net_open()
300 err = usb_submit_urb(kingsun->rx_urb, GFP_KERNEL); in kingsun_net_open()
302 dev_err(&kingsun->usbdev->dev, in kingsun_net_open()
321 irlap_close(kingsun->irlap); in kingsun_net_open()
323 if (kingsun->tx_urb) { in kingsun_net_open()
324 usb_free_urb(kingsun->tx_urb); in kingsun_net_open()
325 kingsun->tx_urb = NULL; in kingsun_net_open()
327 if (kingsun->rx_urb) { in kingsun_net_open()
328 usb_free_urb(kingsun->rx_urb); in kingsun_net_open()
329 kingsun->rx_urb = NULL; in kingsun_net_open()
331 if (kingsun->rx_buff.skb) { in kingsun_net_open()
332 kfree_skb(kingsun->rx_buff.skb); in kingsun_net_open()
333 kingsun->rx_buff.skb = NULL; in kingsun_net_open()
334 kingsun->rx_buff.head = NULL; in kingsun_net_open()
347 struct kingsun_cb *kingsun = netdev_priv(netdev); in kingsun_net_close() local
353 usb_kill_urb(kingsun->tx_urb); in kingsun_net_close()
354 usb_kill_urb(kingsun->rx_urb); in kingsun_net_close()
356 usb_free_urb(kingsun->tx_urb); in kingsun_net_close()
357 usb_free_urb(kingsun->rx_urb); in kingsun_net_close()
359 kingsun->tx_urb = NULL; in kingsun_net_close()
360 kingsun->rx_urb = NULL; in kingsun_net_close()
362 kfree_skb(kingsun->rx_buff.skb); in kingsun_net_close()
363 kingsun->rx_buff.skb = NULL; in kingsun_net_close()
364 kingsun->rx_buff.head = NULL; in kingsun_net_close()
365 kingsun->rx_buff.in_frame = FALSE; in kingsun_net_close()
366 kingsun->rx_buff.state = OUTSIDE_FRAME; in kingsun_net_close()
367 kingsun->receiving = 0; in kingsun_net_close()
370 if (kingsun->irlap) in kingsun_net_close()
371 irlap_close(kingsun->irlap); in kingsun_net_close()
373 kingsun->irlap = NULL; in kingsun_net_close()
385 struct kingsun_cb *kingsun = netdev_priv(netdev); in kingsun_net_ioctl() local
394 if (netif_device_present(kingsun->netdev)) in kingsun_net_ioctl()
404 if (netif_running(kingsun->netdev)) in kingsun_net_ioctl()
405 irda_device_set_media_busy(kingsun->netdev, TRUE); in kingsun_net_ioctl()
410 irq->ifr_receiving = kingsun->receiving; in kingsun_net_ioctl()
439 struct kingsun_cb *kingsun = NULL; in kingsun_probe() local
485 net = alloc_irdadev(sizeof(*kingsun)); in kingsun_probe()
490 kingsun = netdev_priv(net); in kingsun_probe()
491 kingsun->irlap = NULL; in kingsun_probe()
492 kingsun->tx_urb = NULL; in kingsun_probe()
493 kingsun->rx_urb = NULL; in kingsun_probe()
494 kingsun->ep_in = ep_in; in kingsun_probe()
495 kingsun->ep_out = ep_out; in kingsun_probe()
496 kingsun->in_buf = NULL; in kingsun_probe()
497 kingsun->out_buf = NULL; in kingsun_probe()
498 kingsun->max_rx = (__u8)maxp_in; in kingsun_probe()
499 kingsun->max_tx = (__u8)maxp_out; in kingsun_probe()
500 kingsun->netdev = net; in kingsun_probe()
501 kingsun->usbdev = dev; in kingsun_probe()
502 kingsun->rx_buff.in_frame = FALSE; in kingsun_probe()
503 kingsun->rx_buff.state = OUTSIDE_FRAME; in kingsun_probe()
504 kingsun->rx_buff.skb = NULL; in kingsun_probe()
505 kingsun->receiving = 0; in kingsun_probe()
506 spin_lock_init(&kingsun->lock); in kingsun_probe()
509 kingsun->in_buf = kmalloc(kingsun->max_rx, GFP_KERNEL); in kingsun_probe()
510 if (!kingsun->in_buf) in kingsun_probe()
514 kingsun->out_buf = kmalloc(KINGSUN_FIFO_SIZE, GFP_KERNEL); in kingsun_probe()
515 if (!kingsun->out_buf) in kingsun_probe()
524 irda_init_max_qos_capabilies(&kingsun->qos); in kingsun_probe()
527 kingsun->qos.baud_rate.bits &= IR_9600; in kingsun_probe()
528 kingsun->qos.min_turn_time.bits &= KINGSUN_MTT; in kingsun_probe()
529 irda_qos_bits_to_value(&kingsun->qos); in kingsun_probe()
541 usb_set_intfdata(intf, kingsun); in kingsun_probe()
553 kfree(kingsun->out_buf); in kingsun_probe()
554 kfree(kingsun->in_buf); in kingsun_probe()
565 struct kingsun_cb *kingsun = usb_get_intfdata(intf); in kingsun_disconnect() local
567 if (!kingsun) in kingsun_disconnect()
570 unregister_netdev(kingsun->netdev); in kingsun_disconnect()
573 if (kingsun->tx_urb != NULL) { in kingsun_disconnect()
574 usb_kill_urb(kingsun->tx_urb); in kingsun_disconnect()
575 usb_free_urb(kingsun->tx_urb); in kingsun_disconnect()
576 kingsun->tx_urb = NULL; in kingsun_disconnect()
578 if (kingsun->rx_urb != NULL) { in kingsun_disconnect()
579 usb_kill_urb(kingsun->rx_urb); in kingsun_disconnect()
580 usb_free_urb(kingsun->rx_urb); in kingsun_disconnect()
581 kingsun->rx_urb = NULL; in kingsun_disconnect()
584 kfree(kingsun->out_buf); in kingsun_disconnect()
585 kfree(kingsun->in_buf); in kingsun_disconnect()
586 free_netdev(kingsun->netdev); in kingsun_disconnect()
595 struct kingsun_cb *kingsun = usb_get_intfdata(intf); in kingsun_suspend() local
597 netif_device_detach(kingsun->netdev); in kingsun_suspend()
598 if (kingsun->tx_urb != NULL) usb_kill_urb(kingsun->tx_urb); in kingsun_suspend()
599 if (kingsun->rx_urb != NULL) usb_kill_urb(kingsun->rx_urb); in kingsun_suspend()
606 struct kingsun_cb *kingsun = usb_get_intfdata(intf); in kingsun_resume() local
608 if (kingsun->rx_urb != NULL) in kingsun_resume()
609 usb_submit_urb(kingsun->rx_urb, GFP_KERNEL); in kingsun_resume()
610 netif_device_attach(kingsun->netdev); in kingsun_resume()