@@ -101,6 +101,9 @@ static void mptcp_sol_socket_sync_intval(struct mptcp_sock *msk, int optname, in
101
101
sk_dst_reset (ssk );
102
102
}
103
103
break ;
104
+ case SO_INCOMING_CPU :
105
+ WRITE_ONCE (ssk -> sk_incoming_cpu , val );
106
+ break ;
104
107
}
105
108
106
109
subflow -> setsockopt_seq = msk -> setsockopt_seq ;
@@ -125,6 +128,15 @@ static int mptcp_sol_socket_intval(struct mptcp_sock *msk, int optname, int val)
125
128
return 0 ;
126
129
}
127
130
131
+ static void mptcp_so_incoming_cpu (struct mptcp_sock * msk , int val )
132
+ {
133
+ struct sock * sk = (struct sock * )msk ;
134
+
135
+ WRITE_ONCE (sk -> sk_incoming_cpu , val );
136
+
137
+ mptcp_sol_socket_sync_intval (msk , SO_INCOMING_CPU , val );
138
+ }
139
+
128
140
static int mptcp_setsockopt_sol_socket_int (struct mptcp_sock * msk , int optname ,
129
141
sockptr_t optval , unsigned int optlen )
130
142
{
@@ -145,6 +157,9 @@ static int mptcp_setsockopt_sol_socket_int(struct mptcp_sock *msk, int optname,
145
157
case SO_RCVBUF :
146
158
case SO_RCVBUFFORCE :
147
159
return mptcp_sol_socket_intval (msk , optname , val );
160
+ case SO_INCOMING_CPU :
161
+ mptcp_so_incoming_cpu (msk , val );
162
+ return 0 ;
148
163
}
149
164
150
165
return - ENOPROTOOPT ;
@@ -230,6 +245,7 @@ static int mptcp_setsockopt_sol_socket(struct mptcp_sock *msk, int optname,
230
245
case SO_RCVBUF :
231
246
case SO_RCVBUFFORCE :
232
247
case SO_MARK :
248
+ case SO_INCOMING_CPU :
233
249
return mptcp_setsockopt_sol_socket_int (msk , optname , optval , optlen );
234
250
case SO_LINGER :
235
251
return mptcp_setsockopt_sol_socket_linger (msk , optval , optlen );
0 commit comments