aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ehea
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-05-20 16:43:21 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-05-20 16:43:21 -0400
commit06f4e926d256d902dd9a53dcb400fd74974ce087 (patch)
tree0b438b67f5f0eff6fd617bc497a9dace6164a488 /drivers/net/ehea
parent8e7bfcbab3825d1b404d615cb1b54f44ff81f981 (diff)
parentd93515611bbc70c2fe4db232e5feb448ed8e4cc9 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1446 commits) macvlan: fix panic if lowerdev in a bond tg3: Add braces around 5906 workaround. tg3: Fix NETIF_F_LOOPBACK error macvlan: remove one synchronize_rcu() call networking: NET_CLS_ROUTE4 depends on INET irda: Fix error propagation in ircomm_lmp_connect_response() irda: Kill set but unused variable 'bytes' in irlan_check_command_param() irda: Kill set but unused variable 'clen' in ircomm_connect_indication() rxrpc: Fix set but unused variable 'usage' in rxrpc_get_transport() be2net: Kill set but unused variable 'req' in lancer_fw_download() irda: Kill set but unused vars 'saddr' and 'daddr' in irlan_provider_connect_indication() atl1c: atl1c_resume() is only used when CONFIG_PM_SLEEP is defined. rxrpc: Fix set but unused variable 'usage' in rxrpc_get_peer(). rxrpc: Kill set but unused variable 'local' in rxrpc_UDP_error_handler() rxrpc: Kill set but unused variable 'sp' in rxrpc_process_connection() rxrpc: Kill set but unused variable 'sp' in rxrpc_rotate_tx_window() pkt_sched: Kill set but unused variable 'protocol' in tc_classify() isdn: capi: Use pr_debug() instead of ifdefs. tg3: Update version to 3.119 tg3: Apply rx_discards fix to 5719/5720 ... Fix up trivial conflicts in arch/x86/Kconfig and net/mac80211/agg-tx.c as per Davem.
Diffstat (limited to 'drivers/net/ehea')
-rw-r--r--drivers/net/ehea/ehea_ethtool.c46
-rw-r--r--drivers/net/ehea/ehea_main.c4
2 files changed, 21 insertions, 29 deletions
diff --git a/drivers/net/ehea/ehea_ethtool.c b/drivers/net/ehea/ehea_ethtool.c
index f3bbdcef338c..7f642aef5e82 100644
--- a/drivers/net/ehea/ehea_ethtool.c
+++ b/drivers/net/ehea/ehea_ethtool.c
@@ -34,6 +34,7 @@
34static int ehea_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) 34static int ehea_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
35{ 35{
36 struct ehea_port *port = netdev_priv(dev); 36 struct ehea_port *port = netdev_priv(dev);
37 u32 speed;
37 int ret; 38 int ret;
38 39
39 ret = ehea_sense_port_attr(port); 40 ret = ehea_sense_port_attr(port);
@@ -43,17 +44,29 @@ static int ehea_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
43 44
44 if (netif_carrier_ok(dev)) { 45 if (netif_carrier_ok(dev)) {
45 switch (port->port_speed) { 46 switch (port->port_speed) {
46 case EHEA_SPEED_10M: cmd->speed = SPEED_10; break; 47 case EHEA_SPEED_10M:
47 case EHEA_SPEED_100M: cmd->speed = SPEED_100; break; 48 speed = SPEED_10;
48 case EHEA_SPEED_1G: cmd->speed = SPEED_1000; break; 49 break;
49 case EHEA_SPEED_10G: cmd->speed = SPEED_10000; break; 50 case EHEA_SPEED_100M:
51 speed = SPEED_100;
52 break;
53 case EHEA_SPEED_1G:
54 speed = SPEED_1000;
55 break;
56 case EHEA_SPEED_10G:
57 speed = SPEED_10000;
58 break;
59 default:
60 speed = -1;
61 break; /* BUG */
50 } 62 }
51 cmd->duplex = port->full_duplex == 1 ? 63 cmd->duplex = port->full_duplex == 1 ?
52 DUPLEX_FULL : DUPLEX_HALF; 64 DUPLEX_FULL : DUPLEX_HALF;
53 } else { 65 } else {
54 cmd->speed = -1; 66 speed = ~0;
55 cmd->duplex = -1; 67 cmd->duplex = -1;
56 } 68 }
69 ethtool_cmd_speed_set(cmd, speed);
57 70
58 if (cmd->speed == SPEED_10000) { 71 if (cmd->speed == SPEED_10000) {
59 cmd->supported = (SUPPORTED_10000baseT_Full | SUPPORTED_FIBRE); 72 cmd->supported = (SUPPORTED_10000baseT_Full | SUPPORTED_FIBRE);
@@ -167,11 +180,6 @@ static void ehea_set_msglevel(struct net_device *dev, u32 value)
167 port->msg_enable = value; 180 port->msg_enable = value;
168} 181}
169 182
170static u32 ehea_get_rx_csum(struct net_device *dev)
171{
172 return 1;
173}
174
175static char ehea_ethtool_stats_keys[][ETH_GSTRING_LEN] = { 183static char ehea_ethtool_stats_keys[][ETH_GSTRING_LEN] = {
176 {"sig_comp_iv"}, 184 {"sig_comp_iv"},
177 {"swqe_refill_th"}, 185 {"swqe_refill_th"},
@@ -268,34 +276,16 @@ static void ehea_get_ethtool_stats(struct net_device *dev,
268 276
269} 277}
270 278
271static int ehea_set_flags(struct net_device *dev, u32 data)
272{
273 /* Avoid changing the VLAN flags */
274 if ((data & (ETH_FLAG_RXVLAN | ETH_FLAG_TXVLAN)) !=
275 (ethtool_op_get_flags(dev) & (ETH_FLAG_RXVLAN |
276 ETH_FLAG_TXVLAN))){
277 return -EINVAL;
278 }
279
280 return ethtool_op_set_flags(dev, data, ETH_FLAG_LRO
281 | ETH_FLAG_TXVLAN
282 | ETH_FLAG_RXVLAN);
283}
284
285const struct ethtool_ops ehea_ethtool_ops = { 279const struct ethtool_ops ehea_ethtool_ops = {
286 .get_settings = ehea_get_settings, 280 .get_settings = ehea_get_settings,
287 .get_drvinfo = ehea_get_drvinfo, 281 .get_drvinfo = ehea_get_drvinfo,
288 .get_msglevel = ehea_get_msglevel, 282 .get_msglevel = ehea_get_msglevel,
289 .set_msglevel = ehea_set_msglevel, 283 .set_msglevel = ehea_set_msglevel,
290 .get_link = ethtool_op_get_link, 284 .get_link = ethtool_op_get_link,
291 .set_tso = ethtool_op_set_tso,
292 .get_strings = ehea_get_strings, 285 .get_strings = ehea_get_strings,
293 .get_sset_count = ehea_get_sset_count, 286 .get_sset_count = ehea_get_sset_count,
294 .get_ethtool_stats = ehea_get_ethtool_stats, 287 .get_ethtool_stats = ehea_get_ethtool_stats,
295 .get_rx_csum = ehea_get_rx_csum,
296 .set_settings = ehea_set_settings, 288 .set_settings = ehea_set_settings,
297 .get_flags = ethtool_op_get_flags,
298 .set_flags = ehea_set_flags,
299 .nway_reset = ehea_nway_reset, /* Restart autonegotiation */ 289 .nway_reset = ehea_nway_reset, /* Restart autonegotiation */
300}; 290};
301 291
diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c
index 2c60435f2beb..6a0a8fca62bc 100644
--- a/drivers/net/ehea/ehea_main.c
+++ b/drivers/net/ehea/ehea_main.c
@@ -3263,10 +3263,12 @@ struct ehea_port *ehea_setup_single_port(struct ehea_adapter *adapter,
3263 dev->netdev_ops = &ehea_netdev_ops; 3263 dev->netdev_ops = &ehea_netdev_ops;
3264 ehea_set_ethtool_ops(dev); 3264 ehea_set_ethtool_ops(dev);
3265 3265
3266 dev->hw_features = NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_TSO
3267 | NETIF_F_IP_CSUM | NETIF_F_HW_VLAN_TX | NETIF_F_LRO;
3266 dev->features = NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_TSO 3268 dev->features = NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_TSO
3267 | NETIF_F_HIGHDMA | NETIF_F_IP_CSUM | NETIF_F_HW_VLAN_TX 3269 | NETIF_F_HIGHDMA | NETIF_F_IP_CSUM | NETIF_F_HW_VLAN_TX
3268 | NETIF_F_HW_VLAN_RX | NETIF_F_HW_VLAN_FILTER 3270 | NETIF_F_HW_VLAN_RX | NETIF_F_HW_VLAN_FILTER
3269 | NETIF_F_LLTX; 3271 | NETIF_F_LLTX | NETIF_F_RXCSUM;
3270 dev->watchdog_timeo = EHEA_WATCH_DOG_TIMEOUT; 3272 dev->watchdog_timeo = EHEA_WATCH_DOG_TIMEOUT;
3271 3273
3272 if (use_lro) 3274 if (use_lro)