Merge branch 'for-2.6.40/splice' of git://git.kernel.dk/linux-2.6-block
[firefly-linux-kernel-4.4.55.git] / drivers / staging / hv / rndis_filter.c
index 26658c684f1e84bccdb17c74217fd1dd5f5313bc..60ebdb1b6082b33f1a993b1b6928da599df4c1fc 100644 (file)
 
 #include "hyperv.h"
 #include "hyperv_net.h"
-#include "rndis_filter.h"
 
-/* Data types */
-struct rndis_filter_driver_object {
-       /* The original driver */
-       struct netvsc_driver inner_drv;
-};
 
 enum rndis_device_state {
        RNDIS_DEV_UNINITIALIZED = 0,
@@ -75,24 +69,11 @@ struct rndis_request {
        struct rndis_message request_msg;
 };
 
-
-struct rndis_filter_packet {
-       void *completion_ctx;
-       void (*completion)(void *context);
-       struct rndis_message msg;
-};
-
-
-static int rndis_filter_send(struct hv_device *dev,
-                            struct hv_netvsc_packet *pkt);
-
 static void rndis_filter_send_completion(void *ctx);
 
 static void rndis_filter_send_request_completion(void *ctx);
 
 
-/* The one and only */
-static struct rndis_filter_driver_object rndis_filter;
 
 static struct rndis_device *get_rndis_device(void)
 {
@@ -256,7 +237,7 @@ static int rndis_filter_send_request(struct rndis_device *dev,
                rndis_filter_send_request_completion;
        packet->completion.send.send_completion_tid = (unsigned long)dev;
 
-       ret = rndis_filter.inner_drv.send(dev->net_dev->dev, packet);
+       ret = netvsc_send(dev->net_dev->dev, packet);
        return ret;
 }
 
@@ -321,10 +302,10 @@ static void rndis_filter_receive_indicate_status(struct rndis_device *dev,
                        &resp->msg.indicate_status;
 
        if (indicate->status == RNDIS_STATUS_MEDIA_CONNECT) {
-               rndis_filter.inner_drv.link_status_change(
+               netvsc_linkstatus_callback(
                        dev->net_dev->dev, 1);
        } else if (indicate->status == RNDIS_STATUS_MEDIA_DISCONNECT) {
-               rndis_filter.inner_drv.link_status_change(
+               netvsc_linkstatus_callback(
                        dev->net_dev->dev, 0);
        } else {
                /*
@@ -356,11 +337,10 @@ static void rndis_filter_receive_data(struct rndis_device *dev,
 
        pkt->is_data_pkt = true;
 
-       rndis_filter.inner_drv.recv_cb(dev->net_dev->dev,
-                                                  pkt);
+       netvsc_recv_callback(dev->net_dev->dev, pkt);
 }
 
-static int rndis_filter_receive(struct hv_device *dev,
+int rndis_filter_receive(struct hv_device *dev,
                                struct hv_netvsc_packet *pkt)
 {
        struct netvsc_device *net_dev = dev->ext;
@@ -588,31 +568,6 @@ Exit:
        return ret;
 }
 
-int rndis_filter_init(struct netvsc_driver *drv)
-{
-       drv->req_ext_size = sizeof(struct rndis_filter_packet);
-
-       /* Driver->Context = rndisDriver; */
-
-       memset(&rndis_filter, 0, sizeof(struct rndis_filter_driver_object));
-
-       /*rndisDriver->Driver = Driver;
-
-       ASSERT(Driver->OnLinkStatusChanged);
-       rndisDriver->OnLinkStatusChanged = Driver->OnLinkStatusChanged;*/
-
-       /* Save the original dispatch handlers before we override it */
-       rndis_filter.inner_drv.send = drv->send;
-       rndis_filter.inner_drv.recv_cb = drv->recv_cb;
-       rndis_filter.inner_drv.link_status_change =
-                                       drv->link_status_change;
-
-       /* Override */
-       drv->send = rndis_filter_send;
-       drv->recv_cb = rndis_filter_receive;
-
-       return 0;
-}
 
 static int rndis_filter_init_device(struct rndis_device *dev)
 {
@@ -823,7 +778,7 @@ int rndis_filter_close(struct hv_device *dev)
        return rndis_filter_close_device(netDevice->extension);
 }
 
-static int rndis_filter_send(struct hv_device *dev,
+int rndis_filter_send(struct hv_device *dev,
                             struct hv_netvsc_packet *pkt)
 {
        int ret;
@@ -863,7 +818,7 @@ static int rndis_filter_send(struct hv_device *dev,
        pkt->completion.send.send_completion = rndis_filter_send_completion;
        pkt->completion.send.send_completion_ctx = filterPacket;
 
-       ret = rndis_filter.inner_drv.send(dev, pkt);
+       ret = netvsc_send(dev, pkt);
        if (ret != 0) {
                /*
                 * Reset the completion to originals to allow retries from