Re: [Etherboot-developers] [PATCH] [myri10ge] new native gPXE driver.
Glenn Brown <[email protected]> Tue, 05 Jan 2010 14:00:52 -0800
| Newsgroups | gmane.network.etherboot.gpxe,gmane.network.etherboot.devel |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format.
--------------080109060700020905060308
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Stefan Hajnoczi wrote:
> Looks good. It's nice to see high-end hardware that can be driven in
> a clean and simple way.
>
Thanks. The OS-drivers are not so clean and simple, thanks to LRO, RSS,
TSO, MSI, NAPI, thread safety, virtualization, etc. It felt great to
leave that complexity out.
> My only suggestion is that myri10ge_net_close() should not error
> outstanding TX. The net device core code already does this in
> net/netdevice.c:netdev_tx_flush(). This function is called right
> after the driver's close() returns in net/netdevice.c:netdev_close().
>
Great catch!
Do you mind if I slip in a couple trivial cleanups into my revised
patch? Proposed changes are
attached. If they are OK with you I will generate a myri10ge_v2.patch
after retesting.
Thanks,
--Glenn
--------------080109060700020905060308
Content-Type: text/plain;
name="myri10ge_delta.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="myri10ge_delta.patch"
diff --git a/src/drivers/net/myri10ge.c b/src/drivers/net/myri10ge.c
index 91a978f..ac2e124 100644
--- a/src/drivers/net/myri10ge.c
+++ b/src/drivers/net/myri10ge.c
@@ -424,7 +424,7 @@ static int mac_address_from_string_specs ( struct pci_device *pci,
pci_read_config_dword ( pci, VS_DATA, &len );
DBG2 ( "ss@%x,%x\n", addr, len );
- /* Copy in the string specs. Use word reads for performance. */
+ /* Copy in the string specs. Use 32-bit reads for performance. */
if ( len > sizeof ( string_specs ) || ( len & 3 ) ) {
DBG ( "SS too big\n" );
@@ -546,10 +546,6 @@ static int myri10ge_pci_probe ( struct pci_device *pci,
adjust_pci_device ( pci );
DBGP ( "pci " );
- unsigned char cls;
- pci_read_config_byte ( pci, PCI_CACHE_LINE_SIZE, &cls );
- DBGP ( "cache_line=%d\n", ( int ) cls );
-
/* Register the initialized network device. */
rc = register_netdev ( netdev );
@@ -617,17 +613,6 @@ static void myri10ge_net_close ( struct net_device *netdev )
myri10ge_command ( priv, MXGEFW_CMD_RESET, data );
- /* Free transmits that never completed. */
-
- while ( priv->transmits_done != priv->transmits_posted ) {
- netdev_tx_complete_err
- ( netdev,
- priv->transmit_iob[priv->transmits_done
- & MYRI10GE_TRANSMIT_WRAP],
- ECONNABORTED );
- ++priv->transmits_done;
- }
-
/* Free receive buffers that were never filled. */
while ( priv->receives_done != priv->receives_posted ) {
--------------080109060700020905060308
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
gPXE mailing list
[email protected]
http://etherboot.org/mailman/listinfo/gpxe
--------------080109060700020905060308--