这篇教程C++ usbnet_skb_return函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中usbnet_skb_return函数的典型用法代码示例。如果您正苦于以下问题:C++ usbnet_skb_return函数的具体用法?C++ usbnet_skb_return怎么用?C++ usbnet_skb_return使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了usbnet_skb_return函数的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: rx_processstatic inline void rx_process (struct usbnet *dev, struct sk_buff *skb){ if (dev->driver_info->rx_fixup && !dev->driver_info->rx_fixup (dev, skb)) { /* With RX_ASSEMBLE, rx_fixup() must update counters */ if (!(dev->driver_info->flags & FLAG_RX_ASSEMBLE)) dev->net->stats.rx_errors++; goto done; } // else network stack removes extra byte if we forced a short packet if (skb->len) { /* all data was already cloned from skb inside the driver */ if (dev->driver_info->flags & FLAG_MULTI_PACKET) dev_kfree_skb_any(skb); else usbnet_skb_return(dev, skb); return; } netif_dbg(dev, rx_err, dev->net, "drop/n"); dev->net->stats.rx_errors++;done: skb_queue_tail(&dev->done, skb);}
开发者ID:boyan3010,项目名称:ShooterU_Kernel_3.2.X,代码行数:25,
示例2: rx_processstatic inline void rx_process (struct usbnet *dev, struct sk_buff *skb){ if (dev->driver_info->rx_fixup && !dev->driver_info->rx_fixup (dev, skb)) { if (!(dev->driver_info->flags & FLAG_RX_ASSEMBLE)) dev->net->stats.rx_errors++; goto done; } /* all data was already cloned from skb inside the driver */ if (dev->driver_info->flags & FLAG_MULTI_PACKET) goto done; if (skb->len < ETH_HLEN) { dev->net->stats.rx_errors++; dev->net->stats.rx_length_errors++; netif_dbg(dev, rx_err, dev->net, "rx length %d/n", skb->len); } else { usbnet_skb_return(dev, skb); return; }done: skb_queue_tail(&dev->done, skb);}
开发者ID:droidcore,项目名称:kangaroo-m7-mkv,代码行数:25,
示例3: rx_processstatic inline void rx_process (struct usbnet *dev, struct sk_buff *skb){ if (dev->driver_info->rx_fixup && !dev->driver_info->rx_fixup (dev, skb)) { if (!(dev->driver_info->flags & FLAG_RX_ASSEMBLE)) dev->net->stats.rx_errors++; goto done; } if (skb->len) { if (dev->driver_info->flags & FLAG_MULTI_PACKET) dev_kfree_skb_any(skb); else usbnet_skb_return(dev, skb); return; } netif_dbg(dev, rx_err, dev->net, "drop/n"); dev->net->stats.rx_errors++;done: skb_queue_tail(&dev->done, skb);}
开发者ID:DirtyDroidX,项目名称:android_kernel_htc_m8ul,代码行数:25,
示例4: genelink_rx_fixupstatic int genelink_rx_fixup(struct usbnet *dev, struct sk_buff *skb){ struct gl_header *header; struct gl_packet *packet; struct sk_buff *gl_skb; u32 size; u32 count; header = (struct gl_header *) skb->data; count = le32_to_cpu(header->packet_count); if (count > GL_MAX_TRANSMIT_PACKETS) { dbg("genelink: invalid received packet count %u", count); return 0; } packet = &header->packets; skb_pull(skb, 4); while (count > 1) { size = le32_to_cpu(packet->packet_length); if (size > GL_MAX_PACKET_LEN) { dbg("genelink: invalid rx length %d", size); return 0; } gl_skb = alloc_skb(size, GFP_ATOMIC); if (gl_skb) { memcpy(skb_put(gl_skb, size), packet->packet_data, size); usbnet_skb_return(dev, gl_skb); } packet = (struct gl_packet *)&packet->packet_data[size]; count--; skb_pull(skb, size + 4); } skb_pull(skb, 4); if (skb->len > GL_MAX_PACKET_LEN) { dbg("genelink: invalid rx length %d", skb->len); return 0; } return 1;}
开发者ID:DirtyDroidX,项目名称:android_kernel_htc_m8ul,代码行数:60,
示例5: rx_processstatic inline void rx_process (struct usbnet *dev, struct sk_buff *skb){ if (dev->driver_info->rx_fixup && !dev->driver_info->rx_fixup (dev, skb)) goto error; // else network stack removes extra byte if we forced a short packet if (skb->len) usbnet_skb_return (dev, skb); else { netif_dbg(dev, rx_err, dev->net, "drop/n");error: dev->net->stats.rx_errors++; skb_queue_tail (&dev->done, skb); }}
开发者ID:A2109devs,项目名称:lenovo_a2109a_kernel,代码行数:16,
示例6: usbnet_resume_rxvoid usbnet_resume_rx(struct usbnet *dev){ struct sk_buff *skb; int num = 0; clear_bit(EVENT_RX_PAUSED, &dev->flags); while ((skb = skb_dequeue(&dev->rxq_pause)) != NULL) { usbnet_skb_return(dev, skb); num++; } tasklet_schedule(&dev->bh); netif_dbg(dev, rx_status, dev->net, "paused rx queue disabled, %d skbs requeued/n", num);}
开发者ID:boyan3010,项目名称:ShooterU_Kernel_3.2.X,代码行数:17,
示例7: rndis_rx_fixup/* * DATA -- host must not write zlps */int rndis_rx_fixup(struct usbnet *dev, struct sk_buff *skb){ /* This check is no longer done by usbnet */ if (skb->len < dev->net->hard_header_len) return 0; /* peripheral may have batched packets to us... */ while (likely(skb->len)) { struct rndis_data_hdr *hdr = (void *)skb->data; struct sk_buff *skb2; u32 msg_len, data_offset, data_len; msg_len = le32_to_cpu(hdr->msg_len); data_offset = le32_to_cpu(hdr->data_offset); data_len = le32_to_cpu(hdr->data_len); /* don't choke if we see oob, per-packet data, etc */ if (unlikely(hdr->msg_type != RNDIS_MSG_PACKET || skb->len < msg_len || (data_offset + data_len + 8) > msg_len)) { dev->net->stats.rx_frame_errors++; netdev_dbg(dev->net, "bad rndis message %d/%d/%d/%d, len %d/n", le32_to_cpu(hdr->msg_type), msg_len, data_offset, data_len, skb->len); return 0; } skb_pull(skb, 8 + data_offset); /* at most one packet left? */ if (likely((data_len - skb->len) <= sizeof *hdr)) { skb_trim(skb, data_len); break; } /* try to return all the packets in the batch */ skb2 = skb_clone(skb, GFP_ATOMIC); if (unlikely(!skb2)) break; skb_pull(skb, msg_len - sizeof *hdr); skb_trim(skb2, data_len); usbnet_skb_return(dev, skb2); } /* caller will usbnet_skb_return the remaining packet */ return 1;}
开发者ID:AbdulrahmanAmir,项目名称:Dorimanx-LG-G2-D802-Kernel,代码行数:49,
示例8: kalmia_rx_fixupstatic intkalmia_rx_fixup(struct usbnet *dev, struct sk_buff *skb){ /* * Our task here is to strip off framing, leaving skb with one * data frame for the usbnet framework code to process. */ static const u8 HEADER_END_OF_USB_PACKET[] = { 0x57, 0x5a, 0x00, 0x00, 0x08, 0x00 }; static const u8 EXPECTED_UNKNOWN_HEADER_1[] = { 0x57, 0x43, 0x1e, 0x00, 0x15, 0x02 }; static const u8 EXPECTED_UNKNOWN_HEADER_2[] = { 0x57, 0x50, 0x0e, 0x00, 0x00, 0x00 }; int i = 0; /* incomplete header? */ if (skb->len < KALMIA_HEADER_LENGTH) return 0; do { struct sk_buff *skb2 = NULL; u8 *header_start; u16 usb_packet_length, ether_packet_length; int is_last; header_start = skb->data; if (unlikely(header_start[0] != 0x57 || header_start[1] != 0x44)) { if (!memcmp(header_start, EXPECTED_UNKNOWN_HEADER_1, sizeof(EXPECTED_UNKNOWN_HEADER_1)) || !memcmp( header_start, EXPECTED_UNKNOWN_HEADER_2, sizeof(EXPECTED_UNKNOWN_HEADER_2))) { netdev_dbg(dev->net, "Received expected unknown frame header: %6phC. Package length: %i/n", header_start, skb->len - KALMIA_HEADER_LENGTH); } else { netdev_err(dev->net, "Received unknown frame header: %6phC. Package length: %i/n", header_start, skb->len - KALMIA_HEADER_LENGTH); return 0; } } else netdev_dbg(dev->net, "Received header: %6phC. Package length: %i/n", header_start, skb->len - KALMIA_HEADER_LENGTH); /* subtract start header and end header */ usb_packet_length = skb->len - (2 * KALMIA_HEADER_LENGTH); ether_packet_length = get_unaligned_le16(&header_start[2]); skb_pull(skb, KALMIA_HEADER_LENGTH); /* Some small packets misses end marker */ if (usb_packet_length < ether_packet_length) { ether_packet_length = usb_packet_length + KALMIA_HEADER_LENGTH; is_last = true; } else { netdev_dbg(dev->net, "Correct package length #%i", i + 1); is_last = (memcmp(skb->data + ether_packet_length, HEADER_END_OF_USB_PACKET, sizeof(HEADER_END_OF_USB_PACKET)) == 0); if (!is_last) { header_start = skb->data + ether_packet_length; netdev_dbg(dev->net, "End header: %6phC. Package length: %i/n", header_start, skb->len - KALMIA_HEADER_LENGTH); } } if (is_last) { skb2 = skb; } else { skb2 = skb_clone(skb, GFP_ATOMIC); if (unlikely(!skb2)) return 0; } skb_trim(skb2, ether_packet_length); if (is_last) { return 1; } else { usbnet_skb_return(dev, skb2); skb_pull(skb, ether_packet_length); } i++; } while (skb->len);//.........这里部分代码省略.........
开发者ID:ReneNyffenegger,项目名称:linux,代码行数:101,
示例9: cdc_ncm_rx_fixupstatic int cdc_ncm_rx_fixup(struct usbnet *dev, struct sk_buff *skb_in){ struct sk_buff *skb; struct cdc_ncm_ctx *ctx = (struct cdc_ncm_ctx *)dev->data[0]; int len; int nframes; int x; int offset; struct usb_cdc_ncm_ndp16 *ndp16; struct usb_cdc_ncm_dpe16 *dpe16; int ndpoffset; int loopcount = 50; /* arbitrary max preventing infinite loop */ ndpoffset = cdc_ncm_rx_verify_nth16(ctx, skb_in); if (ndpoffset < 0) goto error;next_ndp: nframes = cdc_ncm_rx_verify_ndp16(skb_in, ndpoffset); if (nframes < 0) goto error; ndp16 = (struct usb_cdc_ncm_ndp16 *)(skb_in->data + ndpoffset); if (le32_to_cpu(ndp16->dwSignature) != USB_CDC_NCM_NDP16_NOCRC_SIGN) { pr_debug("invalid DPT16 signature <%u>/n", le32_to_cpu(ndp16->dwSignature)); goto err_ndp; } dpe16 = ndp16->dpe16; for (x = 0; x < nframes; x++, dpe16++) { offset = le16_to_cpu(dpe16->wDatagramIndex); len = le16_to_cpu(dpe16->wDatagramLength); /* * CDC NCM ch. 3.7 * All entries after first NULL entry are to be ignored */ if ((offset == 0) || (len == 0)) { if (!x) goto err_ndp; /* empty NTB */ break; } /* sanity checking */ if (((offset + len) > skb_in->len) || (len > ctx->rx_max) || (len < ETH_HLEN)) { pr_debug("invalid frame detected (ignored)" "offset[%u]=%u, length=%u, skb=%p/n", x, offset, len, skb_in); if (!x) goto err_ndp; break; } else { skb = skb_clone(skb_in, GFP_ATOMIC); if (!skb) goto error; skb->len = len; skb->data = ((u8 *)skb_in->data) + offset; skb_set_tail_pointer(skb, len); usbnet_skb_return(dev, skb); } }err_ndp: /* are there more NDPs to process? */ ndpoffset = le16_to_cpu(ndp16->wNextNdpIndex); if (ndpoffset && loopcount--) goto next_ndp; return 1;error: return 0;}
开发者ID:smx-smx,项目名称:dsl-n55u,代码行数:75,
示例10: cdc_mbim_rx_fixupstatic int cdc_mbim_rx_fixup(struct usbnet *dev, struct sk_buff *skb_in){ struct sk_buff *skb; struct cdc_mbim_state *info = (void *)&dev->data; struct cdc_ncm_ctx *ctx = info->ctx; int len; int nframes; int x; int offset; struct usb_cdc_ncm_ndp16 *ndp16; struct usb_cdc_ncm_dpe16 *dpe16; int ndpoffset; int loopcount = 50; /* arbitrary max preventing infinite loop */ u8 *c; u16 tci; ndpoffset = cdc_ncm_rx_verify_nth16(ctx, skb_in); if (ndpoffset < 0) goto error;next_ndp: nframes = cdc_ncm_rx_verify_ndp16(skb_in, ndpoffset); if (nframes < 0) goto error; ndp16 = (struct usb_cdc_ncm_ndp16 *)(skb_in->data + ndpoffset); switch (ndp16->dwSignature & cpu_to_le32(0x00ffffff)) { case cpu_to_le32(USB_CDC_MBIM_NDP16_IPS_SIGN): c = (u8 *)&ndp16->dwSignature; tci = c[3]; break; case cpu_to_le32(USB_CDC_MBIM_NDP16_DSS_SIGN): c = (u8 *)&ndp16->dwSignature; tci = c[3] + 256; break; default: netif_dbg(dev, rx_err, dev->net, "unsupported NDP signature <0x%08x>/n", le32_to_cpu(ndp16->dwSignature)); goto err_ndp; } dpe16 = ndp16->dpe16; for (x = 0; x < nframes; x++, dpe16++) { offset = le16_to_cpu(dpe16->wDatagramIndex); len = le16_to_cpu(dpe16->wDatagramLength); /* * CDC NCM ch. 3.7 * All entries after first NULL entry are to be ignored */ if ((offset == 0) || (len == 0)) { if (!x) goto err_ndp; /* empty NTB */ break; } /* sanity checking */ if (((offset + len) > skb_in->len) || (len > ctx->rx_max)) { netif_dbg(dev, rx_err, dev->net, "invalid frame detected (ignored) offset[%u]=%u, length=%u, skb=%p/n", x, offset, len, skb_in); if (!x) goto err_ndp; break; } else { skb = cdc_mbim_process_dgram(dev, skb_in->data + offset, len, tci); if (!skb) goto error; usbnet_skb_return(dev, skb); } }err_ndp: /* are there more NDPs to process? */ ndpoffset = le16_to_cpu(ndp16->wNextNdpIndex); if (ndpoffset && loopcount--) goto next_ndp; return 1;error: return 0;}
开发者ID:7799,项目名称:linux,代码行数:84,
示例11: rx_submitstatic void rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags){ struct sk_buff *skb; struct skb_data *entry; int retval = 0; unsigned long lockflags; size_t size = dev->rx_urb_size;#if defined(CONFIG_RA_HW_NAT_PCI) && (defined(CONFIG_RA_HW_NAT) || defined(CONFIG_RA_HW_NAT_MODULE)) if ((skb = alloc_skb (size + NET_IP_ALIGN + FOE_INFO_LEN, flags)) == NULL) {#else if ((skb = alloc_skb (size + NET_IP_ALIGN, flags)) == NULL) {#endif if (netif_msg_rx_err (dev)) devdbg (dev, "no rx skb"); usbnet_defer_kevent (dev, EVENT_RX_MEMORY); usb_free_urb (urb); return; }#if defined(CONFIG_RA_HW_NAT_PCI) && (defined(CONFIG_RA_HW_NAT) || defined(CONFIG_RA_HW_NAT_MODULE)) skb_reserve (skb, NET_IP_ALIGN + FOE_INFO_LEN);#else skb_reserve (skb, NET_IP_ALIGN);#endif entry = (struct skb_data *) skb->cb; entry->urb = urb; entry->dev = dev; entry->length = 0; usb_fill_bulk_urb (urb, dev->udev, dev->in, skb->data, size, rx_complete, skb); spin_lock_irqsave (&dev->rxq.lock, lockflags); if (netif_running (dev->net) && netif_device_present (dev->net) && !test_bit (EVENT_RX_HALT, &dev->flags)) { switch (retval = usb_submit_urb (urb, GFP_ATOMIC)){ case -EPIPE: usbnet_defer_kevent (dev, EVENT_RX_HALT); break; case -ENOMEM: usbnet_defer_kevent (dev, EVENT_RX_MEMORY); break; case -ENODEV: if (netif_msg_ifdown (dev)) devdbg (dev, "device gone"); netif_device_detach (dev->net); break; default: if (netif_msg_rx_err (dev)) devdbg (dev, "rx submit, %d", retval); tasklet_schedule (&dev->bh); break; case 0: __usbnet_queue_skb(&dev->rxq, skb, rx_start); } } else { if (netif_msg_ifdown (dev)) devdbg (dev, "rx: stopped"); retval = -ENOLINK; } spin_unlock_irqrestore (&dev->rxq.lock, lockflags); if (retval) { dev_kfree_skb_any (skb); usb_free_urb (urb); }}/*-------------------------------------------------------------------------*/static inline void rx_process (struct usbnet *dev, struct sk_buff *skb){ if (dev->driver_info->rx_fixup && !dev->driver_info->rx_fixup (dev, skb)) goto error; // else network stack removes extra byte if we forced a short packet if (skb->len) usbnet_skb_return (dev, skb); else { if (netif_msg_rx_err (dev)) devdbg (dev, "drop");error: dev->stats.rx_errors++; skb_queue_tail (&dev->done, skb); }}/*-------------------------------------------------------------------------*/static void rx_complete (struct urb *urb){ struct sk_buff *skb = (struct sk_buff *) urb->context; struct skb_data *entry = (struct skb_data *) skb->cb; struct usbnet *dev = entry->dev; int urb_status = urb->status; enum skb_state state;//.........这里部分代码省略.........
开发者ID:qwerty1023,项目名称:wive-rtnl-firmware,代码行数:101,
示例12: rx_submitstatic int rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags){ struct sk_buff *skb; struct skb_data *entry; int retval = 0; unsigned long lockflags; size_t size = dev->rx_urb_size;#if defined (CONFIG_RA_HW_NAT) || defined (CONFIG_RA_HW_NAT_MODULE) if ((skb = alloc_skb (size + NET_IP_ALIGN + FOE_INFO_LEN, flags)) == NULL) {#else if ((skb = alloc_skb (size + NET_IP_ALIGN, flags)) == NULL) {#endif netif_dbg(dev, rx_err, dev->net, "no rx skb/n"); usbnet_defer_kevent (dev, EVENT_RX_MEMORY); usb_free_urb (urb); return -ENOMEM; }#if defined (CONFIG_RA_HW_NAT) || defined (CONFIG_RA_HW_NAT_MODULE) skb_reserve (skb, NET_IP_ALIGN + FOE_INFO_LEN);#else skb_reserve (skb, NET_IP_ALIGN);#endif entry = (struct skb_data *) skb->cb; entry->urb = urb; entry->dev = dev; entry->state = rx_start; entry->length = 0; usb_fill_bulk_urb (urb, dev->udev, dev->in, skb->data, size, rx_complete, skb); spin_lock_irqsave (&dev->rxq.lock, lockflags); if (netif_running (dev->net) && netif_device_present (dev->net) && !test_bit (EVENT_RX_HALT, &dev->flags) && !test_bit (EVENT_DEV_ASLEEP, &dev->flags)) { switch (retval = usb_submit_urb (urb, GFP_ATOMIC)) { case -EPIPE: usbnet_defer_kevent (dev, EVENT_RX_HALT); break; case -ENOMEM: usbnet_defer_kevent (dev, EVENT_RX_MEMORY); break; case -ENODEV: netif_dbg(dev, ifdown, dev->net, "device gone/n"); netif_device_detach (dev->net); break; case -EHOSTUNREACH: retval = -ENOLINK; break; default: netif_dbg(dev, rx_err, dev->net, "rx submit, %d/n", retval); tasklet_schedule (&dev->bh); break; case 0: __skb_queue_tail (&dev->rxq, skb); } } else { netif_dbg(dev, ifdown, dev->net, "rx: stopped/n"); retval = -ENOLINK; } spin_unlock_irqrestore (&dev->rxq.lock, lockflags); if (retval) { dev_kfree_skb_any (skb); usb_free_urb (urb); } return retval;}/*-------------------------------------------------------------------------*/static inline void rx_process (struct usbnet *dev, struct sk_buff *skb){ if (dev->driver_info->rx_fixup && !dev->driver_info->rx_fixup (dev, skb)) goto error; // else network stack removes extra byte if we forced a short packet if (skb->len) usbnet_skb_return (dev, skb); else { netif_dbg(dev, rx_err, dev->net, "drop/n");error: dev->net->stats.rx_errors++; skb_queue_tail (&dev->done, skb); }}/*-------------------------------------------------------------------------*/static void rx_complete (struct urb *urb){ struct sk_buff *skb = (struct sk_buff *) urb->context; struct skb_data *entry = (struct skb_data *) skb->cb; struct usbnet *dev = entry->dev;//.........这里部分代码省略.........
开发者ID:patrick-ken,项目名称:kernel_808l,代码行数:101,
注:本文中的usbnet_skb_return函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ use函数代码示例 C++ usbnet_resume函数代码示例 |