blob: 2511352d9c7fefc973f1e34b6358a276ad7e77ce [file] [log] [blame]
/* SPDX-License-Identifier: (GPL-2.0 OR MIT)
* Google virtual Ethernet (gve) driver
*
* Copyright (C) 2015-2019 Google, Inc.
*/
#ifndef _GVE_REGISTER_H_
#define _GVE_REGISTER_H_
/* Fixed Configuration Registers */
struct gve_registers {
__be32 device_status;
__be32 driver_status;
__be32 max_tx_queues;
__be32 max_rx_queues;
__be32 adminq_pfn;
__be32 adminq_doorbell;
__be32 adminq_event_counter;
u8 reserved[3];
u8 driver_version;
};
enum gve_device_status_flags {
GVE_DEVICE_STATUS_RESET_MASK = BIT(1),
GVE_DEVICE_STATUS_LINK_STATUS_MASK = BIT(2),
GVE_DEVICE_STATUS_REPORT_STATS_MASK = BIT(3),
};
#define GVE_RESET_REASON_SIZE 5
enum gve_reset_reason {
GVE_RESET_REASON_UNKNOWN,
GVE_RESET_REASON_RESET_BY_USER,
GVE_RESET_REASON_DRIVER_SHUTDOWN,
GVE_RESET_REASON_DRIVER_SUSPENDED,
GVE_RESET_REASON_CREATE_RINGS_FAILED,
GVE_RESET_REASON_REGISTER_QPLS_FAILED,
GVE_RESET_REASON_DRIVER_TEARDOWN_FAILED,
GVE_RESET_REASON_TX_TIMEOUT,
GVE_RESET_REASON_TX_MISS_PATH_TIMEOUT,
GVE_RESET_REASON_RX_ERROR,
GVE_RESET_REASON_DEVICE_REQUESTED,
GVE_RESET_REASON_DRIVER_REMOVED,
GVE_RESET_REASON_DEVICE_FAILURE,
GVE_NUM_RESET_REASONS, /* Not a reset reason */
};
static_assert(GVE_NUM_RESET_REASONS <= (1 << GVE_RESET_REASON_SIZE));
#endif /* _GVE_REGISTER_H_ */