IB/qib: Return correct MAD when setting link width to 255
Fix a bug which causes the driver to return incorrect MADs as a response to Set(PortInfo) which sets the link width to 0xFF or link speed to 0xF. Signed-off-by: Mitko Haralanov <mitko@qlogic.com> Signed-off-by: Mike Marciniszyn <mike.marciniszyn@qlogic.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
a5bbef0b2d
commit
cc7fb05946
|
@ -705,7 +705,7 @@ static int subn_set_portinfo(struct ib_smp *smp, struct ib_device *ibdev,
|
|||
lwe = pip->link_width_enabled;
|
||||
if (lwe) {
|
||||
if (lwe == 0xFF)
|
||||
lwe = ppd->link_width_supported;
|
||||
set_link_width_enabled(ppd, ppd->link_width_supported);
|
||||
else if (lwe >= 16 || (lwe & ~ppd->link_width_supported))
|
||||
smp->status |= IB_SMP_INVALID_FIELD;
|
||||
else if (lwe != ppd->link_width_enabled)
|
||||
|
@ -720,7 +720,8 @@ static int subn_set_portinfo(struct ib_smp *smp, struct ib_device *ibdev,
|
|||
* speeds.
|
||||
*/
|
||||
if (lse == 15)
|
||||
lse = ppd->link_speed_supported;
|
||||
set_link_speed_enabled(ppd,
|
||||
ppd->link_speed_supported);
|
||||
else if (lse >= 8 || (lse & ~ppd->link_speed_supported))
|
||||
smp->status |= IB_SMP_INVALID_FIELD;
|
||||
else if (lse != ppd->link_speed_enabled)
|
||||
|
@ -849,7 +850,7 @@ static int subn_set_portinfo(struct ib_smp *smp, struct ib_device *ibdev,
|
|||
if (clientrereg)
|
||||
pip->clientrereg_resv_subnetto |= 0x80;
|
||||
|
||||
goto done;
|
||||
goto get_only;
|
||||
|
||||
err:
|
||||
smp->status |= IB_SMP_INVALID_FIELD;
|
||||
|
|
Loading…
Reference in New Issue