Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c922d124 authored by Mark Einon's avatar Mark Einon Committed by Greg Kroah-Hartman
Browse files

staging: et131x: Fix link detection signalling



Remove redundant code around netif_carrier_XXX calls, and associated adapter->media_state, which prevented the link from being reported as off.
Tested on an ET-1310 device.

Signed-off-by: default avatarMark Einon <mark.einon@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 10f00a49
Loading
Loading
Loading
Loading
+1 −25
Original line number Diff line number Diff line
@@ -737,16 +737,6 @@ void et131x_mii_check(struct et131x_adapter *adapter,
	if (bmsr_ints & MI_BMSR_LINK_STATUS) {
		if (bmsr & MI_BMSR_LINK_STATUS) {
			adapter->boot_coma = 20;

			/* Update our state variables and indicate the
			 * connected state
			 */
			spin_lock_irqsave(&adapter->lock, flags);

			adapter->media_state = NETIF_STATUS_MEDIA_CONNECT;

			spin_unlock_irqrestore(&adapter->lock, flags);

			netif_carrier_on(adapter->netdev);
		} else {
			dev_warn(&adapter->pdev->dev,
@@ -768,21 +758,7 @@ void et131x_mii_check(struct et131x_adapter *adapter,
				et131x_mii_write(adapter, 0x12, register18);
			}

			/* For the first N seconds of life, we are in "link
			 * detection" When we are in this state, we should
			 * only report "connected". When the LinkDetection
			 * Timer expires, we can report disconnected (handled
			 * in the LinkDetectionDPC).
			 */
			if (adapter->media_state == NETIF_STATUS_MEDIA_DISCONNECT) {
				spin_lock_irqsave(&adapter->lock, flags);
				adapter->media_state =
				    NETIF_STATUS_MEDIA_DISCONNECT;
				spin_unlock_irqrestore(&adapter->lock,
						       flags);

			netif_carrier_off(adapter->netdev);
			}

			adapter->linkspeed = 0;
			adapter->duplex_mode = 0;
+0 −6
Original line number Diff line number Diff line
@@ -196,12 +196,6 @@ struct et131x_adapter {
	u8 ai_force_duplex;	/* duplex setting */
	u16 ai_force_speed;	/* 'Speed', user over-ride of line speed */
	u8 flowcontrol;		/* flow control validated by the far-end */
	enum {
		NETIF_STATUS_INVALID = 0,
		NETIF_STATUS_MEDIA_CONNECT,
		NETIF_STATUS_MEDIA_DISCONNECT,
		NETIF_STATUS_MAX
	} media_state;

	/* Minimize init-time */
	struct timer_list error_timer;
+1 −22
Original line number Diff line number Diff line
@@ -298,27 +298,6 @@ void et131x_error_timer_handler(unsigned long data)
					  TX_ERROR_PERIOD * HZ / 1000);
}

/**
 * et131x_link_detection_handler
 *
 * Timer function for link up at driver load time
 */
void et131x_link_detection_handler(unsigned long data)
{
	struct et131x_adapter *adapter = (struct et131x_adapter *) data;
	unsigned long flags;

	if (adapter->media_state == 0) {
		spin_lock_irqsave(&adapter->lock, flags);

		adapter->media_state = NETIF_STATUS_MEDIA_DISCONNECT;

		spin_unlock_irqrestore(&adapter->lock, flags);

		netif_carrier_off(adapter->netdev);
	}
}

/**
 * et131x_configure_global_regs	-	configure JAGCore global regs
 * @adapter: pointer to our adapter structure
@@ -718,7 +697,7 @@ static int __devinit et131x_pci_setup(struct pci_dev *pdev,
	adapter->error_timer.data = (unsigned long)adapter;

	/* Initialize link state */
	et131x_link_detection_handler((unsigned long)adapter);
	netif_carrier_off(adapter->netdev);

	/* Initialize variable for counting how long we do not have
							link status */