diff options
| author | Vasu Dev <vasu.dev@intel.com> | 2009-07-29 20:05:45 -0400 |
|---|---|---|
| committer | James Bottomley <James.Bottomley@suse.de> | 2009-08-22 18:52:11 -0400 |
| commit | 1d1b88dc01e5fd2b3e2abb7aa42d0f1eca4c33ea (patch) | |
| tree | cf08966d7c2f7e81c989b312e173d37ba4a59ef9 | |
| parent | 53fcfbbef569819706b880a502ff62e2852edfce (diff) | |
[SCSI] fcoe: removes phys_dev and renames real_dev to netdev.
The phys_dev was used only to locate common offload EM instance for all
FCoE instances on a eth devices in function fcoe_em_config, so just updated
fcoe_em_config to look for actual real eth device in locating common offload
EM instance and then no need to store phys_dev in fcoe_softc, so removes
phys_dev from fcoe_softc also.
Renames fcoe_softc real_dev to netdev and updates all its uses to use netdev.
So effectively no functional change, use of single netdev instead phys_dev
and real_dev saves one pointer memory in fcoe_softc, also real_dev used here
was confusing with vlan driver terminology since real_dev in vlan driver is
referred to physical eth device.
Signed-off-by: Vasu Dev <vasu.dev@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
| -rw-r--r-- | drivers/scsi/fcoe/fcoe.c | 93 | ||||
| -rw-r--r-- | drivers/scsi/fcoe/fcoe.h | 5 |
2 files changed, 51 insertions, 47 deletions
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c index ad21e87e4006..757aa28f0f04 100644 --- a/drivers/scsi/fcoe/fcoe.c +++ b/drivers/scsi/fcoe/fcoe.c | |||
| @@ -159,7 +159,7 @@ static int fcoe_fip_recv(struct sk_buff *skb, struct net_device *dev, | |||
| 159 | */ | 159 | */ |
| 160 | static void fcoe_fip_send(struct fcoe_ctlr *fip, struct sk_buff *skb) | 160 | static void fcoe_fip_send(struct fcoe_ctlr *fip, struct sk_buff *skb) |
| 161 | { | 161 | { |
| 162 | skb->dev = fcoe_from_ctlr(fip)->real_dev; | 162 | skb->dev = fcoe_from_ctlr(fip)->netdev; |
| 163 | dev_queue_xmit(skb); | 163 | dev_queue_xmit(skb); |
| 164 | } | 164 | } |
| 165 | 165 | ||
| @@ -179,8 +179,8 @@ static void fcoe_update_src_mac(struct fcoe_ctlr *fip, u8 *old, u8 *new) | |||
| 179 | fc = fcoe_from_ctlr(fip); | 179 | fc = fcoe_from_ctlr(fip); |
| 180 | rtnl_lock(); | 180 | rtnl_lock(); |
| 181 | if (!is_zero_ether_addr(old)) | 181 | if (!is_zero_ether_addr(old)) |
| 182 | dev_unicast_delete(fc->real_dev, old); | 182 | dev_unicast_delete(fc->netdev, old); |
| 183 | dev_unicast_add(fc->real_dev, new); | 183 | dev_unicast_add(fc->netdev, new); |
| 184 | rtnl_unlock(); | 184 | rtnl_unlock(); |
| 185 | } | 185 | } |
| 186 | 186 | ||
| @@ -231,12 +231,12 @@ void fcoe_netdev_cleanup(struct fcoe_softc *fc) | |||
| 231 | /* Delete secondary MAC addresses */ | 231 | /* Delete secondary MAC addresses */ |
| 232 | rtnl_lock(); | 232 | rtnl_lock(); |
| 233 | memcpy(flogi_maddr, (u8[6]) FC_FCOE_FLOGI_MAC, ETH_ALEN); | 233 | memcpy(flogi_maddr, (u8[6]) FC_FCOE_FLOGI_MAC, ETH_ALEN); |
| 234 | dev_unicast_delete(fc->real_dev, flogi_maddr); | 234 | dev_unicast_delete(fc->netdev, flogi_maddr); |
| 235 | if (!is_zero_ether_addr(fc->ctlr.data_src_addr)) | 235 | if (!is_zero_ether_addr(fc->ctlr.data_src_addr)) |
| 236 | dev_unicast_delete(fc->real_dev, fc->ctlr.data_src_addr); | 236 | dev_unicast_delete(fc->netdev, fc->ctlr.data_src_addr); |
| 237 | if (fc->ctlr.spma) | 237 | if (fc->ctlr.spma) |
| 238 | dev_unicast_delete(fc->real_dev, fc->ctlr.ctl_src_addr); | 238 | dev_unicast_delete(fc->netdev, fc->ctlr.ctl_src_addr); |
| 239 | dev_mc_delete(fc->real_dev, FIP_ALL_ENODE_MACS, ETH_ALEN, 0); | 239 | dev_mc_delete(fc->netdev, FIP_ALL_ENODE_MACS, ETH_ALEN, 0); |
| 240 | rtnl_unlock(); | 240 | rtnl_unlock(); |
| 241 | } | 241 | } |
| 242 | 242 | ||
| @@ -272,17 +272,12 @@ static int fcoe_netdev_config(struct fc_lport *lp, struct net_device *netdev) | |||
| 272 | /* Setup lport private data to point to fcoe softc */ | 272 | /* Setup lport private data to point to fcoe softc */ |
| 273 | fc = lport_priv(lp); | 273 | fc = lport_priv(lp); |
| 274 | fc->ctlr.lp = lp; | 274 | fc->ctlr.lp = lp; |
| 275 | fc->real_dev = netdev; | 275 | fc->netdev = netdev; |
| 276 | fc->phys_dev = netdev; | ||
| 277 | |||
| 278 | /* Require support for get_pauseparam ethtool op. */ | ||
| 279 | if (netdev->priv_flags & IFF_802_1Q_VLAN) | ||
| 280 | fc->phys_dev = vlan_dev_real_dev(netdev); | ||
| 281 | 276 | ||
| 282 | /* Do not support for bonding device */ | 277 | /* Do not support for bonding device */ |
| 283 | if ((fc->real_dev->priv_flags & IFF_MASTER_ALB) || | 278 | if ((netdev->priv_flags & IFF_MASTER_ALB) || |
| 284 | (fc->real_dev->priv_flags & IFF_SLAVE_INACTIVE) || | 279 | (netdev->priv_flags & IFF_SLAVE_INACTIVE) || |
| 285 | (fc->real_dev->priv_flags & IFF_MASTER_8023AD)) { | 280 | (netdev->priv_flags & IFF_MASTER_8023AD)) { |
| 286 | return -EOPNOTSUPP; | 281 | return -EOPNOTSUPP; |
| 287 | } | 282 | } |
| 288 | 283 | ||
| @@ -291,13 +286,13 @@ static int fcoe_netdev_config(struct fc_lport *lp, struct net_device *netdev) | |||
| 291 | * user-configured limit. If the MFS is too low, fcoe_link_ok() | 286 | * user-configured limit. If the MFS is too low, fcoe_link_ok() |
| 292 | * will return 0, so do this first. | 287 | * will return 0, so do this first. |
| 293 | */ | 288 | */ |
| 294 | mfs = fc->real_dev->mtu - (sizeof(struct fcoe_hdr) + | 289 | mfs = netdev->mtu - (sizeof(struct fcoe_hdr) + |
| 295 | sizeof(struct fcoe_crc_eof)); | 290 | sizeof(struct fcoe_crc_eof)); |
| 296 | if (fc_set_mfs(lp, mfs)) | 291 | if (fc_set_mfs(lp, mfs)) |
| 297 | return -EINVAL; | 292 | return -EINVAL; |
| 298 | 293 | ||
| 299 | /* offload features support */ | 294 | /* offload features support */ |
| 300 | if (fc->real_dev->features & NETIF_F_SG) | 295 | if (netdev->features & NETIF_F_SG) |
| 301 | lp->sg_supp = 1; | 296 | lp->sg_supp = 1; |
| 302 | 297 | ||
| 303 | if (netdev->features & NETIF_F_FCOE_CRC) { | 298 | if (netdev->features & NETIF_F_FCOE_CRC) { |
| @@ -335,13 +330,13 @@ static int fcoe_netdev_config(struct fc_lport *lp, struct net_device *netdev) | |||
| 335 | 330 | ||
| 336 | /* setup Source Mac Address */ | 331 | /* setup Source Mac Address */ |
| 337 | if (!fc->ctlr.spma) | 332 | if (!fc->ctlr.spma) |
| 338 | memcpy(fc->ctlr.ctl_src_addr, fc->real_dev->dev_addr, | 333 | memcpy(fc->ctlr.ctl_src_addr, netdev->dev_addr, |
| 339 | fc->real_dev->addr_len); | 334 | fc->netdev->addr_len); |
| 340 | 335 | ||
| 341 | wwnn = fcoe_wwn_from_mac(fc->real_dev->dev_addr, 1, 0); | 336 | wwnn = fcoe_wwn_from_mac(netdev->dev_addr, 1, 0); |
| 342 | fc_set_wwnn(lp, wwnn); | 337 | fc_set_wwnn(lp, wwnn); |
| 343 | /* XXX - 3rd arg needs to be vlan id */ | 338 | /* XXX - 3rd arg needs to be vlan id */ |
| 344 | wwpn = fcoe_wwn_from_mac(fc->real_dev->dev_addr, 2, 0); | 339 | wwpn = fcoe_wwn_from_mac(netdev->dev_addr, 2, 0); |
| 345 | fc_set_wwpn(lp, wwpn); | 340 | fc_set_wwpn(lp, wwpn); |
| 346 | 341 | ||
| 347 | /* | 342 | /* |
| @@ -351,10 +346,10 @@ static int fcoe_netdev_config(struct fc_lport *lp, struct net_device *netdev) | |||
| 351 | */ | 346 | */ |
| 352 | rtnl_lock(); | 347 | rtnl_lock(); |
| 353 | memcpy(flogi_maddr, (u8[6]) FC_FCOE_FLOGI_MAC, ETH_ALEN); | 348 | memcpy(flogi_maddr, (u8[6]) FC_FCOE_FLOGI_MAC, ETH_ALEN); |
| 354 | dev_unicast_add(fc->real_dev, flogi_maddr); | 349 | dev_unicast_add(netdev, flogi_maddr); |
| 355 | if (fc->ctlr.spma) | 350 | if (fc->ctlr.spma) |
| 356 | dev_unicast_add(fc->real_dev, fc->ctlr.ctl_src_addr); | 351 | dev_unicast_add(netdev, fc->ctlr.ctl_src_addr); |
| 357 | dev_mc_add(fc->real_dev, FIP_ALL_ENODE_MACS, ETH_ALEN, 0); | 352 | dev_mc_add(netdev, FIP_ALL_ENODE_MACS, ETH_ALEN, 0); |
| 358 | rtnl_unlock(); | 353 | rtnl_unlock(); |
| 359 | 354 | ||
| 360 | /* | 355 | /* |
| @@ -363,12 +358,12 @@ static int fcoe_netdev_config(struct fc_lport *lp, struct net_device *netdev) | |||
| 363 | */ | 358 | */ |
| 364 | fc->fcoe_packet_type.func = fcoe_rcv; | 359 | fc->fcoe_packet_type.func = fcoe_rcv; |
| 365 | fc->fcoe_packet_type.type = __constant_htons(ETH_P_FCOE); | 360 | fc->fcoe_packet_type.type = __constant_htons(ETH_P_FCOE); |
| 366 | fc->fcoe_packet_type.dev = fc->real_dev; | 361 | fc->fcoe_packet_type.dev = netdev; |
| 367 | dev_add_pack(&fc->fcoe_packet_type); | 362 | dev_add_pack(&fc->fcoe_packet_type); |
| 368 | 363 | ||
| 369 | fc->fip_packet_type.func = fcoe_fip_recv; | 364 | fc->fip_packet_type.func = fcoe_fip_recv; |
| 370 | fc->fip_packet_type.type = htons(ETH_P_FIP); | 365 | fc->fip_packet_type.type = htons(ETH_P_FIP); |
| 371 | fc->fip_packet_type.dev = fc->real_dev; | 366 | fc->fip_packet_type.dev = netdev; |
| 372 | dev_add_pack(&fc->fip_packet_type); | 367 | dev_add_pack(&fc->fip_packet_type); |
| 373 | 368 | ||
| 374 | return 0; | 369 | return 0; |
| @@ -434,6 +429,7 @@ static inline int fcoe_em_config(struct fc_lport *lp) | |||
| 434 | { | 429 | { |
| 435 | struct fcoe_softc *fc = lport_priv(lp); | 430 | struct fcoe_softc *fc = lport_priv(lp); |
| 436 | struct fcoe_softc *oldfc = NULL; | 431 | struct fcoe_softc *oldfc = NULL; |
| 432 | struct net_device *old_real_dev, *cur_real_dev; | ||
| 437 | u16 min_xid = FCOE_MIN_XID; | 433 | u16 min_xid = FCOE_MIN_XID; |
| 438 | u16 max_xid = FCOE_MAX_XID; | 434 | u16 max_xid = FCOE_MAX_XID; |
| 439 | 435 | ||
| @@ -448,10 +444,20 @@ static inline int fcoe_em_config(struct fc_lport *lp) | |||
| 448 | 444 | ||
| 449 | /* | 445 | /* |
| 450 | * Reuse existing offload em instance in case | 446 | * Reuse existing offload em instance in case |
| 451 | * it is already allocated on phys_dev. | 447 | * it is already allocated on real eth device |
| 452 | */ | 448 | */ |
| 449 | if (fc->netdev->priv_flags & IFF_802_1Q_VLAN) | ||
| 450 | cur_real_dev = vlan_dev_real_dev(fc->netdev); | ||
| 451 | else | ||
| 452 | cur_real_dev = fc->netdev; | ||
| 453 | |||
| 453 | list_for_each_entry(oldfc, &fcoe_hostlist, list) { | 454 | list_for_each_entry(oldfc, &fcoe_hostlist, list) { |
| 454 | if (oldfc->phys_dev == fc->phys_dev) { | 455 | if (oldfc->netdev->priv_flags & IFF_802_1Q_VLAN) |
| 456 | old_real_dev = vlan_dev_real_dev(oldfc->netdev); | ||
| 457 | else | ||
| 458 | old_real_dev = oldfc->netdev; | ||
| 459 | |||
| 460 | if (cur_real_dev == old_real_dev) { | ||
| 455 | fc->oem = oldfc->oem; | 461 | fc->oem = oldfc->oem; |
| 456 | break; | 462 | break; |
| 457 | } | 463 | } |
| @@ -461,7 +467,7 @@ static inline int fcoe_em_config(struct fc_lport *lp) | |||
| 461 | if (!fc_exch_mgr_add(lp, fc->oem, fcoe_oem_match)) { | 467 | if (!fc_exch_mgr_add(lp, fc->oem, fcoe_oem_match)) { |
| 462 | printk(KERN_ERR "fcoe_em_config: failed to add " | 468 | printk(KERN_ERR "fcoe_em_config: failed to add " |
| 463 | "offload em:%p on interface:%s\n", | 469 | "offload em:%p on interface:%s\n", |
| 464 | fc->oem, fc->real_dev->name); | 470 | fc->oem, fc->netdev->name); |
| 465 | return -ENOMEM; | 471 | return -ENOMEM; |
| 466 | } | 472 | } |
| 467 | } else { | 473 | } else { |
| @@ -471,7 +477,7 @@ static inline int fcoe_em_config(struct fc_lport *lp) | |||
| 471 | if (!fc->oem) { | 477 | if (!fc->oem) { |
| 472 | printk(KERN_ERR "fcoe_em_config: failed to allocate " | 478 | printk(KERN_ERR "fcoe_em_config: failed to allocate " |
| 473 | "em for offload exches on interface:%s\n", | 479 | "em for offload exches on interface:%s\n", |
| 474 | fc->real_dev->name); | 480 | fc->netdev->name); |
| 475 | return -ENOMEM; | 481 | return -ENOMEM; |
| 476 | } | 482 | } |
| 477 | } | 483 | } |
| @@ -484,7 +490,7 @@ static inline int fcoe_em_config(struct fc_lport *lp) | |||
| 484 | skip_oem: | 490 | skip_oem: |
| 485 | if (!fc_exch_mgr_alloc(lp, FC_CLASS_3, min_xid, max_xid, NULL)) { | 491 | if (!fc_exch_mgr_alloc(lp, FC_CLASS_3, min_xid, max_xid, NULL)) { |
| 486 | printk(KERN_ERR "fcoe_em_config: failed to " | 492 | printk(KERN_ERR "fcoe_em_config: failed to " |
| 487 | "allocate em on interface %s\n", fc->real_dev->name); | 493 | "allocate em on interface %s\n", fc->netdev->name); |
| 488 | return -ENOMEM; | 494 | return -ENOMEM; |
| 489 | } | 495 | } |
| 490 | 496 | ||
| @@ -548,7 +554,7 @@ static int fcoe_if_destroy(struct net_device *netdev) | |||
| 548 | fc_lport_free_stats(lp); | 554 | fc_lport_free_stats(lp); |
| 549 | 555 | ||
| 550 | /* Release the net_device and Scsi_Host */ | 556 | /* Release the net_device and Scsi_Host */ |
| 551 | dev_put(fc->real_dev); | 557 | dev_put(netdev); |
| 552 | scsi_host_put(lp->host); | 558 | scsi_host_put(lp->host); |
| 553 | 559 | ||
| 554 | return 0; | 560 | return 0; |
| @@ -1179,7 +1185,7 @@ int fcoe_xmit(struct fc_lport *lp, struct fc_frame *fp) | |||
| 1179 | skb_reset_network_header(skb); | 1185 | skb_reset_network_header(skb); |
| 1180 | skb->mac_len = elen; | 1186 | skb->mac_len = elen; |
| 1181 | skb->protocol = htons(ETH_P_FCOE); | 1187 | skb->protocol = htons(ETH_P_FCOE); |
| 1182 | skb->dev = fc->real_dev; | 1188 | skb->dev = fc->netdev; |
| 1183 | 1189 | ||
| 1184 | /* fill up mac and fcoe headers */ | 1190 | /* fill up mac and fcoe headers */ |
| 1185 | eh = eth_hdr(skb); | 1191 | eh = eth_hdr(skb); |
| @@ -1454,7 +1460,7 @@ static int fcoe_device_notification(struct notifier_block *notifier, | |||
| 1454 | ulong event, void *ptr) | 1460 | ulong event, void *ptr) |
| 1455 | { | 1461 | { |
| 1456 | struct fc_lport *lp = NULL; | 1462 | struct fc_lport *lp = NULL; |
| 1457 | struct net_device *real_dev = ptr; | 1463 | struct net_device *netdev = ptr; |
| 1458 | struct fcoe_softc *fc; | 1464 | struct fcoe_softc *fc; |
| 1459 | struct fcoe_dev_stats *stats; | 1465 | struct fcoe_dev_stats *stats; |
| 1460 | u32 link_possible = 1; | 1466 | u32 link_possible = 1; |
| @@ -1463,7 +1469,7 @@ static int fcoe_device_notification(struct notifier_block *notifier, | |||
| 1463 | 1469 | ||
| 1464 | read_lock(&fcoe_hostlist_lock); | 1470 | read_lock(&fcoe_hostlist_lock); |
| 1465 | list_for_each_entry(fc, &fcoe_hostlist, list) { | 1471 | list_for_each_entry(fc, &fcoe_hostlist, list) { |
| 1466 | if (fc->real_dev == real_dev) { | 1472 | if (fc->netdev == netdev) { |
| 1467 | lp = fc->ctlr.lp; | 1473 | lp = fc->ctlr.lp; |
| 1468 | break; | 1474 | break; |
| 1469 | } | 1475 | } |
| @@ -1483,16 +1489,15 @@ static int fcoe_device_notification(struct notifier_block *notifier, | |||
| 1483 | case NETDEV_CHANGE: | 1489 | case NETDEV_CHANGE: |
| 1484 | break; | 1490 | break; |
| 1485 | case NETDEV_CHANGEMTU: | 1491 | case NETDEV_CHANGEMTU: |
| 1486 | mfs = fc->real_dev->mtu - | 1492 | mfs = netdev->mtu - (sizeof(struct fcoe_hdr) + |
| 1487 | (sizeof(struct fcoe_hdr) + | 1493 | sizeof(struct fcoe_crc_eof)); |
| 1488 | sizeof(struct fcoe_crc_eof)); | ||
| 1489 | if (mfs >= FC_MIN_MAX_FRAME) | 1494 | if (mfs >= FC_MIN_MAX_FRAME) |
| 1490 | fc_set_mfs(lp, mfs); | 1495 | fc_set_mfs(lp, mfs); |
| 1491 | break; | 1496 | break; |
| 1492 | case NETDEV_REGISTER: | 1497 | case NETDEV_REGISTER: |
| 1493 | break; | 1498 | break; |
| 1494 | default: | 1499 | default: |
| 1495 | FCOE_NETDEV_DBG(real_dev, "Unknown event %ld " | 1500 | FCOE_NETDEV_DBG(netdev, "Unknown event %ld " |
| 1496 | "from netdev netlink\n", event); | 1501 | "from netdev netlink\n", event); |
| 1497 | } | 1502 | } |
| 1498 | if (link_possible && !fcoe_link_ok(lp)) | 1503 | if (link_possible && !fcoe_link_ok(lp)) |
| @@ -1696,7 +1701,7 @@ MODULE_PARM_DESC(destroy, "Destroy fcoe port"); | |||
| 1696 | int fcoe_link_ok(struct fc_lport *lp) | 1701 | int fcoe_link_ok(struct fc_lport *lp) |
| 1697 | { | 1702 | { |
| 1698 | struct fcoe_softc *fc = lport_priv(lp); | 1703 | struct fcoe_softc *fc = lport_priv(lp); |
| 1699 | struct net_device *dev = fc->real_dev; | 1704 | struct net_device *dev = fc->netdev; |
| 1700 | struct ethtool_cmd ecmd = { ETHTOOL_GSET }; | 1705 | struct ethtool_cmd ecmd = { ETHTOOL_GSET }; |
| 1701 | 1706 | ||
| 1702 | if ((dev->flags & IFF_UP) && netif_carrier_ok(dev) && | 1707 | if ((dev->flags & IFF_UP) && netif_carrier_ok(dev) && |
| @@ -1797,7 +1802,7 @@ fcoe_hostlist_lookup_softc(const struct net_device *dev) | |||
| 1797 | struct fcoe_softc *fc; | 1802 | struct fcoe_softc *fc; |
| 1798 | 1803 | ||
| 1799 | list_for_each_entry(fc, &fcoe_hostlist, list) { | 1804 | list_for_each_entry(fc, &fcoe_hostlist, list) { |
| 1800 | if (fc->real_dev == dev) | 1805 | if (fc->netdev == dev) |
| 1801 | return fc; | 1806 | return fc; |
| 1802 | } | 1807 | } |
| 1803 | return NULL; | 1808 | return NULL; |
| @@ -1916,7 +1921,7 @@ static void __exit fcoe_exit(void) | |||
| 1916 | 1921 | ||
| 1917 | /* releases the associated fcoe hosts */ | 1922 | /* releases the associated fcoe hosts */ |
| 1918 | list_for_each_entry_safe(fc, tmp, &fcoe_hostlist, list) | 1923 | list_for_each_entry_safe(fc, tmp, &fcoe_hostlist, list) |
| 1919 | fcoe_if_destroy(fc->real_dev); | 1924 | fcoe_if_destroy(fc->netdev); |
| 1920 | 1925 | ||
| 1921 | unregister_hotcpu_notifier(&fcoe_cpu_notifier); | 1926 | unregister_hotcpu_notifier(&fcoe_cpu_notifier); |
| 1922 | 1927 | ||
diff --git a/drivers/scsi/fcoe/fcoe.h b/drivers/scsi/fcoe/fcoe.h index 6905efc166bf..5ae8ca71afcb 100644 --- a/drivers/scsi/fcoe/fcoe.h +++ b/drivers/scsi/fcoe/fcoe.h | |||
| @@ -79,8 +79,7 @@ struct fcoe_percpu_s { | |||
| 79 | */ | 79 | */ |
| 80 | struct fcoe_softc { | 80 | struct fcoe_softc { |
| 81 | struct list_head list; | 81 | struct list_head list; |
| 82 | struct net_device *real_dev; | 82 | struct net_device *netdev; |
| 83 | struct net_device *phys_dev; /* device with ethtool_ops */ | ||
| 84 | struct fc_exch_mgr *oem; /* offload exchange manger */ | 83 | struct fc_exch_mgr *oem; /* offload exchange manger */ |
| 85 | struct packet_type fcoe_packet_type; | 84 | struct packet_type fcoe_packet_type; |
| 86 | struct packet_type fip_packet_type; | 85 | struct packet_type fip_packet_type; |
| @@ -95,7 +94,7 @@ struct fcoe_softc { | |||
| 95 | static inline struct net_device *fcoe_netdev( | 94 | static inline struct net_device *fcoe_netdev( |
| 96 | const struct fc_lport *lp) | 95 | const struct fc_lport *lp) |
| 97 | { | 96 | { |
| 98 | return ((struct fcoe_softc *)lport_priv(lp))->real_dev; | 97 | return ((struct fcoe_softc *)lport_priv(lp))->netdev; |
| 99 | } | 98 | } |
| 100 | 99 | ||
| 101 | #endif /* _FCOE_H_ */ | 100 | #endif /* _FCOE_H_ */ |
