aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/pch_gbe/pch_gbe_param.c
diff options
context:
space:
mode:
authorMichał Mirosław <mirq-linux@rere.qmqm.pl>2011-04-18 21:56:12 -0400
committerDavid S. Miller <davem@davemloft.net>2011-04-20 04:30:43 -0400
commit756a6b03da98903fa22ad7f10752de11782249fc (patch)
treea360baaa47e0669fbd75d8d7374b70d0f7250cf0 /drivers/net/pch_gbe/pch_gbe_param.c
parent3d96c74d8983b16bc7ecb196e61a2173fcc3f09f (diff)
net: pch_gbe: convert to hw_features
This also fixes bug in xmit path, where TX checksum offload state was used instead of skb->ip_summed to decide if the offload was needed. Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/pch_gbe/pch_gbe_param.c')
-rw-r--r--drivers/net/pch_gbe/pch_gbe_param.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/net/pch_gbe/pch_gbe_param.c b/drivers/net/pch_gbe/pch_gbe_param.c
index ef0996a0eaaa..5b5d90a47e29 100644
--- a/drivers/net/pch_gbe/pch_gbe_param.c
+++ b/drivers/net/pch_gbe/pch_gbe_param.c
@@ -426,6 +426,8 @@ full_duplex_only:
426void pch_gbe_check_options(struct pch_gbe_adapter *adapter) 426void pch_gbe_check_options(struct pch_gbe_adapter *adapter)
427{ 427{
428 struct pch_gbe_hw *hw = &adapter->hw; 428 struct pch_gbe_hw *hw = &adapter->hw;
429 struct net_device *dev = adapter->netdev;
430 int val;
429 431
430 { /* Transmit Descriptor Count */ 432 { /* Transmit Descriptor Count */
431 static const struct pch_gbe_option opt = { 433 static const struct pch_gbe_option opt = {
@@ -466,9 +468,10 @@ void pch_gbe_check_options(struct pch_gbe_adapter *adapter)
466 .err = "defaulting to Enabled", 468 .err = "defaulting to Enabled",
467 .def = PCH_GBE_DEFAULT_RX_CSUM 469 .def = PCH_GBE_DEFAULT_RX_CSUM
468 }; 470 };
469 adapter->rx_csum = XsumRX; 471 val = XsumRX;
470 pch_gbe_validate_option((int *)(&adapter->rx_csum), 472 pch_gbe_validate_option(&val, &opt, adapter);
471 &opt, adapter); 473 if (!val)
474 dev->features &= ~NETIF_F_RXCSUM;
472 } 475 }
473 { /* Checksum Offload Enable/Disable */ 476 { /* Checksum Offload Enable/Disable */
474 static const struct pch_gbe_option opt = { 477 static const struct pch_gbe_option opt = {
@@ -477,9 +480,10 @@ void pch_gbe_check_options(struct pch_gbe_adapter *adapter)
477 .err = "defaulting to Enabled", 480 .err = "defaulting to Enabled",
478 .def = PCH_GBE_DEFAULT_TX_CSUM 481 .def = PCH_GBE_DEFAULT_TX_CSUM
479 }; 482 };
480 adapter->tx_csum = XsumTX; 483 val = XsumTX;
481 pch_gbe_validate_option((int *)(&adapter->tx_csum), 484 pch_gbe_validate_option(&val, &opt, adapter);
482 &opt, adapter); 485 if (!val)
486 dev->features &= ~NETIF_F_ALL_CSUM;
483 } 487 }
484 { /* Flow Control */ 488 { /* Flow Control */
485 static const struct pch_gbe_option opt = { 489 static const struct pch_gbe_option opt = {