diff options
author | Michael Brown | 2011-05-04 17:58:49 +0200 |
---|---|---|
committer | Michael Brown | 2011-05-04 18:00:05 +0200 |
commit | c738a635cb366edc11099fa0b23a599d561ea7ed (patch) | |
tree | 01e042979c033271450d99e89c0aa54c201c48c6 /src/drivers/infiniband | |
parent | [bofm] Report {slot,port} to {bus:dev.fn,mport} mapping on newer BOFM builds (diff) | |
download | ipxe-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.c | 54 |
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; } |