aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ehea/ehea_main.c
diff options
context:
space:
mode:
authorJan-Bernd Themann <ossthema@de.ibm.com>2007-09-07 06:30:17 -0400
committerJeff Garzik <jeff@garzik.org>2007-09-13 00:13:51 -0400
commit8759cf76e9a6322fc68dcbfaa1cbad00c74b199e (patch)
tree8c503232920c6b5dd32ff8c7bbf9292c57f2f13d /drivers/net/ehea/ehea_main.c
parent026d7917e592f91063861e002adf1c806d7756ae (diff)
ehea: propagate physical port state
Introduces a module parameter to decide whether the physical port link state is propagated to the network stack or not. It makes sense not to take the physical port state into account on machines with more logical partitions that communicate with each other. This is always possible no matter what the physical port state is. Thus eHEA can be considered as a switch there. Signed-off-by: Jan-Bernd Themann <themann@de.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/ehea/ehea_main.c')
-rw-r--r--drivers/net/ehea/ehea_main.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c
index db5747490a07..1e9fd6f36910 100644
--- a/drivers/net/ehea/ehea_main.c
+++ b/drivers/net/ehea/ehea_main.c
@@ -53,17 +53,21 @@ static int rq3_entries = EHEA_DEF_ENTRIES_RQ3;
53static int sq_entries = EHEA_DEF_ENTRIES_SQ; 53static int sq_entries = EHEA_DEF_ENTRIES_SQ;
54static int use_mcs = 0; 54static int use_mcs = 0;
55static int num_tx_qps = EHEA_NUM_TX_QP; 55static int num_tx_qps = EHEA_NUM_TX_QP;
56static int prop_carrier_state = 0;
56 57
57module_param(msg_level, int, 0); 58module_param(msg_level, int, 0);
58module_param(rq1_entries, int, 0); 59module_param(rq1_entries, int, 0);
59module_param(rq2_entries, int, 0); 60module_param(rq2_entries, int, 0);
60module_param(rq3_entries, int, 0); 61module_param(rq3_entries, int, 0);
61module_param(sq_entries, int, 0); 62module_param(sq_entries, int, 0);
63module_param(prop_carrier_state, int, 0);
62module_param(use_mcs, int, 0); 64module_param(use_mcs, int, 0);
63module_param(num_tx_qps, int, 0); 65module_param(num_tx_qps, int, 0);
64 66
65MODULE_PARM_DESC(num_tx_qps, "Number of TX-QPS"); 67MODULE_PARM_DESC(num_tx_qps, "Number of TX-QPS");
66MODULE_PARM_DESC(msg_level, "msg_level"); 68MODULE_PARM_DESC(msg_level, "msg_level");
69MODULE_PARM_DESC(prop_carrier_state, "Propagate carrier state of physical "
70 "port to stack. 1:yes, 0:no. Default = 0 ");
67MODULE_PARM_DESC(rq3_entries, "Number of entries for Receive Queue 3 " 71MODULE_PARM_DESC(rq3_entries, "Number of entries for Receive Queue 3 "
68 "[2^x - 1], x = [6..14]. Default = " 72 "[2^x - 1], x = [6..14]. Default = "
69 __MODULE_STRING(EHEA_DEF_ENTRIES_RQ3) ")"); 73 __MODULE_STRING(EHEA_DEF_ENTRIES_RQ3) ")");
@@ -814,7 +818,9 @@ int ehea_set_portspeed(struct ehea_port *port, u32 port_speed)
814 ehea_error("Failed setting port speed"); 818 ehea_error("Failed setting port speed");
815 } 819 }
816 } 820 }
817 netif_carrier_on(port->netdev); 821 if (!prop_carrier_state || (port->phy_link == EHEA_PHY_LINK_UP))
822 netif_carrier_on(port->netdev);
823
818 kfree(cb4); 824 kfree(cb4);
819out: 825out:
820 return ret; 826 return ret;
@@ -869,13 +875,19 @@ static void ehea_parse_eqe(struct ehea_adapter *adapter, u64 eqe)
869 } 875 }
870 876
871 if (EHEA_BMASK_GET(NEQE_EXTSWITCH_PORT_UP, eqe)) { 877 if (EHEA_BMASK_GET(NEQE_EXTSWITCH_PORT_UP, eqe)) {
878 port->phy_link = EHEA_PHY_LINK_UP;
872 if (netif_msg_link(port)) 879 if (netif_msg_link(port))
873 ehea_info("%s: Physical port up", 880 ehea_info("%s: Physical port up",
874 port->netdev->name); 881 port->netdev->name);
882 if (prop_carrier_state)
883 netif_carrier_on(port->netdev);
875 } else { 884 } else {
885 port->phy_link = EHEA_PHY_LINK_DOWN;
876 if (netif_msg_link(port)) 886 if (netif_msg_link(port))
877 ehea_info("%s: Physical port down", 887 ehea_info("%s: Physical port down",
878 port->netdev->name); 888 port->netdev->name);
889 if (prop_carrier_state)
890 netif_carrier_off(port->netdev);
879 } 891 }
880 892
881 if (EHEA_BMASK_GET(NEQE_EXTSWITCH_PRIMARY, eqe)) 893 if (EHEA_BMASK_GET(NEQE_EXTSWITCH_PRIMARY, eqe))