diff options
| author | Michał Mirosław <mirq-linux@rere.qmqm.pl> | 2011-04-15 00:50:49 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2011-04-15 18:50:39 -0400 |
| commit | 6de240b7f714d63ca2a53d52c7eefb37e7eb3f1b (patch) | |
| tree | 999bda93edb96c1010fec51e51bb0e44c911f998 | |
| parent | 911cb193f3eb0370f20fbba712211e55ffede4de (diff) | |
net: spider_net: convert to hw_features
Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | drivers/net/spider_net.c | 15 | ||||
| -rw-r--r-- | drivers/net/spider_net.h | 7 | ||||
| -rw-r--r-- | drivers/net/spider_net_ethtool.c | 21 |
3 files changed, 7 insertions, 36 deletions
diff --git a/drivers/net/spider_net.c b/drivers/net/spider_net.c index cb6bcca9d541..949f124e1278 100644 --- a/drivers/net/spider_net.c +++ b/drivers/net/spider_net.c | |||
| @@ -994,15 +994,13 @@ spider_net_pass_skb_up(struct spider_net_descr *descr, | |||
| 994 | skb->protocol = eth_type_trans(skb, netdev); | 994 | skb->protocol = eth_type_trans(skb, netdev); |
| 995 | 995 | ||
| 996 | /* checksum offload */ | 996 | /* checksum offload */ |
| 997 | if (card->options.rx_csum) { | 997 | skb_checksum_none_assert(skb); |
| 998 | if (netdev->features & NETIF_F_RXCSUM) { | ||
| 998 | if ( ( (data_status & SPIDER_NET_DATA_STATUS_CKSUM_MASK) == | 999 | if ( ( (data_status & SPIDER_NET_DATA_STATUS_CKSUM_MASK) == |
| 999 | SPIDER_NET_DATA_STATUS_CKSUM_MASK) && | 1000 | SPIDER_NET_DATA_STATUS_CKSUM_MASK) && |
| 1000 | !(data_error & SPIDER_NET_DATA_ERR_CKSUM_MASK)) | 1001 | !(data_error & SPIDER_NET_DATA_ERR_CKSUM_MASK)) |
| 1001 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 1002 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 1002 | else | 1003 | } |
| 1003 | skb_checksum_none_assert(skb); | ||
| 1004 | } else | ||
| 1005 | skb_checksum_none_assert(skb); | ||
| 1006 | 1004 | ||
| 1007 | if (data_status & SPIDER_NET_VLAN_PACKET) { | 1005 | if (data_status & SPIDER_NET_VLAN_PACKET) { |
| 1008 | /* further enhancements: HW-accel VLAN | 1006 | /* further enhancements: HW-accel VLAN |
| @@ -2322,14 +2320,15 @@ spider_net_setup_netdev(struct spider_net_card *card) | |||
| 2322 | card->aneg_timer.function = spider_net_link_phy; | 2320 | card->aneg_timer.function = spider_net_link_phy; |
| 2323 | card->aneg_timer.data = (unsigned long) card; | 2321 | card->aneg_timer.data = (unsigned long) card; |
| 2324 | 2322 | ||
| 2325 | card->options.rx_csum = SPIDER_NET_RX_CSUM_DEFAULT; | ||
| 2326 | |||
| 2327 | netif_napi_add(netdev, &card->napi, | 2323 | netif_napi_add(netdev, &card->napi, |
| 2328 | spider_net_poll, SPIDER_NET_NAPI_WEIGHT); | 2324 | spider_net_poll, SPIDER_NET_NAPI_WEIGHT); |
| 2329 | 2325 | ||
| 2330 | spider_net_setup_netdev_ops(netdev); | 2326 | spider_net_setup_netdev_ops(netdev); |
| 2331 | 2327 | ||
| 2332 | netdev->features = NETIF_F_IP_CSUM | NETIF_F_LLTX; | 2328 | netdev->hw_features = NETIF_F_RXCSUM | NETIF_F_IP_CSUM; |
| 2329 | if (SPIDER_NET_RX_CSUM_DEFAULT) | ||
| 2330 | netdev->features |= NETIF_F_RXCSUM; | ||
| 2331 | netdev->features |= NETIF_F_IP_CSUM | NETIF_F_LLTX; | ||
| 2333 | /* some time: NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX | | 2332 | /* some time: NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX | |
| 2334 | * NETIF_F_HW_VLAN_FILTER */ | 2333 | * NETIF_F_HW_VLAN_FILTER */ |
| 2335 | 2334 | ||
diff --git a/drivers/net/spider_net.h b/drivers/net/spider_net.h index 05f74cbdd617..020f64a8fcf7 100644 --- a/drivers/net/spider_net.h +++ b/drivers/net/spider_net.h | |||
| @@ -429,12 +429,6 @@ struct spider_net_descr_chain { | |||
| 429 | * 701b8000 would be correct, but every packets gets that flag */ | 429 | * 701b8000 would be correct, but every packets gets that flag */ |
| 430 | #define SPIDER_NET_DESTROY_RX_FLAGS 0x700b8000 | 430 | #define SPIDER_NET_DESTROY_RX_FLAGS 0x700b8000 |
| 431 | 431 | ||
| 432 | /* this will be bigger some time */ | ||
| 433 | struct spider_net_options { | ||
| 434 | int rx_csum; /* for rx: if 0 ip_summed=NONE, | ||
| 435 | if 1 and hw has verified, ip_summed=UNNECESSARY */ | ||
| 436 | }; | ||
| 437 | |||
| 438 | #define SPIDER_NET_DEFAULT_MSG ( NETIF_MSG_DRV | \ | 432 | #define SPIDER_NET_DEFAULT_MSG ( NETIF_MSG_DRV | \ |
| 439 | NETIF_MSG_PROBE | \ | 433 | NETIF_MSG_PROBE | \ |
| 440 | NETIF_MSG_LINK | \ | 434 | NETIF_MSG_LINK | \ |
| @@ -487,7 +481,6 @@ struct spider_net_card { | |||
| 487 | /* for ethtool */ | 481 | /* for ethtool */ |
| 488 | int msg_enable; | 482 | int msg_enable; |
| 489 | struct spider_net_extra_stats spider_stats; | 483 | struct spider_net_extra_stats spider_stats; |
| 490 | struct spider_net_options options; | ||
| 491 | 484 | ||
| 492 | /* Must be last item in struct */ | 485 | /* Must be last item in struct */ |
| 493 | struct spider_net_descr darray[0]; | 486 | struct spider_net_descr darray[0]; |
diff --git a/drivers/net/spider_net_ethtool.c b/drivers/net/spider_net_ethtool.c index 5bae728c3820..d723fca872ce 100644 --- a/drivers/net/spider_net_ethtool.c +++ b/drivers/net/spider_net_ethtool.c | |||
| @@ -115,24 +115,6 @@ spider_net_ethtool_nway_reset(struct net_device *netdev) | |||
| 115 | return 0; | 115 | return 0; |
| 116 | } | 116 | } |
| 117 | 117 | ||
| 118 | static u32 | ||
| 119 | spider_net_ethtool_get_rx_csum(struct net_device *netdev) | ||
| 120 | { | ||
| 121 | struct spider_net_card *card = netdev_priv(netdev); | ||
| 122 | |||
| 123 | return card->options.rx_csum; | ||
| 124 | } | ||
| 125 | |||
| 126 | static int | ||
| 127 | spider_net_ethtool_set_rx_csum(struct net_device *netdev, u32 n) | ||
| 128 | { | ||
| 129 | struct spider_net_card *card = netdev_priv(netdev); | ||
| 130 | |||
| 131 | card->options.rx_csum = n; | ||
| 132 | return 0; | ||
| 133 | } | ||
| 134 | |||
| 135 | |||
| 136 | static void | 118 | static void |
| 137 | spider_net_ethtool_get_ringparam(struct net_device *netdev, | 119 | spider_net_ethtool_get_ringparam(struct net_device *netdev, |
| 138 | struct ethtool_ringparam *ering) | 120 | struct ethtool_ringparam *ering) |
| @@ -189,9 +171,6 @@ const struct ethtool_ops spider_net_ethtool_ops = { | |||
| 189 | .set_msglevel = spider_net_ethtool_set_msglevel, | 171 | .set_msglevel = spider_net_ethtool_set_msglevel, |
| 190 | .get_link = ethtool_op_get_link, | 172 | .get_link = ethtool_op_get_link, |
| 191 | .nway_reset = spider_net_ethtool_nway_reset, | 173 | .nway_reset = spider_net_ethtool_nway_reset, |
| 192 | .get_rx_csum = spider_net_ethtool_get_rx_csum, | ||
| 193 | .set_rx_csum = spider_net_ethtool_set_rx_csum, | ||
| 194 | .set_tx_csum = ethtool_op_set_tx_csum, | ||
| 195 | .get_ringparam = spider_net_ethtool_get_ringparam, | 174 | .get_ringparam = spider_net_ethtool_get_ringparam, |
| 196 | .get_strings = spider_net_get_strings, | 175 | .get_strings = spider_net_get_strings, |
| 197 | .get_sset_count = spider_net_get_sset_count, | 176 | .get_sset_count = spider_net_get_sset_count, |
