devices/generic.c
changeset 1555 7679e98b0bb1
parent 1542 91ae9c95dd2e
child 1557 daf92232d9c5
equal deleted inserted replaced
1554:e07a0f8de03d 1555:7679e98b0bb1
   112     ec_gen_device_poll(gendev);
   112     ec_gen_device_poll(gendev);
   113 }
   113 }
   114 
   114 
   115 /*****************************************************************************/
   115 /*****************************************************************************/
   116 
   116 
       
   117 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)
   117 static const struct net_device_ops ec_gen_netdev_ops = {
   118 static const struct net_device_ops ec_gen_netdev_ops = {
   118 	.ndo_open		= ec_gen_netdev_open,
   119     .ndo_open       = ec_gen_netdev_open,
   119 	.ndo_stop		= ec_gen_netdev_stop,
   120     .ndo_stop       = ec_gen_netdev_stop,
   120 	.ndo_start_xmit	= ec_gen_netdev_start_xmit,
   121     .ndo_start_xmit = ec_gen_netdev_start_xmit,
   121 };
   122 };
       
   123 #endif
   122 
   124 
   123 /*****************************************************************************/
   125 /*****************************************************************************/
   124 
   126 
   125 /** Init generic device.
   127 /** Init generic device.
   126  */
   128  */
   133     char null = 0x00;
   135     char null = 0x00;
   134 
   136 
   135     dev->ecdev = NULL;
   137     dev->ecdev = NULL;
   136     dev->socket = NULL;
   138     dev->socket = NULL;
   137 
   139 
   138 	dev->netdev = alloc_netdev(sizeof(ec_gen_device_t *), &null, ether_setup);
   140     dev->netdev = alloc_netdev(sizeof(ec_gen_device_t *), &null, ether_setup);
   139 	if (!dev->netdev) {
   141     if (!dev->netdev) {
   140 		return -ENOMEM;
   142         return -ENOMEM;
   141 	}
   143     }
   142     memcpy(dev->netdev->dev_addr, real_netdev->dev_addr, ETH_ALEN);
   144     memcpy(dev->netdev->dev_addr, real_netdev->dev_addr, ETH_ALEN);
       
   145 
       
   146 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)
   143     dev->netdev->netdev_ops = &ec_gen_netdev_ops;
   147     dev->netdev->netdev_ops = &ec_gen_netdev_ops;
       
   148 #else
       
   149     dev->netdev->open = ec_gen_netdev_open;
       
   150     dev->netdev->stop = ec_gen_netdev_stop;
       
   151     dev->netdev->hard_start_xmit = ec_gen_netdev_start_xmit;
       
   152 #endif
       
   153 
   144     priv = netdev_priv(dev->netdev);
   154     priv = netdev_priv(dev->netdev);
   145     *priv = dev;
   155     *priv = dev;
   146 
   156 
   147     return 0;
   157     return 0;
   148 }
   158 }
   210         struct net_device *real_netdev
   220         struct net_device *real_netdev
   211         )
   221         )
   212 {
   222 {
   213     int ret = 0;
   223     int ret = 0;
   214 
   224 
   215 	dev->ecdev = ecdev_offer(dev->netdev, ec_gen_poll, THIS_MODULE);
   225     dev->ecdev = ecdev_offer(dev->netdev, ec_gen_poll, THIS_MODULE);
   216     if (dev->ecdev) {
   226     if (dev->ecdev) {
   217         if (ec_gen_device_create_socket(dev, real_netdev)) {
   227         if (ec_gen_device_create_socket(dev, real_netdev)) {
   218             ecdev_withdraw(dev->ecdev);
   228             ecdev_withdraw(dev->ecdev);
   219             dev->ecdev = NULL;
   229             dev->ecdev = NULL;
   220         } else if (ecdev_open(dev->ecdev)) {
   230         } else if (ecdev_open(dev->ecdev)) {