diff options
author | Michał Mirosław | 2011-04-19 03:56:12 +0200 |
---|---|---|
committer | David S. Miller | 2011-04-20 10:30:43 +0200 |
commit | 756a6b03da98903fa22ad7f10752de11782249fc (patch) | |
tree | a360baaa47e0669fbd75d8d7374b70d0f7250cf0 /drivers/net/pch_gbe/pch_gbe_param.c | |
parent | net: infiniband/ulp/ipoib: convert to hw_features (diff) | |
download | kernel-qcow2-linux-756a6b03da98903fa22ad7f10752de11782249fc.tar.gz kernel-qcow2-linux-756a6b03da98903fa22ad7f10752de11782249fc.tar.xz kernel-qcow2-linux-756a6b03da98903fa22ad7f10752de11782249fc.zip |
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: void pch_gbe_check_options(struct pch_gbe_adapter *adapter) { struct pch_gbe_hw *hw = &adapter->hw; + struct net_device *dev = adapter->netdev; + int val; { /* Transmit Descriptor Count */ static const struct pch_gbe_option opt = { @@ -466,9 +468,10 @@ void pch_gbe_check_options(struct pch_gbe_adapter *adapter) .err = "defaulting to Enabled", .def = PCH_GBE_DEFAULT_RX_CSUM }; - adapter->rx_csum = XsumRX; - pch_gbe_validate_option((int *)(&adapter->rx_csum), - &opt, adapter); + val = XsumRX; + pch_gbe_validate_option(&val, &opt, adapter); + if (!val) + dev->features &= ~NETIF_F_RXCSUM; } { /* Checksum Offload Enable/Disable */ static const struct pch_gbe_option opt = { @@ -477,9 +480,10 @@ void pch_gbe_check_options(struct pch_gbe_adapter *adapter) .err = "defaulting to Enabled", .def = PCH_GBE_DEFAULT_TX_CSUM }; - adapter->tx_csum = XsumTX; - pch_gbe_validate_option((int *)(&adapter->tx_csum), - &opt, adapter); + val = XsumTX; + pch_gbe_validate_option(&val, &opt, adapter); + if (!val) + dev->features &= ~NETIF_F_ALL_CSUM; } { /* Flow Control */ static const struct pch_gbe_option opt = { |