@@ -130,9 +130,15 @@ static int mlxbf_gige_open(struct net_device *netdev)
130130{
131131 struct mlxbf_gige * priv = netdev_priv (netdev );
132132 struct phy_device * phydev = netdev -> phydev ;
133+ u64 control ;
133134 u64 int_en ;
134135 int err ;
135136
137+ /* Perform general init of GigE block */
138+ control = readq (priv -> base + MLXBF_GIGE_CONTROL );
139+ control |= MLXBF_GIGE_CONTROL_PORT_EN ;
140+ writeq (control , priv -> base + MLXBF_GIGE_CONTROL );
141+
136142 err = mlxbf_gige_request_irqs (priv );
137143 if (err )
138144 return err ;
@@ -147,14 +153,14 @@ static int mlxbf_gige_open(struct net_device *netdev)
147153 */
148154 priv -> valid_polarity = 0 ;
149155
150- err = mlxbf_gige_rx_init (priv );
156+ phy_start (phydev );
157+
158+ err = mlxbf_gige_tx_init (priv );
151159 if (err )
152160 goto free_irqs ;
153- err = mlxbf_gige_tx_init (priv );
161+ err = mlxbf_gige_rx_init (priv );
154162 if (err )
155- goto rx_deinit ;
156-
157- phy_start (phydev );
163+ goto tx_deinit ;
158164
159165 netif_napi_add (netdev , & priv -> napi , mlxbf_gige_poll );
160166 napi_enable (& priv -> napi );
@@ -176,8 +182,8 @@ static int mlxbf_gige_open(struct net_device *netdev)
176182
177183 return 0 ;
178184
179- rx_deinit :
180- mlxbf_gige_rx_deinit (priv );
185+ tx_deinit :
186+ mlxbf_gige_tx_deinit (priv );
181187
182188free_irqs :
183189 mlxbf_gige_free_irqs (priv );
@@ -365,7 +371,6 @@ static int mlxbf_gige_probe(struct platform_device *pdev)
365371 void __iomem * plu_base ;
366372 void __iomem * base ;
367373 int addr , phy_irq ;
368- u64 control ;
369374 int err ;
370375
371376 base = devm_platform_ioremap_resource (pdev , MLXBF_GIGE_RES_MAC );
@@ -380,11 +385,6 @@ static int mlxbf_gige_probe(struct platform_device *pdev)
380385 if (IS_ERR (plu_base ))
381386 return PTR_ERR (plu_base );
382387
383- /* Perform general init of GigE block */
384- control = readq (base + MLXBF_GIGE_CONTROL );
385- control |= MLXBF_GIGE_CONTROL_PORT_EN ;
386- writeq (control , base + MLXBF_GIGE_CONTROL );
387-
388388 netdev = devm_alloc_etherdev (& pdev -> dev , sizeof (* priv ));
389389 if (!netdev )
390390 return - ENOMEM ;
0 commit comments