From 8419eb7653b6a9c15bc120f22d17e3c3e93beae1 Mon Sep 17 00:00:00 2001 From: Jeffrey Townsend Date: Thu, 25 May 2017 16:08:21 +0000 Subject: [PATCH] Add implicit retries on i2c read errors. TODO: Make configurable. --- packages/base/any/onlp/src/onlplib/module/src/i2c.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/base/any/onlp/src/onlplib/module/src/i2c.c b/packages/base/any/onlp/src/onlplib/module/src/i2c.c index 6c8ee372..57e1f084 100644 --- a/packages/base/any/onlp/src/onlplib/module/src/i2c.c +++ b/packages/base/any/onlp/src/onlplib/module/src/i2c.c @@ -149,7 +149,12 @@ onlp_i2c_read(int bus, uint8_t addr, uint8_t offset, int size, } for(i = 0; i < size; i++) { - int rv = i2c_smbus_read_byte_data(fd, offset+i); + int rv = -1; + int retries = 3; + + while(retries-- && rv < 0) { + rv = i2c_smbus_read_byte_data(fd, offset+i); + } if(rv < 0) { AIM_LOG_ERROR("i2c-%d: reading address 0x%x, offset %d failed: %{errno}",