Lines Matching full:iface

28 		     struct cifs_server_iface *iface);
30 bool is_ses_using_iface(struct cifs_ses *ses, struct cifs_server_iface *iface) in is_ses_using_iface() argument
36 if (ses->chans[i].iface == iface) { in is_ses_using_iface()
142 return ses->chans[chan_index].iface && in cifs_chan_is_iface_active()
143 ses->chans[chan_index].iface->is_active; in cifs_chan_is_iface_active()
155 struct cifs_server_iface *iface = NULL, *niface = NULL; in cifs_try_adding_channels() local
201 if (!iface) in cifs_try_adding_channels()
202 iface = list_first_entry(&ses->iface_list, struct cifs_server_iface, in cifs_try_adding_channels()
208 list_for_each_entry_safe_from(iface, niface, &ses->iface_list, in cifs_try_adding_channels()
211 if (iface->rdma_capable != ses->server->rdma) in cifs_try_adding_channels()
215 if (!iface->is_active || in cifs_try_adding_channels()
216 (is_ses_using_iface(ses, iface) && in cifs_try_adding_channels()
217 !iface->rss_capable)) in cifs_try_adding_channels()
221 iface_weight = iface->speed / iface_min_speed; in cifs_try_adding_channels()
223 if (iface->weight_fulfilled >= iface_weight) in cifs_try_adding_channels()
227 kref_get(&iface->refcount); in cifs_try_adding_channels()
230 rc = cifs_ses_add_channel(ses, iface); in cifs_try_adding_channels()
234 cifs_dbg(VFS, "failed to open extra channel on iface:%pIS rc=%d\n", in cifs_try_adding_channels()
235 &iface->sockaddr, in cifs_try_adding_channels()
237 kref_put(&iface->refcount, release_iface); in cifs_try_adding_channels()
239 iface->weight_fulfilled++; in cifs_try_adding_channels()
243 iface->num_channels++; in cifs_try_adding_channels()
244 iface->weight_fulfilled++; in cifs_try_adding_channels()
245 cifs_dbg(VFS, "successfully opened new channel on iface:%pIS\n", in cifs_try_adding_channels()
246 &iface->sockaddr); in cifs_try_adding_channels()
251 if (list_entry_is_head(iface, &ses->iface_list, iface_head)) { in cifs_try_adding_channels()
252 list_for_each_entry(iface, &ses->iface_list, iface_head) in cifs_try_adding_channels()
253 iface->weight_fulfilled = 0; in cifs_try_adding_channels()
255 iface = NULL; in cifs_try_adding_channels()
277 struct cifs_server_iface *iface; in cifs_disable_secondary_channels() local
290 iface = ses->chans[i].iface; in cifs_disable_secondary_channels()
297 ses->chans[i].iface = NULL; in cifs_disable_secondary_channels()
301 if (iface) { in cifs_disable_secondary_channels()
303 iface->num_channels--; in cifs_disable_secondary_channels()
304 if (iface->weight_fulfilled) in cifs_disable_secondary_channels()
305 iface->weight_fulfilled--; in cifs_disable_secondary_channels()
306 kref_put(&iface->refcount, release_iface); in cifs_disable_secondary_channels()
325 /* update the iface for the channel if necessary. */
331 struct cifs_server_iface *iface = NULL; in cifs_chan_update_iface() local
343 if (ses->chans[chan_index].iface) { in cifs_chan_update_iface()
344 old_iface = ses->chans[chan_index].iface; in cifs_chan_update_iface()
368 list_for_each_entry(iface, &ses->iface_list, iface_head) { in cifs_chan_update_iface()
370 /* if we're trying to get the updated iface for primary channel */ in cifs_chan_update_iface()
372 (struct sockaddr *) &iface->sockaddr)) in cifs_chan_update_iface()
375 kref_get(&iface->refcount); in cifs_chan_update_iface()
380 if (iface->rdma_capable != server->rdma) in cifs_chan_update_iface()
383 if (!iface->is_active || in cifs_chan_update_iface()
384 (is_ses_using_iface(ses, iface) && in cifs_chan_update_iface()
385 !iface->rss_capable)) { in cifs_chan_update_iface()
390 iface_weight = iface->speed / iface_min_speed; in cifs_chan_update_iface()
392 if (iface->weight_fulfilled >= iface_weight) in cifs_chan_update_iface()
395 kref_get(&iface->refcount); in cifs_chan_update_iface()
399 if (list_entry_is_head(iface, &ses->iface_list, iface_head)) { in cifs_chan_update_iface()
400 iface = NULL; in cifs_chan_update_iface()
401 cifs_dbg(FYI, "unable to find a suitable iface\n"); in cifs_chan_update_iface()
404 if (!iface) { in cifs_chan_update_iface()
417 /* now drop the ref to the current iface */ in cifs_chan_update_iface()
419 cifs_dbg(FYI, "replacing iface: %pIS with %pIS\n", in cifs_chan_update_iface()
421 &iface->sockaddr); in cifs_chan_update_iface()
426 iface->num_channels++; in cifs_chan_update_iface()
427 iface->weight_fulfilled++; in cifs_chan_update_iface()
432 cifs_dbg(FYI, "referencing primary channel iface: %pIS\n", in cifs_chan_update_iface()
433 &iface->sockaddr); in cifs_chan_update_iface()
434 iface->num_channels++; in cifs_chan_update_iface()
435 iface->weight_fulfilled++; in cifs_chan_update_iface()
446 ses->chans[chan_index].iface = iface; in cifs_chan_update_iface()
452 struct cifs_server_iface *iface) in cifs_ses_add_channel() argument
458 struct sockaddr_in *ipv4 = (struct sockaddr_in *)&iface->sockaddr; in cifs_ses_add_channel()
459 struct sockaddr_in6 *ipv6 = (struct sockaddr_in6 *)&iface->sockaddr; in cifs_ses_add_channel()
464 if (iface->sockaddr.ss_family == AF_INET) in cifs_ses_add_channel()
466 ses, iface->speed, str_yes_no(iface->rdma_capable), in cifs_ses_add_channel()
470 ses, iface->speed, str_yes_no(iface->rdma_capable), in cifs_ses_add_channel()
475 * session and overwrite it with the requested iface data. in cifs_ses_add_channel()
540 ctx->rdma = iface->rdma_capable; in cifs_ses_add_channel()
541 memcpy(&ctx->dstaddr, &iface->sockaddr, sizeof(ctx->dstaddr)); in cifs_ses_add_channel()
559 chan->iface = iface; in cifs_ses_add_channel()