LinuxKPI: napi_schedule() requires return value, implement napi_is_scheduled()

A newer version of iwlwifi requires a return value from napi_schedule();
unclear if the function always should have been bool. Add the bool to test
based on the napi_schedule_prep() result.

Also add napi_is_scheduled() for rtw89.

Sponsored by:	The FreeBSD Foundation
Reviewed by:	emaste (previous version)
Differential Revision:	https://reviews.freebsd.org/D44591

(cherry picked from commit 21761f2ede4ebad13e78112b9409c1f20f946781)
This commit is contained in:
Bjoern A. Zeeb 2024-03-31 17:27:45 +00:00
parent 6b2686ca9b
commit 25e0847ef7
2 changed files with 14 additions and 3 deletions

View file

@ -230,7 +230,7 @@ void linuxkpi_netif_napi_add(struct net_device *, struct napi_struct *,
void linuxkpi_netif_napi_del(struct napi_struct *);
bool linuxkpi_napi_schedule_prep(struct napi_struct *);
void linuxkpi___napi_schedule(struct napi_struct *);
void linuxkpi_napi_schedule(struct napi_struct *);
bool linuxkpi_napi_schedule(struct napi_struct *);
void linuxkpi_napi_reschedule(struct napi_struct *);
bool linuxkpi_napi_complete_done(struct napi_struct *, int);
bool linuxkpi_napi_complete(struct napi_struct *);
@ -272,6 +272,13 @@ netif_napi_add_tx(struct net_device *dev, struct napi_struct *napi,
netif_napi_add(dev, napi, napi_poll);
}
static inline bool
napi_is_scheduled(struct napi_struct *napi)
{
return (test_bit(LKPI_NAPI_FLAG_IS_SCHEDULED, &napi->state));
}
/* -------------------------------------------------------------------------- */
static inline void

View file

@ -185,7 +185,7 @@ linuxkpi___napi_schedule(struct napi_struct *napi)
}
}
void
bool
linuxkpi_napi_schedule(struct napi_struct *napi)
{
@ -195,8 +195,12 @@ linuxkpi_napi_schedule(struct napi_struct *napi)
* iwlwifi calls this sequence instead of napi_schedule()
* to be able to test the prep result.
*/
if (napi_schedule_prep(napi))
if (napi_schedule_prep(napi)) {
__napi_schedule(napi);
return (true);
}
return (false);
}
void