On 08/26/2013 06:14 AM, 黃清隆 wrote:
>  From: Ching <ching2...@areca.com.tw>
>
> Support Areca new SATA Raid adapter ARC1214/1224/1264/1284.
> Modify maximum outstanding command number, notify command complete with auto
> request sense
> Signed-off-by: Ching  <ching2...@areca.com.tw>

Hi Ching,
+static bool
+arcmsr_hbaD_get_config(struct AdapterControlBlock *acb)
+{
...
+       dma_coherent = dma_alloc_coherent(&pdev->dev, acb->uncache_size,
+       &dma_coherent_handle, GFP_KERNEL);
+       if (!dma_coherent) {
+               pr_notice("DMA allocation failed...\n");
+               return -ENOMEM;
You've declared the return value as a bool so the function should return false 
or true.
---------------------------------------
In arcmsr_alloc_ccb_pool
-       roundup_ccbsize = roundup(sizeof(struct CommandControlBlock) + 
(max_sg_entrys - 1) * sizeof(struct SG64ENTRY), 32);
-       acb->uncache_size = roundup_ccbsize * ARCMSR_MAX_FREECCB_NUM;
-       dma_coherent = dma_alloc_coherent(&pdev->dev, acb->uncache_size, 
&dma_coherent_handle, GFP_KERNEL);
-       if(!dma_coherent){
-               printk(KERN_NOTICE "arcmsr%d: dma_alloc_coherent got error\n", 
acb->host->host_no);
-               return -ENOMEM;
+       switch (acb->adapter_type) {
+       case ACB_ADAPTER_TYPE_A: {
+               roundup_ccbsize =
+               roundup(sizeof(struct CommandControlBlock) +
+               max_sg_entrys * sizeof(struct SG64ENTRY), 32);
+               acb->uncache_size = roundup_ccbsize *
+                       ARCMSR_MAX_FREECCB_NUM;
+               dma_coherent = dma_alloc_coherent(&pdev->dev,
+                       acb->uncache_size, &dma_coherent_handle,
+                       GFP_KERNEL);
...
+       case ACB_ADAPTER_TYPE_B: {
+               roundup_ccbsize = roundup(sizeof(struct CommandControlBlock) +
+                       (max_sg_entrys - 1) * sizeof(struct SG64ENTRY), 32);
+               acb->uncache_size = roundup_ccbsize *
+                       ARCMSR_MAX_FREECCB_NUM;
+               dma_coherent = dma_alloc_coherent(&pdev->dev,
+                       acb->uncache_size, &dma_coherent_handle,
+                       GFP_KERNEL);
You've added a switch with  four almost identical
cases, what is the point of splitting the code this way?
-----------------------------------------
 struct AdapterControlBlock
+       void *dma_coherent;
+       dma_addr_t dma_coherent_handle;
+       dma_addr_t dma_coherent_handle2;
+       void *dma_coherent2;
why do you need these pairs? Is there an adapter which uses both
for example dma_coherent and dma_coherent2 at the same time?

Please include the patch into the message body next time, it makes the review 
easier.
Thanks, Tomas 
 

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to