myri10ge updates for 2.6.23
Subsystems (2)
cover myri10ge updates for 2.6.23
Hi Jeff,
Now that Greg pushed my fix to expose pcie_get_readrq() prototype in linux/pci.h, I am resending my rework of Peter Oruba's patch to use pcie_get/set_readrq() in myri10ge. Please apply for 2.6.23.
1. use pcie_get/set_readrq
2. update driver version to 1.3.2-1.269
Also, we noticed that packet forwarding is faster on our hardware when receiving in linear skb instead of pages (about 10Gb/s vs. 7), so we are thinking of submitting a Kconfig option to switch to the old linear skb RX code. Would this be acceptable?
Thanks,
Brice
PATCH 1/2 myri10ge: use pcie_get/set_readrq
Based on a patch from Peter Oruba, convert myri10ge to use pcie_get_readrq() and pcie_set_readrq() instead of our own PCI calls and arithmetics.
These driver changes incorporate the proposed PCI-X / PCI-Express read byte count interface. Reading and setting those values doesn't take place "manually", instead wrapping functions are called to allow quirks for some PCI bridges.
Signed-off by: Peter Oruba <[email protected]>
Based on work by Stephen Hemminger <[email protected]>
--- drivers/net/myri10ge/myri10ge.c | 32 ++++++-------------------------- 1 file changed, 6 insertions(+), 26 deletions(-)
drivers/net/myri10ge/myri10ge.c +6 -26
@@ -2514,26 +2514,20 @@ {struct pci_dev *pdev = mgp->pdev;struct device *dev = &pdev->dev; -int cap, status; -u16 val; +int status; mgp->tx.boundary =4096 ;/* * Verify the max read request size was set to 4KB * before trying the test with 4KB. */ - cap =pci_find_capability (pdev,PCI_CAP_ID_EXP ); -if (cap <64 ) { -dev_err (dev,"Bad PCI_CAP_ID_EXP location %d\n" , cap); - goto abort; - } - status =pci_read_config_word (pdev, cap +PCI_EXP_DEVCTL , &val); -if (status !=0 ) { + status =pcie_get_readrq (pdev); +if (status <0 ) {dev_err (dev,"Couldn't read max read req size: %d\n" , status); goto abort; } -if ((val & (5 <<12 )) != (5 <<12 )) { -dev_warn (dev,"Max Read Request size != 4096 (0x%x)\n" , val); +if (status !=4096 ) { +dev_warn (dev,"Max Read Request size != 4096 (%d)\n" , status); mgp->tx.boundary =2048 ; }/*
@@ -2850,9 +2844,7 @@size_t bytes;int i;int status = -ENXIO ; -int cap;int dac_enabled; -u16 val; netdev =alloc_etherdev (sizeof (*mgp));if (netdev ==NULL ) {
@@ -2884,19 +2876,7 @@ = pci_find_capability(pdev, PCI_CAP_ID_VNDR);/* Set our max read request to 4KB */ - cap =pci_find_capability (pdev,PCI_CAP_ID_EXP ); -if (cap <64 ) { -dev_err (&pdev->dev,"Bad PCI_CAP_ID_EXP location %d\n" , cap); - goto abort_with_netdev; - } - status =pci_read_config_word (pdev, cap +PCI_EXP_DEVCTL , &val); -if (status !=0 ) { -dev_err (&pdev->dev,"Error %d reading PCI_EXP_DEVCTL\n" , - status); - goto abort_with_netdev; - } - val = (val & ~PCI_EXP_DEVCTL_READRQ ) | (5 <<12 ); - status =pci_write_config_word (pdev, cap +PCI_EXP_DEVCTL , val); + status =pcie_set_readrq (pdev,4096 );if (status !=0 ) {dev_err (&pdev->dev,"Error %d writing PCI_EXP_DEVCTL\n" , status);
Re: [PATCH 1/2] myri10ge: use pcie_get/set_readrq
Quoted 8 lines · Brice Goglin
Based on a patch from Peter Oruba, convert myri10ge to use
pcie_get_readrq()andpcie_set_readrq()instead of our own PCI calls and arithmetics.These driver changes incorporate the proposed PCI-X / PCI-Express read byte count interface. Reading and setting those values doesn't take place "manually", instead wrapping functions are called to allow quirks for some PCI bridges.
Quoted 7 lines
Signed-off-by Brice Goglin <[email protected]>Signed-off by: Peter Oruba <[email protected]>
Based on work by Stephen Hemminger <[email protected]>Signed-off-by Andrew Morton <[email protected]>--- drivers/net/myri10ge/myri10ge.c | 32 ++++++-------------------------- 1 file changed, 6 insertions(+), 26 deletions(-)
applied 1-2
PATCH 2/2 myri10ge: update driver version to 1.3.2-1.269
In reply to Brice GoglinUpdate myri10ge driver version to 1.3.2-1.269.
--- drivers/net/myri10ge/myri10ge.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/myri10ge/myri10ge.c +1 -1
@@ -72,7 +72,7 @@#include "myri10ge_mcp.h" #include "myri10ge_mcp_gen_header.h" -#define MYRI10GE_VERSION_STR "1.3.1-1.248" +#define MYRI10GE_VERSION_STR "1.3.2-1.269"MODULE_DESCRIPTION ("Myricom 10G driver (10GbE)" );MODULE_AUTHOR ("Maintainer: [email protected]" );