net-timestamp: move timestamp flags out of sk_flags
sk_flags is reaching its limit. New timestamping options will not fit. Move all of them into a new field sk->sk_tsflags. Added benefit is that this removes boilerplate code to convert between SOF_TIMESTAMPING_.. and SOCK_TIMESTAMPING_.. in getsockopt/setsockopt. SOCK_TIMESTAMPING_RX_SOFTWARE is also used to toggle the receive timestamp logic (netstamp_needed). That can be simplified and this last key removed, but will leave that for a separate patch. Signed-off-by: Willem de Bruijn <willemb@google.com> ---- The u16 in sock can be moved into a 16-bit hole below sk_gso_max_segs, though that scatters tstamp fields throughout the struct. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
f24b9be595
commit
b9f40e21ef
@@ -613,9 +613,9 @@ EXPORT_SYMBOL(sock_release);
|
||||
void sock_tx_timestamp(struct sock *sk, __u8 *tx_flags)
|
||||
{
|
||||
*tx_flags = 0;
|
||||
if (sock_flag(sk, SOCK_TIMESTAMPING_TX_HARDWARE))
|
||||
if (sk->sk_tsflags & SOF_TIMESTAMPING_TX_HARDWARE)
|
||||
*tx_flags |= SKBTX_HW_TSTAMP;
|
||||
if (sock_flag(sk, SOCK_TIMESTAMPING_TX_SOFTWARE))
|
||||
if (sk->sk_tsflags & SOF_TIMESTAMPING_TX_SOFTWARE)
|
||||
*tx_flags |= SKBTX_SW_TSTAMP;
|
||||
if (sock_flag(sk, SOCK_WIFI_STATUS))
|
||||
*tx_flags |= SKBTX_WIFI_STATUS;
|
||||
@@ -723,12 +723,12 @@ void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk,
|
||||
}
|
||||
|
||||
memset(&tss, 0, sizeof(tss));
|
||||
if ((sock_flag(sk, SOCK_TIMESTAMPING_SOFTWARE) ||
|
||||
if ((sk->sk_tsflags & SOF_TIMESTAMPING_SOFTWARE ||
|
||||
skb_shinfo(skb)->tx_flags & SKBTX_ANY_SW_TSTAMP) &&
|
||||
ktime_to_timespec_cond(skb->tstamp, tss.ts + 0))
|
||||
empty = 0;
|
||||
if (shhwtstamps &&
|
||||
sock_flag(sk, SOCK_TIMESTAMPING_RAW_HARDWARE) &&
|
||||
(sk->sk_tsflags & SOF_TIMESTAMPING_RAW_HARDWARE) &&
|
||||
ktime_to_timespec_cond(shhwtstamps->hwtstamp, tss.ts + 2))
|
||||
empty = 0;
|
||||
if (!empty)
|
||||
|
||||
Reference in New Issue
Block a user