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

	/* Blocked by MNG FW so bail */
	if (txgbe_check_reset_blocked(hw))
		return;

	/* Disable Tx laser; allow 100us to go dark per spec */
	esdp_reg |= (TXGBE_GPIOBIT_0 | TXGBE_GPIOBIT_1);
	wr32(hw, TXGBE_GPIODATA, esdp_reg);
	txgbe_flush(hw);
	usec_delay(100);
}
/**
 *  txgbe_disable_tx_laser_multispeed_fiber - Disable Tx laser
 *  @hw: pointer to hardware structure
 *
 *  The base drivers may require better control over SFP+ module
 *  PHY states.  This includes selectively shutting down the Tx
 *  laser on the PHY, effectively halting physical link.
 **/
Disable Tx laser
@hw: pointer to hardware structure

The base drivers may require better control over SFP+ module
PHY states.  This includes selectively shutting down the Tx
laser on the PHY, effectively halting physical link.
Disable Tx laser @hw : pointer to hardware structure The base drivers may require better control over SFP + module PHY states . This includes selectively shutting down the Tx laser on the PHY effectively halting physical link .
void txgbe_disable_tx_laser_multispeed_fiber(struct txgbe_hw *hw)
{
	u32 esdp_reg = rd32(hw, TXGBE_GPIODATA);
	if (txgbe_check_reset_blocked(hw))
		return;
	esdp_reg |= (TXGBE_GPIOBIT_0 | TXGBE_GPIOBIT_1);
	wr32(hw, TXGBE_GPIODATA, esdp_reg);
	txgbe_flush(hw);
	usec_delay(100);
}
void txgbe_disable_tx_laser_multispeed_fiber ( struct txgbe_hw * hw ) { u32 esdp_reg = rd32 ( hw , TXGBE_GPIODATA ) ; if ( txgbe_check_reset_blocked ( hw ) ) return ; esdp_reg |= ( TXGBE_GPIOBIT_0 | TXGBE_GPIOBIT_1 ) ; wr32 ( hw , TXGBE_GPIODATA , esdp_reg ) ; txgbe_flush ( hw ) ; usec_delay ( 100 ) ; }
txgbe_disable_tx_laser_multispeed_fiber - Disable Tx laser
  @hw: pointer to hardware structure
txgbe_disable_tx_laser_multispeed_fiber - Disable Tx laser @hw : pointer to hardware structure
/* Blocked by MNG FW so bail */ /* Disable Tx laser; allow 100us to go dark per spec */