From 1fa6616ca070076681451c883716ee5b039edd38 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Wed, 16 Jun 2010 16:45:38 -0700 Subject: [PATCH] refresh --- meta | 7 ++-- patches/refresh-temp | 84 -------------------------------------------- patches/umad-dbg | 71 +++++++++++++++++++++++++++++++++++-- 3 files changed, 71 insertions(+), 91 deletions(-) delete mode 100644 patches/refresh-temp diff --git a/meta b/meta index 8c52147d..ca5ebf90 100644 --- a/meta +++ b/meta @@ -1,9 +1,8 @@ Version: 1 -Previous: c2edcc3944654cb1b0a1a31c792b86fc303bdba7 -Head: 336d2b7f0b6e712d7243839473fe71430cb6965e +Previous: 8371cfbf62c25d2bafd11dec050bf1fd75b3027a +Head: 89f919f841b089c2f1844d82d300a410ddd3973f Applied: - umad-dbg: 1787de9a74bf9f42d08cc7a7b977df009d9e66c1 - refresh-temp: 336d2b7f0b6e712d7243839473fe71430cb6965e + umad-dbg: 89f919f841b089c2f1844d82d300a410ddd3973f Unapplied: errno: 929d92395c4a97ce2b64c42ce2e1a4dcbde17fa4 rm-build: ecb1d23ab7af4d244d1cf424b3274f71c6bec70a diff --git a/patches/refresh-temp b/patches/refresh-temp deleted file mode 100644 index cfd250f4..00000000 --- a/patches/refresh-temp +++ /dev/null @@ -1,84 +0,0 @@ -Bottom: ecd5c5e3d7e082a52d0d0569c41460a2835ae458 -Top: 8acd5ab323dc68b572e8ec80238f35f5dc5ebb31 -Author: Sean Hefty -Date: 2010-06-16 16:45:32 -0700 - -Refresh of umad-dbg - ---- - -diff --git a/trunk/ulp/libibumad/include/infiniband/umad.h b/trunk/ulp/libibumad/include/infiniband/umad.h -index 712d021..f6b41ac 100644 ---- a/trunk/ulp/libibumad/include/infiniband/umad.h -+++ b/trunk/ulp/libibumad/include/infiniband/umad.h -@@ -63,13 +63,13 @@ typedef struct ib_mad_addr - uint8_t gid_index; - uint8_t gid[16]; - -- uint8_t grh_present; -+ uint8_t traffic_class; - uint8_t reserved_grh; - uint16_t lid; - uint8_t sl; - uint8_t path_bits; - uint8_t reserved_rate; -- uint8_t traffic_class; -+ uint8_t grh_present; - - } ib_mad_addr_t; - -diff --git a/trunk/ulp/libibumad/src/umad.cpp b/trunk/ulp/libibumad/src/umad.cpp -index 31b7117..752af1d 100644 ---- a/trunk/ulp/libibumad/src/umad.cpp -+++ b/trunk/ulp/libibumad/src/umad.cpp -@@ -548,6 +548,23 @@ size_t umad_size(void) - return sizeof(struct ib_user_mad); - } - -+static void umad_convert_addr(struct ib_mad_addr *addr, WM_MAD_AV *av) -+{ -+ av->VersionClassFlow = htonl((6 << 28) | (((uint32_t) addr->traffic_class) << 20) | -+ (addr->flow_label & 0x000FFFFF)); -+ av->Reserved = 0; -+ av->StaticRate = 0; -+} -+ -+static void umad_convert_av(WM_MAD_AV *av, struct ib_mad_addr *addr) -+{ -+ uint32_t ver_class_flow; -+ -+ ver_class_flow = ntohl(av->VersionClassFlow); -+ addr->flow_label = ver_class_flow & 0x000FFFFF; -+ addr->traffic_class = (uint8_t) (ver_class_flow >> 20); -+} -+ - __declspec(dllexport) - int umad_send(int portid, int agentid, void *umad, int length, - int timeout_ms, int retries) -@@ -562,8 +579,11 @@ int umad_send(int portid, int agentid, void *umad, int length, - mad->retries = (uint32_t) retries; - mad->length = (uint32_t) length; - -+ umad_convert_addr(&mad->addr, &((WM_MAD *) mad)->Address); - hr = ports[portid].prov->Send((WM_MAD *) mad, NULL); -+ umad_convert_av(&((WM_MAD *) mad)->Address, &mad->addr); - if (FAILED(hr)) { -+ _set_errno(EIO); - return GetLastError(); - } - -@@ -594,12 +614,14 @@ int umad_recv(int portid, void *umad, int *length, int timeout_ms) - } - - if (FAILED(hr)) { -+ _set_errno(EIO); - return -EIO; - } - - if (mad->Length <= (UINT32) *length) { - port->pending = FALSE; - hr = (HRESULT) mad->Id; -+ umad_convert_av(&mad->Address, &((struct ib_user_mad *) mad)->addr); - } else { - _set_errno(ENOSPC); - hr = -ENOSPC; diff --git a/patches/umad-dbg b/patches/umad-dbg index 77d725b7..453bb9bc 100644 --- a/patches/umad-dbg +++ b/patches/umad-dbg @@ -1,5 +1,5 @@ Bottom: ae012808464ea9bb457205f559fb8944e1e4f435 -Top: ecd5c5e3d7e082a52d0d0569c41460a2835ae458 +Top: 8acd5ab323dc68b572e8ec80238f35f5dc5ebb31 Author: Sean Hefty Date: 2010-06-15 10:28:08 -0700 @@ -20,13 +20,78 @@ index 4576fa8..f11ac2b 100644 case IB_MAD_METHOD_GETTABLE_RESP: case IB_MAD_METHOD_GETMULTI: case IB_MAD_METHOD_GETMULTI_RESP: +diff --git a/trunk/ulp/libibumad/include/infiniband/umad.h b/trunk/ulp/libibumad/include/infiniband/umad.h +index 712d021..f6b41ac 100644 +--- a/trunk/ulp/libibumad/include/infiniband/umad.h ++++ b/trunk/ulp/libibumad/include/infiniband/umad.h +@@ -63,13 +63,13 @@ typedef struct ib_mad_addr + uint8_t gid_index; + uint8_t gid[16]; + +- uint8_t grh_present; ++ uint8_t traffic_class; + uint8_t reserved_grh; + uint16_t lid; + uint8_t sl; + uint8_t path_bits; + uint8_t reserved_rate; +- uint8_t traffic_class; ++ uint8_t grh_present; + + } ib_mad_addr_t; + diff --git a/trunk/ulp/libibumad/src/umad.cpp b/trunk/ulp/libibumad/src/umad.cpp -index cdf73fd..31b7117 100644 +index cdf73fd..752af1d 100644 --- a/trunk/ulp/libibumad/src/umad.cpp +++ b/trunk/ulp/libibumad/src/umad.cpp -@@ -601,7 +601,7 @@ int umad_recv(int portid, void *umad, int *length, int timeout_ms) +@@ -548,6 +548,23 @@ size_t umad_size(void) + return sizeof(struct ib_user_mad); + } + ++static void umad_convert_addr(struct ib_mad_addr *addr, WM_MAD_AV *av) ++{ ++ av->VersionClassFlow = htonl((6 << 28) | (((uint32_t) addr->traffic_class) << 20) | ++ (addr->flow_label & 0x000FFFFF)); ++ av->Reserved = 0; ++ av->StaticRate = 0; ++} ++ ++static void umad_convert_av(WM_MAD_AV *av, struct ib_mad_addr *addr) ++{ ++ uint32_t ver_class_flow; ++ ++ ver_class_flow = ntohl(av->VersionClassFlow); ++ addr->flow_label = ver_class_flow & 0x000FFFFF; ++ addr->traffic_class = (uint8_t) (ver_class_flow >> 20); ++} ++ + __declspec(dllexport) + int umad_send(int portid, int agentid, void *umad, int length, + int timeout_ms, int retries) +@@ -562,8 +579,11 @@ int umad_send(int portid, int agentid, void *umad, int length, + mad->retries = (uint32_t) retries; + mad->length = (uint32_t) length; + ++ umad_convert_addr(&mad->addr, &((WM_MAD *) mad)->Address); + hr = ports[portid].prov->Send((WM_MAD *) mad, NULL); ++ umad_convert_av(&((WM_MAD *) mad)->Address, &mad->addr); + if (FAILED(hr)) { ++ _set_errno(EIO); + return GetLastError(); + } + +@@ -594,14 +614,16 @@ int umad_recv(int portid, void *umad, int *length, int timeout_ms) + } + + if (FAILED(hr)) { ++ _set_errno(EIO); + return -EIO; + } + + if (mad->Length <= (UINT32) *length) { port->pending = FALSE; hr = (HRESULT) mad->Id; ++ umad_convert_av(&mad->Address, &((struct ib_user_mad *) mad)->addr); } else { - errno = ENOSPC; + _set_errno(ENOSPC); -- 2.46.0