aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorRon Mercer <ron.mercer@qlogic.com>2009-10-08 05:54:38 -0400
committerDavid S. Miller <davem@davemloft.net>2009-10-09 01:54:45 -0400
commita3b71939a9c7a942323bfc0c8f97d0fd2bf22f95 (patch)
tree0490ca6623fb3690e0416771bdd1212d956ed9ff /drivers/net
parent541ae28c2df91e805c6df924a8e8522c2602db47 (diff)
qlge: Fix frame routing issue related to bonding.
Currently frames are routed based on their type and MAC address. This patch adds the port number on which the frame arrived to the routing. This prevents problems in the case where both interfaces have the same MAC address in a routing configuration. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/qlge/qlge_main.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
index 04fc7117ce49..d66ad8d82446 100644
--- a/drivers/net/qlge/qlge_main.c
+++ b/drivers/net/qlge/qlge_main.c
@@ -3241,6 +3241,13 @@ static int ql_adapter_initialize(struct ql_adapter *qdev)
3241 ql_write32(qdev, SPLT_HDR, SPLT_HDR_EP | 3241 ql_write32(qdev, SPLT_HDR, SPLT_HDR_EP |
3242 min(SMALL_BUFFER_SIZE, MAX_SPLIT_SIZE)); 3242 min(SMALL_BUFFER_SIZE, MAX_SPLIT_SIZE));
3243 3243
3244 /* Set RX packet routing to use port/pci function on which the
3245 * packet arrived on in addition to usual frame routing.
3246 * This is helpful on bonding where both interfaces can have
3247 * the same MAC address.
3248 */
3249 ql_write32(qdev, RST_FO, RST_FO_RR_MASK | RST_FO_RR_RCV_FUNC_CQ);
3250
3244 /* Start up the rx queues. */ 3251 /* Start up the rx queues. */
3245 for (i = 0; i < qdev->rx_ring_count; i++) { 3252 for (i = 0; i < qdev->rx_ring_count; i++) {
3246 status = ql_start_rx_ring(qdev, &qdev->rx_ring[i]); 3253 status = ql_start_rx_ring(qdev, &qdev->rx_ring[i]);