typedef SG_BUFFER_LIST is removed and its uses are replaced by the use of
struct scatterlist.
Signed-off-by: Nicolas Palix <[email protected]>
---
drivers/staging/hv/Channel.c | 42 +++++++++++++-------------------------
drivers/staging/hv/RingBuffer.c | 27 +++++++++++++------------
drivers/staging/hv/RingBuffer.h | 13 ++++-------
3 files changed, 34 insertions(+), 48 deletions(-)
diff --git a/drivers/staging/hv/Channel.c b/drivers/staging/hv/Channel.c
index be9770e..2938e58 100644
--- a/drivers/staging/hv/Channel.c
+++ b/drivers/staging/hv/Channel.c
@@ -773,7 +773,7 @@ VmbusChannelSendPacket(
VMPACKET_DESCRIPTOR desc;
u32 packetLen = sizeof(VMPACKET_DESCRIPTOR) + BufferLen;
u32 packetLenAligned = ALIGN_UP(packetLen, sizeof(u64));
- SG_BUFFER_LIST bufferList[3];
+ struct scatterlist bufferList[3];
u64 alignedData=0;
DPRINT_ENTER(VMBUS);
@@ -790,14 +790,10 @@ VmbusChannelSendPacket(
desc.Length8 = (u16)(packetLenAligned >> 3);
desc.TransactionId = RequestId;
- bufferList[0].Data = &desc;
- bufferList[0].Length = sizeof(VMPACKET_DESCRIPTOR);
-
- bufferList[1].Data = Buffer;
- bufferList[1].Length = BufferLen;
-
- bufferList[2].Data = &alignedData;
- bufferList[2].Length = packetLenAligned - packetLen;
+ sg_init_table(bufferList,3);
+ sg_set_buf(&bufferList[0], &desc, sizeof(VMPACKET_DESCRIPTOR));
+ sg_set_buf(&bufferList[1], Buffer, BufferLen);
+ sg_set_buf(&bufferList[2], &alignedData, packetLenAligned - packetLen);
ret = RingBufferWrite(
&Channel->Outbound,
@@ -841,7 +837,7 @@ VmbusChannelSendPacketPageBuffer(
u32 descSize;
u32 packetLen;
u32 packetLenAligned;
- SG_BUFFER_LIST bufferList[3];
+ struct scatterlist bufferList[3];
u64 alignedData=0;
DPRINT_ENTER(VMBUS);
@@ -872,14 +868,10 @@ VmbusChannelSendPacketPageBuffer(
desc.Range[i].Pfn = PageBuffers[i].Pfn;
}
- bufferList[0].Data = &desc;
- bufferList[0].Length = descSize;
-
- bufferList[1].Data = Buffer;
- bufferList[1].Length = BufferLen;
-
- bufferList[2].Data = &alignedData;
- bufferList[2].Length = packetLenAligned - packetLen;
+ sg_init_table(bufferList,3);
+ sg_set_buf(&bufferList[0], &desc, descSize);
+ sg_set_buf(&bufferList[1], Buffer, BufferLen);
+ sg_set_buf(&bufferList[2], &alignedData, packetLenAligned - packetLen);
ret = RingBufferWrite(
&Channel->Outbound,
@@ -922,7 +914,7 @@ VmbusChannelSendPacketMultiPageBuffer(
u32 descSize;
u32 packetLen;
u32 packetLenAligned;
- SG_BUFFER_LIST bufferList[3];
+ struct scatterlist bufferList[3];
u64 alignedData=0;
u32 PfnCount = NUM_PAGES_SPANNED(MultiPageBuffer->Offset, MultiPageBuffer->Length);
@@ -955,14 +947,10 @@ VmbusChannelSendPacketMultiPageBuffer(
memcpy(desc.Range.PfnArray, MultiPageBuffer->PfnArray, PfnCount*sizeof(u64));
- bufferList[0].Data = &desc;
- bufferList[0].Length = descSize;
-
- bufferList[1].Data = Buffer;
- bufferList[1].Length = BufferLen;
-
- bufferList[2].Data = &alignedData;
- bufferList[2].Length = packetLenAligned - packetLen;
+ sg_init_table(bufferList,3);
+ sg_set_buf(&bufferList[0], &desc, descSize);
+ sg_set_buf(&bufferList[1], Buffer, BufferLen);
+ sg_set_buf(&bufferList[2], &alignedData, packetLenAligned - packetLen);
ret = RingBufferWrite(
&Channel->Outbound,
diff --git a/drivers/staging/hv/RingBuffer.c b/drivers/staging/hv/RingBuffer.c
index d338ce2..571f9db 100644
--- a/drivers/staging/hv/RingBuffer.c
+++ b/drivers/staging/hv/RingBuffer.c
@@ -347,9 +347,9 @@ Description:
--*/
static int
RingBufferWrite(
- RING_BUFFER_INFO* OutRingInfo,
- SG_BUFFER_LIST SgBuffers[],
- u32 SgBufferCount
+ RING_BUFFER_INFO *OutRingInfo,
+ struct scatterlist *sglist,
+ u32 sgcount
)
{
int i=0;
@@ -357,15 +357,16 @@ RingBufferWrite(
u32 byteAvailToRead;
u32 totalBytesToWrite=0;
+ struct scatterlist *sg;
volatile u32 nextWriteLocation;
u64 prevIndices=0;
unsigned long flags;
DPRINT_ENTER(VMBUS);
- for (i=0; i < SgBufferCount; i++)
+ for_each_sg(sglist, sg, sgcount, i)
{
- totalBytesToWrite += SgBuffers[i].Length;
+ totalBytesToWrite += sg->length;
}
totalBytesToWrite += sizeof(u64);
@@ -394,21 +395,21 @@ RingBufferWrite(
/* Write to the ring buffer */
nextWriteLocation = GetNextWriteLocation(OutRingInfo);
- for (i=0; i < SgBufferCount; i++)
+ for_each_sg(sglist, sg, sgcount, i)
{
- nextWriteLocation = CopyToRingBuffer(OutRingInfo,
- nextWriteLocation,
- SgBuffers[i].Data,
- SgBuffers[i].Length);
+ nextWriteLocation = CopyToRingBuffer(OutRingInfo,
+ nextWriteLocation,
+ sg_virt(sg),
+ sg->length);
}
/* Set previous packet start */
prevIndices = GetRingBufferIndices(OutRingInfo);
nextWriteLocation = CopyToRingBuffer(OutRingInfo,
- nextWriteLocation,
- &prevIndices,
- sizeof(u64));
+ nextWriteLocation,
+ &prevIndices,
+ sizeof(u64));
/* Make sure we flush all writes before updating the writeIndex */
mb();
diff --git a/drivers/staging/hv/RingBuffer.h b/drivers/staging/hv/RingBuffer.h
index a0b6e0e..1658614 100644
--- a/drivers/staging/hv/RingBuffer.h
+++ b/drivers/staging/hv/RingBuffer.h
@@ -25,12 +25,9 @@
#ifndef _RING_BUFFER_H_
#define _RING_BUFFER_H_
-#include "include/osd.h"
+#include <linux/scatterlist.h>
-typedef struct _SG_BUFFER_LIST {
- void * Data;
- u32 Length;
-} SG_BUFFER_LIST;
+#include "include/osd.h"
typedef struct _RING_BUFFER {
volatile u32 WriteIndex; /* Offset in bytes from the start of ring data below */
@@ -83,9 +80,9 @@ RingBufferCleanup(
static int
RingBufferWrite(
- RING_BUFFER_INFO *RingInfo,
- SG_BUFFER_LIST SgBuffers[],
- u32 SgBufferCount
+ RING_BUFFER_INFO *RingInfo,
+ struct scatterlist *sglist,
+ u32 sgcount
);
static int
--
1.6.0.4
--
Nicolas Palix
On Thu, Jul 30, 2009 at 05:37:23PM +0200, Nicolas Palix wrote:
>
> typedef SG_BUFFER_LIST is removed and its uses are replaced by the use of
> struct scatterlist.
Sweet! thanks for doing this, very nice job, I'll go queue it up.
Hank, you are testing the linux-next tree to make sure we haven't broken
anything yet, right? :)
thanks,
greg k-h
So far so good it seems, I have been doing some of the integration tests and all seems well.
I have not had time to do any patching myself because I am trying to keep up with the stream
Of patches coming in :)
Hank.
>On thu, Jul 30, 2009 at 09:13:00AM - Greg spoke these immortal words............
>Hank, you are testing the linux-next tree to make sure we haven't broken
>anything yet, right? :)
>
>thanks,
>
>greg k-h
On Thu, Jul 30, 2009 at 04:14:57PM +0000, Hank Janssen wrote:
>
>
> So far so good it seems, I have been doing some of the integration
> tests and all seems well.
great, thanks for letting us know.
greg k-h
On Thu, 30 Jul 2009, Greg KH wrote:
> On Thu, Jul 30, 2009 at 05:37:23PM +0200, Nicolas Palix wrote:
>>
>> typedef SG_BUFFER_LIST is removed and its uses are replaced by the use of
>> struct scatterlist.
>
> Sweet! thanks for doing this, very nice job, I'll go queue it up.
I tried to change the RingBuffer too but I did not know
which API I should use.
The ring buffer in kernel/trace seems fine but it has some
dedicated features.
Any hint?
Of which infrastructure are you thinking in your previous mail?
>
> Hank, you are testing the linux-next tree to make sure we haven't broken
> anything yet, right? :)
>
> thanks,
>
> greg k-h
You?re welcome.
Nicolas Palix
> --
> To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
Nicolas,
I was getting into the RingBuffer as well. Do you want to combine efforts?
Thanks,
Hank.
On Thu, 30 Jul 2009, Greg KH wrote:
> On Thu, Jul 30, 2009 at 05:37:23PM +0200, Nicolas Palix wrote:
>>
>> typedef SG_BUFFER_LIST is removed and its uses are replaced by the use of
>> struct scatterlist.
>
> Sweet! thanks for doing this, very nice job, I'll go queue it up.
I tried to change the RingBuffer too but I did not know
which API I should use.
The ring buffer in kernel/trace seems fine but it has some
dedicated features.
Any hint?
Of which infrastructure are you thinking in your previous mail?
On Thu, Jul 30, 2009 at 08:35:08PM +0200, Nicolas Palix wrote:
> On Thu, 30 Jul 2009, Greg KH wrote:
>
> > On Thu, Jul 30, 2009 at 05:37:23PM +0200, Nicolas Palix wrote:
> >>
> >> typedef SG_BUFFER_LIST is removed and its uses are replaced by the use of
> >> struct scatterlist.
> >
> > Sweet! thanks for doing this, very nice job, I'll go queue it up.
>
> I tried to change the RingBuffer too but I did not know
> which API I should use.
> The ring buffer in kernel/trace seems fine but it has some
> dedicated features.
>
> Any hint?
> Of which infrastructure are you thinking in your previous mail?
I was thinking of include/linux/ring_buffer.h
Does that not work for you?
thanks,
greg k-h
On Thu, 30 Jul 2009, Greg KH wrote:
> On Thu, Jul 30, 2009 at 08:35:08PM +0200, Nicolas Palix wrote:
>> On Thu, 30 Jul 2009, Greg KH wrote:
>>
>>> On Thu, Jul 30, 2009 at 05:37:23PM +0200, Nicolas Palix wrote:
>>>>
>>>> typedef SG_BUFFER_LIST is removed and its uses are replaced by the use of
>>>> struct scatterlist.
>>>
>>> Sweet! thanks for doing this, very nice job, I'll go queue it up.
>>
>> I tried to change the RingBuffer too but I did not know
>> which API I should use.
>> The ring buffer in kernel/trace seems fine but it has some
>> dedicated features.
>>
>> Any hint?
>> Of which infrastructure are you thinking in your previous mail?
>
> I was thinking of include/linux/ring_buffer.h
>
> Does that not work for you?
It is perfect.
As its implementation is in kernel/trace and not in lib as scatterlist,
I just wanted to be sure before spending time on a patch. :)
thanks.
Nico
>
> thanks,
>
> greg k-h
> --
> To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>