Staging: hv: Replace typedef SG_BUFFER_LIST by struct scatterlist
Subsystems (2)
PATCH 1/1 Staging: hv: Replace typedef SG_BUFFER_LIST by struct scatterlist
typedef SG_BUFFER_LIST is removed and its uses are replaced by the use of struct scatterlist.
--- 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(-)
drivers/staging/hv/Channel.c +15 -27
@@ -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,
drivers/staging/hv/RingBuffer.c +14 -13
@@ -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 ();
drivers/staging/hv/RingBuffer.h +5 -8
@@ -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
Signature · 5 lines
1.6.0.4 -- Nicolas Palix
Quoted 3 lines · Nicolas Palix
typedef
SG_BUFFER_LISTis 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.
Quoted 7 lines
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
Quoted 4 lines · Hank Janssen
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
Quoted 6 lines · Greg KH
Quoted 3 lines · Nicolas Palix
typedef
SG_BUFFER_LISTis 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?
Quoted 7 lines
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
Quoted 5 lines
--
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.
Quoted 6 lines · Greg KH
Quoted 3 lines · Nicolas Palix
typedef
SG_BUFFER_LISTis 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?
Quoted 9 lines · Nicolas Palix
Quoted 6 lines · Greg KH
Quoted 3 lines · Nicolas Palix
typedef
SG_BUFFER_LISTis 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.
Quoted 7 lines
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
Quoted 15 lines · Greg KH
Quoted 14 lines · Nicolas Palix
Quoted 6 lines · Greg KH
Quoted 3 lines · Nicolas Palix
typedef
SG_BUFFER_LISTis 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.
Quoted 6 lines
Quoted 2 lines
Any hint?
Of which infrastructure are you thinking in your previous mail?I was thinking of
include/linux/ring_buffer.hDoes 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
Quoted 9 lines
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