diff mbox

[3/8] ipmi: remove the need of an ending record in the SDR table

Message ID 1455020010-17532-4-git-send-email-clg@fr.ibm.com
State New
Headers show

Commit Message

Cédric Le Goater Feb. 9, 2016, 12:13 p.m. UTC
Currently, the code initializing the sdr table relies on an ending
record with a recid of 0xffff. This patch changes the loop to use the
sdr size as a breaking condition.

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
---
 hw/ipmi/ipmi_bmc_sim.c | 13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)

Comments

Marcel Apfelbaum Feb. 14, 2016, 8:39 a.m. UTC | #1
On 02/09/2016 02:13 PM, Cédric Le Goater wrote:
> Currently, the code initializing the sdr table relies on an ending
> record with a recid of 0xffff. This patch changes the loop to use the
> sdr size as a breaking condition.
>
> Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
> ---
>   hw/ipmi/ipmi_bmc_sim.c | 13 +++----------
>   1 file changed, 3 insertions(+), 10 deletions(-)
>
> diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c
> index 0abc9cb5de94..f219bfc7a2f3 100644
> --- a/hw/ipmi/ipmi_bmc_sim.c
> +++ b/hw/ipmi/ipmi_bmc_sim.c
> @@ -1699,34 +1699,27 @@ static const uint8_t init_sdrs[] = {
>       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
>       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8,
>       'W',  'a',  't',  'c',  'h',  'd',  'o',  'g',
> -    /* End */
> -    0xff, 0xff, 0x00, 0x00, 0x00
>   };
>
>   static void ipmi_sdr_init(IPMIBmcSim *ibs)
>   {
>       unsigned int i;
> -    unsigned int recid;
> +    int len;
>
> -    for (i = 0;;) {
> +    for (i = 0; i < sizeof(init_sdrs); i += len) {


Hi,

This is much better, maybe you can squash it into the previous
patch, but I understand if you want to separate re-factoring and new code.

Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>



>           struct ipmi_sdr_header *sdrh;
> -        int len;
> +
>           if ((i + IPMI_SDR_HEADER_SIZE) > sizeof(init_sdrs)) {
>               error_report("Problem with recid 0x%4.4x", i);
>               return;
>           }
>           sdrh = (struct ipmi_sdr_header *) &init_sdrs[i];
>           len = ipmi_sdr_length(sdrh);
> -        recid = ipmi_sdr_recid(sdrh);
> -        if (recid == 0xffff) {
> -            break;
> -        }
>           if ((i + len) > sizeof(init_sdrs)) {
>               error_report("Problem with recid 0x%4.4x", i);
>               return;
>           }
>           sdr_add_entry(ibs, sdrh, len, NULL);
> -        i += len;
>       }
>   }
>
>
diff mbox

Patch

diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c
index 0abc9cb5de94..f219bfc7a2f3 100644
--- a/hw/ipmi/ipmi_bmc_sim.c
+++ b/hw/ipmi/ipmi_bmc_sim.c
@@ -1699,34 +1699,27 @@  static const uint8_t init_sdrs[] = {
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8,
     'W',  'a',  't',  'c',  'h',  'd',  'o',  'g',
-    /* End */
-    0xff, 0xff, 0x00, 0x00, 0x00
 };
 
 static void ipmi_sdr_init(IPMIBmcSim *ibs)
 {
     unsigned int i;
-    unsigned int recid;
+    int len;
 
-    for (i = 0;;) {
+    for (i = 0; i < sizeof(init_sdrs); i += len) {
         struct ipmi_sdr_header *sdrh;
-        int len;
+
         if ((i + IPMI_SDR_HEADER_SIZE) > sizeof(init_sdrs)) {
             error_report("Problem with recid 0x%4.4x", i);
             return;
         }
         sdrh = (struct ipmi_sdr_header *) &init_sdrs[i];
         len = ipmi_sdr_length(sdrh);
-        recid = ipmi_sdr_recid(sdrh);
-        if (recid == 0xffff) {
-            break;
-        }
         if ((i + len) > sizeof(init_sdrs)) {
             error_report("Problem with recid 0x%4.4x", i);
             return;
         }
         sdr_add_entry(ibs, sdrh, len, NULL);
-        i += len;
     }
 }