public inbox for kernel-janitors@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Staging: hv: Replace typedef SG_BUFFER_LIST by struct scatterlist
@ 2009-07-30 15:37 Nicolas Palix
  2009-07-30 15:58 ` [PATCH] Staging: hv: Replace typedef SG_BUFFER_LIST by struct Greg KH
  0 siblings, 1 reply; 8+ messages in thread
From: Nicolas Palix @ 2009-07-30 15:37 UTC (permalink / raw)
  To: gregkh, hjanssen, kernel-janitors, linux-kernel


typedef SG_BUFFER_LIST is removed and its uses are replaced by the use of
struct scatterlist.

Signed-off-by: Nicolas Palix <npalix@diku.dk>
---
 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

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] Staging: hv: Replace typedef SG_BUFFER_LIST by struct
  2009-07-30 15:37 [PATCH] Staging: hv: Replace typedef SG_BUFFER_LIST by struct scatterlist Nicolas Palix
@ 2009-07-30 15:58 ` Greg KH
  2009-07-30 16:14   ` Hank Janssen
  2009-07-30 18:35   ` Nicolas Palix
  0 siblings, 2 replies; 8+ messages in thread
From: Greg KH @ 2009-07-30 15:58 UTC (permalink / raw)
  To: Nicolas Palix; +Cc: hjanssen, kernel-janitors, linux-kernel

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH] Staging: hv: Replace typedef SG_BUFFER_LIST by struct
  2009-07-30 15:58 ` [PATCH] Staging: hv: Replace typedef SG_BUFFER_LIST by struct Greg KH
@ 2009-07-30 16:14   ` Hank Janssen
  2009-07-30 16:20     ` Greg KH
  2009-07-30 18:35   ` Nicolas Palix
  1 sibling, 1 reply; 8+ messages in thread
From: Hank Janssen @ 2009-07-30 16:14 UTC (permalink / raw)
  To: Greg KH, Nicolas Palix
  Cc: kernel-janitors@vger.kernel.org, linux-kernel@vger.kernel.org



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


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Staging: hv: Replace typedef SG_BUFFER_LIST by struct
  2009-07-30 16:14   ` Hank Janssen
@ 2009-07-30 16:20     ` Greg KH
  0 siblings, 0 replies; 8+ messages in thread
From: Greg KH @ 2009-07-30 16:20 UTC (permalink / raw)
  To: Hank Janssen
  Cc: Nicolas Palix, kernel-janitors@vger.kernel.org,
	linux-kernel@vger.kernel.org

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Staging: hv: Replace typedef SG_BUFFER_LIST by struct
  2009-07-30 15:58 ` [PATCH] Staging: hv: Replace typedef SG_BUFFER_LIST by struct Greg KH
  2009-07-30 16:14   ` Hank Janssen
@ 2009-07-30 18:35   ` Nicolas Palix
  2009-07-30 18:37     ` Hank Janssen
  2009-07-30 19:52     ` Greg KH
  1 sibling, 2 replies; 8+ messages in thread
From: Nicolas Palix @ 2009-07-30 18:35 UTC (permalink / raw)
  To: Greg KH; +Cc: hjanssen, kernel-janitors, linux-kernel

[-- Attachment #1: Type: TEXT/PLAIN, Size: 914 bytes --]

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 majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH] Staging: hv: Replace typedef SG_BUFFER_LIST by struct
  2009-07-30 18:35   ` Nicolas Palix
@ 2009-07-30 18:37     ` Hank Janssen
  2009-07-30 19:52     ` Greg KH
  1 sibling, 0 replies; 8+ messages in thread
From: Hank Janssen @ 2009-07-30 18:37 UTC (permalink / raw)
  To: Nicolas Palix, Greg KH
  Cc: kernel-janitors@vger.kernel.org, linux-kernel@vger.kernel.org



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?



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Staging: hv: Replace typedef SG_BUFFER_LIST by struct
  2009-07-30 18:35   ` Nicolas Palix
  2009-07-30 18:37     ` Hank Janssen
@ 2009-07-30 19:52     ` Greg KH
  2009-07-30 20:48       ` Nicolas Palix
  1 sibling, 1 reply; 8+ messages in thread
From: Greg KH @ 2009-07-30 19:52 UTC (permalink / raw)
  To: Nicolas Palix; +Cc: hjanssen, kernel-janitors, linux-kernel

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Staging: hv: Replace typedef SG_BUFFER_LIST by struct
  2009-07-30 19:52     ` Greg KH
@ 2009-07-30 20:48       ` Nicolas Palix
  0 siblings, 0 replies; 8+ messages in thread
From: Nicolas Palix @ 2009-07-30 20:48 UTC (permalink / raw)
  To: Greg KH; +Cc: hjanssen, kernel-janitors, linux-kernel

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 majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2009-07-30 20:48 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-30 15:37 [PATCH] Staging: hv: Replace typedef SG_BUFFER_LIST by struct scatterlist Nicolas Palix
2009-07-30 15:58 ` [PATCH] Staging: hv: Replace typedef SG_BUFFER_LIST by struct Greg KH
2009-07-30 16:14   ` Hank Janssen
2009-07-30 16:20     ` Greg KH
2009-07-30 18:35   ` Nicolas Palix
2009-07-30 18:37     ` Hank Janssen
2009-07-30 19:52     ` Greg KH
2009-07-30 20:48       ` Nicolas Palix

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox