Lines Matching full:iface
28 struct cifs_server_iface *iface);
32 struct cifs_server_iface *iface) in is_server_using_iface() argument
34 struct sockaddr_in *i4 = (struct sockaddr_in *)&iface->sockaddr; in is_server_using_iface()
35 struct sockaddr_in6 *i6 = (struct sockaddr_in6 *)&iface->sockaddr; in is_server_using_iface()
39 if (server->dstaddr.ss_family != iface->sockaddr.ss_family) in is_server_using_iface()
55 bool is_ses_using_iface(struct cifs_ses *ses, struct cifs_server_iface *iface) in is_ses_using_iface() argument
61 if (ses->chans[i].iface == iface) { in is_ses_using_iface()
155 return ses->chans[chan_index].iface && in cifs_chan_is_iface_active()
156 ses->chans[chan_index].iface->is_active; in cifs_chan_is_iface_active()
167 struct cifs_server_iface *iface = NULL, *niface = NULL; in cifs_try_adding_channels() local
197 * Keep connecting to same, fastest, iface for all channels as in cifs_try_adding_channels()
202 iface = list_first_entry(&ses->iface_list, struct cifs_server_iface, in cifs_try_adding_channels()
221 list_for_each_entry_safe_from(iface, niface, &ses->iface_list, in cifs_try_adding_channels()
224 if (!iface->is_active || in cifs_try_adding_channels()
225 (is_ses_using_iface(ses, iface) && in cifs_try_adding_channels()
226 !iface->rss_capable)) { in cifs_try_adding_channels()
231 kref_get(&iface->refcount); in cifs_try_adding_channels()
234 rc = cifs_ses_add_channel(cifs_sb, ses, iface); in cifs_try_adding_channels()
238 cifs_dbg(VFS, "failed to open extra channel on iface:%pIS rc=%d\n", in cifs_try_adding_channels()
239 &iface->sockaddr, in cifs_try_adding_channels()
241 kref_put(&iface->refcount, release_iface); in cifs_try_adding_channels()
245 cifs_dbg(FYI, "successfully opened new channel on iface:%pIS\n", in cifs_try_adding_channels()
246 &iface->sockaddr); in cifs_try_adding_channels()
259 * update the iface for the channel if necessary.
260 * will return 0 when iface is updated, 1 if removed, 2 otherwise
267 struct cifs_server_iface *iface = NULL; in cifs_chan_update_iface() local
278 if (ses->chans[chan_index].iface) { in cifs_chan_update_iface()
279 old_iface = ses->chans[chan_index].iface; in cifs_chan_update_iface()
289 list_for_each_entry(iface, &ses->iface_list, iface_head) { in cifs_chan_update_iface()
290 if (!iface->is_active || in cifs_chan_update_iface()
291 (is_ses_using_iface(ses, iface) && in cifs_chan_update_iface()
292 !iface->rss_capable)) { in cifs_chan_update_iface()
295 kref_get(&iface->refcount); in cifs_chan_update_iface()
299 if (list_entry_is_head(iface, &ses->iface_list, iface_head)) { in cifs_chan_update_iface()
301 iface = NULL; in cifs_chan_update_iface()
302 cifs_dbg(FYI, "unable to find a suitable iface\n"); in cifs_chan_update_iface()
305 /* now drop the ref to the current iface */ in cifs_chan_update_iface()
306 if (old_iface && iface) { in cifs_chan_update_iface()
307 cifs_dbg(FYI, "replacing iface: %pIS with %pIS\n", in cifs_chan_update_iface()
309 &iface->sockaddr); in cifs_chan_update_iface()
312 cifs_dbg(FYI, "releasing ref to iface: %pIS\n", in cifs_chan_update_iface()
316 WARN_ON(!iface); in cifs_chan_update_iface()
317 cifs_dbg(FYI, "adding new iface: %pIS\n", &iface->sockaddr); in cifs_chan_update_iface()
323 ses->chans[chan_index].iface = iface; in cifs_chan_update_iface()
325 /* No iface is found. if secondary chan, drop connection */ in cifs_chan_update_iface()
326 if (!iface && SERVER_IS_CHAN(server)) in cifs_chan_update_iface()
331 if (!iface && SERVER_IS_CHAN(server)) in cifs_chan_update_iface()
359 struct cifs_server_iface *iface) in cifs_ses_add_channel() argument
365 struct sockaddr_in *ipv4 = (struct sockaddr_in *)&iface->sockaddr; in cifs_ses_add_channel()
366 struct sockaddr_in6 *ipv6 = (struct sockaddr_in6 *)&iface->sockaddr; in cifs_ses_add_channel()
371 if (iface->sockaddr.ss_family == AF_INET) in cifs_ses_add_channel()
373 ses, iface->speed, iface->rdma_capable ? "yes" : "no", in cifs_ses_add_channel()
377 ses, iface->speed, iface->rdma_capable ? "yes" : "no", in cifs_ses_add_channel()
382 * session and overwrite it with the requested iface data. in cifs_ses_add_channel()
440 ctx->rdma = iface->rdma_capable; in cifs_ses_add_channel()
441 memcpy(&ctx->dstaddr, &iface->sockaddr, sizeof(ctx->dstaddr)); in cifs_ses_add_channel()
459 chan->iface = iface; in cifs_ses_add_channel()