您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ usbnet_skb_return函数代码示例

51自学网 2021-06-03 09:22:39
  C++
这篇教程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_process

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)) {		/* 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_process

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)) {				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_process

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)) {				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_fixup

static 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_process

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);	}}
开发者ID:A2109devs,项目名称:lenovo_a2109a_kernel,代码行数:16,


示例6: usbnet_resume_rx

void 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_fixup

static 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_fixup

static 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_fixup

static 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_submit

static 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_submit

static 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函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。