On 11/08/2017 12:56 AM, Russell King - ARM Linux wrote: > On Tue, Nov 07, 2017 at 07:49:09PM -0800, Florian Fainelli wrote: >> The extended ID options 16-bit value is big-endian (and actually annotated as >> such), but we would be accessing it with our CPU endian, which would not >> allow the correct detection of whether the LOS signal is inverted or not. >> >> Fixes: 73970055450e ("sfp: add SFP module support") >> Signed-off-by: Florian Fainelli <f.faine...@gmail.com> >> --- >> drivers/net/phy/sfp.c | 8 +++++--- >> 1 file changed, 5 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/net/phy/sfp.c b/drivers/net/phy/sfp.c >> index 942288aa9cdb..dfb28b269687 100644 >> --- a/drivers/net/phy/sfp.c >> +++ b/drivers/net/phy/sfp.c >> @@ -355,7 +355,7 @@ static void sfp_sm_link_check_los(struct sfp *sfp) >> * SFP_OPTIONS_LOS_NORMAL are set? For now, we assume >> * the same as SFP_OPTIONS_LOS_NORMAL set. >> */ >> - if (sfp->id.ext.options & SFP_OPTIONS_LOS_INVERTED) >> + if (be16_to_cpu(sfp->id.ext.options) & SFP_OPTIONS_LOS_INVERTED) > > It would be more efficient to convert the constants to BE16 rather > than an indeterminant number to CPU endian. The compiler can optimise > the constant. Same for the other two hunks.
Sure, I can do that. -- Florian