Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cc7fb059 authored by Mitko Haralanov's avatar Mitko Haralanov Committed by Roland Dreier
Browse files

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: default avatarMitko Haralanov <mitko@qlogic.com>
Signed-off-by: default avatarMike Marciniszyn <mike.marciniszyn@qlogic.com>
Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
parent a5bbef0b
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -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;