xsk, net: Make sock_def_readable() have external linkage
XDP sockets use the default implementation of struct sock's sk_data_ready callback, which is sock_def_readable(). This function is called in the XDP socket fast-path, and involves a retpoline. By letting sock_def_readable() have external linkage, and being called directly, the retpoline can be avoided. Signed-off-by: Björn Töpel <bjorn.topel@intel.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Link: https://lore.kernel.org/bpf/20200120092917.13949-1-bjorn.topel@gmail.com
This commit is contained in:
parent
b87121dd3f
commit
43a825afc9
|
@ -2612,4 +2612,6 @@ static inline bool sk_dev_equal_l3scope(struct sock *sk, int dif)
|
|||
return false;
|
||||
}
|
||||
|
||||
void sock_def_readable(struct sock *sk);
|
||||
|
||||
#endif /* _SOCK_H */
|
||||
|
|
|
@ -2786,7 +2786,7 @@ static void sock_def_error_report(struct sock *sk)
|
|||
rcu_read_unlock();
|
||||
}
|
||||
|
||||
static void sock_def_readable(struct sock *sk)
|
||||
void sock_def_readable(struct sock *sk)
|
||||
{
|
||||
struct socket_wq *wq;
|
||||
|
||||
|
|
|
@ -217,7 +217,7 @@ static int xsk_rcv(struct xdp_sock *xs, struct xdp_buff *xdp)
|
|||
static void xsk_flush(struct xdp_sock *xs)
|
||||
{
|
||||
xskq_prod_submit(xs->rx);
|
||||
xs->sk.sk_data_ready(&xs->sk);
|
||||
sock_def_readable(&xs->sk);
|
||||
}
|
||||
|
||||
int xsk_generic_rcv(struct xdp_sock *xs, struct xdp_buff *xdp)
|
||||
|
|
Loading…
Reference in New Issue