/* Each Scatter/Gather entry sent to hardwar hold four pointers. * So, number of entries required is (MAX_SKB_FRAGS + 1)/4, where '+1' * is for main skb which also goes as a gather buffer to Octeon hardware. * To allocate sufficient SGLIST entries for a packet with max fragments, * align by adding 3 before calcuating max SGLIST entries per packet.
*/ #define OCTEP_SGLIST_ENTRIES_PER_PKT ((MAX_SKB_FRAGS + 1 + 3) / 4) #define OCTEP_SGLIST_SIZE_PER_PKT \
(OCTEP_SGLIST_ENTRIES_PER_PKT * sizeof(struct octep_tx_sglist_desc))
/* Hardware interface Tx statistics */ struct octep_iface_tx_stats { /* Total frames sent on the interface */
u64 pkts;
/* Total octets sent on the interface */
u64 octs;
/* Packets sent to a broadcast DMAC */
u64 bcst;
/* Packets sent to the multicast DMAC */
u64 mcst;
/* Packets dropped due to excessive collisions */
u64 xscol;
/* Packets dropped due to excessive deferral */
u64 xsdef;
/* Packets sent that experienced multiple collisions before successful * transmission
*/
u64 mcol;
/* Packets sent that experienced a single collision before successful * transmission
*/
u64 scol;
/* Packets sent with an octet count < 64 */
u64 hist_lt64;
/* Packets sent with an octet count == 64 */
u64 hist_eq64;
/* Packets sent with an octet count of 65–127 */
u64 hist_65to127;
/* Packets sent with an octet count of 128–255 */
u64 hist_128to255;
/* Packets sent with an octet count of 256–511 */
u64 hist_256to511;
/* Packets sent with an octet count of 512–1023 */
u64 hist_512to1023;
/* Packets sent with an octet count of 1024-1518 */
u64 hist_1024to1518;
/* Packets sent with an octet count of > 1518 */
u64 hist_gt1518;
/* Packets sent that experienced a transmit underflow and were * truncated
*/
u64 undflw;
/* Control/PAUSE packets sent */
u64 ctl;
};
/* Input Queue statistics. Each input queue has four stats fields. */ struct octep_iq_stats { /* Instructions posted to this queue. */
u64 instr_posted;
/* Instructions copied by hardware for processing. */
u64 instr_completed;
/* Instructions that could not be processed. */
u64 instr_dropped;
/* Bytes sent through this queue. */
u64 bytes_sent;
/* Gather entries sent through this queue. */
u64 sgentry_sent;
/* Number of transmit failures due to TX_BUSY */
u64 tx_busy;
/* Number of times the queue is restarted */
u64 restart_cnt;
};
/* The instruction (input) queue. * The input queue is used to post raw (instruction) mode data or packet * data to Octeon device from the host. Each input queue (up to 4) for * a Octeon device has one such structure to represent it.
*/ struct octep_iq {
u32 q_no;
/* 64-byte Tx instruction format. * Format of instruction for a 64-byte mode input queue. * * only first 16-bytes (dptr and ih) are mandatory; rest are optional * and filled by the driver based on firmware/hardware capabilities. * These optional headers together called Front Data and its size is * described by ih->fsz.
*/ struct octep_tx_desc_hw { /* Pointer where the input data is available. */
u64 dptr;
/* Instruction Header. */ union { struct octep_instr_hdr ih;
u64 ih64;
}; union {
u64 txm64[2]; struct tx_mdata txm;
}; /* Additional headers available in a 64-byte instruction. */
u64 exthdr[4];
};
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.