ionic: missed doorbell workaround
In one version of the HW there is a remote possibility that it
will miss the doorbell ring. This adds a bit of protection to
be sure we don't stall a queue from a missed doorbell.
Fixes: 0f3154e6bc ("ionic: Add Tx and Rx handling")
Signed-off-by: Allen Hubbe <allen.hubbe@amd.com>
Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
1fffb02541
commit
b69585bfce
@@ -25,6 +25,12 @@
|
||||
#define IONIC_DEV_INFO_REG_COUNT 32
|
||||
#define IONIC_DEV_CMD_REG_COUNT 32
|
||||
|
||||
#define IONIC_NAPI_DEADLINE (HZ / 200) /* 5ms */
|
||||
#define IONIC_ADMIN_DOORBELL_DEADLINE (HZ / 2) /* 500ms */
|
||||
#define IONIC_TX_DOORBELL_DEADLINE (HZ / 100) /* 10ms */
|
||||
#define IONIC_RX_MIN_DOORBELL_DEADLINE (HZ / 100) /* 10ms */
|
||||
#define IONIC_RX_MAX_DOORBELL_DEADLINE (HZ * 5) /* 5s */
|
||||
|
||||
struct ionic_dev_bar {
|
||||
void __iomem *vaddr;
|
||||
phys_addr_t bus_addr;
|
||||
@@ -216,6 +222,8 @@ struct ionic_queue {
|
||||
struct ionic_lif *lif;
|
||||
struct ionic_desc_info *info;
|
||||
u64 dbval;
|
||||
unsigned long dbell_deadline;
|
||||
unsigned long dbell_jiffies;
|
||||
u16 head_idx;
|
||||
u16 tail_idx;
|
||||
unsigned int index;
|
||||
@@ -361,4 +369,8 @@ void ionic_q_service(struct ionic_queue *q, struct ionic_cq_info *cq_info,
|
||||
int ionic_heartbeat_check(struct ionic *ionic);
|
||||
bool ionic_is_fw_running(struct ionic_dev *idev);
|
||||
|
||||
bool ionic_adminq_poke_doorbell(struct ionic_queue *q);
|
||||
bool ionic_txq_poke_doorbell(struct ionic_queue *q);
|
||||
bool ionic_rxq_poke_doorbell(struct ionic_queue *q);
|
||||
|
||||
#endif /* _IONIC_DEV_H_ */
|
||||
|
||||
Reference in New Issue
Block a user