Page MenuHomeFreeBSD

D12864.diff
No OneTemporary

D12864.diff

Index: head/sys/dev/ena/ena.h
===================================================================
--- head/sys/dev/ena/ena.h
+++ head/sys/dev/ena/ena.h
@@ -67,29 +67,20 @@
#define ENA_BUS_DMA_SEGS 32
#define ENA_DEFAULT_RING_SIZE 1024
-#define ENA_DEFAULT_SMALL_PACKET_LEN 128
-#define ENA_DEFAULT_MAX_RX_BUFF_ALLOC_SIZE 1536
-#define ENA_RX_REFILL_THRESH_DEVIDER 8
+#define ENA_RX_REFILL_THRESH_DIVIDER 8
-#define ENA_MAX_PUSH_PKT_SIZE 128
-
-#define ENA_NAME_MAX_LEN 20
#define ENA_IRQNAME_SIZE 40
#define ENA_PKT_MAX_BUFS 19
-#define ENA_STALL_TIMEOUT 100
#define ENA_RX_RSS_TABLE_LOG_SIZE 7
#define ENA_RX_RSS_TABLE_SIZE (1 << ENA_RX_RSS_TABLE_LOG_SIZE)
#define ENA_HASH_KEY_SIZE 40
-#define ENA_DMA_BITS_MASK 40
#define ENA_MAX_FRAME_LEN 10000
#define ENA_MIN_FRAME_LEN 60
-#define ENA_RX_HASH_KEY_NUM 10
-#define ENA_RX_THASH_TABLE_SIZE (1 << 8)
#define ENA_TX_CLEANUP_THRESHOLD 128
@@ -112,18 +103,13 @@
#define RX_IRQ_INTERVAL 20
#define TX_IRQ_INTERVAL 50
-#define ENA_MAX_MTU 9216
#define ENA_TSO_MAXSIZE 65536
-#define ENA_TSO_NSEGS ENA_PKT_MAX_BUFS
-#define ENA_RX_OFFSET NET_SKB_PAD + NET_IP_ALIGN
#define ENA_MMIO_DISABLE_REG_READ BIT(0)
#define ENA_TX_RING_IDX_NEXT(idx, ring_size) (((idx) + 1) & ((ring_size) - 1))
#define ENA_RX_RING_IDX_NEXT(idx, ring_size) (((idx) + 1) & ((ring_size) - 1))
-#define ENA_RX_RING_IDX_ADD(idx, n, ring_size) \
- (((idx) + (n)) & ((ring_size) - 1))
#define ENA_IO_TXQ_IDX(q) (2 * (q))
#define ENA_IO_RXQ_IDX(q) (2 * (q) + 1)
@@ -210,7 +196,6 @@
struct ena_com_buf ena_buf;
} __aligned(CACHE_LINE_SIZE);
-
struct ena_stats_tx {
counter_u64_t cnt;
counter_u64_t bytes;
@@ -246,14 +231,19 @@
struct ena_com_io_cq *ena_com_io_cq;
struct ena_com_io_sq *ena_com_io_sq;
- /* The maximum length the driver can push to the device (For LLQ) */
- enum ena_admin_placement_policy_type tx_mem_queue_type;
- uint16_t rx_small_copy_len;
uint16_t qid;
- uint16_t mtu;
+
+ /* Determines if device will use LLQ or normal mode for TX */
+ enum ena_admin_placement_policy_type tx_mem_queue_type;
+ /* The maximum length the driver can push to the device (For LLQ) */
uint8_t tx_max_header_size;
struct ena_com_rx_buf_info ena_bufs[ENA_PKT_MAX_BUFS];
+
+ /*
+ * Fields used for Adaptive Interrupt Modulation - to be implemented in
+ * the future releases
+ */
uint32_t smoothed_interval;
enum ena_intr_moder_level moder_tbl_idx;
@@ -270,8 +260,10 @@
int ring_size; /* number of tx/rx_buffer_info's entries */
struct buf_ring *br; /* only for TX */
+
struct mtx ring_mtx;
char mtx_name[16];
+
union {
struct {
struct task enqueue_task;
@@ -289,7 +281,6 @@
};
int empty_rx_queue;
-
} __aligned(CACHE_LINE_SIZE);
struct ena_stats_dev {
@@ -319,8 +310,8 @@
struct ifmedia media;
/* OS resources */
- struct resource * memory;
- struct resource * registers;
+ struct resource *memory;
+ struct resource *registers;
struct mtx global_mtx;
struct sx ioctl_sx;
@@ -334,11 +325,6 @@
bus_dma_tag_t tx_buf_tag;
bus_dma_tag_t rx_buf_tag;
int dma_width;
- /*
- * RX packets that shorter that this len will be copied to the skb
- * header
- */
- unsigned int small_copy_len;
uint16_t max_tx_sgl_size;
uint16_t max_rx_sgl_size;
@@ -348,28 +334,21 @@
/* Tx fast path data */
int num_queues;
- unsigned int tx_usecs, rx_usecs; /* Interrupt coalescing */
-
unsigned int tx_ring_size;
unsigned int rx_ring_size;
/* RSS*/
- uint8_t rss_ind_tbl[ENA_RX_RSS_TABLE_SIZE];
+ uint8_t rss_ind_tbl[ENA_RX_RSS_TABLE_SIZE];
bool rss_support;
- uint32_t msg_enable;
-
uint8_t mac_addr[ETHER_ADDR_LEN];
/* mdio and phy*/
- char name[ENA_NAME_MAX_LEN];
bool link_status;
bool trigger_reset;
bool up;
bool running;
- uint32_t wol;
-
/* Queue will represent one TX and one RX ring */
struct ena_que que[ENA_MAX_NUM_IO_QUEUES]
__aligned(CACHE_LINE_SIZE);
@@ -403,17 +382,9 @@
enum ena_regs_reset_reason_types reset_reason;
};
-#define ENA_DEV_LOCK mtx_lock(&adapter->global_mtx)
-#define ENA_DEV_UNLOCK mtx_unlock(&adapter->global_mtx)
-
#define ENA_RING_MTX_LOCK(_ring) mtx_lock(&(_ring)->ring_mtx)
#define ENA_RING_MTX_TRYLOCK(_ring) mtx_trylock(&(_ring)->ring_mtx)
#define ENA_RING_MTX_UNLOCK(_ring) mtx_unlock(&(_ring)->ring_mtx)
-
-struct ena_dev *ena_efa_enadev_get(device_t pdev);
-
-int ena_register_adapter(struct ena_adapter *adapter);
-void ena_unregister_adapter(struct ena_adapter *adapter);
static inline int ena_mbuf_count(struct mbuf *mbuf)
{
Index: head/sys/dev/ena/ena.c
===================================================================
--- head/sys/dev/ena/ena.c
+++ head/sys/dev/ena/ena.c
@@ -453,7 +453,6 @@
/* RX specific ring state */
rxr->ring_size = adapter->rx_ring_size;
- rxr->rx_small_copy_len = adapter->small_copy_len;
rxr->smoothed_interval =
ena_com_get_nonadaptive_moderation_interval_rx(ena_dev);
@@ -1695,7 +1694,7 @@
rx_ring->next_to_clean = next_to_clean;
refill_required = ena_com_free_desc(io_sq);
- refill_threshold = rx_ring->ring_size / ENA_RX_REFILL_THRESH_DEVIDER;
+ refill_threshold = rx_ring->ring_size / ENA_RX_REFILL_THRESH_DIVIDER;
if (refill_required > refill_threshold) {
ena_com_update_dev_comp_head(rx_ring->ena_com_io_cq);
@@ -2300,13 +2299,13 @@
struct ena_adapter *adapter = if_getsoftc(ifp);
ena_trace(ENA_DBG, "enter");
- ENA_DEV_LOCK;
+ mtx_lock(&adapter->global_mtx);
ifmr->ifm_status = IFM_AVALID;
ifmr->ifm_active = IFM_ETHER;
if (!adapter->link_status) {
- ENA_DEV_UNLOCK;
+ mtx_unlock(&adapter->global_mtx);
ena_trace(ENA_WARNING, "link_status = false");
return;
}
@@ -2314,7 +2313,7 @@
ifmr->ifm_status |= IFM_ACTIVE;
ifmr->ifm_active |= IFM_10G_T | IFM_FDX;
- ENA_DEV_UNLOCK;
+ mtx_unlock(&adapter->global_mtx);
}
static void
@@ -3366,6 +3365,7 @@
tx_buf->print_once = true;
missed_tx++;
+ counter_u64_add(tx_ring->tx_stats.missing_tx_comp, 1);
if (unlikely(missed_tx >
adapter->missing_tx_threshold)) {
@@ -3669,9 +3669,6 @@
memcpy(adapter->mac_addr, get_feat_ctx.dev_attr.mac_addr,
ETHER_ADDR_LEN);
-
- adapter->small_copy_len =
- ENA_DEFAULT_SMALL_PACKET_LEN;
/* calculate IO queue number to create */
io_queue_num = ena_calc_io_queue_num(adapter, &get_feat_ctx);

File Metadata

Mime Type
text/plain
Expires
Mon, Feb 23, 4:08 PM (5 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28960090
Default Alt Text
D12864.diff (6 KB)

Event Timeline