[PATCH 2/3] e1000: FIX: firmware handover bits

2007-03-06 Thread Auke Kok
From: Bruce Allan <[EMAIL PROTECTED]>

Upon code inspection it was spotted that the firmware handover bit get/set
mismatched, which may have resulted in management issues on PCI-E
adapters. Setting them correctly may fix some management issues such
as arp routing etc.

Signed-off-by: Auke Kok <[EMAIL PROTECTED]>
Signed-off-by: Bruce Allan <[EMAIL PROTECTED]>
---

 drivers/net/e1000/e1000_main.c |   33 -
 1 files changed, 12 insertions(+), 21 deletions(-)

diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index fff3bc0..3492f0b 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -409,25 +409,21 @@ e1000_release_hw_control(struct e1000_adapter *adapter)
 {
uint32_t ctrl_ext;
uint32_t swsm;
-   uint32_t extcnf;
 
/* Let firmware taken over control of h/w */
switch (adapter->hw.mac_type) {
-   case e1000_82571:
-   case e1000_82572:
-   case e1000_80003es2lan:
-   ctrl_ext = E1000_READ_REG(>hw, CTRL_EXT);
-   E1000_WRITE_REG(>hw, CTRL_EXT,
-   ctrl_ext & ~E1000_CTRL_EXT_DRV_LOAD);
-   break;
case e1000_82573:
swsm = E1000_READ_REG(>hw, SWSM);
E1000_WRITE_REG(>hw, SWSM,
swsm & ~E1000_SWSM_DRV_LOAD);
+   break;
+   case e1000_82571:
+   case e1000_82572:
+   case e1000_80003es2lan:
case e1000_ich8lan:
-   extcnf = E1000_READ_REG(>hw, CTRL_EXT);
+   ctrl_ext = E1000_READ_REG(>hw, CTRL_EXT);
E1000_WRITE_REG(>hw, CTRL_EXT,
-   extcnf & ~E1000_CTRL_EXT_DRV_LOAD);
+   ctrl_ext & ~E1000_CTRL_EXT_DRV_LOAD);
break;
default:
break;
@@ -450,26 +446,21 @@ e1000_get_hw_control(struct e1000_adapter *adapter)
 {
uint32_t ctrl_ext;
uint32_t swsm;
-   uint32_t extcnf;
 
/* Let firmware know the driver has taken over */
switch (adapter->hw.mac_type) {
-   case e1000_82571:
-   case e1000_82572:
-   case e1000_80003es2lan:
-   ctrl_ext = E1000_READ_REG(>hw, CTRL_EXT);
-   E1000_WRITE_REG(>hw, CTRL_EXT,
-   ctrl_ext | E1000_CTRL_EXT_DRV_LOAD);
-   break;
case e1000_82573:
swsm = E1000_READ_REG(>hw, SWSM);
E1000_WRITE_REG(>hw, SWSM,
swsm | E1000_SWSM_DRV_LOAD);
break;
+   case e1000_82571:
+   case e1000_82572:
+   case e1000_80003es2lan:
case e1000_ich8lan:
-   extcnf = E1000_READ_REG(>hw, EXTCNF_CTRL);
-   E1000_WRITE_REG(>hw, EXTCNF_CTRL,
-   extcnf | E1000_EXTCNF_CTRL_SWFLAG);
+   ctrl_ext = E1000_READ_REG(>hw, CTRL_EXT);
+   E1000_WRITE_REG(>hw, CTRL_EXT,
+   ctrl_ext | E1000_CTRL_EXT_DRV_LOAD);
break;
default:
break;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 2/3] e1000: FIX: firmware handover bits

2007-03-06 Thread Auke Kok
From: Bruce Allan [EMAIL PROTECTED]

Upon code inspection it was spotted that the firmware handover bit get/set
mismatched, which may have resulted in management issues on PCI-E
adapters. Setting them correctly may fix some management issues such
as arp routing etc.

Signed-off-by: Auke Kok [EMAIL PROTECTED]
Signed-off-by: Bruce Allan [EMAIL PROTECTED]
---

 drivers/net/e1000/e1000_main.c |   33 -
 1 files changed, 12 insertions(+), 21 deletions(-)

diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index fff3bc0..3492f0b 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -409,25 +409,21 @@ e1000_release_hw_control(struct e1000_adapter *adapter)
 {
uint32_t ctrl_ext;
uint32_t swsm;
-   uint32_t extcnf;
 
/* Let firmware taken over control of h/w */
switch (adapter-hw.mac_type) {
-   case e1000_82571:
-   case e1000_82572:
-   case e1000_80003es2lan:
-   ctrl_ext = E1000_READ_REG(adapter-hw, CTRL_EXT);
-   E1000_WRITE_REG(adapter-hw, CTRL_EXT,
-   ctrl_ext  ~E1000_CTRL_EXT_DRV_LOAD);
-   break;
case e1000_82573:
swsm = E1000_READ_REG(adapter-hw, SWSM);
E1000_WRITE_REG(adapter-hw, SWSM,
swsm  ~E1000_SWSM_DRV_LOAD);
+   break;
+   case e1000_82571:
+   case e1000_82572:
+   case e1000_80003es2lan:
case e1000_ich8lan:
-   extcnf = E1000_READ_REG(adapter-hw, CTRL_EXT);
+   ctrl_ext = E1000_READ_REG(adapter-hw, CTRL_EXT);
E1000_WRITE_REG(adapter-hw, CTRL_EXT,
-   extcnf  ~E1000_CTRL_EXT_DRV_LOAD);
+   ctrl_ext  ~E1000_CTRL_EXT_DRV_LOAD);
break;
default:
break;
@@ -450,26 +446,21 @@ e1000_get_hw_control(struct e1000_adapter *adapter)
 {
uint32_t ctrl_ext;
uint32_t swsm;
-   uint32_t extcnf;
 
/* Let firmware know the driver has taken over */
switch (adapter-hw.mac_type) {
-   case e1000_82571:
-   case e1000_82572:
-   case e1000_80003es2lan:
-   ctrl_ext = E1000_READ_REG(adapter-hw, CTRL_EXT);
-   E1000_WRITE_REG(adapter-hw, CTRL_EXT,
-   ctrl_ext | E1000_CTRL_EXT_DRV_LOAD);
-   break;
case e1000_82573:
swsm = E1000_READ_REG(adapter-hw, SWSM);
E1000_WRITE_REG(adapter-hw, SWSM,
swsm | E1000_SWSM_DRV_LOAD);
break;
+   case e1000_82571:
+   case e1000_82572:
+   case e1000_80003es2lan:
case e1000_ich8lan:
-   extcnf = E1000_READ_REG(adapter-hw, EXTCNF_CTRL);
-   E1000_WRITE_REG(adapter-hw, EXTCNF_CTRL,
-   extcnf | E1000_EXTCNF_CTRL_SWFLAG);
+   ctrl_ext = E1000_READ_REG(adapter-hw, CTRL_EXT);
+   E1000_WRITE_REG(adapter-hw, CTRL_EXT,
+   ctrl_ext | E1000_CTRL_EXT_DRV_LOAD);
break;
default:
break;
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/