]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
Use insb/outsb; it's marginally faster.
authorMichael Brown <mcb30@etherboot.org>
Sat, 20 May 2006 12:28:44 +0000 (12:28 +0000)
committerMichael Brown <mcb30@etherboot.org>
Sat, 20 May 2006 12:28:44 +0000 (12:28 +0000)
src/drivers/net/pnic.c

index 18f7b93b81d53473a9969b1f8384a600288620bd..efb3c6f4ca7cf902f6d6d8b343a95ff9401fb02c 100644 (file)
@@ -44,7 +44,6 @@ static uint16_t pnic_command_quiet ( struct pnic *pnic, uint16_t command,
                                     void *input, uint16_t input_length,
                                     void *output, uint16_t output_max_length,
                                     uint16_t *output_length ) {
-       int i;
        uint16_t status;
        uint16_t _output_length;
 
@@ -52,10 +51,7 @@ static uint16_t pnic_command_quiet ( struct pnic *pnic, uint16_t command,
                /* Write input length */
                outw ( input_length, pnic->ioaddr + PNIC_REG_LEN );
                /* Write input data */
-               for ( i = 0; i < input_length; i++ ) {
-                       outb( ((char*)input)[i],
-                             pnic->ioaddr + PNIC_REG_DATA );
-               }
+               outsb ( pnic->ioaddr + PNIC_REG_DATA, input, input_length );
        }
        /* Write command */
        outw ( command, pnic->ioaddr + PNIC_REG_CMD );
@@ -80,10 +76,7 @@ static uint16_t pnic_command_quiet ( struct pnic *pnic, uint16_t command,
                        _output_length = output_max_length;
                }
                /* Retrieve output data */
-               for ( i = 0; i < _output_length; i++ ) {
-                       ((char*)output)[i] =
-                               inb ( pnic->ioaddr + PNIC_REG_DATA );
-               }
+               insb ( pnic->ioaddr + PNIC_REG_DATA, output, _output_length );
        }
        return status;
 }