lkml.org 
[lkml]   [2010]   [Nov]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3/3] staging: ft1000: Pseudo header handlig improved.
    Date
    Handling for pseudo header was done by directly copying
    data to tx buffer. This hide a functionality and make
    code unreadable.

    Use approach where fill pseudo_hdr structure first with data and then copy
    to beginning of buffer.

    Signed-off-by: Marek Belisko <marek.belisko@gmail.com>
    ---
    drivers/staging/ft1000/ft1000-usb/ft1000_hw.c | 35 ++++++++++++-------------
    1 files changed, 17 insertions(+), 18 deletions(-)

    diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c b/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
    index 5a9edfb..90394e1 100644
    --- a/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
    +++ b/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
    @@ -1017,10 +1017,9 @@ static int ft1000_copy_down_pkt (struct net_device *netdev, u8 *packet, u16 len)
    struct ft1000_device *pFt1000Dev = pInfo->pFt1000Dev;


    - int i, count, ret;
    - USHORT *pTemp;
    - USHORT checksum;
    + int count, ret;
    u8 *t;
    + struct pseudo_hdr hdr;

    if (!pInfo->CardReady)
    {
    @@ -1044,21 +1043,21 @@ static int ft1000_copy_down_pkt (struct net_device *netdev, u8 *packet, u16 len)
    if ( count % 4)
    count = count + (4- (count %4) );

    - pTemp = (PUSHORT)&(pFt1000Dev->tx_buf[0]);
    - *pTemp ++ = ntohs(count);
    - *pTemp ++ = 0x1020;
    - *pTemp ++ = 0x2010;
    - *pTemp ++ = 0x9100;
    - *pTemp ++ = 0;
    - *pTemp ++ = 0;
    - *pTemp ++ = 0;
    - pTemp = (PUSHORT)&(pFt1000Dev->tx_buf[0]);
    - checksum = *pTemp ++;
    - for (i=1; i<7; i++)
    - {
    - checksum ^= *pTemp ++;
    - }
    - *pTemp++ = checksum;
    + memset(&hdr, 0, sizeof(struct pseudo_hdr));
    +
    + hdr.length = ntohs(count);
    + hdr.source = 0x10;
    + hdr.destination = 0x20;
    + hdr.portdest = 0x20;
    + hdr.portsrc = 0x10;
    + hdr.sh_str_id = 0x91;
    + hdr.control = 0x00;
    +
    + hdr.checksum = hdr.length ^ hdr.source ^ hdr.destination ^
    + hdr.portdest ^ hdr.portsrc ^ hdr.sh_str_id ^
    + hdr.control;
    +
    + memcpy(&pFt1000Dev->tx_buf[0], &hdr, sizeof(hdr));
    memcpy(&(pFt1000Dev->tx_buf[sizeof(struct pseudo_hdr)]), packet, len);

    netif_stop_queue(netdev);
    --
    1.7.1


    \
     
     \ /
      Last update: 2010-11-02 13:45    [W:7.373 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site