old mode 100644
new mode 100755
@@ -1346,6 +1346,8 @@ enum {
QL_DMA64 = (1 << 5),
QL_PROMISCUOUS = (1 << 6),
QL_ALLMULTI = (1 << 7),
+ QL_PORT_CFG = (1 << 8),
+ QL_CAM_RT_SET = (1 << 9),
};
/* link_status bit definitions */
@@ -72,12 +72,26 @@ static int ql_get_mb_sts(struct ql_adapter *qdev, struct mbox_params *mbcp)
static void ql_link_up(struct ql_adapter *qdev, struct mbox_params *mbcp)
{
+ int status = 0;
+
mbcp->out_count = 2;
if (ql_get_mb_sts(qdev, mbcp))
return;
qdev->link_status = mbcp->mbox_out[1];
+ /* If we're coming back from an IDC event
+ * then set up the CAM and frame routing.
+ */
+ if (test_bit(QL_CAM_RT_SET, &qdev->flags)) {
+ status = ql_cam_route_initialize(qdev);
+ if (status)
+ QPRINTK(qdev, IFUP, ERR,
+ "Failed to init CAM/Routing tables.\n");
+ else
+ clear_bit(QL_CAM_RT_SET, &qdev->flags);
+ }
+
ql_link_on(qdev);
}
After port reset the MAC address and frame route settings are cleared. This patch caused them to be set when the follow up link event occurs. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> --- drivers/net/qlge/qlge.h | 2 ++ drivers/net/qlge/qlge_mpi.c | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 0 deletions(-) mode change 100644 => 100755 drivers/net/qlge/qlge.h