[U-Boot] [PATCH 13/28] net: Refactor bootp packet length computations

Joe Hershberger joe.hershberger at gmail.com
Tue Jan 24 08:15:41 CET 2012


Hi Simon,

On Tue, Jan 24, 2012 at 1:05 AM, Simon Glass <sjg at chromium.org> wrote:
> Hi Joe,
>
> On Thu, Jan 19, 2012 at 4:53 PM, Joe Hershberger <joe.hershberger at ni.com> wrote:
>> Signed-off-by: Joe Hershberger <joe.hershberger at ni.com>
>> Cc: Joe Hershberger <joe.hershberger at gmail.com>
>> Cc: Wolfgang Denk <wd at denx.de>
>> ---
>>  net/bootp.c |   26 ++++++++++++++------------
>>  1 files changed, 14 insertions(+), 12 deletions(-)
>>
>
> Refactor why or to what purpose? Perhaps a bit more detail in the
> commit message?

Just removing the pointer subtraction similar to patch 12.

>> diff --git a/net/bootp.c b/net/bootp.c
>> index 0c2af48..0d5f4cf 100644
>> --- a/net/bootp.c
>> +++ b/net/bootp.c
>> @@ -582,7 +582,8 @@ BootpRequest(void)
>>  {
>>        uchar *pkt, *iphdr;
>>        struct Bootp_t *bp;
>> -       int ext_len, pktlen, iplen;
>> +       int extlen, pktlen, iplen;
>
> Is extlen better than ext_len?

Just more consistent with other variables in the same calculations.
Not especially important, I guess.

>> +       int eth_hdr_size;
>>  #ifdef CONFIG_BOOTP_RANDOM_DELAY
>>        ulong i, rand_ms;
>>  #endif
>> @@ -610,7 +611,8 @@ BootpRequest(void)
>>        pkt = NetTxPacket;
>>        memset((void *)pkt, 0, PKTSIZE);
>>
>> -       pkt += NetSetEther(pkt, NetBcastAddr, PROT_IP);
>> +       eth_hdr_size = NetSetEther(pkt, NetBcastAddr, PROT_IP);
>> +       pkt += eth_hdr_size;
>>
>>        /*
>>         * Next line results in incorrect packet size being transmitted,
>> @@ -639,9 +641,9 @@ BootpRequest(void)
>>
>>        /* Request additional information from the BOOTP/DHCP server */
>>  #if defined(CONFIG_CMD_DHCP)
>> -       ext_len = DhcpExtended((u8 *)bp->bp_vend, DHCP_DISCOVER, 0, 0);
>> +       extlen = DhcpExtended((u8 *)bp->bp_vend, DHCP_DISCOVER, 0, 0);
>>  #else
>> -       ext_len = BootpExtended((u8 *)bp->bp_vend);
>> +       extlen = BootpExtended((u8 *)bp->bp_vend);
>>  #endif
>>
>>        /*
>> @@ -660,9 +662,8 @@ BootpRequest(void)
>>         * Calculate proper packet lengths taking into account the
>>         * variable size of the options field
>>         */
>> -       pktlen = ((int)(pkt-NetTxPacket)) + BOOTP_HDR_SIZE -
>> -               sizeof(bp->bp_vend) + ext_len;
>> -       iplen = BOOTP_HDR_SIZE - sizeof(bp->bp_vend) + ext_len;
>> +       iplen = BOOTP_HDR_SIZE - OPT_FIELD_SIZE + extlen;
>> +       pktlen = eth_hdr_size + IP_UDP_HDR_SIZE + iplen;
>>        NetSetUDPHeader(iphdr, 0xFFFFFFFFL, PORT_BOOTPS, PORT_BOOTPC, iplen);
>>        NetSetTimeout(SELECT_TIMEOUT, BootpTimeout);
>>
>> @@ -798,13 +799,15 @@ static void DhcpSendRequestPkt(struct Bootp_t *bp_offer)
>>        uchar *pkt, *iphdr;
>>        struct Bootp_t *bp;
>>        int pktlen, iplen, extlen;
>> +       int eth_hdr_size;
>>        IPaddr_t OfferedIP;
>>
>>        debug("DhcpSendRequestPkt: Sending DHCPREQUEST\n");
>>        pkt = NetTxPacket;
>>        memset((void *)pkt, 0, PKTSIZE);
>>
>> -       pkt += NetSetEther(pkt, NetBcastAddr, PROT_IP);
>> +       eth_hdr_size = NetSetEther(pkt, NetBcastAddr, PROT_IP);
>> +       pkt += eth_hdr_size;
>>
>>        iphdr = pkt;    /* We'll need this later to set proper pkt size */
>>        pkt += IP_UDP_HDR_SIZE;
>> @@ -841,15 +844,14 @@ static void DhcpSendRequestPkt(struct Bootp_t *bp_offer)
>>        extlen = DhcpExtended((u8 *)bp->bp_vend, DHCP_REQUEST,
>>                NetDHCPServerIP, OfferedIP);
>>
>> -       pktlen = ((int)(pkt-NetTxPacket)) + BOOTP_HDR_SIZE -
>> -               sizeof(bp->bp_vend) + extlen;
>> -       iplen = BOOTP_HDR_SIZE - sizeof(bp->bp_vend) + extlen;
>> +       iplen = BOOTP_HDR_SIZE - OPT_FIELD_SIZE + extlen;
>> +       pktlen = eth_hdr_size + IP_UDP_HDR_SIZE + iplen;
>>        NetSetUDPHeader(iphdr, 0xFFFFFFFFL, PORT_BOOTPS, PORT_BOOTPC, iplen);
>>
>> -       debug("Transmitting DHCPREQUEST packet: len = %d\n", pktlen);
>>  #ifdef CONFIG_BOOTP_DHCP_REQUEST_DELAY
>>        udelay(CONFIG_BOOTP_DHCP_REQUEST_DELAY);
>>  #endif /* CONFIG_BOOTP_DHCP_REQUEST_DELAY */
>> +       debug("Transmitting DHCPREQUEST packet: len = %d\n", pktlen);
>
> Did you move this on purpose?

Yes... I figured a transmit debug message should be close to the
transmit... not before a delay.

>>        NetSendPacket(NetTxPacket, pktlen);
>>  }

Best regards,
-Joe


More information about the U-Boot mailing list