|
@@ -1144,28 +1144,6 @@ typhoon_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static u32
|
|
|
-typhoon_get_rx_csum(struct net_device *dev)
|
|
|
-{
|
|
|
- /* For now, we don't allow turning off RX checksums.
|
|
|
- */
|
|
|
- return 1;
|
|
|
-}
|
|
|
-
|
|
|
-static int
|
|
|
-typhoon_set_flags(struct net_device *dev, u32 data)
|
|
|
-{
|
|
|
- /* There's no way to turn off the RX VLAN offloading and stripping
|
|
|
- * on the current 3XP firmware -- it does not respect the offload
|
|
|
- * settings -- so we only allow the user to toggle the TX processing.
|
|
|
- */
|
|
|
- if (!(data & ETH_FLAG_RXVLAN))
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
- return ethtool_op_set_flags(dev, data,
|
|
|
- ETH_FLAG_RXVLAN | ETH_FLAG_TXVLAN);
|
|
|
-}
|
|
|
-
|
|
|
static void
|
|
|
typhoon_get_ringparam(struct net_device *dev, struct ethtool_ringparam *ering)
|
|
|
{
|
|
@@ -1187,13 +1165,7 @@ static const struct ethtool_ops typhoon_ethtool_ops = {
|
|
|
.get_wol = typhoon_get_wol,
|
|
|
.set_wol = typhoon_set_wol,
|
|
|
.get_link = ethtool_op_get_link,
|
|
|
- .get_rx_csum = typhoon_get_rx_csum,
|
|
|
- .set_tx_csum = ethtool_op_set_tx_csum,
|
|
|
- .set_sg = ethtool_op_set_sg,
|
|
|
- .set_tso = ethtool_op_set_tso,
|
|
|
.get_ringparam = typhoon_get_ringparam,
|
|
|
- .set_flags = typhoon_set_flags,
|
|
|
- .get_flags = ethtool_op_get_flags,
|
|
|
};
|
|
|
|
|
|
static int
|
|
@@ -2482,10 +2454,15 @@ typhoon_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
|
|
|
|
/* We can handle scatter gather, up to 16 entries, and
|
|
|
* we can do IP checksumming (only version 4, doh...)
|
|
|
+ *
|
|
|
+ * There's no way to turn off the RX VLAN offloading and stripping
|
|
|
+ * on the current 3XP firmware -- it does not respect the offload
|
|
|
+ * settings -- so we only allow the user to toggle the TX processing.
|
|
|
*/
|
|
|
- dev->features |= NETIF_F_SG | NETIF_F_IP_CSUM;
|
|
|
- dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
|
|
|
- dev->features |= NETIF_F_TSO;
|
|
|
+ dev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO |
|
|
|
+ NETIF_F_HW_VLAN_TX;
|
|
|
+ dev->features = dev->hw_features |
|
|
|
+ NETIF_F_HW_VLAN_RX | NETIF_F_RXCSUM;
|
|
|
|
|
|
if(register_netdev(dev) < 0) {
|
|
|
err_msg = "unable to register netdev";
|