aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sfc/net_driver.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/sfc/net_driver.h')
-rw-r--r--drivers/net/sfc/net_driver.h24
1 files changed, 14 insertions, 10 deletions
diff --git a/drivers/net/sfc/net_driver.h b/drivers/net/sfc/net_driver.h
index ead1c982365b..fb9327c5ea57 100644
--- a/drivers/net/sfc/net_driver.h
+++ b/drivers/net/sfc/net_driver.h
@@ -503,6 +503,13 @@ struct efx_link_state {
503 unsigned int speed; 503 unsigned int speed;
504}; 504};
505 505
506static inline bool efx_link_state_equal(const struct efx_link_state *left,
507 const struct efx_link_state *right)
508{
509 return left->up == right->up && left->fd == right->fd &&
510 left->fc == right->fc && left->speed == right->speed;
511}
512
506/** 513/**
507 * struct efx_mac_operations - Efx MAC operations table 514 * struct efx_mac_operations - Efx MAC operations table
508 * @reconfigure: Reconfigure MAC. Serialised by the mac_lock 515 * @reconfigure: Reconfigure MAC. Serialised by the mac_lock
@@ -520,8 +527,8 @@ struct efx_mac_operations {
520 * @init: Initialise PHY 527 * @init: Initialise PHY
521 * @fini: Shut down PHY 528 * @fini: Shut down PHY
522 * @reconfigure: Reconfigure PHY (e.g. for new link parameters) 529 * @reconfigure: Reconfigure PHY (e.g. for new link parameters)
523 * @clear_interrupt: Clear down interrupt 530 * @poll: Update @link_state and report whether it changed.
524 * @poll: Poll for hardware state. Serialised by the mac_lock. 531 * Serialised by the mac_lock.
525 * @get_settings: Get ethtool settings. Serialised by the mac_lock. 532 * @get_settings: Get ethtool settings. Serialised by the mac_lock.
526 * @set_settings: Set ethtool settings. Serialised by the mac_lock. 533 * @set_settings: Set ethtool settings. Serialised by the mac_lock.
527 * @set_npage_adv: Set abilities advertised in (Extended) Next Page 534 * @set_npage_adv: Set abilities advertised in (Extended) Next Page
@@ -538,8 +545,7 @@ struct efx_phy_operations {
538 int (*init) (struct efx_nic *efx); 545 int (*init) (struct efx_nic *efx);
539 void (*fini) (struct efx_nic *efx); 546 void (*fini) (struct efx_nic *efx);
540 void (*reconfigure) (struct efx_nic *efx); 547 void (*reconfigure) (struct efx_nic *efx);
541 void (*clear_interrupt) (struct efx_nic *efx); 548 bool (*poll) (struct efx_nic *efx);
542 void (*poll) (struct efx_nic *efx);
543 void (*get_settings) (struct efx_nic *efx, 549 void (*get_settings) (struct efx_nic *efx,
544 struct ethtool_cmd *ecmd); 550 struct ethtool_cmd *ecmd);
545 int (*set_settings) (struct efx_nic *efx, 551 int (*set_settings) (struct efx_nic *efx,
@@ -700,10 +706,10 @@ union efx_multicast_hash {
700 * @mac_lock: MAC access lock. Protects @port_enabled, @phy_mode, 706 * @mac_lock: MAC access lock. Protects @port_enabled, @phy_mode,
701 * @port_inhibited, efx_monitor() and efx_reconfigure_port() 707 * @port_inhibited, efx_monitor() and efx_reconfigure_port()
702 * @port_enabled: Port enabled indicator. 708 * @port_enabled: Port enabled indicator.
703 * Serialises efx_stop_all(), efx_start_all(), efx_monitor(), 709 * Serialises efx_stop_all(), efx_start_all(), efx_monitor() and
704 * efx_phy_work(), and efx_mac_work() with kernel interfaces. Safe to read 710 * efx_mac_work() with kernel interfaces. Safe to read under any
705 * under any one of the rtnl_lock, mac_lock, or netif_tx_lock, but all 711 * one of the rtnl_lock, mac_lock, or netif_tx_lock, but all three must
706 * three must be held to modify it. 712 * be held to modify it.
707 * @port_inhibited: If set, the netif_carrier is always off. Hold the mac_lock 713 * @port_inhibited: If set, the netif_carrier is always off. Hold the mac_lock
708 * @port_initialized: Port initialized? 714 * @port_initialized: Port initialized?
709 * @net_dev: Operating system network device. Consider holding the rtnl lock 715 * @net_dev: Operating system network device. Consider holding the rtnl lock
@@ -729,7 +735,6 @@ union efx_multicast_hash {
729 * @promiscuous: Promiscuous flag. Protected by netif_tx_lock. 735 * @promiscuous: Promiscuous flag. Protected by netif_tx_lock.
730 * @multicast_hash: Multicast hash table 736 * @multicast_hash: Multicast hash table
731 * @wanted_fc: Wanted flow control flags 737 * @wanted_fc: Wanted flow control flags
732 * @phy_work: work item for dealing with PHY events
733 * @mac_work: Work item for changing MAC promiscuity and multicast hash 738 * @mac_work: Work item for changing MAC promiscuity and multicast hash
734 * @loopback_mode: Loopback status 739 * @loopback_mode: Loopback status
735 * @loopback_modes: Supported loopback mode bitmask 740 * @loopback_modes: Supported loopback mode bitmask
@@ -802,7 +807,6 @@ struct efx_nic {
802 807
803 enum phy_type phy_type; 808 enum phy_type phy_type;
804 spinlock_t phy_lock; 809 spinlock_t phy_lock;
805 struct work_struct phy_work;
806 struct efx_phy_operations *phy_op; 810 struct efx_phy_operations *phy_op;
807 void *phy_data; 811 void *phy_data;
808 struct mdio_if_info mdio; 812 struct mdio_if_info mdio;