diff options
author | Michał Mirosław <mirq-linux@rere.qmqm.pl> | 2011-04-18 21:56:12 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-04-20 04:30:43 -0400 |
commit | 756a6b03da98903fa22ad7f10752de11782249fc (patch) | |
tree | a360baaa47e0669fbd75d8d7374b70d0f7250cf0 /drivers/net/pch_gbe/pch_gbe_param.c | |
parent | 3d96c74d8983b16bc7ecb196e61a2173fcc3f09f (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.c | 16 |
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: | |||
426 | void pch_gbe_check_options(struct pch_gbe_adapter *adapter) | 426 | void 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 = { |