mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-19 08:56:12 +07:00
iw_cxgb3: handle chip reset notifications
Freeze activity when notified that the underlying chip is getting reset on a EEH event or fatal error. Signed-off-by: Divy Le Ray <divy@chelsio.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
cb0bc20595
commit
a73efd0a85
@ -701,6 +701,9 @@ static int __cxio_tpt_op(struct cxio_rdev *rdev_p, u32 reset_tpt_entry,
|
||||
u32 stag_idx;
|
||||
u32 wptr;
|
||||
|
||||
if (rdev_p->flags)
|
||||
return -EIO;
|
||||
|
||||
stag_state = stag_state > 0;
|
||||
stag_idx = (*stag) >> 8;
|
||||
|
||||
|
@ -108,6 +108,8 @@ struct cxio_rdev {
|
||||
struct gen_pool *pbl_pool;
|
||||
struct gen_pool *rqt_pool;
|
||||
struct list_head entry;
|
||||
u32 flags;
|
||||
#define CXIO_ERROR_FATAL 1
|
||||
};
|
||||
|
||||
static inline int cxio_num_stags(struct cxio_rdev *rdev_p)
|
||||
|
@ -51,13 +51,15 @@ cxgb3_cpl_handler_func t3c_handlers[NUM_CPL_CMDS];
|
||||
|
||||
static void open_rnic_dev(struct t3cdev *);
|
||||
static void close_rnic_dev(struct t3cdev *);
|
||||
static void iwch_err_handler(struct t3cdev *, u32, u32);
|
||||
|
||||
struct cxgb3_client t3c_client = {
|
||||
.name = "iw_cxgb3",
|
||||
.add = open_rnic_dev,
|
||||
.remove = close_rnic_dev,
|
||||
.handlers = t3c_handlers,
|
||||
.redirect = iwch_ep_redirect
|
||||
.redirect = iwch_ep_redirect,
|
||||
.err_handler = iwch_err_handler
|
||||
};
|
||||
|
||||
static LIST_HEAD(dev_list);
|
||||
@ -160,6 +162,17 @@ static void close_rnic_dev(struct t3cdev *tdev)
|
||||
mutex_unlock(&dev_mutex);
|
||||
}
|
||||
|
||||
static void iwch_err_handler(struct t3cdev *tdev, u32 status, u32 error)
|
||||
{
|
||||
struct cxio_rdev *rdev = tdev->ulp;
|
||||
|
||||
if (status == OFFLOAD_STATUS_DOWN)
|
||||
rdev->flags = CXIO_ERROR_FATAL;
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
static int __init iwch_init_module(void)
|
||||
{
|
||||
int err;
|
||||
|
Loading…
Reference in New Issue
Block a user