[Prism54-devel] suggestion to shorten interrupt code path
    Jean-Baptiste Note 
    jean-baptiste.note at wanadoo.fr
       
    Fri Apr 22 08:33:20 UTC 2005
    
    
  
Hello Rainer,
I'm afraid of spitting out another dumb remark, but...
> [*] for instance, I happen to know one cause of 'mgmt timeouts'
>     (device bug, sometimes asserts update but doesn't send data
>      => little endian frame length converted to little endian
>      a 2nd time => kmalloc failure in mgt_receive)
The XH8196 driver ( a buggy linux softmac driver from intersil that
someone got from a vendor of PCI cards ) has the following snippet of
code before accessing the control block (which is allocated as
_consistent_ ) :
            /* flush the Control Block in the d-cache */
            pci_map_single( ((struct pci_hif_local_data*)lp->hif_local_data)->pci_device,
                            ((struct pci_hif_local_data*)lp->hif_local_data)->driver_mem_address,
                            sizeof(struct control_block), PCI_DMA_FROMDEVICE );
                    /* visit the queues */
	    /* unmap the Control Block memory */
	    pci_unmap_single( hif_lp->pci_device, hif_lp->device_host_address, 
	    	sizeof(struct control_block), PCI_DMA_FROMDEVICE );
>From what i understood, this should not be necessary for consistent
mappings. But i think they knew what they were doing, and they do it all
the same. Do you know / can you see if it would be a workaround for the
problem ?
You can find the exact file and code at the followin URL :
http://gxaafoot.homelinux.org/cgi-bin/archzoom.cgi/jean-baptiste.note@m4x.org--libre/XH8196--devo--0--base-0/module/sm_drv_pci.c
in the interrupt function (sm_drv_pci_interrupt).
Thanks,
JB
-- 
Jean-Baptiste Note
+33 (0)6 83 03 42 38
jean-baptiste.note at wanadoo.fr
    
    
More information about the Prism54-devel
mailing list