lkml.org 
[lkml]   [2017]   [Dec]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 042/109] net: systemport: Pad packet before inserting TSB
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Florian Fainelli <f.fainelli@gmail.com>


    [ Upstream commit 38e5a85562a6cd911fc26d951d576551a688574c ]

    Inserting the TSB means adding an extra 8 bytes in front the of packet
    that is going to be used as metadata information by the TDMA engine, but
    stripped off, so it does not really help with the packet padding.

    For some odd packet sizes that fall below the 60 bytes payload (e.g: ARP)
    we can end-up padding them after the TSB insertion, thus making them 64
    bytes, but with the TDMA stripping off the first 8 bytes, they could
    still be smaller than 64 bytes which is required to ingress the switch.

    Fix this by swapping the padding and TSB insertion, guaranteeing that
    the packets have the right sizes.

    Fixes: 80105befdb4b ("net: systemport: add Broadcom SYSTEMPORT Ethernet MAC driver")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/ethernet/broadcom/bcmsysport.c | 18 +++++++++---------
    1 file changed, 9 insertions(+), 9 deletions(-)

    --- a/drivers/net/ethernet/broadcom/bcmsysport.c
    +++ b/drivers/net/ethernet/broadcom/bcmsysport.c
    @@ -1023,15 +1023,6 @@ static netdev_tx_t bcm_sysport_xmit(stru
    goto out;
    }

    - /* Insert TSB and checksum infos */
    - if (priv->tsb_en) {
    - skb = bcm_sysport_insert_tsb(skb, dev);
    - if (!skb) {
    - ret = NETDEV_TX_OK;
    - goto out;
    - }
    - }
    -
    /* The Ethernet switch we are interfaced with needs packets to be at
    * least 64 bytes (including FCS) otherwise they will be discarded when
    * they enter the switch port logic. When Broadcom tags are enabled, we
    @@ -1044,6 +1035,15 @@ static netdev_tx_t bcm_sysport_xmit(stru
    goto out;
    }

    + /* Insert TSB and checksum infos */
    + if (priv->tsb_en) {
    + skb = bcm_sysport_insert_tsb(skb, dev);
    + if (!skb) {
    + ret = NETDEV_TX_OK;
    + goto out;
    + }
    + }
    +
    skb_len = skb->len;

    mapping = dma_map_single(kdev, skb->data, skb_len, DMA_TO_DEVICE);

    \
     
     \ /
      Last update: 2017-12-07 15:04    [W:4.044 / U:0.164 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site