|
@@ -81,6 +81,7 @@ struct {
|
|
__uint(key_size, sizeof(__u32));
|
|
__uint(key_size, sizeof(__u32));
|
|
__uint(value_size, sizeof(struct rss_config_t));
|
|
__uint(value_size, sizeof(struct rss_config_t));
|
|
__uint(max_entries, 1);
|
|
__uint(max_entries, 1);
|
|
|
|
+ __uint(map_flags, BPF_F_MMAPABLE);
|
|
} tap_rss_map_configurations SEC(".maps");
|
|
} tap_rss_map_configurations SEC(".maps");
|
|
|
|
|
|
struct {
|
|
struct {
|
|
@@ -88,6 +89,7 @@ struct {
|
|
__uint(key_size, sizeof(__u32));
|
|
__uint(key_size, sizeof(__u32));
|
|
__uint(value_size, sizeof(struct toeplitz_key_data_t));
|
|
__uint(value_size, sizeof(struct toeplitz_key_data_t));
|
|
__uint(max_entries, 1);
|
|
__uint(max_entries, 1);
|
|
|
|
+ __uint(map_flags, BPF_F_MMAPABLE);
|
|
} tap_rss_map_toeplitz_key SEC(".maps");
|
|
} tap_rss_map_toeplitz_key SEC(".maps");
|
|
|
|
|
|
struct {
|
|
struct {
|
|
@@ -95,6 +97,7 @@ struct {
|
|
__uint(key_size, sizeof(__u32));
|
|
__uint(key_size, sizeof(__u32));
|
|
__uint(value_size, sizeof(__u16));
|
|
__uint(value_size, sizeof(__u16));
|
|
__uint(max_entries, INDIRECTION_TABLE_SIZE);
|
|
__uint(max_entries, INDIRECTION_TABLE_SIZE);
|
|
|
|
+ __uint(map_flags, BPF_F_MMAPABLE);
|
|
} tap_rss_map_indirection_table SEC(".maps");
|
|
} tap_rss_map_indirection_table SEC(".maps");
|
|
|
|
|
|
static inline void net_rx_rss_add_chunk(__u8 *rss_input, size_t *bytes_written,
|
|
static inline void net_rx_rss_add_chunk(__u8 *rss_input, size_t *bytes_written,
|
|
@@ -317,7 +320,7 @@ static inline int parse_packet(struct __sk_buff *skb,
|
|
|
|
|
|
info->in_src = ip.saddr;
|
|
info->in_src = ip.saddr;
|
|
info->in_dst = ip.daddr;
|
|
info->in_dst = ip.daddr;
|
|
- info->is_fragmented = !!ip.frag_off;
|
|
|
|
|
|
+ info->is_fragmented = !!(bpf_ntohs(ip.frag_off) & (0x2000 | 0x1fff));
|
|
|
|
|
|
l4_protocol = ip.protocol;
|
|
l4_protocol = ip.protocol;
|
|
l4_offset = ip.ihl * 4;
|
|
l4_offset = ip.ihl * 4;
|
|
@@ -528,7 +531,7 @@ static inline __u32 calculate_rss_hash(struct __sk_buff *skb,
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
-SEC("tun_rss_steering")
|
|
|
|
|
|
+SEC("socket")
|
|
int tun_rss_steering_prog(struct __sk_buff *skb)
|
|
int tun_rss_steering_prog(struct __sk_buff *skb)
|
|
{
|
|
{
|
|
|
|
|