Lines Matching refs:sgid_tbl

216 			struct bnxt_qplib_sgid_tbl *sgid_tbl, int index,
219 if (index >= sgid_tbl->max) {
222 index, sgid_tbl->max);
225 memcpy(gid, &sgid_tbl->tbl[index].gid, sizeof(*gid));
229 int bnxt_qplib_del_sgid(struct bnxt_qplib_sgid_tbl *sgid_tbl,
232 struct bnxt_qplib_res *res = to_bnxt_qplib(sgid_tbl,
234 sgid_tbl);
239 if (!sgid_tbl->active) {
243 for (index = 0; index < sgid_tbl->max; index++) {
244 if (!memcmp(&sgid_tbl->tbl[index].gid, gid, sizeof(*gid)) &&
245 vlan_id == sgid_tbl->tbl[index].vlan_id)
248 if (index == sgid_tbl->max) {
262 if (sgid_tbl->hw_id[index] == 0xFFFF) {
267 req.gid_index = cpu_to_le16(sgid_tbl->hw_id[index]);
274 memcpy(&sgid_tbl->tbl[index].gid, &bnxt_qplib_gid_zero,
276 sgid_tbl->tbl[index].vlan_id = 0xFFFF;
277 sgid_tbl->vlan[index] = 0;
278 sgid_tbl->active--;
281 index, sgid_tbl->hw_id[index], sgid_tbl->active);
282 sgid_tbl->hw_id[index] = (u16)-1;
288 int bnxt_qplib_add_sgid(struct bnxt_qplib_sgid_tbl *sgid_tbl,
292 struct bnxt_qplib_res *res = to_bnxt_qplib(sgid_tbl,
294 sgid_tbl);
299 if (sgid_tbl->active == sgid_tbl->max) {
303 free_idx = sgid_tbl->max;
304 for (i = 0; i < sgid_tbl->max; i++) {
305 if (!memcmp(&sgid_tbl->tbl[i], gid, sizeof(*gid)) &&
306 sgid_tbl->tbl[i].vlan_id == vlan_id) {
311 } else if (!memcmp(&sgid_tbl->tbl[i], &bnxt_qplib_gid_zero,
313 free_idx == sgid_tbl->max) {
317 if (free_idx == sgid_tbl->max) {
360 sgid_tbl->hw_id[free_idx] = le32_to_cpu(resp.xid);
362 /* Add GID to the sgid_tbl */
363 memcpy(&sgid_tbl->tbl[free_idx], gid, sizeof(*gid));
364 sgid_tbl->tbl[free_idx].vlan_id = vlan_id;
365 sgid_tbl->active++;
367 sgid_tbl->vlan[free_idx] = 1;
371 free_idx, sgid_tbl->hw_id[free_idx], sgid_tbl->active);
378 int bnxt_qplib_update_sgid(struct bnxt_qplib_sgid_tbl *sgid_tbl,
382 struct bnxt_qplib_res *res = to_bnxt_qplib(sgid_tbl,
384 sgid_tbl);
442 req.sgid_index = cpu_to_le16(res->sgid_tbl.hw_id[ah->sgid_index]);