diff options
Diffstat (limited to 'sys/dev/ixl/ixlv.h')
-rw-r--r-- | sys/dev/ixl/ixlv.h | 50 |
1 files changed, 27 insertions, 23 deletions
diff --git a/sys/dev/ixl/ixlv.h b/sys/dev/ixl/ixlv.h index a5bfe13fbe66..77a02fa7e879 100644 --- a/sys/dev/ixl/ixlv.h +++ b/sys/dev/ixl/ixlv.h @@ -36,11 +36,13 @@ #ifndef _IXLV_H_ #define _IXLV_H_ -#define IXLV_AQ_MAX_ERR 100 +#include "ixlv_vc_mgr.h" + +#define IXLV_AQ_MAX_ERR 1000 #define IXLV_MAX_FILTERS 128 -#define IXLV_MAX_QUEUES 16 -#define IXLV_AQ_TIMEOUT (1 * hz) -#define IXLV_CALLOUT_TIMO (hz / 50) // 20 msec +#define IXLV_MAX_QUEUES 16 +#define IXLV_AQ_TIMEOUT (1 * hz) +#define IXLV_CALLOUT_TIMO (hz / 50) /* 20 msec */ #define IXLV_FLAG_AQ_ENABLE_QUEUES (u32)(1) #define IXLV_FLAG_AQ_DISABLE_QUEUES (u32)(1 << 1) @@ -51,8 +53,8 @@ #define IXLV_FLAG_AQ_CONFIGURE_QUEUES (u32)(1 << 6) #define IXLV_FLAG_AQ_MAP_VECTORS (u32)(1 << 7) #define IXLV_FLAG_AQ_HANDLE_RESET (u32)(1 << 8) -#define IXLV_FLAG_AQ_CONFIGURE_PROMISC (u32)(1 << 9) -#define IXLV_FLAG_AQ_GET_STATS (u32)(1 << 10) +#define IXLV_FLAG_AQ_CONFIGURE_PROMISC (u32)(1 << 9) +#define IXLV_FLAG_AQ_GET_STATS (u32)(1 << 10) /* printf %b arg */ #define IXLV_FLAGS \ @@ -61,6 +63,9 @@ "\7CONFIGURE_QUEUES\10MAP_VECTORS\11HANDLE_RESET" \ "\12CONFIGURE_PROMISC\13GET_STATS" +/* Hack for compatibility with 1.0.x linux pf driver */ +#define I40E_VIRTCHNL_OP_EVENT 17 + /* Driver state */ enum ixlv_state_t { IXLV_START, @@ -111,12 +116,10 @@ struct ixlv_sc { struct ifmedia media; struct callout timer; - struct callout aq_task; int msix; int if_flags; struct mtx mtx; - struct mtx aq_task_mtx; u32 qbase; u32 admvec; @@ -127,10 +130,8 @@ struct ixlv_sc { struct ixl_vsi vsi; - /* Mac Filter List */ + /* Filter lists */ struct mac_list *mac_filters; - - /* Vlan Filter List */ struct vlan_list *vlan_filters; /* Promiscuous mode */ @@ -138,11 +139,19 @@ struct ixlv_sc { /* Admin queue task flags */ u32 aq_wait_count; - u32 aq_required; - u32 aq_pending; + + struct ixl_vc_mgr vc_mgr; + struct ixl_vc_cmd add_mac_cmd; + struct ixl_vc_cmd del_mac_cmd; + struct ixl_vc_cmd config_queues_cmd; + struct ixl_vc_cmd map_vectors_cmd; + struct ixl_vc_cmd enable_queues_cmd; + struct ixl_vc_cmd add_vlan_cmd; + struct ixl_vc_cmd del_vlan_cmd; + struct ixl_vc_cmd add_multi_cmd; + struct ixl_vc_cmd del_multi_cmd; /* Virtual comm channel */ - enum i40e_virtchnl_ops current_op; struct i40e_virtchnl_vf_resource *vf_res; struct i40e_virtchnl_vsi_resource *vsi_res; @@ -150,16 +159,10 @@ struct ixlv_sc { u64 watchdog_events; u64 admin_irq; - /* Signaling channels */ - u8 init_done; - u8 config_queues_done; - u8 map_vectors_done; - u8 enable_queues_done; - u8 disable_queues_done; - u8 add_ether_done; - u8 del_ether_done; + u8 aq_buffer[IXL_AQ_BUF_SZ]; }; +#define IXLV_CORE_LOCK_ASSERT(sc) mtx_assert(&(sc)->mtx, MA_OWNED) /* ** This checks for a zero mac addr, something that will be likely ** unless the Admin on the Host has created one. @@ -174,7 +177,7 @@ ixlv_check_ether_addr(u8 *addr) status = FALSE; return (status); } - + /* ** VF Common function prototypes */ @@ -201,5 +204,6 @@ void ixlv_add_vlans(struct ixlv_sc *); void ixlv_del_vlans(struct ixlv_sc *); void ixlv_update_stats_counters(struct ixlv_sc *, struct i40e_eth_stats *); +void ixlv_update_link_status(struct ixlv_sc *); #endif /* _IXLV_H_ */ |