static int
e1000_link_test(struct e1000_adapter *adapter, uint64_t *data)
{
	*data = 0;

	if (adapter->hw.media_type == e1000_media_type_internal_serdes) {
		int i = 0;
		adapter->hw.serdes_link_down = TRUE;

		/* on some blade server designs link establishment */
		/* could take as long as 2-3 minutes.              */
		do {
			e1000_check_for_link(&adapter->hw);
			if (adapter->hw.serdes_link_down == FALSE)
				return *data;
			msec_delay(20);
		} while (i++ < 3750);

		*data = 1; 
	} else {
		e1000_check_for_link(&adapter->hw);

		if(!(E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_LU)) {
			*data = 1;
		}
	}
	return *data;
}
static int
e1000_link_test(struct e1000_adapter *adapter, uint64_t *data)
{
	*data = 0;
	e1000_check_for_link(&adapter->hw);

	if(!(E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_LU)) {
		*data = 1;
	}
	return *data;
}