• Home
  • Raw
  • Download

Lines Matching +full:modem +full:- +full:init

2  * USB network interface driver for Samsung Kalmia based LTE USB modem like the
3 * Samsung GT-B3730 and GT-B3710.
31 * The Samsung Kalmia based LTE USB modems have a CDC ACM port for modem control
35 * The stick must first be switched into modem mode by usb_modeswitch
36 * or similar tool. Then the modem gets sent two initialization packets by
38 * connect the modem using AT commands through the ACM port and then use
40 * sent to and from the modem in a proprietary format discovered after watching
41 * the behavior of the windows driver for the modem.
43 * More information about the use of the modem is available in usb_modeswitch
47 * https://github.com/mkotsbak/Samsung-GT-B3730-linux-driver
57 /*-------------------------------------------------------------------------*/
66 netdev_dbg(dev->net, "Sending init packet"); in kalmia_send_init_packet()
68 status = usb_bulk_msg(dev->udev, usb_sndbulkpipe(dev->udev, 0x02), in kalmia_send_init_packet()
71 netdev_err(dev->net, in kalmia_send_init_packet()
72 "Error sending init packet. Status %i, length %i\n", in kalmia_send_init_packet()
77 netdev_err(dev->net, in kalmia_send_init_packet()
78 "Did not send all of init packet. Bytes sent: %i", in kalmia_send_init_packet()
82 netdev_dbg(dev->net, "Successfully sent init packet."); in kalmia_send_init_packet()
85 status = usb_bulk_msg(dev->udev, usb_rcvbulkpipe(dev->udev, 0x81), in kalmia_send_init_packet()
89 netdev_err(dev->net, in kalmia_send_init_packet()
90 "Error receiving init result. Status %i, length %i\n", in kalmia_send_init_packet()
93 netdev_err(dev->net, "Unexpected init result length: %i\n", in kalmia_send_init_packet()
114 return -ENOMEM; in kalmia_init_and_get_ethernet_addr()
141 if (intf->cur_altsetting->desc.bInterfaceClass != USB_CLASS_VENDOR_SPEC) in kalmia_bind()
142 return -EINVAL; in kalmia_bind()
144 dev->in = usb_rcvbulkpipe(dev->udev, 0x81 & USB_ENDPOINT_NUMBER_MASK); in kalmia_bind()
145 dev->out = usb_sndbulkpipe(dev->udev, 0x02 & USB_ENDPOINT_NUMBER_MASK); in kalmia_bind()
146 dev->status = NULL; in kalmia_bind()
148 dev->net->hard_header_len += KALMIA_HEADER_LENGTH; in kalmia_bind()
149 dev->hard_mtu = 1400; in kalmia_bind()
150 dev->rx_urb_size = dev->hard_mtu * 10; // Found as optimal after testing in kalmia_bind()
156 memcpy(dev->net->dev_addr, ethernet_addr, ETH_ALEN); in kalmia_bind()
180 skb->data = memmove(skb->head + KALMIA_HEADER_LENGTH, in kalmia_tx_fixup()
181 skb->data, skb->len); in kalmia_tx_fixup()
182 skb_set_tail_pointer(skb, skb->len); in kalmia_tx_fixup()
200 netdev_dbg(dev->net, "Sending etherType: %02x%02x", ether_type_1, in kalmia_tx_fixup()
206 content_len = skb->len - KALMIA_HEADER_LENGTH; in kalmia_tx_fixup()
213 remainder = skb->len % KALMIA_ALIGN_SIZE; in kalmia_tx_fixup()
215 padlen = KALMIA_ALIGN_SIZE - remainder; in kalmia_tx_fixup()
219 netdev_dbg(dev->net, in kalmia_tx_fixup()
242 if (skb->len < KALMIA_HEADER_LENGTH) in kalmia_rx_fixup()
251 header_start = skb->data; in kalmia_rx_fixup()
258 netdev_dbg(dev->net, in kalmia_rx_fixup()
261 skb->len - KALMIA_HEADER_LENGTH); in kalmia_rx_fixup()
264 netdev_err(dev->net, in kalmia_rx_fixup()
267 skb->len - KALMIA_HEADER_LENGTH); in kalmia_rx_fixup()
272 netdev_dbg(dev->net, in kalmia_rx_fixup()
274 header_start, skb->len - KALMIA_HEADER_LENGTH); in kalmia_rx_fixup()
277 usb_packet_length = skb->len - (2 * KALMIA_HEADER_LENGTH); in kalmia_rx_fixup()
288 netdev_dbg(dev->net, "Correct package length #%i", i in kalmia_rx_fixup()
291 is_last = (memcmp(skb->data + ether_packet_length, in kalmia_rx_fixup()
295 header_start = skb->data + ether_packet_length; in kalmia_rx_fixup()
296 netdev_dbg(dev->net, in kalmia_rx_fixup()
299 skb->len - KALMIA_HEADER_LENGTH); in kalmia_rx_fixup()
324 while (skb->len); in kalmia_rx_fixup()
337 /*-------------------------------------------------------------------------*/
342 /* The stick switched into modem (by e.g. usb_modeswitch): */