Commit 4a778f3d authored by David S. Miller's avatar David S. Miller

Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/nex

t-queue

Tony Nguyen says:

====================
100GbE Intel Wired LAN Driver Updates 2022-04-07

Alexander Lobakin says:

This hunts down several places around packet templates/dummies for
switch rules which are either repetitive, fragile or just not
really readable code.
It's a common need to add new packet templates and to review such
changes as well, try to simplify both with the help of a pair
macros and aliases.
ice_find_dummy_packet() became very complex at this point with tons
of nested if-elses. It clearly showed this approach does not scale,
so convert its logics to the simple mask-match + static const array.

bloat-o-meter is happy about that (built w/ LLVM 13):

add/remove: 0/1 grow/shrink: 1/1 up/down: 2/-1058 (-1056)
Function                                     old     new   delta
ice_fill_adv_dummy_packet                    289     291      +2
ice_adv_add_update_vsi_list                  201       -    -201
ice_add_adv_rule                            2950    2093    -857
Total: Before=414512, After=413456, chg -0.25%
add/remove: 53/52 grow/shrink: 0/0 up/down: 4660/-3988 (672)
RO Data                                      old     new   delta
ice_dummy_pkt_profiles                         -     672    +672
Total: Before=37895, After=38567, chg +1.77%

Diffstat also looks nice, and adding new packet templates now takes
less lines.

We'll probably come out with dynamic template crafting in a while,
but for now let's improve what we have currently.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents e89006be e33163a4
This diff is collapsed.
...@@ -138,8 +138,16 @@ struct ice_update_recipe_lkup_idx_params { ...@@ -138,8 +138,16 @@ struct ice_update_recipe_lkup_idx_params {
struct ice_adv_lkup_elem { struct ice_adv_lkup_elem {
enum ice_protocol_type type; enum ice_protocol_type type;
union {
union ice_prot_hdr h_u; /* Header values */ union ice_prot_hdr h_u; /* Header values */
/* Used to iterate over the headers */
u16 h_raw[sizeof(union ice_prot_hdr) / sizeof(u16)];
};
union {
union ice_prot_hdr m_u; /* Mask of header values to match */ union ice_prot_hdr m_u; /* Mask of header values to match */
/* Used to iterate over header mask */
u16 m_raw[sizeof(union ice_prot_hdr) / sizeof(u16)];
};
}; };
struct ice_sw_act_ctrl { struct ice_sw_act_ctrl {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment