lkml.org 
[lkml]   [2019]   [Mar]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 02/17] drivers/net/b44: Align pwol_mask to unsigned long for better performance
    Date
    A bit in pwol_mask is set in b44_magic_pattern automatically by set_bit.
    set_bit sets the bit in a single unsigned long location. Since pwol_mask
    may not be aligned to unsigned long, the location may cross two cache
    lines and accessing the location degradates performance. On x86, accessing
    two cache lines in locked instruction in set_bit is called split lock and
    can cause overall performance degradation.

    To avoid to impact performance by accessing two cache lines in set_bit,
    align pwol_mask to unsigned long.

    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    ---
    drivers/net/ethernet/broadcom/b44.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c
    index 97ab0dd25552..bc544b6b9c3a 100644
    --- a/drivers/net/ethernet/broadcom/b44.c
    +++ b/drivers/net/ethernet/broadcom/b44.c
    @@ -1547,7 +1547,8 @@ static void b44_setup_pseudo_magicp(struct b44 *bp)
    u32 val;
    int plen0, plen1, plen2;
    u8 *pwol_pattern;
    - u8 pwol_mask[B44_PMASK_SIZE];
    + /* Align to unsigned long for better performance in set_bit() */
    + u8 pwol_mask[B44_PMASK_SIZE] __aligned(sizeof(unsigned long));

    pwol_pattern = kzalloc(B44_PATTERN_SIZE, GFP_KERNEL);
    if (!pwol_pattern)
    --
    2.7.4
    \
     
     \ /
      Last update: 2019-03-02 03:54    [W:6.185 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site