src/dpdk/drivers/net/txgbe/base/txgbe_hw.c
void txgbe_enable_tx_laser_multispeed_fiber(struct txgbe_hw *hw)
{
	u32 esdp_reg = rd32(hw, TXGBE_GPIODATA);

	/* Enable Tx laser; allow 100ms to light up */
	esdp_reg &= ~(TXGBE_GPIOBIT_0 | TXGBE_GPIOBIT_1);
	wr32(hw, TXGBE_GPIODATA, esdp_reg);
	txgbe_flush(hw);
	msec_delay(100);
}
/**
 *  txgbe_enable_tx_laser_multispeed_fiber - Enable Tx laser
 *  @hw: pointer to hardware structure
 *
 *  The base drivers may require better control over SFP+ module
 *  PHY states.  This includes selectively turning on the Tx
 *  laser on the PHY, effectively starting physical link.
 **/
Enable Tx laser
@hw: pointer to hardware structure

The base drivers may require better control over SFP+ module
PHY states.  This includes selectively turning on the Tx
laser on the PHY, effectively starting physical link.
Enable Tx laser @hw : pointer to hardware structure The base drivers may require better control over SFP + module PHY states . This includes selectively turning on the Tx laser on the PHY effectively starting physical link .
void txgbe_enable_tx_laser_multispeed_fiber(struct txgbe_hw *hw)
{
	u32 esdp_reg = rd32(hw, TXGBE_GPIODATA);
	esdp_reg &= ~(TXGBE_GPIOBIT_0 | TXGBE_GPIOBIT_1);
	wr32(hw, TXGBE_GPIODATA, esdp_reg);
	txgbe_flush(hw);
	msec_delay(100);
}
void txgbe_enable_tx_laser_multispeed_fiber ( struct txgbe_hw * hw ) { u32 esdp_reg = rd32 ( hw , TXGBE_GPIODATA ) ; esdp_reg &= ~ ( TXGBE_GPIOBIT_0 | TXGBE_GPIOBIT_1 ) ; wr32 ( hw , TXGBE_GPIODATA , esdp_reg ) ; txgbe_flush ( hw ) ; msec_delay ( 100 ) ; }
txgbe_enable_tx_laser_multispeed_fiber - Enable Tx laser
  @hw: pointer to hardware structure
txgbe_enable_tx_laser_multispeed_fiber - Enable Tx laser @hw : pointer to hardware structure
/* Enable Tx laser; allow 100ms to light up */