static void vnet_defer_xmit(struct work_struct *data)
{
   struct sk_buff *skb; 
   struct net_device *net;
   struct pdp_info *dev; 
	int ret ;

   DPRINTK(2, "BEGIN\n");

   ret = 0; 
   skb = (struct sk_buff *)workqueue_data; 
   net =  (struct net_device *)skb->dev;
   dev = (struct pdp_info *)net->ml_priv;
    
	ret = pdp_mux(dev, skb->data, skb->len);

	if (ret < 0) {
		dev->vn_dev.stats.tx_dropped++;
	}
	
	else {
		net->trans_start = jiffies;
		dev->vn_dev.stats.tx_bytes += skb->len;
		dev->vn_dev.stats.tx_packets++;
	}

	dev_kfree_skb_any(skb);
	netif_wake_queue(net);

	vnet_start_xmit_flag = 0; 
    
   DPRINTK(2, "END\n");
}
static void vnet_defer_xmit(struct work_struct *data)
{
   struct sk_buff *skb = (struct sk_buff *)workqueue_data; 
   struct net_device *net = (struct net_device *)skb->dev;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
   struct pdp_info *dev = (struct pdp_info *)net->ml_priv;
#else
	struct pdp_info *dev = (struct pdp_info *)net->priv;
#endif

	int ret = 0;
   	
	down(&pdp_txlock);

	ret = pdp_mux(dev, skb->data, skb->len);

	if (ret < 0) {
		dev->vn_dev.stats.tx_dropped++;
	}
	
	else {
		net->trans_start = jiffies;
		dev->vn_dev.stats.tx_bytes += skb->len;
		dev->vn_dev.stats.tx_packets++;
	}
	dev_kfree_skb_any(skb);
	vnet_start_xmit_flag = 0;

	up(&pdp_txlock);

	netif_wake_queue(net);
}
Exemple #3
0
static send_loop_back_packet(const char *data, int size)
{
	struct pdp_info *dev = pdp_get_dev(LOOP_BACK_CHANNEL);

	if (loopback_ongoing) {
		pdp_mux(dev, data, size);
		loopback_res.nTransfered++;
	}
}
static send_loop_back_packet(const char* data, int size)
{
	struct pdp_info* dev = pdp_get_dev(LOOP_BACK_CHANNEL);

	if (loopback_ongoing) {
		//printk("send loopback packet start [%d]\n",loopback_res.nTransfered);
		pdp_mux(dev, data, size);
		//printk("send loopback packet end [%d]\n",loopback_res.nTransfered);
		loopback_res.nTransfered++;
		}
	
}
Exemple #5
0
static int vs_write(struct tty_struct *tty,
		const unsigned char *buf, int count)
{
	int ret;
	struct pdp_info *dev = (struct pdp_info *)tty->driver_data;

//printk("========================>  vs_write : %s : %d\n", tty->driver->name, count); 

	ret = pdp_mux(dev, buf, count);

	if (ret == 0) {
		ret = count;
	}
	
	return ret;
}
Exemple #6
0
static int vs_write(struct tty_struct *tty, const unsigned char *buf, int count)
{
	int ret;
	struct pdp_info *dev;
	/*
    mutex_lock(&pdp_lock);
	*/
	dev = (struct pdp_info *)tty->driver_data;
	ret = pdp_mux(dev, buf, count);

	if (ret == 0)
		ret = count;
	/*
	mutex_unlock(&pdp_lock);
	*/

	return ret;
}
static int vs_write(struct tty_struct *tty,
		const unsigned char *buf, int count)
{
	int ret;
	unsigned long flag;
   struct pdp_info *dev;

   DPRINTK(2, "BEGIN\n");
   
	dev = (struct pdp_info *)tty->driver_data; 
    
   ret = pdp_mux(dev, buf, count);

	if (ret == 0) {
		ret = count;
	}
  
   DPRINTK(2, "END\n");
   
	return ret;
}