aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/fcoe
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/fcoe')
-rw-r--r--drivers/scsi/fcoe/fcoe.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
index c66b9fa7d674..aef29afb6e71 100644
--- a/drivers/scsi/fcoe/fcoe.c
+++ b/drivers/scsi/fcoe/fcoe.c
@@ -161,9 +161,18 @@ static int fcoe_interface_setup(struct fcoe_interface *fcoe,
161 struct fcoe_ctlr *fip = &fcoe->ctlr; 161 struct fcoe_ctlr *fip = &fcoe->ctlr;
162 struct netdev_hw_addr *ha; 162 struct netdev_hw_addr *ha;
163 u8 flogi_maddr[ETH_ALEN]; 163 u8 flogi_maddr[ETH_ALEN];
164 const struct net_device_ops *ops;
164 165
165 fcoe->netdev = netdev; 166 fcoe->netdev = netdev;
166 167
168 /* Let LLD initialize for FCoE */
169 ops = netdev->netdev_ops;
170 if (ops->ndo_fcoe_enable) {
171 if (ops->ndo_fcoe_enable(netdev))
172 FCOE_NETDEV_DBG(netdev, "Failed to enable FCoE"
173 " specific feature for LLD.\n");
174 }
175
167 /* Do not support for bonding device */ 176 /* Do not support for bonding device */
168 if ((netdev->priv_flags & IFF_MASTER_ALB) || 177 if ((netdev->priv_flags & IFF_MASTER_ALB) ||
169 (netdev->priv_flags & IFF_SLAVE_INACTIVE) || 178 (netdev->priv_flags & IFF_SLAVE_INACTIVE) ||
@@ -262,6 +271,7 @@ void fcoe_interface_cleanup(struct fcoe_interface *fcoe)
262 struct net_device *netdev = fcoe->netdev; 271 struct net_device *netdev = fcoe->netdev;
263 struct fcoe_ctlr *fip = &fcoe->ctlr; 272 struct fcoe_ctlr *fip = &fcoe->ctlr;
264 u8 flogi_maddr[ETH_ALEN]; 273 u8 flogi_maddr[ETH_ALEN];
274 const struct net_device_ops *ops;
265 275
266 /* 276 /*
267 * Don't listen for Ethernet packets anymore. 277 * Don't listen for Ethernet packets anymore.
@@ -281,6 +291,14 @@ void fcoe_interface_cleanup(struct fcoe_interface *fcoe)
281 if (fip->spma) 291 if (fip->spma)
282 dev_unicast_delete(netdev, fip->ctl_src_addr); 292 dev_unicast_delete(netdev, fip->ctl_src_addr);
283 dev_mc_delete(netdev, FIP_ALL_ENODE_MACS, ETH_ALEN, 0); 293 dev_mc_delete(netdev, FIP_ALL_ENODE_MACS, ETH_ALEN, 0);
294
295 /* Tell the LLD we are done w/ FCoE */
296 ops = netdev->netdev_ops;
297 if (ops->ndo_fcoe_disable) {
298 if (ops->ndo_fcoe_disable(netdev))
299 FCOE_NETDEV_DBG(netdev, "Failed to disable FCoE"
300 " specific feature for LLD.\n");
301 }
284} 302}
285 303
286/** 304/**