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

Commit 7d4cdb5a authored by Ben Hutchings's avatar Ben Hutchings Committed by David S. Miller
Browse files

sfc: Merge struct efx_blinker into struct efx_board

parent 63f19884
Loading
Loading
Loading
Loading
+15 −14
Original line number Diff line number Diff line
@@ -35,30 +35,31 @@
static void blink_led_timer(unsigned long context)
{
	struct efx_nic *efx = (struct efx_nic *)context;
	struct efx_blinker *bl = &efx->board_info.blinker;
	efx->board_info.set_id_led(efx, bl->state);
	bl->state = !bl->state;
	if (bl->resubmit)
		mod_timer(&bl->timer, jiffies + BLINK_INTERVAL);
	struct efx_board *board = &efx->board_info;

	board->set_id_led(efx, board->blink_state);
	board->blink_state = !board->blink_state;
	if (board->blink_resubmit)
		mod_timer(&board->blink_timer, jiffies + BLINK_INTERVAL);
}

static void board_blink(struct efx_nic *efx, bool blink)
{
	struct efx_blinker *blinker = &efx->board_info.blinker;
	struct efx_board *board = &efx->board_info;

	/* The rtnl mutex serialises all ethtool ioctls, so
	 * nothing special needs doing here. */
	if (blink) {
		blinker->resubmit = true;
		blinker->state = false;
		setup_timer(&blinker->timer, blink_led_timer,
		board->blink_resubmit = true;
		board->blink_state = false;
		setup_timer(&board->blink_timer, blink_led_timer,
			    (unsigned long)efx);
		mod_timer(&blinker->timer, jiffies + BLINK_INTERVAL);
		mod_timer(&board->blink_timer, jiffies + BLINK_INTERVAL);
	} else {
		blinker->resubmit = false;
		if (blinker->timer.function)
			del_timer_sync(&blinker->timer);
		efx->board_info.init_leds(efx);
		board->blink_resubmit = false;
		if (board->blink_timer.function)
			del_timer_sync(&board->blink_timer);
		board->init_leds(efx);
	}
}

+6 −15
Original line number Diff line number Diff line
@@ -388,19 +388,6 @@ struct efx_channel {

};

/**
 * struct efx_blinker - S/W LED blinking context
 * @state: Current state - on or off
 * @resubmit: Timer resubmission flag
 * @timer: Control timer for blinking
 */
struct efx_blinker {
	bool state;
	bool resubmit;
	struct timer_list timer;
};


/**
 * struct efx_board - board information
 * @type: Board model type
@@ -412,7 +399,9 @@ struct efx_blinker {
 * @blink: Starts/stops blinking
 * @monitor: Board-specific health check function
 * @fini: Cleanup function
 * @blinker: used to blink LEDs in software
 * @blink_state: Current blink state
 * @blink_resubmit: Blink timer resubmission flag
 * @blink_timer: Blink timer
 * @hwmon_client: I2C client for hardware monitor
 * @ioexp_client: I2C client for power/port control
 */
@@ -429,7 +418,9 @@ struct efx_board {
	int (*monitor) (struct efx_nic *nic);
	void (*blink) (struct efx_nic *efx, bool start);
	void (*fini) (struct efx_nic *nic);
	struct efx_blinker blinker;
	bool blink_state;
	bool blink_resubmit;
	struct timer_list blink_timer;
	struct i2c_client *hwmon_client, *ioexp_client;
};