|
@@ -273,6 +273,7 @@ struct cg_proto;
|
|
|
* @sk_rcvtimeo: %SO_RCVTIMEO setting
|
|
|
* @sk_sndtimeo: %SO_SNDTIMEO setting
|
|
|
* @sk_rxhash: flow hash received from netif layer
|
|
|
+ * @sk_incoming_cpu: record cpu processing incoming packets
|
|
|
* @sk_txhash: computed flow hash for use on transmit
|
|
|
* @sk_filter: socket filtering instructions
|
|
|
* @sk_protinfo: private area, net family specific, when not using slab
|
|
@@ -350,6 +351,12 @@ struct sock {
|
|
|
#ifdef CONFIG_RPS
|
|
|
__u32 sk_rxhash;
|
|
|
#endif
|
|
|
+ u16 sk_incoming_cpu;
|
|
|
+ /* 16bit hole
|
|
|
+ * Warned : sk_incoming_cpu can be set from softirq,
|
|
|
+ * Do not use this hole without fully understanding possible issues.
|
|
|
+ */
|
|
|
+
|
|
|
__u32 sk_txhash;
|
|
|
#ifdef CONFIG_NET_RX_BUSY_POLL
|
|
|
unsigned int sk_napi_id;
|
|
@@ -833,6 +840,11 @@ static inline int sk_backlog_rcv(struct sock *sk, struct sk_buff *skb)
|
|
|
return sk->sk_backlog_rcv(sk, skb);
|
|
|
}
|
|
|
|
|
|
+static inline void sk_incoming_cpu_update(struct sock *sk)
|
|
|
+{
|
|
|
+ sk->sk_incoming_cpu = raw_smp_processor_id();
|
|
|
+}
|
|
|
+
|
|
|
static inline void sock_rps_record_flow_hash(__u32 hash)
|
|
|
{
|
|
|
#ifdef CONFIG_RPS
|