Hi, Xiaolong > -----Original Message----- [snip] > >+static void ixgbe_dev_macsec_init(struct rte_eth_dev *dev); > >+ > > /* > > * Define VF Stats MACRO for Non "cleared on read" register > > */ > >@@ -1095,6 +1097,8 @@ eth_ixgbe_dev_init(struct rte_eth_dev *eth_dev, > >void *init_params __rte_unused) > > > > PMD_INIT_FUNC_TRACE(); > > > >+ ixgbe_dev_macsec_init(eth_dev); > > This is not needed as dev_private is allocated by rte_zmalloc_socket. > OK, I will remove it.
> >+ > > eth_dev->dev_ops = &ixgbe_eth_dev_ops; > > eth_dev->rx_pkt_burst = &ixgbe_recv_pkts; > > eth_dev->tx_pkt_burst = &ixgbe_xmit_pkts; @@ -2545,7 +2549,7 @@ > >ixgbe_dev_start(struct rte_eth_dev *dev) > > uint32_t *link_speeds; > > struct ixgbe_tm_conf *tm_conf = > > IXGBE_DEV_PRIVATE_TO_TM_CONF(dev->data->dev_private); > >- struct ixgbe_macsec_setting *macsec_ctrl = > >+ struct ixgbe_macsec_setting *macsec_setting = > > IXGBE_DEV_PRIVATE_TO_MACSEC_SETTING(dev->data- > >dev_private); > > > > PMD_INIT_FUNC_TRACE(); > >@@ -2799,9 +2803,11 @@ ixgbe_dev_start(struct rte_eth_dev *dev) > > */ > > ixgbe_dev_link_update(dev, 0); > > > >- /* setup the macsec ctrl register */ > >- ixgbe_dev_macsec_register_enable(dev, macsec_ctrl); > >- > >+ /* setup the macsec setting register */ > >+ if (macsec_setting->encrypt_en != 0 || > >+ macsec_setting->replayprotect_en != 0) { > >+ ixgbe_dev_macsec_register_enable(dev, macsec_setting); > >+ } > > Can we safely assume that if encrypt_en and replayprotect_en equals zero, > then we don't need to call ixgbe_dev_macsec_register_enable at all? Since this > enable routine is more about just encrypt_en/replayprotect_en, is that any > usercase when user set macsec offload with both encrypt_en and > replayprotect_en are 0? > As you said, this is a problem. I will fix it. Thanks a lot. Thanks. Shougang