使用 ethtool
使用 ethtool 可以看一般的 網絡卡。
ethtool -k
dpdk 的做法
在 dpdk 中可以使用以下函式來檢視是否支援 offload 功能。
ixgbe_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
例子:
網絡卡dev_info->rx_offload_capa
dev_info->tx_offload_capa
i350
0xf0x3f
82599es
0x1f
0x3f
對照原始碼上的巨集開關,以上的網絡卡都是支援 ipv4 offload 的。
/**
* rx offload capabilities of a device.
*/// 0xf 0x1f
#define dev_rx_offload_vlan_strip 0x00000001
// * *
#define dev_rx_offload_ipv4_cksum 0x00000002
// * * <--- ipv4
#define dev_rx_offload_udp_cksum 0x00000004
// * *
#define dev_rx_offload_tcp_cksum 0x00000008
// * *
#define dev_rx_offload_tcp_lro 0x00000010
// *
#define dev_rx_offload_qinq_strip 0x00000020
//#define dev_rx_offload_outer_ipv4_cksum 0x00000040
///**
* tx offload capabilities of a device.
*/// 0x3f
#define dev_tx_offload_vlan_insert 0x00000001
// *
#define dev_tx_offload_ipv4_cksum 0x00000002
// * <--- ipv4
#define dev_tx_offload_udp_cksum 0x00000004
// *
#define dev_tx_offload_tcp_cksum 0x00000008
// *
#define dev_tx_offload_sctp_cksum 0x00000010
// *
#define dev_tx_offload_tcp_tso 0x00000020
// *
#define dev_tx_offload_udp_tso 0x00000040
//#define dev_tx_offload_outer_ipv4_cksum 0x00000080
/**< used for tunneling packet. */
#define dev_tx_offload_qinq_insert 0x00000100
乙個報文想要 offload。mbuf 上還需要設定 ol_flags,l2_len,l3_len。
並且注意要清除 ipv4 報文的 checksum 字段。
以下是 programmer』s guide 的例子:
mb->l2_len =
len(out_eth)
mb->l3_len =
len(out_ip)
mb->ol_flags |
= pkt_tx_ipv4 | pkt_tx_ip_csum
/* clean up the ipv4 checksum field */
詳細的巨集開關需可以參考:
/**
* offload the ip checksum in the hardware. the flag pkt_tx_ipv4 should
* pkt_tx_ip_cksum.
* - set the ip checksum field in the packet to 0
* - fill the mbuf offload information: l2_len, l3_len
*/#define pkt_tx_ip_cksum (1ull << 54)
/** * packet is ipv4. this flag must be set when using any offload feature
* (tso, l3 or l4 checksum) to tell the nic that the packet is an ipv4
* packet. if the packet is a tunneled packet, this flag is related to
* the inner headers.
*/#define pkt_tx_ipv4 (1ull << 55)
OpenCV應用筆記
1 使用cvsmooth函式,src與dst的depth要一致,否則會出現raiseexception錯誤。src和dst的位深不能為64位浮點。簡單模糊和高斯模糊支援 1 或 3 通道,8 位元 和 32 位元 浮點影象。這兩種方法可以 in place 方式處理影象。2 關於直接讀取iplima...
session應用筆記
session start 開始session會話處理 session只要用到這個,就必須開啟session start 放在檔案開頭 建立session,直接採用超級全域性變數賦值即可 session是存在伺服器端,一般存放1440秒,如果網頁沒有任何操作,會自動銷毀,當然,可以通過php.ini...
sed 應用筆記
sed 的筆記 sed 的替換指令 有兩款。分別如下 第一款 sed i s g 第二款,帶有 可以出現 在 的前面或者後面。sed i s g 假設 etc sysctl.conf檔案上,有如下的 指令。都替換為net.ipv4.tcp sack 0。net.ipv4.tcp sack 1 net...