Example #1
0
static int pdp_mux(struct pdp_info *dev, const void *data, size_t len   )
{
	int ret;
	size_t nbytes;
	u8 *tx_buf;
	struct pdp_hdr *hdr;
	const u8 *buf;

   if(pdp_tx_flag){
	   if (dev->type == DEV_TYPE_NET)	
         return -EAGAIN;
   }

	tx_buf = dev->tx_buf;
	hdr = (struct pdp_hdr *)(tx_buf + 1);
	buf = data;

	hdr->id = dev->id;
	hdr->control = 0;

	while (len) {
		if (len > MAX_PDP_DATA_LEN) {
			nbytes = MAX_PDP_DATA_LEN;
		} else {
			nbytes = len;
		}
		hdr->len = nbytes + sizeof(struct pdp_hdr);

		tx_buf[0] = 0x7f;
		
		memcpy(tx_buf + 1 + sizeof(struct pdp_hdr), buf,  nbytes);
		
		tx_buf[1 + hdr->len] = 0x7e;

		DPRINTK(2, "hdr->id: %d, hdr->len: %d\n", hdr->id, hdr->len);

//		wake_lock_timeout(&pdp_wake_lock, 12*HZ/2);
		wake_lock_timeout(&pdp_wake_lock, pdp_wake_time);
#ifdef	NO_TTY_DPRAM
		ret = multipdp_write(tx_buf, hdr->len +2);
		if( ret <= 0 )
			printk("pdp_mux:multipdp_write : len = %d\n", hdr->len+2);
#endif
		if (ret < 0) {
			DPRINTK(1, "dpram_write() failed: %d\n", ret);
			return ret;
		}
		buf += nbytes;
		len -= nbytes;
	}

	return 0;
}
static int pdp_mux(struct pdp_info *dev, const void *data, size_t len   )
{
	int ret; // = 0;
	size_t nbytes;
	u8 *tx_buf;
	struct pdp_hdr *hdr;
	const u8 *buf;
	
	tx_buf = dev->tx_buf;
	hdr = (struct pdp_hdr *)(tx_buf + 1);
	buf = data;

	hdr->id = dev->id;
	hdr->control = 0;

	while (len) {
		if (len > MAX_PDP_DATA_LEN) {
			nbytes = MAX_PDP_DATA_LEN;
		} else {
			nbytes = len;
		}
		hdr->len = nbytes + sizeof(struct pdp_hdr);

		tx_buf[0] = 0x7f;
		
		memcpy(tx_buf + 1 + sizeof(struct pdp_hdr), buf,  nbytes);
		
		tx_buf[1 + hdr->len] = 0x7e;

		DPRINTK(2, "hdr->id: %d, hdr->len: %d\n", hdr->id, hdr->len);

		wake_lock_timeout(&pdp_wake_lock, 6*HZ);
#ifdef	NO_TTY_DPRAM
		//
ret = multipdp_write(tx_buf, hdr->len +2);
		//
if( ret <= 0 )
		//
	printk("pdp_mux:multipdp_write : len = %d\n", hdr->len+2);
#endif
		if (ret < 0) {
			DPRINTK(1, "dpram_write() failed: %d\n", ret);
			printk(KERN_ERR "(%s) dpram_write() failed: %d\n",__func__, ret);
			return ret;
		}
		buf += nbytes;
		len -= nbytes;
	}

	return 0;
}