Hefty, Sean wrote on Wed, 20 Apr 2011 at 14:55:36

> diff --git a/trunk/core/winmad/kernel/wm_provider.c
> b/trunk/core/winmad/kernel/wm_provider.c
> index f3926f9..6e73c9d 100644
> --- a/trunk/core/winmad/kernel/wm_provider.c
> +++ b/trunk/core/winmad/kernel/wm_provider.c
> @@ -284,6 +284,23 @@ out:
>       WdfRequestCompleteWithInformation(Request, status, len);
>  }
> 
> +// If the Version is not set, use umad compatability address format
> +static void WmConvertGrh(ib_grh_t *pGrh, WM_IO_MAD *pIoMad)
> +{
> +     if (RtlUlongByteSwap(pIoMad->Address.VersionClassFlow) >> 28) {

Couldn't you just check the upper four bits of the lowest byte and avoid the 
byte swap here:

if (pIoMad->Address.VersionClassFlow & 0xF0) {

> +             pGrh->ver_class_flow = pIoMad->Address.VersionClassFlow;
> +     } else {
> +             pGrh->ver_class_flow = RtlUlongByteSwap((6 << 28) |
> +                     (((uint32_t) pIoMad->UmadAddress.TrafficClass) <<
> 20) |
> +                     (pIoMad->UmadAddress.FlowLabel & 0x000FFFFF));
> +     }
> +
> +     pGrh->hop_limit = pIoMad->Address.HopLimit;
> +     // TODO: update IBAL to use SGID index
> +     // pGrh->src_gid_index = pIoMad->Address.GidIndex;
> +     RtlCopyMemory(pGrh->dest_gid.raw, pIoMad->Address.Gid, 16);
> +}
> +
>  static NTSTATUS WmSendMad(WM_REGISTRATION *pRegistration,
> WM_IO_MAD *pIoMad, UINT32 size)
>  {
>       ib_al_ifc_t                     *pifc;
_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to