aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKalesh AP <kalesh.purayil@emulex.com>2014-07-17 06:50:23 -0400
committerDavid S. Miller <davem@davemloft.net>2014-07-17 19:38:14 -0400
commit0532d4e36678d626b41528c00fefe3d6e04130b3 (patch)
treea534555f9528798342a7889883d64b625eb35149
parent6b5686891c9858aea914c1d1c965d6bbc8a0521d (diff)
be2net: fix return status of some ethtool methods
ethtool expects a -ve status value to be returned when a driver method encounters an error. The driver was directly passing the error status returned by FW (a positive value) to ethtool. This patch fixes this by returning -EIO status in cases where FW returns an error. Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com> Signed-off-by: Sathya Perla <sathya.perla@emulex.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/emulex/benet/be.h2
-rw-r--r--drivers/net/ethernet/emulex/benet/be_ethtool.c12
2 files changed, 9 insertions, 5 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h
index d3d871b28cad..3e639e86e111 100644
--- a/drivers/net/ethernet/emulex/benet/be.h
+++ b/drivers/net/ethernet/emulex/benet/be.h
@@ -672,6 +672,8 @@ static inline void swap_dws(void *wrb, int len)
672#endif /* __BIG_ENDIAN */ 672#endif /* __BIG_ENDIAN */
673} 673}
674 674
675#define be_cmd_status(status) (status > 0 ? -EIO : status)
676
675static inline u8 is_tcp_pkt(struct sk_buff *skb) 677static inline u8 is_tcp_pkt(struct sk_buff *skb)
676{ 678{
677 u8 val = 0; 679 u8 val = 0;
diff --git a/drivers/net/ethernet/emulex/benet/be_ethtool.c b/drivers/net/ethernet/emulex/benet/be_ethtool.c
index e2da4d20dd3d..25f516d6eb9e 100644
--- a/drivers/net/ethernet/emulex/benet/be_ethtool.c
+++ b/drivers/net/ethernet/emulex/benet/be_ethtool.c
@@ -643,7 +643,7 @@ be_set_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *ecmd)
643 if (status) 643 if (status)
644 dev_warn(&adapter->pdev->dev, "Pause param set failed.\n"); 644 dev_warn(&adapter->pdev->dev, "Pause param set failed.\n");
645 645
646 return status; 646 return be_cmd_status(status);
647} 647}
648 648
649static int be_set_phys_id(struct net_device *netdev, 649static int be_set_phys_id(struct net_device *netdev,
@@ -762,7 +762,7 @@ static int be_test_ddr_dma(struct be_adapter *adapter)
762err: 762err:
763 dma_free_coherent(&adapter->pdev->dev, ddrdma_cmd.size, ddrdma_cmd.va, 763 dma_free_coherent(&adapter->pdev->dev, ddrdma_cmd.size, ddrdma_cmd.va,
764 ddrdma_cmd.dma); 764 ddrdma_cmd.dma);
765 return ret; 765 return be_cmd_status(ret);
766} 766}
767 767
768static u64 be_loopback_test(struct be_adapter *adapter, u8 loopback_type, 768static u64 be_loopback_test(struct be_adapter *adapter, u8 loopback_type,
@@ -885,7 +885,7 @@ static int be_read_eeprom(struct net_device *netdev,
885 dma_free_coherent(&adapter->pdev->dev, eeprom_cmd.size, eeprom_cmd.va, 885 dma_free_coherent(&adapter->pdev->dev, eeprom_cmd.size, eeprom_cmd.va,
886 eeprom_cmd.dma); 886 eeprom_cmd.dma);
887 887
888 return status; 888 return be_cmd_status(status);
889} 889}
890 890
891static u32 be_get_msg_level(struct net_device *netdev) 891static u32 be_get_msg_level(struct net_device *netdev)
@@ -1042,7 +1042,7 @@ static int be_set_rss_hash_opts(struct be_adapter *adapter,
1042 if (!status) 1042 if (!status)
1043 adapter->rss_info.rss_flags = rss_flags; 1043 adapter->rss_info.rss_flags = rss_flags;
1044 1044
1045 return status; 1045 return be_cmd_status(status);
1046} 1046}
1047 1047
1048static int be_set_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *cmd) 1048static int be_set_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *cmd)
@@ -1080,6 +1080,7 @@ static int be_set_channels(struct net_device *netdev,
1080 struct ethtool_channels *ch) 1080 struct ethtool_channels *ch)
1081{ 1081{
1082 struct be_adapter *adapter = netdev_priv(netdev); 1082 struct be_adapter *adapter = netdev_priv(netdev);
1083 int status;
1083 1084
1084 if (ch->rx_count || ch->tx_count || ch->other_count || 1085 if (ch->rx_count || ch->tx_count || ch->other_count ||
1085 !ch->combined_count || ch->combined_count > be_max_qs(adapter)) 1086 !ch->combined_count || ch->combined_count > be_max_qs(adapter))
@@ -1087,7 +1088,8 @@ static int be_set_channels(struct net_device *netdev,
1087 1088
1088 adapter->cfg_num_qs = ch->combined_count; 1089 adapter->cfg_num_qs = ch->combined_count;
1089 1090
1090 return be_update_queues(adapter); 1091 status = be_update_queues(adapter);
1092 return be_cmd_status(status);
1091} 1093}
1092 1094
1093static u32 be_get_rxfh_indir_size(struct net_device *netdev) 1095static u32 be_get_rxfh_indir_size(struct net_device *netdev)