Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
[platform/kernel/linux-starfive.git] / drivers / hv / channel.c
index 63ac1c6..efd5db7 100644 (file)
@@ -661,9 +661,23 @@ void vmbus_close(struct vmbus_channel *channel)
 }
 EXPORT_SYMBOL_GPL(vmbus_close);
 
-int vmbus_sendpacket_ctl(struct vmbus_channel *channel, void *buffer,
-                        u32 bufferlen, u64 requestid,
-                        enum vmbus_packet_type type, u32 flags)
+/**
+ * vmbus_sendpacket() - Send the specified buffer on the given channel
+ * @channel: Pointer to vmbus_channel structure.
+ * @buffer: Pointer to the buffer you want to receive the data into.
+ * @bufferlen: Maximum size of what the the buffer will hold
+ * @requestid: Identifier of the request
+ * @type: Type of packet that is being send e.g. negotiate, time
+ * packet etc.
+ *
+ * Sends data in @buffer directly to hyper-v via the vmbus
+ * This will send the data unparsed to hyper-v.
+ *
+ * Mainly used by Hyper-V drivers.
+ */
+int vmbus_sendpacket(struct vmbus_channel *channel, void *buffer,
+                          u32 bufferlen, u64 requestid,
+                          enum vmbus_packet_type type, u32 flags)
 {
        struct vmpacket_descriptor desc;
        u32 packetlen = sizeof(struct vmpacket_descriptor) + bufferlen;
@@ -690,42 +704,19 @@ int vmbus_sendpacket_ctl(struct vmbus_channel *channel, void *buffer,
 
        return hv_ringbuffer_write(channel, bufferlist, num_vecs);
 }
-EXPORT_SYMBOL(vmbus_sendpacket_ctl);
-
-/**
- * vmbus_sendpacket() - Send the specified buffer on the given channel
- * @channel: Pointer to vmbus_channel structure.
- * @buffer: Pointer to the buffer you want to receive the data into.
- * @bufferlen: Maximum size of what the the buffer will hold
- * @requestid: Identifier of the request
- * @type: Type of packet that is being send e.g. negotiate, time
- * packet etc.
- *
- * Sends data in @buffer directly to hyper-v via the vmbus
- * This will send the data unparsed to hyper-v.
- *
- * Mainly used by Hyper-V drivers.
- */
-int vmbus_sendpacket(struct vmbus_channel *channel, void *buffer,
-                          u32 bufferlen, u64 requestid,
-                          enum vmbus_packet_type type, u32 flags)
-{
-       return vmbus_sendpacket_ctl(channel, buffer, bufferlen, requestid,
-                                   type, flags);
-}
 EXPORT_SYMBOL(vmbus_sendpacket);
 
 /*
- * vmbus_sendpacket_pagebuffer_ctl - Send a range of single-page buffer
+ * vmbus_sendpacket_pagebuffer - Send a range of single-page buffer
  * packets using a GPADL Direct packet type. This interface allows you
  * to control notifying the host. This will be useful for sending
  * batched data. Also the sender can control the send flags
  * explicitly.
  */
-int vmbus_sendpacket_pagebuffer_ctl(struct vmbus_channel *channel,
-                                   struct hv_page_buffer pagebuffers[],
-                                   u32 pagecount, void *buffer, u32 bufferlen,
-                                   u64 requestid, u32 flags)
+int vmbus_sendpacket_pagebuffer(struct vmbus_channel *channel,
+                               struct hv_page_buffer pagebuffers[],
+                               u32 pagecount, void *buffer, u32 bufferlen,
+                               u64 requestid)
 {
        int i;
        struct vmbus_channel_packet_page_buffer desc;
@@ -750,7 +741,7 @@ int vmbus_sendpacket_pagebuffer_ctl(struct vmbus_channel *channel,
 
        /* Setup the descriptor */
        desc.type = VM_PKT_DATA_USING_GPA_DIRECT;
-       desc.flags = flags;
+       desc.flags = VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED;
        desc.dataoffset8 = descsize >> 3; /* in 8-bytes granularity */
        desc.length8 = (u16)(packetlen_aligned >> 3);
        desc.transactionid = requestid;
@@ -771,24 +762,6 @@ int vmbus_sendpacket_pagebuffer_ctl(struct vmbus_channel *channel,
 
        return hv_ringbuffer_write(channel, bufferlist, 3);
 }
-EXPORT_SYMBOL_GPL(vmbus_sendpacket_pagebuffer_ctl);
-
-/*
- * vmbus_sendpacket_pagebuffer - Send a range of single-page buffer
- * packets using a GPADL Direct packet type.
- */
-int vmbus_sendpacket_pagebuffer(struct vmbus_channel *channel,
-                                    struct hv_page_buffer pagebuffers[],
-                                    u32 pagecount, void *buffer, u32 bufferlen,
-                                    u64 requestid)
-{
-       u32 flags = VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED;
-
-       return vmbus_sendpacket_pagebuffer_ctl(channel, pagebuffers, pagecount,
-                                              buffer, bufferlen,
-                                              requestid, flags);
-
-}
 EXPORT_SYMBOL_GPL(vmbus_sendpacket_pagebuffer);
 
 /*
@@ -828,62 +801,6 @@ int vmbus_sendpacket_mpb_desc(struct vmbus_channel *channel,
 }
 EXPORT_SYMBOL_GPL(vmbus_sendpacket_mpb_desc);
 
-/*
- * vmbus_sendpacket_multipagebuffer - Send a multi-page buffer packet
- * using a GPADL Direct packet type.
- */
-int vmbus_sendpacket_multipagebuffer(struct vmbus_channel *channel,
-                               struct hv_multipage_buffer *multi_pagebuffer,
-                               void *buffer, u32 bufferlen, u64 requestid)
-{
-       struct vmbus_channel_packet_multipage_buffer desc;
-       u32 descsize;
-       u32 packetlen;
-       u32 packetlen_aligned;
-       struct kvec bufferlist[3];
-       u64 aligned_data = 0;
-       u32 pfncount = NUM_PAGES_SPANNED(multi_pagebuffer->offset,
-                                        multi_pagebuffer->len);
-
-       if (pfncount > MAX_MULTIPAGE_BUFFER_COUNT)
-               return -EINVAL;
-
-       /*
-        * Adjust the size down since vmbus_channel_packet_multipage_buffer is
-        * the largest size we support
-        */
-       descsize = sizeof(struct vmbus_channel_packet_multipage_buffer) -
-                         ((MAX_MULTIPAGE_BUFFER_COUNT - pfncount) *
-                         sizeof(u64));
-       packetlen = descsize + bufferlen;
-       packetlen_aligned = ALIGN(packetlen, sizeof(u64));
-
-
-       /* Setup the descriptor */
-       desc.type = VM_PKT_DATA_USING_GPA_DIRECT;
-       desc.flags = VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED;
-       desc.dataoffset8 = descsize >> 3; /* in 8-bytes granularity */
-       desc.length8 = (u16)(packetlen_aligned >> 3);
-       desc.transactionid = requestid;
-       desc.rangecount = 1;
-
-       desc.range.len = multi_pagebuffer->len;
-       desc.range.offset = multi_pagebuffer->offset;
-
-       memcpy(desc.range.pfn_array, multi_pagebuffer->pfn_array,
-              pfncount * sizeof(u64));
-
-       bufferlist[0].iov_base = &desc;
-       bufferlist[0].iov_len = descsize;
-       bufferlist[1].iov_base = buffer;
-       bufferlist[1].iov_len = bufferlen;
-       bufferlist[2].iov_base = &aligned_data;
-       bufferlist[2].iov_len = (packetlen_aligned - packetlen);
-
-       return hv_ringbuffer_write(channel, bufferlist, 3);
-}
-EXPORT_SYMBOL_GPL(vmbus_sendpacket_multipagebuffer);
-
 /**
  * vmbus_recvpacket() - Retrieve the user packet on the specified channel
  * @channel: Pointer to vmbus_channel structure.