Lines Matching refs:txsc
48 struct cn10k_mcs_txsc *txsc; in cn10k_mcs_get_txsc() local
50 list_for_each_entry(txsc, &cfg->txsc_list, entry) { in cn10k_mcs_get_txsc()
51 if (txsc->sw_secy == secy) in cn10k_mcs_get_txsc()
52 return txsc; in cn10k_mcs_get_txsc()
381 struct cn10k_mcs_txsc *txsc) in cn10k_mcs_write_tx_secy() argument
433 req->secy_id = txsc->hw_secy_id_tx; in cn10k_mcs_write_tx_secy()
445 struct cn10k_mcs_txsc *txsc) in cn10k_mcs_write_tx_flowid() argument
474 req->flow_id = txsc->hw_flow_id; in cn10k_mcs_write_tx_flowid()
475 req->secy_id = txsc->hw_secy_id_tx; in cn10k_mcs_write_tx_flowid()
476 req->sc_id = txsc->hw_sc_id; in cn10k_mcs_write_tx_flowid()
491 struct cn10k_mcs_txsc *txsc, in cn10k_mcs_link_tx_sa2sc() argument
499 if (txsc->encoding_sa != sa_num) in cn10k_mcs_link_tx_sa2sc()
511 map_req->sa_index0 = txsc->hw_sa_id[sa_num]; in cn10k_mcs_link_tx_sa2sc()
514 map_req->sc_id = txsc->hw_sc_id; in cn10k_mcs_link_tx_sa2sc()
525 struct cn10k_mcs_txsc *txsc, in cn10k_mcs_write_tx_sa_plcy() argument
528 unsigned char *src = txsc->sa_key[assoc_num]; in cn10k_mcs_write_tx_sa_plcy()
548 plcy_req->sa_index[0] = txsc->hw_sa_id[assoc_num]; in cn10k_mcs_write_tx_sa_plcy()
560 struct cn10k_mcs_txsc *txsc, in cn10k_write_tx_sa_pn() argument
575 req->pn_id = txsc->hw_sa_id[assoc_num]; in cn10k_write_tx_sa_pn()
779 struct cn10k_mcs_txsc *txsc; in cn10k_mcs_create_txsc() local
782 txsc = kzalloc(sizeof(*txsc), GFP_KERNEL); in cn10k_mcs_create_txsc()
783 if (!txsc) in cn10k_mcs_create_txsc()
787 &txsc->hw_flow_id); in cn10k_mcs_create_txsc()
793 &txsc->hw_secy_id_tx); in cn10k_mcs_create_txsc()
798 &txsc->hw_secy_id_rx); in cn10k_mcs_create_txsc()
803 &txsc->hw_sc_id); in cn10k_mcs_create_txsc()
807 return txsc; in cn10k_mcs_create_txsc()
810 txsc->hw_secy_id_rx, false); in cn10k_mcs_create_txsc()
813 txsc->hw_secy_id_tx, false); in cn10k_mcs_create_txsc()
816 txsc->hw_flow_id, false); in cn10k_mcs_create_txsc()
818 kfree(txsc); in cn10k_mcs_create_txsc()
825 struct cn10k_mcs_txsc *txsc) in cn10k_mcs_delete_txsc() argument
827 u8 sa_bmap = txsc->sa_bmap; in cn10k_mcs_delete_txsc()
832 cn10k_mcs_write_tx_sa_plcy(pfvf, txsc->sw_secy, in cn10k_mcs_delete_txsc()
833 txsc, sa_num); in cn10k_mcs_delete_txsc()
834 cn10k_mcs_free_txsa(pfvf, txsc->hw_sa_id[sa_num]); in cn10k_mcs_delete_txsc()
841 txsc->hw_sc_id, false); in cn10k_mcs_delete_txsc()
843 txsc->hw_secy_id_rx, false); in cn10k_mcs_delete_txsc()
845 txsc->hw_secy_id_tx, false); in cn10k_mcs_delete_txsc()
847 txsc->hw_flow_id, false); in cn10k_mcs_delete_txsc()
903 struct cn10k_mcs_txsc *txsc, in cn10k_mcs_secy_tx_cfg() argument
907 cn10k_mcs_write_tx_sa_plcy(pfvf, secy, txsc, sa_num); in cn10k_mcs_secy_tx_cfg()
908 cn10k_write_tx_sa_pn(pfvf, txsc, sa_num, in cn10k_mcs_secy_tx_cfg()
910 cn10k_mcs_link_tx_sa2sc(pfvf, secy, txsc, sa_num, in cn10k_mcs_secy_tx_cfg()
914 cn10k_mcs_write_tx_secy(pfvf, secy, txsc); in cn10k_mcs_secy_tx_cfg()
915 cn10k_mcs_write_tx_flowid(pfvf, secy, txsc); in cn10k_mcs_secy_tx_cfg()
917 cn10k_mcs_write_rx_secy(pfvf, secy, txsc->hw_secy_id_rx); in cn10k_mcs_secy_tx_cfg()
986 struct cn10k_mcs_txsc *txsc) in cn10k_mcs_sync_stats() argument
999 if (secy->validate_frames == txsc->last_validate_frames && in cn10k_mcs_sync_stats()
1000 secy->protect_frames == txsc->last_protect_frames) in cn10k_mcs_sync_stats()
1003 cn10k_mcs_secy_stats(pfvf, txsc->hw_secy_id_rx, &rx_rsp, MCS_RX, true); in cn10k_mcs_sync_stats()
1005 txsc->stats.InPktsBadTag += rx_rsp.pkt_badtag_cnt; in cn10k_mcs_sync_stats()
1006 txsc->stats.InPktsUnknownSCI += rx_rsp.pkt_nosa_cnt; in cn10k_mcs_sync_stats()
1007 txsc->stats.InPktsNoSCI += rx_rsp.pkt_nosaerror_cnt; in cn10k_mcs_sync_stats()
1008 if (txsc->last_validate_frames == MACSEC_VALIDATE_STRICT) in cn10k_mcs_sync_stats()
1009 txsc->stats.InPktsNoTag += rx_rsp.pkt_untaged_cnt; in cn10k_mcs_sync_stats()
1011 txsc->stats.InPktsUntagged += rx_rsp.pkt_untaged_cnt; in cn10k_mcs_sync_stats()
1022 if (txsc->last_protect_frames) in cn10k_mcs_sync_stats()
1027 if (txsc->last_validate_frames == MACSEC_VALIDATE_CHECK) in cn10k_mcs_sync_stats()
1033 txsc->last_validate_frames = secy->validate_frames; in cn10k_mcs_sync_stats()
1034 txsc->last_protect_frames = secy->protect_frames; in cn10k_mcs_sync_stats()
1043 struct cn10k_mcs_txsc *txsc; in cn10k_mdo_open() local
1047 txsc = cn10k_mcs_get_txsc(cfg, ctx->secy); in cn10k_mdo_open()
1048 if (!txsc) in cn10k_mdo_open()
1051 sa_num = txsc->encoding_sa; in cn10k_mdo_open()
1054 err = cn10k_mcs_secy_tx_cfg(pfvf, secy, txsc, sw_tx_sa, sa_num); in cn10k_mdo_open()
1058 return cn10k_mcs_secy_rx_cfg(pfvf, secy, txsc->hw_secy_id_rx); in cn10k_mdo_open()
1065 struct cn10k_mcs_txsc *txsc; in cn10k_mdo_stop() local
1068 txsc = cn10k_mcs_get_txsc(cfg, ctx->secy); in cn10k_mdo_stop()
1069 if (!txsc) in cn10k_mdo_stop()
1072 err = cn10k_mcs_ena_dis_flowid(pfvf, txsc->hw_flow_id, false, MCS_TX); in cn10k_mdo_stop()
1084 struct cn10k_mcs_txsc *txsc; in cn10k_mdo_add_secy() local
1096 txsc = cn10k_mcs_create_txsc(pfvf); in cn10k_mdo_add_secy()
1097 if (IS_ERR(txsc)) in cn10k_mdo_add_secy()
1100 txsc->sw_secy = secy; in cn10k_mdo_add_secy()
1101 txsc->encoding_sa = secy->tx_sc.encoding_sa; in cn10k_mdo_add_secy()
1102 txsc->last_validate_frames = secy->validate_frames; in cn10k_mdo_add_secy()
1103 txsc->last_protect_frames = secy->protect_frames; in cn10k_mdo_add_secy()
1105 list_add(&txsc->entry, &cfg->txsc_list); in cn10k_mdo_add_secy()
1108 return cn10k_mcs_secy_tx_cfg(pfvf, secy, txsc, NULL, 0); in cn10k_mdo_add_secy()
1119 struct cn10k_mcs_txsc *txsc; in cn10k_mdo_upd_secy() local
1123 txsc = cn10k_mcs_get_txsc(cfg, secy); in cn10k_mdo_upd_secy()
1124 if (!txsc) in cn10k_mdo_upd_secy()
1127 txsc->encoding_sa = secy->tx_sc.encoding_sa; in cn10k_mdo_upd_secy()
1129 sa_num = txsc->encoding_sa; in cn10k_mdo_upd_secy()
1133 cn10k_mcs_sync_stats(pfvf, secy, txsc); in cn10k_mdo_upd_secy()
1135 err = cn10k_mcs_secy_tx_cfg(pfvf, secy, txsc, sw_tx_sa, sa_num); in cn10k_mdo_upd_secy()
1147 struct cn10k_mcs_txsc *txsc; in cn10k_mdo_del_secy() local
1149 txsc = cn10k_mcs_get_txsc(cfg, ctx->secy); in cn10k_mdo_del_secy()
1150 if (!txsc) in cn10k_mdo_del_secy()
1153 cn10k_mcs_ena_dis_flowid(pfvf, txsc->hw_flow_id, false, MCS_TX); in cn10k_mdo_del_secy()
1155 cn10k_mcs_delete_txsc(pfvf, txsc); in cn10k_mdo_del_secy()
1156 list_del(&txsc->entry); in cn10k_mdo_del_secy()
1157 kfree(txsc); in cn10k_mdo_del_secy()
1169 struct cn10k_mcs_txsc *txsc; in cn10k_mdo_add_txsa() local
1172 txsc = cn10k_mcs_get_txsc(cfg, secy); in cn10k_mdo_add_txsa()
1173 if (!txsc) in cn10k_mdo_add_txsa()
1179 if (cn10k_mcs_alloc_txsa(pfvf, &txsc->hw_sa_id[sa_num])) in cn10k_mdo_add_txsa()
1182 memcpy(&txsc->sa_key[sa_num], ctx->sa.key, secy->key_len); in cn10k_mdo_add_txsa()
1183 txsc->sa_bmap |= 1 << sa_num; in cn10k_mdo_add_txsa()
1186 err = cn10k_mcs_write_tx_sa_plcy(pfvf, secy, txsc, sa_num); in cn10k_mdo_add_txsa()
1190 err = cn10k_write_tx_sa_pn(pfvf, txsc, sa_num, in cn10k_mdo_add_txsa()
1195 err = cn10k_mcs_link_tx_sa2sc(pfvf, secy, txsc, in cn10k_mdo_add_txsa()
1211 struct cn10k_mcs_txsc *txsc; in cn10k_mdo_upd_txsa() local
1214 txsc = cn10k_mcs_get_txsc(cfg, secy); in cn10k_mdo_upd_txsa()
1215 if (!txsc) in cn10k_mdo_upd_txsa()
1223 err = cn10k_write_tx_sa_pn(pfvf, txsc, sa_num, in cn10k_mdo_upd_txsa()
1228 err = cn10k_mcs_link_tx_sa2sc(pfvf, secy, txsc, in cn10k_mdo_upd_txsa()
1242 struct cn10k_mcs_txsc *txsc; in cn10k_mdo_del_txsa() local
1244 txsc = cn10k_mcs_get_txsc(cfg, ctx->secy); in cn10k_mdo_del_txsa()
1245 if (!txsc) in cn10k_mdo_del_txsa()
1251 cn10k_mcs_free_txsa(pfvf, txsc->hw_sa_id[sa_num]); in cn10k_mdo_del_txsa()
1252 txsc->sa_bmap &= ~(1 << sa_num); in cn10k_mdo_del_txsa()
1263 struct cn10k_mcs_txsc *txsc; in cn10k_mdo_add_rxsc() local
1266 txsc = cn10k_mcs_get_txsc(cfg, secy); in cn10k_mdo_add_rxsc()
1267 if (!txsc) in cn10k_mdo_add_rxsc()
1279 err = cn10k_mcs_write_rx_flowid(pfvf, rxsc, txsc->hw_secy_id_rx); in cn10k_mdo_add_rxsc()
1283 err = cn10k_mcs_write_sc_cam(pfvf, rxsc, txsc->hw_secy_id_rx); in cn10k_mdo_add_rxsc()
1430 struct cn10k_mcs_txsc *txsc; in cn10k_mdo_get_dev_stats() local
1432 txsc = cn10k_mcs_get_txsc(cfg, ctx->secy); in cn10k_mdo_get_dev_stats()
1433 if (!txsc) in cn10k_mdo_get_dev_stats()
1436 cn10k_mcs_secy_stats(pfvf, txsc->hw_secy_id_tx, &tx_rsp, MCS_TX, false); in cn10k_mdo_get_dev_stats()
1440 cn10k_mcs_secy_stats(pfvf, txsc->hw_secy_id_rx, &rx_rsp, MCS_RX, true); in cn10k_mdo_get_dev_stats()
1441 txsc->stats.InPktsBadTag += rx_rsp.pkt_badtag_cnt; in cn10k_mdo_get_dev_stats()
1442 txsc->stats.InPktsUnknownSCI += rx_rsp.pkt_nosa_cnt; in cn10k_mdo_get_dev_stats()
1443 txsc->stats.InPktsNoSCI += rx_rsp.pkt_nosaerror_cnt; in cn10k_mdo_get_dev_stats()
1445 txsc->stats.InPktsNoTag += rx_rsp.pkt_untaged_cnt; in cn10k_mdo_get_dev_stats()
1447 txsc->stats.InPktsUntagged += rx_rsp.pkt_untaged_cnt; in cn10k_mdo_get_dev_stats()
1448 txsc->stats.InPktsOverrun = 0; in cn10k_mdo_get_dev_stats()
1450 ctx->stats.dev_stats->InPktsNoTag = txsc->stats.InPktsNoTag; in cn10k_mdo_get_dev_stats()
1451 ctx->stats.dev_stats->InPktsUntagged = txsc->stats.InPktsUntagged; in cn10k_mdo_get_dev_stats()
1452 ctx->stats.dev_stats->InPktsBadTag = txsc->stats.InPktsBadTag; in cn10k_mdo_get_dev_stats()
1453 ctx->stats.dev_stats->InPktsUnknownSCI = txsc->stats.InPktsUnknownSCI; in cn10k_mdo_get_dev_stats()
1454 ctx->stats.dev_stats->InPktsNoSCI = txsc->stats.InPktsNoSCI; in cn10k_mdo_get_dev_stats()
1455 ctx->stats.dev_stats->InPktsOverrun = txsc->stats.InPktsOverrun; in cn10k_mdo_get_dev_stats()
1465 struct cn10k_mcs_txsc *txsc; in cn10k_mdo_get_tx_sc_stats() local
1467 txsc = cn10k_mcs_get_txsc(cfg, ctx->secy); in cn10k_mdo_get_tx_sc_stats()
1468 if (!txsc) in cn10k_mdo_get_tx_sc_stats()
1471 cn10k_mcs_sc_stats(pfvf, txsc->hw_sc_id, &rsp, MCS_TX, false); in cn10k_mdo_get_tx_sc_stats()
1487 struct cn10k_mcs_txsc *txsc; in cn10k_mdo_get_tx_sa_stats() local
1489 txsc = cn10k_mcs_get_txsc(cfg, ctx->secy); in cn10k_mdo_get_tx_sa_stats()
1490 if (!txsc) in cn10k_mdo_get_tx_sa_stats()
1496 cn10k_mcs_sa_stats(pfvf, txsc->hw_sa_id[sa_num], &rsp, MCS_TX, false); in cn10k_mdo_get_tx_sa_stats()
1600 struct cn10k_mcs_txsc *txsc; in cn10k_handle_mcs_event() local
1610 list_for_each_entry(txsc, &cfg->txsc_list, entry) { in cn10k_handle_mcs_event()
1612 if (txsc->hw_sa_id[an] == event->sa_id) { in cn10k_handle_mcs_event()
1613 secy = txsc->sw_secy; in cn10k_handle_mcs_event()