[openib-general] [PATCH] ib_smi: Remove DR handling workaround in smi_send_smp
Hal Rosenstock
halr at voltaire.com
Tue Oct 12 09:15:14 PDT 2004
ib_smi: Remove DR handling workaround in smi_send_smp
Index: ib_smi.c
===================================================================
--- ib_smi.c (revision 973)
+++ ib_smi.c (working copy)
@@ -188,9 +188,12 @@
} else {
- /* C14-13:1 -- sender should have decremented hop_ptr */
- if (hop_cnt && hop_ptr == hop_cnt + 1)
- return 0;
+ /* C14-13:1 */
+ if (hop_cnt && hop_ptr == hop_cnt + 1) {
+ smp->hop_ptr--;
+ return (smp->return_path[smp->hop_ptr] ==
+ mad_agent->port_num);
+ }
/* C14-13:2 */
if (2 <= hop_ptr && hop_ptr <= hop_cnt) {
@@ -411,12 +414,11 @@
ret = smi_process_local(mad_agent, (struct ib_mad *)smp,
smp_response, slid);
if (ret & IB_MAD_RESULT_SUCCESS) {
- /* DR handling workaround !!! */
- if (smp_response->mad_hdr.mgmt_class ==
- IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE) {
- if (((struct ib_smp *)smp_response)->hop_ptr) {
- ((struct ib_smp *)smp_response)->hop_ptr--;
- }
+ if (!smi_handle_smp_recv(mad_agent,
+ (struct ib_smp *)smp_response)) {
+ /* SMI failed receive */
+ kfree(smp_response);
+ return 0;
}
smp_send(mad_agent, smp_response, mad_recv_wc);
} else
More information about the general
mailing list