enum qed_filter_opcode {
QED_FILTER_ADD,
QED_FILTER_REMOVE,
QED_FILTER_MOVE,
QED_FILTER_REPLACE, /* Delete all MACs and add new one instead */
QED_FILTER_FLUSH, /* Removes all filters */
};
struct qed_filter_mcast { /* MOVE is not supported for multicast */ enum qed_filter_opcode opcode;
u8 vport_to_add_to;
u8 vport_to_remove_from;
u8 num_mc_addrs; #define QED_MAX_MC_ADDRS 64 unsignedchar mac[QED_MAX_MC_ADDRS][ETH_ALEN];
};
/** * qed_eth_rx_queue_stop(): This ramrod closes an Rx queue. * * @p_hwfn: HW device data. * @p_rxq: Handler of queue to close * @eq_completion_only: If True completion will be on * EQe, if False completion will be * on EQe if p_hwfn opaque * different from the RXQ opaque * otherwise on CQe. * @cqe_completion: If True completion will be receive on CQe. * * Return: Int.
*/ int
qed_eth_rx_queue_stop(struct qed_hwfn *p_hwfn, void *p_rxq, bool eq_completion_only, bool cqe_completion);
/** * qed_eth_tx_queue_stop(): Closes a Tx queue. * * @p_hwfn: HW device data. * @p_txq: handle to Tx queue needed to be closed. * * Return: Int.
*/ int qed_eth_tx_queue_stop(struct qed_hwfn *p_hwfn, void *p_txq);
/** * qed_sp_vport_stop: This ramrod closes a VPort after all its * RX and TX queues are terminated. * An Assert is generated if any queues are left open. * * @p_hwfn: HW device data. * @opaque_fid: Opaque FID * @vport_id: VPort ID. * * Return: Int.
*/ int qed_sp_vport_stop(struct qed_hwfn *p_hwfn, u16 opaque_fid, u8 vport_id);
/** * qed_sp_eth_rx_queues_update(): This ramrod updates an RX queue. * It is used for setting the active state * of the queue and updating the TPA and * SGE parameters. * @p_hwfn: HW device data. * @pp_rxq_handlers: An array of queue handlers to be updated. * @num_rxqs: number of queues to update. * @complete_cqe_flg: Post completion to the CQE Ring if set. * @complete_event_flg: Post completion to the Event Ring if set. * @comp_mode: Comp mode. * @p_comp_data: Pointer Comp data. * * Return: Int. * * Note At the moment - only used by non-linux VFs.
*/
/** * qed_get_vport_stats(): Fills provided statistics * struct with statistics. * * @cdev: Qed dev pointer. * @stats: Points to struct that will be filled with statistics. * * Return: Void.
*/ void qed_get_vport_stats(struct qed_dev *cdev, struct qed_eth_stats *stats);
/** * qed_get_vport_stats_context(): Fills provided statistics * struct with statistics. * * @cdev: Qed dev pointer. * @stats: Points to struct that will be filled with statistics. * @is_atomic: Hint from the caller - if the func can sleep or not. * * Context: The function should not sleep in case is_atomic == true. * Return: Void.
*/ void qed_get_vport_stats_context(struct qed_dev *cdev, struct qed_eth_stats *stats, bool is_atomic);
void qed_reset_vport_stats(struct qed_dev *cdev);
/** * qed_arfs_mode_configure(): Enable or disable rfs mode. * It must accept at least one of tcp or udp true * and at least one of ipv4 or ipv6 true to enable * rfs mode. * * @p_hwfn: HW device data. * @p_ptt: P_ptt. * @p_cfg_params: arfs mode configuration parameters. * * Return. Void.
*/ void qed_arfs_mode_configure(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, struct qed_arfs_config_params *p_cfg_params);
/** * qed_configure_rfs_ntuple_filter(): This ramrod should be used to add * or remove arfs hw filter * * @p_hwfn: HW device data. * @p_cb: Used for QED_SPQ_MODE_CB,where client would initialize * it with cookie and callback function address, if not * using this mode then client must pass NULL. * @p_params: Pointer to params. * * Return: Void.
*/ int
qed_configure_rfs_ntuple_filter(struct qed_hwfn *p_hwfn, struct qed_spq_comp_cb *p_cb, struct qed_ntuple_filter_params *p_params);
/* Almost identical to the qed_queue_start_common_params, * but here we maintain the SB index in IGU CAM.
*/ struct qed_queue_cid_params {
u8 vport_id;
u16 queue_id;
u8 stats_id;
};
/* Additional parameters required for initialization of the queue_cid * and are relevant only for a PF initializing one for its VFs.
*/ struct qed_queue_cid_vf_params { /* Should match the VF's relative index */
u8 vfid;
/* 0-based queue index. Should reflect the relative qzone the * VF thinks is associated with it [in its range].
*/
u8 vf_qid;
/* Indicates a VF is legacy, making it differ in several things: * - Producers would be placed in a different place. * - Makes assumptions regarding the CIDs.
*/
u8 vf_legacy;
u8 qid_usage_idx;
};
struct qed_queue_cid { /* For stats-id, the `rel' is actually absolute as well */ struct qed_queue_cid_params rel; struct qed_queue_cid_params abs;
/* These have no 'relative' meaning */
u16 sb_igu_id;
u8 sb_idx;
u32 cid;
u16 opaque_fid;
bool b_is_rx;
/* VFs queues are mapped differently, so we need to know the * relative queue associated with them [0-based]. * Notice this is relevant on the *PF* queue-cid of its VF's queues, * and not on the VF itself.
*/
u8 vfid;
u8 vf_qid;
/* We need an additional index to differentiate between queues opened * for same queue-zone, as VFs would have to communicate the info * to the PF [otherwise PF has no way to differentiate].
*/
u8 qid_usage_idx;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.