cxgb3: Fix sparse warning and micro-optimize is_pure_response()
Subsystems (2)
The function is_pure_response() does "ntohl(var) & const" and then essentially just tests whether the result is 0 or not; this can be done more efficiently by computing "var & htonl(const)" instead and doing the byte swap at compile time instead of run time.
This change slightly shrinks the compiled code; eg on x86-64 we save a couple of bswapl instructions:
add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-8 (-8)
function old new delta t3_sge_intr_msix_napi 544 536 -8
and this also has the pleasant side effect of fixing a sparse warning:
drivers/net/cxgb3/sge.c:2313:15: warning: restricted degrades to integer
--- drivers/net/cxgb3/sge.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/net/cxgb3/sge.c +1 -1
@@ -2308,7 +2308,7 @@ next_fl:static inline int is_pure_response (const struct rsp_desc *r) { -u32 n =ntohl (r->flags) & (F_RSPD_ASYNC_NOTIF |F_RSPD_IMM_DATA_VALID ); +__be32 n = r->flags &htonl (F_RSPD_ASYNC_NOTIF |F_RSPD_IMM_DATA_VALID );return (n | r->len_cq) ==0 ; }
From: Roland Dreier <[email protected]>
Date: Fri, 28 Nov 2008 21:47:03 -0800
Quoted 9 lines
The function
is_pure_response()does "ntohl(var) & const" and then essentially just tests whether the result is 0 or not; this can be done more efficiently by computing "var & htonl(const)" instead and doing the byte swap at compile time instead of run time.This change slightly shrinks the compiled code; eg on x86-64 we save a couple of bswapl instructions:
add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-8 (-8)
Quoted 8 lines
function old new delta t3_sge_intr_msix_napi 544 536 -8and this also has the pleasant side effect of fixing a sparse warning:
drivers/net/cxgb3/sge.c:2313:15: warning: restricted degrades to integerSigned-off-by Roland Dreier <[email protected]>
Applied, thanks Roland.