summaryrefslogtreecommitdiffstats
path: root/src/drivers/infiniband
diff options
context:
space:
mode:
authorMichael Brown2011-05-04 17:58:49 +0200
committerMichael Brown2011-05-04 18:00:05 +0200
commitc738a635cb366edc11099fa0b23a599d561ea7ed (patch)
tree01e042979c033271450d99e89c0aa54c201c48c6 /src/drivers/infiniband
parent[bofm] Report {slot,port} to {bus:dev.fn,mport} mapping on newer BOFM builds (diff)
downloadipxe-c738a635cb366edc11099fa0b23a599d561ea7ed.tar.gz
ipxe-c738a635cb366edc11099fa0b23a599d561ea7ed.tar.xz
ipxe-c738a635cb366edc11099fa0b23a599d561ea7ed.zip
[hermon] Remove temporary workaround for missing BOFM mport support
This reverts commit 15c1200 ("[hermon] Work around missing mport support in current BOFM implementations"). Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers/infiniband')
-rw-r--r--src/drivers/infiniband/hermon.c54
1 files changed, 15 insertions, 39 deletions
diff --git a/src/drivers/infiniband/hermon.c b/src/drivers/infiniband/hermon.c
index f44166f8..7a487c91 100644
--- a/src/drivers/infiniband/hermon.c
+++ b/src/drivers/infiniband/hermon.c
@@ -3382,56 +3382,32 @@ static int hermon_bofm_update ( struct bofm_device *bofm, unsigned int mport,
union {
uint8_t bytes[8];
uint32_t dwords[2];
- uint64_t qword;
} buf;
- uint8_t *mac_copy = &buf.bytes[ sizeof ( buf.bytes ) - ETH_ALEN ];
int rc;
/* Prepare MAC address */
memset ( &buf, 0, sizeof ( buf ) );
- memcpy ( mac_copy, mac, ETH_ALEN );
+ memcpy ( &buf.bytes[ sizeof ( buf.bytes ) - ETH_ALEN ], mac,
+ ETH_ALEN );
- /* Current BOFM versions are unable to create entries with
- * mport>1, which means that only the port 1 MAC address can
- * be explicitly specified. Work around this by using the
- * provided MAC address as a base address for all subsequent
- * ports. For example, if BOFM assigns the address
- *
- * 00:1A:64:76:00:09 for port 1
- *
- * then we will assign the addresses
- *
- * 00:1A:64:76:00:09 for port 1
- * 00:1A:64:76:00:0a for port 2
- *
- * Note that hermon->cap.num_ports is not yet defined at this
- * point.
- */
- for ( ; mport <= HERMON_MAX_PORTS ; mport++ ) {
-
- /* Modify static configuration */
- memset ( &stat_cfg, 0, sizeof ( stat_cfg ) );
- MLX_FILL_2 ( &stat_cfg, 36,
- mac_m, 1,
- mac_high, ntohl ( buf.dwords[0] ) );
- MLX_FILL_1 ( &stat_cfg, 37, mac_low, ntohl ( buf.dwords[1] ) );
- if ( ( rc = hermon_mod_stat_cfg ( hermon, mport,
+ /* Modify static configuration */
+ memset ( &stat_cfg, 0, sizeof ( stat_cfg ) );
+ MLX_FILL_2 ( &stat_cfg, 36,
+ mac_m, 1,
+ mac_high, ntohl ( buf.dwords[0] ) );
+ MLX_FILL_1 ( &stat_cfg, 37, mac_low, ntohl ( buf.dwords[1] ) );
+ if ( ( rc = hermon_mod_stat_cfg ( hermon, mport,
HERMON_MOD_STAT_CFG_SET,
HERMON_MOD_STAT_CFG_OFFSET ( mac_m ),
&stat_cfg ) ) != 0 ) {
- DBGC ( hermon, "Hermon %p port %d could not modify "
- "configuration: %s\n",
- hermon, mport, strerror ( rc ) );
- return rc;
- }
-
- DBGC ( hermon, "Hermon %p port %d updated MAC address to %s\n",
- hermon, mport, eth_ntoa ( mac_copy ) );
-
- /* Increment MAC address */
- buf.qword = cpu_to_be64 ( be64_to_cpu ( buf.qword ) + 1 );
+ DBGC ( hermon, "Hermon %p port %d could not modify "
+ "configuration: %s\n", hermon, mport, strerror ( rc ) );
+ return rc;
}
+ DBGC ( hermon, "Hermon %p port %d updated MAC address to %s\n",
+ hermon, mport, eth_ntoa ( mac ) );
+
return 0;
}